Вход

Просмотр полной версии : Автоюзанье цп/мп/хп


Damiencs
30.11.2010, 18:48
const
Name='НИК';
var
CurHP,MaxHP,CurCP,MaxCP,MyCorX,MyCorY,MyCorZ,MaxMP ,CurMP: integer;
CPuse,HPuse,MPuse: string;
i, CubicsSize, CharObjectId, tmpCharObjectId: integer;
tmpMyName, tmpMyTitle: string;

TimerMP,TimerCP,TimerHP: TTimer;

procedure Init; //Вызывается при включении скрипта
begin
TimerCP:=TTimer.Create(nil);
TimerCP.OnTimer:=@OnTimerCP;
TimerCP.enabled:=false;
TimerCP.interval:=1000; //интервал 1сек, т.к. чаще пить CP всеравно не будет, дабы не засорять трафик

TimerMP:=TTimer.Create(nil);
TimerMP.OnTimer:=@OnTimerMP;
TimerMP.enabled:=false;
TimerMP.interval:=1000; //интервал 1сек, т.к. чаще пить MP всеравно не будет, дабы не засорять трафик

TimerHP:=TTimer.Create(nil);
TimerHP.OnTimer:=@OnTimerHP;
TimerHP.enabled:=false;
TimerHP.interval:=15000; //интервал 15сек, т.к. действие одной бутылки = 15сек
end;

procedure OnTimerCP(Sender: TObject);
begin
buf:=CPuse;
SendToServerEx(Name);
end;
procedure OnTimerMP(Sender: TObject);
begin
buf:=MPuse;
SendToServerEx(Name);
end;
procedure OnTimerHP(Sender: TObject);
begin
buf:=HPuse;
SendToServerEx(Name);
end;

procedure Free; //Вызывается при выключении скрипта
begin
TimerCP.free;
TimerMP.free;
TimerHP.free;
HPuse:='';
CPuse:='';
end;


//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
//пьем сначала CP, потом HP банку что б запомнить их ID(я решил взять эти пакеты целиком, дабы не усложнять)
if FromClient and (pck[1]=#$19) and (CPuse='') then CPuse:=pck;
if FromClient and (pck[1]=#$19) and (CPuse<>pck) and (HPuse='') then HPuse:=pck;
if FromClient and (pck[1]=#$19) and (CPuse<>pck) and (HPuse<>pck) and (MPuse='') then MPuse:=pck;

if FromServer and (pck[1]=#$32) then

begin
MyCorX:=ReadD(2);
MyCorY:=ReadD(6);
MyCorZ:=ReadD(10);
i:=22;
tmpMyName:=ReadS(i);
i:=i+48;
MaxHP:=ReadD(i);
CurHP:=ReadD(i);
MaxMP:=ReadD(i);
CurMP:=ReadD(i);
i:= 552 + length(tmpMyName) * 2;
tmpMyTitle:=ReadS(i);
i:= i + 31;
CubicsSize:= ReadH(i);
i:= i + 28 + (CubicsSize * 2);
MaxCP:=ReadD(i);
CurCP:=ReadD(i);

end;


if FromServer and (pck[1]=#$18) then
begin
CurHP:=ReadD(14);
CurCP:=ReadD(30);
CurMP:=ReadD(22);
// ShowMessage(IntToStr(CurMP));




//если вы используете не грэйтер CP то вместо 200 подставьте кол-во CP сколько восстанавливает 1 банка
if (CurCP<MaxCP-200) then TimerCP.enabled:=true else TimerCP.enabled:=false;
if (CurHP<MaxHP) then TimerHP.enabled:=true else TimerHP.enabled:=false;
if (CurMP<MaxMP-2500) then TimerMP.enabled:=true else TimerMP.enabled:=false;
end;



end.

Добавлено через 1 минуту
Ребят можно сделать чтоб он останавливалсяю когда показатели норм!(Знаю что можно тупые ответов не надо).подскажите исправления пожалуйста.

dyh9l
30.11.2010, 18:50
неработает или че? че выложил т? и оформляй скрипт в коде

Добавлено через 2 минуты
//если вы используете не грэйтер CP то вместо 200 подставьте кол-во CP сколько восстанавливает 1 банка
if (CurCP<MaxCP-200) then TimerCP.enabled:=true else TimerCP.enabled:=false;
if (CurHP<MaxHP) then TimerHP.enabled:=true else TimerHP.enabled:=false;
if (CurMP<MaxMP-2500) then TimerMP.enabled:=true else TimerMP.enabled:=false;
end;
вот тебе остановление таймера

Damiencs
30.11.2010, 18:51
Да не робит он так и ест без остановки!даже когда полностью все в норме он все равно продолжает есть!

NLObP
30.11.2010, 23:50
Damiencs, не правильно определяются MaxHP и CurHP. Правь смещения согласно пакетам твоего сервера.

Вот так примерно они выглядят на Грации.
18=StatusUpdate:d(ObjectID)d(AttribCount:Loop.01.0 002)d(AttrID:Get.FSup)d(AttrValue)
32=UserInfo:d(X)d(Y)d(Z)d(Heading)d(ObjectID)s(Nam e)d(Race)d(Sex)d(ClassID:Get.ClassID)d(Level)q(Exp )d(STR)d(DEX)d(CON)d(INT)d(WIT)d(MEN)d(MaxHP)d(Cur rentHP)d(MaxMP)d(CurrentMP)d(SP)d(CurrentLoad)d(Ma xLoad)d(40)d(Unknown)d(RightEarring)d(LeftEarring) d(Necklace)d(RightRing)d(LeftRing)d(Head)d(RightHa nd)d(LeftHand)d(Gloves)d(Chest)d(Legs)d(Boots)d(Un known)d(Unknown)d(Hair)d(Face)d(Unknown)d(Unknown) d(0)d(0)d(0)d(0)d(0)d(0)d(Unknown)d(RightEarring)d (LeftEarring)d(Necklace)d(RightRing)d(LeftRing)d(H ead)d(RightHand)d(LeftHand)d(Gloves)d(Chest)d(Legs )d(Boots)d(Unknown)d(Unknown)d(Hair)d(Face)d(Unkno wn)d(Unknown)d(0)d(0)d(0)d(0)d(0)d(0)h(0)h(0)h(0)h (0)h(0)h(0)h(0)h(0)h(0)h(0)h(0)h(0)h(0)h(0)h(Augme ntID:Get.AugmentID)h(0)h(0)h(0)h(0)h(0)h(0)h(0)h(0 )h(0)h(0)h(0)h(0)h(0)d(Unknown)h(0)h(0)h(0)h(0)h(0 )h(0)h(0)h(0)h(0)h(0)h(0)h(0)h(0)h(0)h(0)h(0)h(0)h (0)h(0)h(0)d(PAtk)d(AtkSpd)d(PDef)d(Evasion)d(Accu racy)d(CritRate)d(MAtk)d(CastSpd)d(AtkSpd)d(MDef)d (PvpFlag)d(Karma)d(RunSpd)d(WalkSpd)d(SwimRunSpd)d (SwimWalkSpd)d(FlRunSpd)d(FlWalkSpd)d(FlyRunSpd)d( FlyWalkSpd)f(MoveMultiplier)f(AtkSpdMultiplier)f(C ollisionRadius)f(CollisionHeight)d(HairStyle)d(Hai rColor)d(Face)d(AccessLevel)s(Title)d(ClanID)d(Cla nCrestID)d(AllyID)d(AllyCrestID)d(Relation)c(MounT ype)c(PrivateStoreType)c(DwarvenCraft)d(PkKills)d( PvpKills)h(CubicsSize:Loop.01.0001)h(CubicID)c(0)d (AbnormalEffect)c(0)d(ClanPrivileges)h(RecomLeft)h (RecomHave)d(MountNpcID)h(InventoryLimit)d(ClassID :Get.ClassID)d(0)d(MaxCP)d(CurrentCP)c(isMount)c(T eam)d(ClanCrestLargeID)c(isNoble)c(isHero)c(isFish ing)d(FishX)d(FishY)d(FishZ)d(NameColor)c(isRunnin g)d(PledgeClass)d(0)d(TitleColor)d(CursedWeapon)d( TranformationID)d(AttackAttrElement)d(AttackAttrEl ementVal)d(DefAttrFire)d(DefAttrWater)d(DefAttrWin d)d(DefAttrEarth)d(DefAttrHoly)d(DefAttrUnholy)d(0 )