What's new

Keep Distance

Tevions

Active User
Joined
Feb 3, 2010
Messages
64
Reaction score
3
Widz? ,?? bardzo du?o temat?w powstaje typu "keep distance nie dziala "
tutaj macie dzia?aj?cy skrypt
import time
def getPathToEx (selfPos, targetPos, minDist, maxDist):
ab = time.clock()
if selfPos['z'] != targetPos['z']:
return False;
currentDist = max(abs(selfPos['x'] - targetPos['x']),abs(selfPos['y'] - targetPos['y']));
if(currentDist == maxDist):
return False;
if (selfPos['x'] - targetPos['x']) <= 0: dxMin = maxDist;
else: dxMin = 0;
if (selfPos['x'] - targetPos['x']) >= 0: dxMax = maxDist;
else: dxMax = 0;
if (selfPos['y'] - targetPos['y']) <= 0: dyMin = maxDist;
else: dyMin = 0;
if (selfPos['y'] - targetPos['y']) >= 0: dyMax = maxDist;
else: dyMax = 0;
tile = 0;
minWalkPos = {};
tmpPos = {};
minWalkDist = 100;
maxTaxi = -1;
tmpDist = -1;
tmpWalkDist = -1;
tmpMaxTaxi = -1;
tryDist = maxDist;
point = [];
while tryDist >= minDist:
for y in range(targetPos['y'] - dyMin, targetPos['y'] + dyMax + 1):
for x in range(targetPos['x'] - dxMin, targetPos['x'] + dxMax + 1):
tmpDist = max(abs(targetPos['x'] - x),abs(targetPos['y'] - y));
if tmpDist == tryDist:
point += [[x,y]];
while len(point) > 0:
p = point.pop(random.randint(0,len(point)-1));
x = p[0];
y = p[1];
tmpWalkDist = abs(selfPos['x'] - x) + abs(selfPos['y'] - y);
tmpPos = {};
tmpPos['x'] = x;
tmpPos['y'] = y;
tmpPos['z'] = selfPos['z'];
tmpMaxTaxi = abs(targetPos['x'] - x) + abs(targetPos['y'] - y)
#print tmpPos,(tmpWalkDist < minWalkDist and tmpMaxTaxi+1 >= maxTaxi ),(tmpMaxTaxi >= tmpWalkDist and tmpMaxTaxi > maxTaxi),minWalkPos.get('x',0)-tmpPos.get('x',0),tmpPos.get('y',0)-minWalkPos.get('y',0);
#print tmpWalkDist,minWalkDist,tmpMaxTaxi,maxTaxi;
if (tmpWalkDist < minWalkDist and tmpMaxTaxi+1 >= maxTaxi ) or (tmpMaxTaxi >= tmpWalkDist and tmpMaxTaxi > maxTaxi) or minWalkDist == 100:
if tmpPos != selfPos:
if tamap.isPointAvailable(x, y, selfPos['z']) and tamap.getPointUpDown(x, y, selfPos['z']) == 0:
minWalkDist = tmpWalkDist;
minWalkPos = tmpPos;
maxTaxi = tmpMaxTaxi;
if minWalkDist != 100:
return minWalkPos;
tryDist -= 1;
return False;
def facing(direction):
return [-abs(direction%4-1)+1,-abs(direction%4-2)+1];
class ModuleKeepDistance:
RUN = True;
walkTo = False;
def getName(self):
tasender.sendTAMessage("Start KeepDistance to Toggle with \'%ta dist\'");
return "Keep Distance";
def getVersion(self):
return "1.0";
def getFunDef(self,nr):
if (nr==0): return (0,800,self.findPath);
if (nr==1): return (0,300,self.walkToPoint);
if (nr==2): return (1,0,self.walkToPoint2);
if (nr==3): return (2,0,self.toggle);
return ();
def getConfigParam(self,nr):
if (nr==0): return ('minDistance','Def:3, Distance to stay over.');
if (nr==1): return ('maxDistance','Def:3, Max Distance to try for.');
if (nr==2): return ('hardCreatures','Eg:demon,fury (List of hard creatures to keep minDist+1 distance from)');
if (nr==3): return ('followCreatures','Monsters that you want to follow that are either really easy, or distance fighters');
return;
def findPath (self, params):
if self.RUN:
me = tareader.readSelfCharacter();
targID = tareader.getAttackedCreature();
if targID != 0:
targ = tareader.getCharacterByTibiaId (targID);
try: minDist = int(params['minDistance']);
except: minDist = 3;
try: maxDist = int(params['maxDistance']);
except: maxDist = 100;
hList = params['hardCreatures'].lower().split(',');
isHard = int(hList.count(targ['name'].lower()) != 0);
minDist += isHard;
face = facing(targ['lookDirection']);
monToMe = [(me['x']-targ['x']),(me['y']-targ['y'])];
isRunning = int((face[0]*monToMe[0] + face[1]*monToMe[1]) < 0);#will bring to 1 less than maxDist if monster is running
#print "first:", isRunning;
followCreature = params['followCreatures'].lower().split(',');
isRunning = int(followCreature.count(targ['name'].lower()) != 0);
#//print "sec:", isRunning;
if isRunning:
maxDist = 3;
minDist = 2;
isToofar = max(abs(me['x'] - targ['x']),abs(me['y'] - targ['y'])) > maxDist;
isNotBestDiag = abs(me['x'] - targ['x'])+abs(me['y'] - targ['y']) < minDist*2;
isClose = max(abs(me['x'] - targ['x']),abs(me['y'] - targ['y'])) <= minDist;
if isToofar or (isNotBestDiag and isClose):
#print {'x':me['x'],'y':me['y'],'z':me['z']},{'x':targ['x'],'y':targ['y'],'z':targ['z']}
self.walkTo = getPathToEx({'x':me['x'],'y':me['y'],'z':me['z']},{'x':targ['x'],'y':targ['y'],'z':targ['z']},minDist,minDist)
#print self.walkTo['x'] - me['x'],self.walkTo['y'] - me['y'];
self.walkToPoint(params);
return;
def walkToPoint (self, params):
if tareader.getAttackedCreature() == 0:
self.walkTo = False;
return;
targ = tareader.getCharacterByTibiaId (tareader.getAttackedCreature());
if targ['hpPercLeft'] == 0:
self.walkTo = False;
return;
if self.walkTo != False:
tareader.writeGotoCoords (self.walkTo['x'],self.walkTo['y'],self.walkTo['z']);
return;
def walkToPoint2 (self, params,(type,channel,nick,message)):
me = tareader.readSelfCharacter();
if nick == me['name'] and self.walkTo != False:
tareader.writeGotoCoords (self.walkTo['x'],self.walkTo['y'],self.walkTo['z']);
return;
def toggle (self, params, message):
if message == "%ta dist":
self.RUN = not self.RUN;
tasender.sendTAMessage("Keep Distance is = "+str(self.RUN));
return;
tibiaauto.registerPlugin(ModuleKeepDistance);
#print getPathToEx({'x':0,'y':2,'z':0},{'x':0,'y':0,'z':0},6,6+1)
teraz go skopiujcie i wklejcie do natatnika z ko?c?wk? "py" ,ale pamietajcie ?eby w cave bocie odznaczyc auto foolow


My?le ze pomog?em
 

bialas1908

Advanced User
Joined
Apr 7, 2010
Messages
151
Reaction score
17
Age
30
Odp: Keep Distance

Dzi?ki za skrypta, ale wszystkim nie dzia?a dlatego, ?e maj? z?ego skrypta tylko wy?wietla si? b??d z pythonem.
#Edit:
Je?eli tobie dzia?a to mo?e podzielisz si? z nami informacj? gdzie wrzuci?e? pythona i jakiego?
 

Tevions

Active User
Joined
Feb 3, 2010
Messages
64
Reaction score
3
Odp: Keep Distance

pythona mialem 2.4 i noramlenie dziala zaldowalem skrypt i go wlonczylem ale filozofia ;D
 

bialas1908

Advanced User
Joined
Apr 7, 2010
Messages
151
Reaction score
17
Age
30
Odp: Keep Distance

Niestety, tak samo jak inne skrypty "Keep Distance", nie dzia?a mi. ;/ Wy?wietla mi si? b??d.
 

Tevions

Active User
Joined
Feb 3, 2010
Messages
64
Reaction score
3
to juz musisz cos zle robic .. a jak wklejiles to do notatnika zmieniles koncowke na py ?
I jak dziala ?
Notka moderatorska:
Sklejam!
 
Last edited by a moderator:

mczrobert

New User
Joined
Feb 1, 2011
Messages
1
Reaction score
0
Odp: Keep Distance

Da? by? rade wkleic link ze zrobionym skryptem bo nie wychodzi mi cos z tym notatnikem ;D
 

Markeer24

Advanced User
Joined
Jan 6, 2011
Messages
416
Reaction score
42
Age
27
Odp: Keep Distance

Podrzucam z oryginalnej strony.
 

mczrobert

New User
Joined
Feb 1, 2011
Messages
1
Reaction score
0
Odp: Keep Distance

Dzi?ki Wielki :p a m?g?by? mi jeszcze powiedziec tak w skr?cie jak mam go dobrze ustawic by przed potworkami typu ghoul, Crypt Shambler zachowa? odleg?osc odbiegaj?c a przy potworkach takich jak bonelord lub minotaur archer podchodzil na pewna odleg?o?c.
 
Top