Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Спарринг воинов

Only working scripts
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Спарринг воинов

Post by Alex »

Code: Select all

Program fighter;

var 
t:integer;
enemy,bandage:cardinal;
tweapon,tshield,totemlife:word;
healtime,i:integer;
totem,bandagehealneeded:boolean;
b:TDateTime;

{$Include 'all.inc'}

procedure FullDisconnect;
begin
SetARStatus(false);
Disconnect;
end; 

procedure weaponckeck;
begin
if (not dead) and (connected) then begin
checksave;
if (getquantity(findtype(tweapon,ground)) > 0) and (gettype(ObjAtLayer(RhandLayer)) <> gettype(finditem)) then begin
addtosystemjournal('Weapon Change, осталось '+inttostr(findcount));
UnEquip(RHandLayer);
wait(500);
Equip(RhandLayer,finditem);
end;
Wait(3000);
checksave;
if (getquantity(findtype(tshield,ground)) > 0) and (gettype(ObjAtLayer(LhandLayer)) <> gettype(finditem)) then begin
addtosystemjournal('Shield Change, осталось '+inttostr(findcount));
UnEquip(LHandLayer);
wait(500);
Equip(LhandLayer,finditem);
end;
end;
end;

procedure resshim;
begin
AddToSystemJournal('Resshim. Enter');
if connected then begin
 b:=Now;
 checksave;hungry(1,ground);setwarmode(false);
 if (getquantity(findtype($0E21,ground))< 1)  and (connected) then fulldisconnect else bandage:= finditem;
 if (getquantity(findtype($0192,ground))< 1)  and (connected) then begin
  repeat
   AddToSystemJournal('Resshim. Trying to find ghost');
   Wait(5000);
   findtype($0192,ground);
  until getquantity(finditem) = 0;
 end;
 if findcount > 0 then begin
  AddToSystemJournal('Resshim. Ressurecting');
  if targetpresent then canceltarget;
  CheckTargetError(2,2);
  if finditem = enemy then begin
  waittargetobject(finditem);UseObject(bandage);
  WaitJournalline(b,'Thank',60000);
  end
  else Ignore(finditem);
 end;
end;
AddToSystemJournal('Resshim. Exit');
end;

procedure resself;
begin
 AddToSystemJournal('Resself. Enter');
 WaitConnection(3000);
 checksave;
 UOSay('.forgivethee');
 Wait(1000);
 WaitGump('1');
 setwarmode(true);
 while dead do wait(1000);
 if findtype($2006,ground) > 0 then begin
  if targetpresent then canceltarget;
  waittargetobject(finditem);
  useobject(findtype($0F51,ground));wait(1000);
 end;
 hungry(1,ground);
 weaponckeck;
 Wait(30000);
 UOSay('Thank');
AddToSystemJournal('Resself. Exit');
end;

procedure healwaiting;
begin
i:=0;
while i<healtime do begin
if totem then if (totem) and (not dead) and (life <= totemlife) then UOSay('Totem heal me!');
wait(1000);
i:=i+1;
end;
end;

Begin
 SetARStatus(true);Finddistance:=1;
{--------------------------------------}
 ENEMY := $00DAA4F4;
 tweapon := $0F51; {Dagger}
 tshield := $1B76; {Heater}
 totem := true;    {u vas est totem?}
 bandagehealneeded := true; {Lechenie bintami nada? ne otnositsa k resu}
 totemlife := 30;  {hp}
 healtime := 5; {sec, zaderjka na le4enie}
{--------------------------------------}
 while true do begin
  if connected then begin
  for t:=1 to 10 do begin
   WaitConnection(2000);
   if dead then resself;
   if isdead(enemy) then resshim;
   checksave;
   if bandagehealneeded then begin
   if (getquantity(findtype($0E21,ground)) < 1) and (connected) then fulldisconnect
   else bandage:=finditem;
   end;
   CheckTargetError(2,2);
   if getdistance(enemy) > 0 then begin
    if (wartargetid <> enemy) or (iswarmode(self) = false) then attack(enemy);
    waittargetobject(enemy);
    if targetpresent then canceltarget;
    if bandagehealneeded then useobject(bandage); healwaiting;
   end
   else Wait(1000);
  end;
  hungry(1,ground);
  weaponckeck;
  end;
 Wait(100);
 end;
End.
вот так вот :shock:
Last edited by Alex on 19.11.2005 1:23, edited 6 times in total.
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

Re: Спарринг воинов

Post by ParadoX »

харашо ) но чего ты решил сделать замену оружия отдельной функцией ) удобно, независимо, но не наю как повлияет на работу, ) впринципе было бы прикольно делать независимые функции на все ) только подумайте - или постоянные вызовы чексейвов или один самостоятельный скрипт который это дело проверяет... вобщем - жду ответа миралекса )
Miralex
Developer
Developer
Posts: 656
Joined: 11.03.2005 19:12
Contact:

Post by Miralex »

Проверку оружия действительно лучше внедрить в один скрипт. можно написать отдельной ф-цией и "всунуть" перед hungry например. Будет проверять примерно раз в 80 сек.

Также советую написать ф-цию проверки нахождения в игровом мире. В ней ждать пока чар не будет в игровом мире (connected). Ее рекомендую использовать перед нижеперечисленными строками кода:

Code: Select all

if dead then resself;

if getquantity(findtype($0E21,ground)) < 1 then fulldisconnect 
 else bandage:= finditem; 

hungry(1,ground);
Причина в том, что при конлосте обнуляются все переменные чара, поэтому эти строки будут ложно срабатывать.


P.S. идея скрипта хорошая, но надо дорабатывать его :wink:
Frenkis
Neophyte
Neophyte
Posts: 11
Joined: 16.05.2005 16:46

Post by Frenkis »

Выдает ошибку
Compiler: [Error] (sparing.txt at 28:2): Unknown identifier 'iscurmessages'
Error Include: File Not Exist
Antarius
Neophyte
Neophyte
Posts: 45
Joined: 24.06.2005 20:03

Post by Antarius »

Почему как только он напарника ресает, сразу кидает атаку и ложит его ? Где-то не поставили задержску ?
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

исправил
Antarius
Neophyte
Neophyte
Posts: 45
Joined: 24.06.2005 20:03

Post by Antarius »

А теперь после реса он втыкает секунд 10 и кидает атаку, потом собственно ложится...
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

скрипт расчитан на наличие тотемов, у обоих воинов, а задержку я поставил 40 сек для того что бы побольше стамины набралось пока они не деруцца
Antarius
Neophyte
Neophyte
Posts: 45
Joined: 24.06.2005 20:03

Post by Antarius »

Alex wrote:скрипт расчитан на наличие тотемов, у обоих воинов, а задержку я поставил 40 сек для того что бы побольше стамины набралось пока они не деруцца
Так бы сразу
GP
Posts: 6
Joined: 01.10.2005 1:28

Post by GP »

что ещё за тотемы? :)
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

зверушка котиорая хилит если сказать heal
Nightwolf
Neophyte
Neophyte
Posts: 22
Joined: 29.11.2005 18:27
Location: Одесса
Contact:

Post by Nightwolf »

....я так и не понял, ты заменял в начальном скрипте зделаные замечания, или нет % ?) :?
В моём доме буит играть музыка, но я её не услышу %(
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

я переделал скрипт полностью, потому что тот был не надежный, и все замечания были учтены
Brutus
Posts: 9
Joined: 13.11.2005 19:01
Contact:

Post by Brutus »

всё равно твой скрипт нормально работать не будет ;)
я б тебе сказал почему, да вот не хочу чтоб все кучами начали качать файтов на стелсе

кстати, я вижу ты девушек не любишь (особеннно мертвых) (пересмотри скрипт)

;)
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

ну за повышение онлайна тебе тока пасиба скажут, но это твое право)

а про девушек да, я забыл, надо будет поправить..
Post Reply