Показать сообщение отдельно
Старый 03.07.2012, 03:30   #3
Местный
 
Аватар для goodvin1709
 
Регистрация: 13.02.2011
Сообщений: 506
Сказал Спасибо: 121
Имеет 100 спасибок в 83 сообщенях
goodvin1709 пока неопределено
По умолчанию

Delphi Код:
const name='АхДаНикЧара';//Ник игрока. Radius=1000;//Радиус кача. HpProcent=75;//Процент при каком будет пить банки. var Loaded,Moved:Boolean; CenterX,CenterY,CenterZ:Integer;//переменные центральной точки. CurPosX,CurPosY,CurPosZ:Integer;//Переменные нахождения игрока. GoToX,GoToY,GoToZ:Integer;//Переменные цели куда бежать. HealOID,CountHeal:Integer;//Переменные банок из инвентаря. procedure Init; begin CenterPoint_ToS;//Вызвали /loc. Loaded:=false;//Инстализацыя. Buf:=hstr('14'); SendToServerEx(name); end; Procedure CenterPoint_ToS; begin Buf:=Hstr('B3 00 00 00 00'); SendToServerEx(name); end; procedure Free; begin end; function DIST(MOBX, MOBY, MOBZ:integer) : Integer; var x,y,z, summa : integer; begin x:= MOBX-CenterX; y:= MOBY-CenterY; z:= MOBZ-CenterZ; summa:= x*x+y*y+z*z; result:=Round(sqrt(summa)); end; Procedure UseHeal(Oid:Integer); begin Buf:=#$19; WriteD(Oid); WriteD(0); SendToServerEx(name); end; function DIST2(x1,y1,z1,x2,y2,z2:integer) : Integer; var x,y,z, summa : integer; begin x:= x2-x1; y:= y2-y1; z:= z2-z1; summa:= x*x+y*y+z*z; result:=Round(sqrt(summa)); end; Procedure Move(X,Y,Z:Integer); begin if Moved=false then begin buf:=#$0F; WriteD(X);//Куда бежать(X); WriteD(Y);//Куда бежать(y); WriteD(Z);//Куда бежать(z); WriteD(0);//Origin X(можно 0 ставить)(твоя даная позиция) WriteD(0);//Origin X(можно 0 ставить)(твоя даная позиция) WriteD(0);//Origin X(можно 0 ставить)(твоя даная позиция) WriteD(1);//Мышь-1 клава-0. SendToServerex(name); Moved:=true; end; end; Procedure Run; begin CurPosX:=ReadD(2); CurPosY:=ReadD(6); CurPosZ:=ReadD(10); SendMSG('До центра:'+vartostr(DIST(CurPosX,CurPosY,CurPosZ))); if (moved=true) and (dist2(GoToX,GoToY,GoToZ,CurPosX,CurPosY,CurPosZ)<20) then begin Moved:=false; SendMSG('Прийшли к цели.Дистанцыя между игроком и целью:'+vartostr(dist2(GoToX,GoToY,GoToZ,CurPosX,CurPosY,CurPosZ))); end; end; Procedure Inventory; var I,id,oid,count:Integer; begin count:=ReadH(4); for i:=0 to count do begin if ReadD(i*68+10)=1061 then begin HealOid:=ReadD(i*68+6); CountHeal:=ReadQ(i*68+18); i:=count; SendMSG('Считали:Зелья Исцеления OID:'+vartostr(HealOid)+' Количество:'+vartostr(CountHeal)); UseHeal(HealOid); end; end; end; Procedure Check_Heal_Status; begin if (ReadD(14))<((ReadD(22)/100)*HpProcent) then UseHeal(HealOID); end; begin if (fromserver) and (connectname=name) and (pck[1]=#$62) and (readD(6)=3) and (loaded=false) then begin CenterX:=ReadD(14); CenterY:=ReadD(22); CenterZ:=ReadD(30); SendMSG('Центер записан...('+vartostr(CenterX)+','+vartostr(CenterY)+','+vartostr(CenterZ)+')'); Loaded:=true; end; if (fromClient) and (connectname=name) and (pck[1]=#$59) then Run; If (FromServer) and (connectname=name) and (pck[1]=#$11) then Inventory; If (fromServer) and (connectname=name) and (pck[1]=#$18) then Check_Heal_Status; end.
Вот смесь моих процедур.еще пакетом NpcInfo ловить и добавлять в базу,потом,удалять при смерти,считывать таргет,Атака по таймеру,выбор моба для атаки(цыклом),ну и конечно к нему бежать.
__________________
---------------------------__--------__-----
---____- ___--____--- ___/'- /__ ___-(__)-____
--/-___-/-__-\/-__--\ /-__--'/--|-/--//---//--__--\
-/-/_/ -/-/_/--/-/_/--/-/_/--/|--|/--'//---//--/-/--/
-\___-/\____/\____/\____/-|____//__'//_'/-/__/
/_-__/

Последний раз редактировалось goodvin1709, 03.07.2012 в 03:32.
goodvin1709 вне форума   Ответить с цитированием