Code: Select all
//Написал Shinma
//писал для войнов и их брони.
//Задаем ИД сундука,ИД оппонента, Тип оружия, Цвет Оружия. поблизости должно быть корыто
//для мытья бинтов. но можно и без него, тогда бинтами запаситесь побольше.
//бинты,броню и оружие берет из сундука.ставим двух чаров рядом и запускаем
//им этот скрипт.
//соответствено качает тот навык которое качает прописанное вами оружие
Program sparingVSlama;
{$Include 'all.inc'}
const
Sunduk=$4004FE71; //Сундук с бинтами и оружием, если сундук =0, то не ищет в сундуке,
//а берет только из сумки.
lama=$078B234B; //ID игрока с которым стоите в спаринге
Weapon=$13E3; //Тип оружия на котором качаетесь
CWeapon=$0482; //Цвет оружия.
//Дальше идет типы брони для война. Если поставите 0 -ноль вмсто типа, проверка
// этой вещи осуществляться не будет.
Tshield=$1B76 ;
Tshield2=$1B77;
Tgolova=$1412 ;
Tgolova2=$1419 ;
TSheia=$1413 ;
Ttors=$1415 ;
Ttors2=$1416 ;
Tnogi=$1411 ;
Tnogi2=$141A;
Tlokti=$1410 ;
Tlokti2=$1417 ;
Tperchatki=$1414 ;
Tperchatki2=$1418;
Bint=$0E21;
BloodBint=$0E20;
var
h,l,i:word;
Water:cardinal;
VGolos,GGolos:word;
ctime:TDatetime;
procedure krik;
begin
checksave;
checklag(60000);
if (GetHP(self)<80)and (VGolos=0) then
begin
checksave;
checklag(60000);
uosay('Стоп мля');
VGolos:=1;
end;
end;
Procedure Korito;
var g : integer;
TypeK : Array [0..3] of Word;
begin
krik;
checksave;
checklag(60000);
Water:=0;
FindDistance:=2;
TypeK[0] := $0B41 ;
TypeK[1] := $0B42;
TypeK[2] := $0B43 ;
TypeK[3] := $0B44 ;
for g:=0 to 3 do
begin
checksave;
checklag(60000);
FindTypeEx(TypeK[g],$0000,Ground,false);
if FindCount>0 then
Water:=FindItem;
end;
if Water=0 then
for g:=0 to 3 do
begin
krik;
wait(100);
checksave;
checklag(60000);
Water:=(GetQuantity(FindType(TypeK[g],ground)));
if VGolos=1 then Break;
end;
end;
Procedure Heal(who:cardinal);
begin
krik;
checksave;
checklag(60000);
l:=0;
while (GetHP(who)<(GetMaxHP(who)-10)) and (connected) and (l<6)do
begin
l:=l+1;
checksave;
checklag(60000);
UseObject(sunduk);
wait(300);
if (GetQuantity(FindType(Bint,sunduk))> 0) and (GetQuantity(FindType(Bint,backpack))<1) then
begin
repeat
krik;
CheckSave;
checklag(60000);
MoveItem(FindType(Bint,sunduk),100,BackPack,0,0,0);
wait (500);
CheckSave;
checklag(60000);
until (Count(Bint) > 0)or (VGolos=1);
end
else
if (GetQuantity(FindType(Bint,sunduk))< 10) and (GetQuantity(FindType(Bint,backpack))< 1) and (VGolos=0)then
repeat
krik;
UseObject(sunduk);
CheckSave;
checklag(60000);
AddToSystemJournal('Бинты кончились');
krik;
wait(10000*6);
until (GetQuantity(FindType(Bint,sunduk)) > 0)or (GetHP(self)=GetMaxHP(self))or (VGolos=1);
if count(Bint)>0 then
begin
ctime := Now;
checksave;
checklag(60000);
WaitTargetObject(who);
UseType(Bint,$0000);
h:=0;
repeat
krik;
wait(100);
checksave;
checklag(60000);
h:=h+1;
until (InJournalBetweenTimes('Вы переместили|Вы успешно залечили раны|Вы полностью здоровы|успешно залечили ваши раны', ctime, Now)>= 0)or dead or (h>100)or (VGolos=1);
if (count(BloodBint)>100) and (water<>0) then
begin
WaitTargetObject(water);
UseType(BloodBint,$0000);
End;
end;
krik;
end;
end;
procedure shield;
begin
krik;
if ((GetType(ObjAtLayer(LhandLayer))<>Tshield)and(GetType(ObjAtLayer(LhandLayer))<>Tshield2)) and (Tshield<>0)then
begin
if (Sunduk<>0) and (count(Tshield)=0) then
begin
UseObject(Sunduk);
wait(500);
krik;
checksave;
checklag(60000);
MoveItem(FindType(Tshield,Sunduk),1,BackPack,0,0,0);
wait(500);
end;
krik;
wait(500);
checksave;
checklag(60000);
UseObject(FindType(Tshield,BackPack));
end;
end;
procedure Eqweapon;
begin
krik;
if ((GetType(ObjAtLayer(RhandLayer))<>Weapon)and
(GetType(ObjAtLayer(LhandLayer))<>Weapon))and
(Weapon<>0)then
begin
if (Sunduk<>0) and (count(Weapon)=0) then
begin
UseObject(Sunduk);
wait(500);
krik;
checksave;
checklag(60000);
MoveItem(FindTypeEx(Weapon,CWeapon,Sunduk,false),1,BackPack,0,0,0);
wait(500);
end;
krik;
wait(500);
checksave;
checklag(60000);
UseType(Weapon,CWeapon);
end;
end;
procedure Golova;
begin
krik;
if ((GetType(ObjAtLayer(HatLayer))<>TGolova)and(GetType(ObjAtLayer(HatLayer))<>TGolova2))and (TGolova<>0) then
begin
if (Sunduk<>0) and (count(TGolova)=0) then
begin
UseObject(Sunduk);
wait(500);
krik;
checksave;
checklag(60000);
MoveItem(FindType(TGolova,Sunduk),1,BackPack,0,0,0);
wait(500);
end;
krik;
wait(500);
checksave;
checklag(60000);
UseObject(FindType(TGolova,BackPack));
end;
end;
procedure Sheia;
begin
krik;
if (GetType(ObjAtLayer(NeckLayer))<>TSheia)and (TSheia<>0) then
begin
if (Sunduk<>0) and (count(TSheia)=0) then
begin
UseObject(Sunduk);
wait(500);
krik;
checksave;
checklag(60000);
MoveItem(FindType(TSheia,Sunduk),1,BackPack,0,0,0);
wait(500);
end;
krik;
wait(500);
checksave;
checklag(60000);
UseObject(FindType(TSheia,BackPack));
end;
end;
procedure Tors;
begin
krik;
if ((GetType(ObjAtLayer(TorsoLayer))<>TTors)and(GetType(ObjAtLayer(TorsoLayer))<>TTors2))and (TTors<>0) then
begin
if (Sunduk<>0) and (count(TTors)=0) then
begin
UseObject(Sunduk);
wait(500);
krik;
checksave;
checklag(60000);
MoveItem(FindType(TTors,Sunduk),1,BackPack,0,0,0);
wait(500);
end;
krik
wait(500);
checksave;
checklag(60000);
UseObject(FindType(TTors,BackPack));
end;
end;
procedure Nogi;
begin
krik;
if ((GetType(ObjAtLayer(PantsLayer))<>TNogi)and(GetType(ObjAtLayer(PantsLayer))<>TNogi2))and (TNogi<>0) then
begin
if (Sunduk<>0) and (count(TNogi)=0) then
begin
UseObject(Sunduk);
wait(500);
krik;
checksave;
checklag(60000);
MoveItem(FindType(TNogi,Sunduk),1,BackPack,0,0,0);
wait(500);
end;
krik;
wait(500);
checksave;
checklag(60000);
UseObject(FindType(TNogi,BackPack));
end;
end;
procedure Lokti;
begin
krik;
if ((GetType(ObjAtLayer(ArmsLayer))<>TLokti)and (GetType(ObjAtLayer(ArmsLayer))<>TLokti2))and (TLokti<>0) then
begin
if (Sunduk<>0) and (count(TLokti)=0) then
begin
UseObject(Sunduk);
wait(500);
krik;
checksave;
checklag(60000);
MoveItem(FindType(TLokti,Sunduk),1,BackPack,0,0,0);
wait(500);
end;
krik;
wait(500);
checksave;
checklag(60000);
UseObject(FindType(TLokti,BackPack));
end;
end;
procedure Perchatki;
begin
krik;
if ((GetType(ObjAtLayer(GlovesLayer))<>TPerchatki)and(GetType(ObjAtLayer(GlovesLayer))<>TPerchatki2))and (TPerchatki<>0) then
begin
if (Sunduk<>0) and (count(TPerchatki)=0) then
begin
UseObject(Sunduk);
wait(500);
krik;
checksave;
checklag(60000);
MoveItem(FindType(TPerchatki,Sunduk),1,BackPack,0,0,0);
wait(500);
end;
krik;
wait(500);
checksave;
checklag(60000);
UseObject(FindType(TPerchatki,BackPack));
end;
end;
Procedure CheckShmot;
begin
krik;
AddToSystemJournal('304 проверка Щита');
shield;
AddToSystemJournal('306 проверка оружия');
Eqweapon;
AddToSystemJournal('308 проверка шлема');
Golova;
AddToSystemJournal('310 проверка шеи');
Sheia;
AddToSystemJournal('312 проверка торса');
Tors;
AddToSystemJournal('314 проверка ног');
Nogi;
AddToSystemJournal('316 проверка локти');
Lokti;
AddToSystemJournal('318 проверка перчи');
Perchatki;
krik;
end;
procedure Golos(Text,SenderName:String;SenderID : Cardinal);
begin
if (Text = 'Стоп мля') then
begin
AddToSystemJournal('314 = сто мля');
if(SenderID=lama)then
SetWarMode(false);
AddToSystemJournal('lama ='+inttostr(lama));
AddToSystemJournal('SenderID ='+inttostr(SenderID));
//uosay('Стоп мля');
SetWarMode(false);
VGolos:=1;
end;
if (Text = 'гогого') then
begin
AddToSystemJournal('385 = гогого');
if(SenderID=lama)then
GGolos:=1;
end;
end;
procedure Helper;
var
f:word;
begin
f:=0;
i:=0;
AddToSystemJournal('Helper');
repeat
for i:=0 to 3 do
begin
checksave;
checklag(60000);
if WarMode = true then SetWarMode(false);
wait(500);
end;
f:=f+1;
wait(1000);
checksave;
checklag(60000);
// uosay('Стоп мля');
until (f<4) or (not connected) or dead;
repeat
AddToSystemJournal('Лечу себя');
Heal(self);
checksave;
checklag(60000);
until (GetHP(self)>(GetMaxHP(self)-10))or dead or(not connected);
repeat
AddToSystemJournal('Лечу цель');
Heal(lama);
checksave;
checklag(60000);
until (GetHP(lama)>(GetMaxHP(lama)-10)) or dead or (not connected);
if (GetHP(lama)>(GetMaxHP(lama)-10))and(GetHP(self)>(GetMaxHP(self)-10))then
begin
checksave;
checklag(60000);
uosay('гогого');
VGolos:=0;
GGolos:=0;
Attack(lama);
end;
AddToSystemJournal('вышел с хелпера');
end;
begin
SetPauseScriptOnDisconnectStatus(True);
SetARStatus(True);
//SetEventProc(evSpeech,'Golos');
SetEventProc(evUnicodeSpeech,'Golos');
VGolos:=0;
GGolos:=0;
Korito;
checksave;
checklag(60000);
Attack(lama);
while not dead do
begin
if (VGolos=0) and (GGolos=0) then
Korito;
AddToSystemJournal('Лечение себя');
if (VGolos=0) and (GGolos=0)then
Heal(self);
AddToSystemJournal('проверка вещей');
if (VGolos=0)and (GGolos=0) then CheckShmot;
if (VGolos=0) and (GGolos=0)then
begin
AddToSystemJournal('Лечение Цели');
Heal(lama);
end;
if (VGolos=1) or (GGolos=1) then Helper;
end;
end.