SedaN* napisał
Po 1 musisz miec (MUSISZ!!!!) neobota. Z zadnym innym botem nie wbijesz nawet 30lvla, no dobra moze 40.
Po 2 pallkiem no ja wiem czy tak najlepiej? Sam mam pallka i wiem, ze na bota to trzeba zrobic dobrego skilla bo czasem mu hity nie wchodzą i jak tak ucieka i wali to lurnie polowe respa na siebie.
Po 3 nie ma GM'ów, wiec teraz taki project Ci wypali jak najbardziej tylko jak powiedzialem - neobot i nic innego :)
gowno prawda, niestety przez brak elfbota bylem zmuszony uzywac TA, i sobie poradzilem dzieki python scryptom (najpierw uzywalem muttleya, ale nie byl nieco wadliwy)
zrobilem sobie skrypcik na poha (30 palek), bil cyclopsy (dystans 3kratki) i wracal po royalki do dp, depositowal kase. jakos mozna sobie poradzic bez neobota.
wczesniej bocilem na trollach i orkach i rotach na wschod od thais + refiller i tez bylo niezle.
kazdy moze sobie poradzic
jesli jednak chcesz bocic to lepiej brac knighta.
latwiejszy training, lepsze miejscowki, latwiej ustawic bota pod full afk
python skrypt na trzymanie dystansu do TA masz tutaj
Kod:
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 = 1;
minDist = 1;
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;
print 1
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 'defl',self.walkTo;
self.walkToPoint(params);
return;
def walkToPoint (self, params):
me = tareader.readSelfCharacter();
if self.RUN:
if tareader.getAttackedCreature() == 0:
self.walkTo = False;
return;
targ = tareader.getCharacterByTibiaId (tareader.getAttackedCreature());
if targ['hpPercLeft'] == 0:
tasender.walkOnTAMap(me['x'],me['y'],me['z']);
self.walkTo = False;
return;
if self.walkTo != False:
print 2
tasender.walkOnTAMap(self.walkTo['x'],self.walkTo['y'],self.walkTo['z']);
return;
def walkToPoint2 (self, params,(type,channel,nick,message)):
if self.RUN:
me = tareader.readSelfCharacter();
if nick == me['name'] and self.walkTo != False:
print 3
tasender.walkOnTAMap(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)
jezeli bys potrzebował :]
Zakładki