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

Нужна помощь по скрипту

тут можно задать вопрос по скриптингу
Post Reply
Hezgar
Posts: 4
Joined: 14.12.2010 16:37

Нужна помощь по скрипту

Post by Hezgar »

Имеется два скрипта оба не мои. В скриптинге понимаю на уровне школьных задачек. Помогите пожалуйста.

Code: Select all

{$Include 'all.inc'} 


var err,g,allowed,allowed2,terpila,xjoke: integer;

var List : Array [0..41] of integer;  // Если был дописан чар, тут менять цифру! 
var Check: String;




procedure GetResFromGround(tmptyp : cardinal; tmpstr : string); 

Var m, p : integer; 

begin 

FindDistance:=2; 
  

   findtype(tmptyp,ground);
   if FindCount > 0 then
   begin
   m := FindQuantity;
   Grab(FindItem,m) 
   UOsay('Взял ' + inttostr(m) + ' ' + tmpstr + '. Спасибо! '); 
   end;






end;













procedure isinlist; 
begin 



 List[1]:=$0000156F // 
    List[2]:=$0000258A //   
    List[3]:=$000BC551 // 
    List[4]:=$000BDC14 // 
    List[5]:=$000030BB // 
     List[6]:=$00132CFD // 
     List[7]:=$0004C683 // 
     List[8]:=$00043E64 // 
     List[9]:=$00174EFA // 
    List[10]:=$000320DF // 
    List[11]:=$0003F025 // 
    List[12]:=$00049702 // 
    List[13]:=$0004C683 // 
    List[14]:=$000027D0 // 
    List[15]:=$0004FF77 // 
    List[16]:=$0001F510 // 
    List[17]:=$0002F680 // 
    List[18]:=$0001B1E3 // 
    List[19]:=$00008De4 // 
    List[20]:=$00004E1c // 
    List[21]:=$001D9ED0 // 
    List[22]:=$99999999 // 
    List[23]:=$99999999 // 
    List[24]:=$99999999 // 
    List[25]:=$99999999 // 
    List[26]:=$99999999 // 
    List[27]:=$99999999 // 
    List[28]:=$99999999 // 
    List[29]:=$99999999 // 
    List[30]:=$99999999 // 
    List[31]:=$99999999 // 
    List[32]:=$99999999 // 
    List[33]:=$99999999 // 
    List[34]:=$99999999 // 
    List[35]:=$99999999 // 
    List[36]:=$99999999 // 
    List[37]:=$99999999 // 
    List[38]:=$99999999 // 
    List[39]:=$99999999 // 
    List[40]:=$99999999 // 
    List[41]:=$99999999 // 

// Дописывать после последнего!


allowed:=0;

for g := 0 to 41 do     // ТУт тож менять посл цифру !! 
begin
if terpila=List[g] then 
begin
allowed:=1;
end;
 end;



if allowed=0 then
begin
UOSAY(GetName(LineID) + ' ты кто такой? я тебя не знаю!')
end;


End; 















Procedure saysomethin;
var joke : Array [1..2] of String;
Begin

joke[1] := 'Flash может разменять неразменную монету.';    
joke[2] := 'Дьявол продал свою душу Flash.';

If xjoke<2 then
begin
UOSay(joke[xjoke]);
end;


End;



























procedure checkreags; 
begin 



allowed2:=1

FindTypeEx($0F86,0,backpack,true);
if FindCount < 1 then
begin
allowed2:=0
UOSAY('Реагенты закончились, кастить не буду!')
wait(2000);
UOSAY('Кинь на пол Mr и скажи *reags*')
end;


FindTypeEx($0F84,0,backpack,true);
if FindCount < 1 then
begin
allowed2:=0
UOSAY('Реагенты закончились, кастить не буду!')
wait(2000);
UOSAY('Кинь на пол Gr и скажи *reags*')
end;

FindTypeEx($0F88,0,backpack,true);
if FindCount < 1 then
begin
allowed2:=0
UOSAY('Реагенты закончились, кастить не буду!')
wait(2000);
UOSAY('Кинь на пол Ns и скажи *reags*')
end;

FindTypeEx($0F8C,0,backpack,true);
if FindCount < 1 then
begin
allowed2:=0
UOSAY('Реагенты закончились, кастить не буду!')
wait(2000);
UOSAY('Кинь на пол Sa и скажи *reags*')
end;

FindTypeEx($0F7A,0,backpack,true);
if FindCount < 1 then
begin
allowed2:=0
UOSAY('Реагенты закончились, кастить не буду!')
wait(2000);
UOSAY('Кинь на пол Bp и скажи *reags*')
end;

FindTypeEx($0F8D,0,backpack,true);
if FindCount < 1 then
begin
allowed2:=0
UOSAY('Реагенты закончились, кастить не буду!')
wait(2000);
UOSAY('Кинь на пол Ss и скажи *reags*')
end;


FindTypeEx($0F7B,0,backpack,true);
if FindCount < 1 then
begin
allowed2:=0
UOSAY('Реагенты закончились, кастить не буду!')
wait(2000);
UOSAY('Кинь на пол Bm и скажи *reags*')
end;


FindTypeEx($0F85,0,backpack,true);
if FindCount < 1 then
begin
allowed2:=0
UOSAY('Реагенты закончились, кастить не буду!')
wait(2000);
UOSAY('Кинь на пол Gs и скажи *reags*')
end;


 clearjournal; 


end;
















procedure buff; 
begin 

err:=0;
injournal('*cast*'); 

terpila:=LineID;
isinlist;
checkreags;

if ((allowed=1) and (allowed2=1)) then
begin


if (getdistance(LineID)>10) then 
   begin 
UOSAY(GetName(LineID) + ' а ты ещё дальше встать не мог?')
err:=1;
   end; 





if err=0 then
begin

UOSAY(GetName(LineID) + ' сейчас я тебя кааак закастую!')


   Waittargetobject(LineID)
   cast('Magic Arrow'); 
   wait(1500); 

  Waittargetobject(LineID)
   cast('Agility'); 
   wait(1500); 

  Waittargetobject(LineID)
   cast('Cunning'); 
   wait(1500); 

  Waittargetobject(LineID)
   cast('Strength'); 
   wait(1500); 

  Waittargetobject(LineID)
   cast('Bless'); 
   wait(2500); 

  Waittargetobject(LineID)
   cast('Arch Protection'); 
   wait(3500); 

  Waittargetobject(LineID)
   cast('Greater Heal'); 
   wait(1500); 



UOSAY(GetName(LineID) + ' готов. Следующий!')

end;


end;


end; 







procedure dispell; 
begin 

err:=0;
injournal('*dispel'); 

terpila:=LineID;
isinlist;
checkreags;

if ((allowed=1) and (allowed2=1)) then
begin




if (getdistance(LineID)>10) then 
   begin 
UOSAY(GetName(LineID) + ' а ты ещё дальше стать не мог?')
err:=1;
   end; 





if err=0 then
begin

UOSAY(GetName(LineID) + ' шо, покурсили тебя, да?')



   Waittargetobject(LineID)
   cast('Magic Arrow'); 
   wait(1500); 



  Waittargetobject(LineID)
   cast('Dispel'); 
   wait(3500); 


UOSAY(GetName(LineID) + ' готов. Следующий!')

end;



end;

end;








procedure heal; 
begin 






err:=0;
injournal('*heal'); 

terpila:=LineID;
isinlist;



checkreags;


if ((allowed=1) and (allowed2=1)) then
begin







if (getdistance(LineID)>10) then 
   begin 
UOSAY(GetName(LineID) + ' а ты ещё дальше стать не мог?')
err:=1;
   end; 





if err=0 then
begin

UOSAY(GetName(LineID) + ' бедняжка, кто тебя обидел?')




  Waittargetobject(LineID)
   cast('Greater Heal'); 
   wait(2500); 


UOSAY(GetName(LineID) + ' готов. Следующий!')

end;

end;



end;
























procedure cure; 
begin 






err:=0;
injournal('*cure'); 

terpila:=LineID;
isinlist;



checkreags;


if ((allowed=1) and (allowed2=1)) then
begin







if (getdistance(LineID)>10) then 
   begin 
UOSAY(GetName(LineID) + ' а ты ещё дальше стать не мог?')
err:=1;
   end; 





if err=0 then
begin

UOSAY(GetName(LineID) + ' отравился, что-ли?')




  Waittargetobject(LineID)
   cast('Arch Cure'); 
   wait(2500); 


UOSAY(GetName(LineID) + ' готов. Следующий!')

end;

end;



end;


























procedure checkmana; 
begin 

if getmana(self)<50 then
begin
Useskill('Meditation')

wait(10000)
 clearjournal; 
end;




end;





begin 
while true do 
   begin 


checkmana;


 if (InJournal('*cast*')<>-1) then begin
   buff; 
  clearjournal; 
end;

 if (InJournal('*dispel*')<>-1) then begin
dispell;
  clearjournal; 
end;

 if (InJournal('*heal*')<>-1) then begin
heal;
  clearjournal; 
end;


 if (InJournal('*cure*')<>-1) then begin
  cure; 
  clearjournal; 
end;




 if (InJournal('*reags*')<>-1) then begin
GetResFromGround($0F86,'Mr');
wait(300); 
GetResFromGround($0F84,'Gr'); 
wait(300); 
GetResFromGround($0F88,'Ns'); 
wait(300); 
GetResFromGround($0F8C,'Sa'); 
wait(300); 
GetResFromGround($0F7A,'Bp'); 
wait(300); 
GetResFromGround($0F8D,'Ss'); 
wait(300); 
GetResFromGround($0F7B,'Bm'); 
wait(300); 
GetResFromGround($0F85,'Gs'); 
wait(300); 
  clearjournal; 
end;





 if (InJournal('*food*')<>-1) then begin
GetResFromGround($097B,'хавки');
wait(300); 
  clearjournal; 
end;







if (InJournal('help')<>-1) then begin
UOSAY('Я понимаю команды cast, heal, dispel,cure,food написанные в звёздочках (*)')
wait(1000);
clearjournal; 
end;

wait(1000)
  saysomethin;
  Hungry(1,backpack);
end;
end.




Данный скрипт выдает вот что:

Code: Select all

13:34:47 [bz]: Compiling
13:34:47 [bz]: Compiler: [Hint] (Bless .sc at 14:5):  Variable 'P' never used
13:34:47 [bz]: Compiler: [Hint] (Bless .sc at 7:5):  Variable 'CHECK' never used
13:34:47 [bz]: Compiled succesfully
13:34:48 [bz]: Out Of Range at 34.221
13:34:48 [bz]: Script Bless .sc stoped successfuly
И есть второй скрипт:

Code: Select all

program cast;
const
sunduk = $54C6F6B6;
var
r,i : integer;
s : string;
MissingReg : cardinal;
Reags : array[1..8] of cardinal;
ctime : TDateTime;

{$Include 'all.inc'}


function timer(var acttimer:integer;actafter:integer):boolean;
begin
   result:=false;
   acttimer:=acttimer+1;
   if acttimer>=actafter then
   begin
      acttimer:=0;
      result:=true;      
   end;
end;

procedure CheckJournal;
begin
if  int < 180 then
        begin
        waittargetself;
        Cast('Bless');
        wait(3000);
        checksave;
        waittargetself;
        Cast('Cunning');
        wait(3000);
        checksave;
        exit;
        end;    
if InJournalBetweenTimes('hp', ctime, Now) <> -1 then
    begin
    WaitTargetObject(LineID);
    cast('Greater Heal');
    exit;
    end;

if InJournalBetweenTimes('arm', ctime, Now) <> -1 then
    begin
    WaitTargetObject(LineID);
    cast('Arch Protection');
    exit;
    end;

if InJournalBetweenTimes('bless', ctime, Now) <> -1 then
    begin
    WaitTargetObject(LineID);
    cast('Bless');
    exit;
    end;
if InJournalBetweenTimes('cast', ctime, Now) <> -1 then
    begin
    WaitTargetObject(LineID);
    cast('Bless');
    wait(2500);
    WaitTargetObject(LineID);
    Cast('Agility');
    wait(2500);
    WaitTargetObject(LineID);
    Cast('Strength');
    wait(2500);
    WaitTargetObject(LineID);
    Cast('Cunning');
    wait(2500);
    WaitTargetObject(LineID);
    Cast('Arch Protection');
    wait(3000);
    WaitTargetObject(LineID);
    Cast('Greater Heal');
    wait(2000);
    exit;
    end;
if InJournalBetweenTimes('macro', ctime, Now) <> -1 then
    begin
    WaitTargetObject(LineID);
    cast('Bless');
    wait(3000);
    WaitTargetObject(LineID);
    Cast('Agility');
    wait(3000);
    WaitTargetObject(LineID);
    Cast('Heal');
    wait(3000);
    exit;
    end;
if InJournalBetweenTimes('dispel', ctime, Now) <> -1 then
    begin
    WaitTargetObject(LineID);
    Cast('Dispel');
    end;
end;

function CheckReags : boolean;
begin
Result := True;
Reags[1] := $0F7B // BloodMosss
Reags[2] := $0F7A // BlackPearls
Reags[3] := $0F84 // Garlick
Reags[4] := $0F85 // Ginseng
Reags[5] := $0F86 // Madrake Roots
Reags[6] := $0F88 // NightShades
Reags[7] := $0F8C // Sulphuruos Ashs
Reags[8] := $0F8D // Spider Silks
for r := 1  to 8  do
    begin
    findtype(Reags[r],BackPack);
    if findcount = 0 then  
        begin
        MissingReg := Reags[r];
        Result := False;
        end;
    end;
end;

procedure Waiting;
begin
if MissingReg = $0F7B then s := 'BloodMosss';
if MissingReg = $0F7A then s := 'BlackPearls';
if MissingReg = $0F84 then s := 'Garlick';
if MissingReg = $0F85 then s := 'Ginseng';
if MissingReg = $0F86 then s := 'Madrake Roots';
if MissingReg = $0F88 then s := 'NightShades';
if MissingReg = $0F8C then s := 'Sulphuruos Ashs';
if MissingReg = $0F8D then s := 'Spider Silks';
AddToSystemJournal('KoH4uJIucb ' + s);
while (not CheckReags) do
    begin
    ctime := now;
    wait(10000);
    if InJournalBetweenTimes('dispel|cast|macro|arm|hp', ctime, Now) <> -1 then uosay('KoH4uJIucb ' + s );
    uosay(' ');
    findtype(MissingReg,sunduk);
    if findcount > 0 then MoveItems(sunduk, MissingReg, $FFFF, backpack, 0, 0, 0, 500);
    end;
end;

BEGIN
uosay('.showclasse');
useobject(sunduk);
MissingReg := 0;
while (not dead) do
    begin
    if (not CheckReags) then Waiting;
    ctime:=now;
    wait(1000);
    checksave;
    if timer(i,100) then
        begin
        Hungry(1,backpack);
        uosay(' ');
        end;
    if TargetPresent then CancelTarget;
    CheckJournal;
    if mana < 35  then
        begin
        wait(1000);
        useskill('Meditation');
        WaitJournalLine(now,'stop medit',30000);
        checksave;
        end;
    end;
END.
Второй полностью рабочий.

А просьба такова: Очень хотелось что бы починили первый скрипт или добавили во второй что бы он кастовал не на всех подрят, а на людей из списка.

Пожааалуйста, ооочень надо. Спасибо[/code]
Fenix
Developer
Developer
Posts: 275
Joined: 24.08.2010 7:20
Location: Ставрополь
Contact:

Post by Fenix »

Пример скрипта по обкасту можешь посмотреть здесь.

P.S.: Прежде чем выкладывать скрипт на форуме неплохо бы его сначала отредактировать. У меня нет никакого желания разбираться в километровых скриптах, где половину объема занимают символы переноса строки, да ещё и уровни кода не видны.
Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
nikbk
Neophyte
Neophyte
Posts: 45
Joined: 11.09.2009 0:02
Contact:

Post by nikbk »

Мда много времени у меня затратило чтение это скрипта))) и поиска ошибки
"Совершенного кода не бывает, вседа найдется какой нибудь фрик который все испортит." © Cклонный к насилию Психопат
Post Reply