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

Помогиет со скриптом

Only working scripts
xam
Neophyte
Neophyte
Posts: 23
Joined: 16.11.2010 21:48

Помогиет со скриптом

Post by xam »

Мой первый скрипт.. не судите строго...

Code: Select all

Program ItemID; 
var i : Integer; 
DagerType : Word; 
Dager : Cardinal;
Vendor : Cardinal;
Korova : Cardinal;
Bulova : Cardinal;

{$Include 'all.inc'}
procedure FullDisconnect; 


begin 
SetARStatus(true);
while GetSkillValue('Hiding') < 80.0 do
Disconnect; 
end;

procedure CheckDead; 
begin 
waitconnection(3000); 
CheckSave; 
if Dead then 
begin 
 SetWarMode(true); 
 WaitGump('1'); 
 wait(5000); 
 while (Dead) do Wait (1000); 
 wait (2000); 
 Hungry(1, ground); 
end; 

end;
Begin 
FindDistance := 0; 
SetARStatus(false); 
waitconnection(3000); 
CheckSave; 
wait(3000); 
SetARStatus(true); 
DagerType := $0F52; //Дагер ID
Vendor := $00021790; // Вендор ID
Korova := $0001E0B8; // Животное ID
Bulova := $405C2AE2; ========>>>>>>> Как мне сделать чтобы булову из пака ЮЗАТЬ?
FindType(DagerType, BackPack); 

Dager := finditem; 
if Dager = 0 then 
    begin 
    FullDisconnect; 
    AddToSystemJournal('Dager no finded'); 
    end; 

while true do 
begin
 SetARStatus(true); 

  waitconnection(3000); 
  CheckSave; 
  UseSkill('Arms Lore'); 
  WaitTargetObject(Bulova); ==========>>>>>> Почему то не хочет из пака юзать а по типу юзает????
  wait(11000); 
 waitconnection(3000); 
  CheckSave; 
 UseSkill('item identification'); 
 WaitTargetObject(Dager);
wait(11000);
useskill('Hiding')   ==============>>>>>> Как хайд заставить после 70 со стилом работать?????????
wait(11000);
 if TargetPresent then CancelTarget; 
        CheckTargetError(5,2); 
        CheckSave; 
   UseSkill('Anatomy'); 
                WaitTargetObject(Vendor); 
   Wait(10000);
 if TargetPresent then CancelTarget; 
        CheckTargetError(5,2); 
        CheckSave; 
   UseSkill('Animal Lore'); 
                WaitTargetObject(Korova); 
   Wait(10000);


  i := i + 1; 
  end;

end.
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Re: Помогиет со скриптом

Post by CFA »

Bulova := $405C2AE2; ========>>>>>>> Как мне сделать чтобы булову из пака ЮЗАТЬ?
WaitTargetObject(Bulova); ==========>>>>>> Почему то не хочет из пака юзать а по типу юзает????
Пак - это бекпак чара, или другой? Если другой, то вероятно потому, что пак не открыт.
useskill('Hiding') ==============>>>>>> Как хайд заставить после 70 со стилом работать?????????
А что для этого надо сделать в клиенте?
xam
Neophyte
Neophyte
Posts: 23
Joined: 16.11.2010 21:48

Re: Помогиет со скриптом

Post by xam »

CFA wrote:
Пак - это бекпак чара, или другой? Если другой, то вероятно потому, что пак не открыт.
useskill('Hiding') ==============>>>>>> Как хайд заставить после 70 со стилом работать?????????
А что для этого надо сделать в клиенте?
Да пак это бекпак чара =) и он открыт.. но почему то меня смущает вот это

Code: Select all

FindType(DagerType, BackPack); 

Dager := finditem; 
if Dager = 0 then 
    begin 
    FullDisconnect; 
    AddToSystemJournal('Dager no finded'); 
    end; 
когда я пытаюсь изменить

Code: Select all

DagerType := $0F52; /////////////////// Дагер тип
Vendor := $00021790; ////////////////// Вендор ид
Korova := $0001E0B8; //////////////////
Bulova := $405C2AE2;
на

Code: Select all

Dager := $00541790; /////////////////// Дагер тип
Vendor := $00021790; ////////////////// Вендор ид
Korova := $0001E0B8; //////////////////
Bulova := $405C2AE2;
и убрать вот эти строчки скрипт не работает

Code: Select all

FindType(DagerType, BackPack); 

Dager := finditem; 
if Dager = 0 then 
    begin 
    FullDisconnect; 
    AddToSystemJournal('Dager no finded'); 
    end; 

while true do 
  • Он даже не реагирует
__________________________________________________________


Мне надо из хайда сделать наподобие вот такого скрипта сделать

Code: Select all

program Hiding; 
var t:Integer; 

{$Include 'all.inc'} 

Begin 
SetARStatus(true); 

while GetSkillValue('Hiding') < 80.0 do 

   begin 
   if connected then 
      begin 
      for t:= 0 to 30 do 
         begin 
         CheckSave; 
         UseSkill('Hiding'); 
         Wait(11000); 
         end; 
      CheckSave; 
      end; 
   end; 

while true do 

   begin 
   if Hidden then 
   useskill('Stealth') 
   else useskill('Hiding'); 
   wait(10000); 
   end; 

End.
    xam
    Neophyte
    Neophyte
    Posts: 23
    Joined: 16.11.2010 21:48

    Post by xam »

    Я хочу общий скрипт сделать на прокачку скилов основных..
    CFA
    Developer
    Developer
    Posts: 492
    Joined: 20.04.2006 6:03
    Contact:

    Re: Помогиет со скриптом

    Post by CFA »

    DagerType : Word; это 2 байта, а id 4 байтный и такое число -$00541790 - просто не влезает в переменную. если изменить тип DagerType на cardinal, подозреваю, что все заработает.

    Насчет хайда - выделить это все в отдельную процедуру и вызывать ее
    Fenix
    Developer
    Developer
    Posts: 275
    Joined: 24.08.2010 7:20
    Location: Ставрополь
    Contact:

    Post by Fenix »

    Использование стелса когда хайдинга больше 80:

    Code: Select all

    begin
      while not Dead do
      begin
        UseSkill('Hiding');
        Wait(11000);
        CheckLag(15000);
        if Hidden and (GetSkillValue('Hiding') > 80) then
        begin
          UseSkill('Stealth');
          Wait(11000);
          CheckLag(15000);
        end;
      end;
    end.
    Совет: если значение переменной не изменяется, то это не переменная, а константа. В твоем случае переменные DagerType, Vendor, Korova, Bulova можно вынести в константы:

    Code: Select all

    const
      DagerType = $0F52;
      Vendor = $00021790; 
      Korova = $0001E0B8; 
      Bulova = $405C2AE2;
    Соответственно, константы в паскале объявляются до типов и переменных (в твоём случае должны идти до блока var'ов).
    Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
    "Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
    xam
    Neophyte
    Neophyte
    Posts: 23
    Joined: 16.11.2010 21:48

    Post by xam »

    Fenix wrote:Использование стелса когда хайдинга больше 80:

    Code: Select all

    begin
      while not Dead do
      begin
        UseSkill('Hiding');
        Wait(11000);
        CheckLag(15000);
        if Hidden and (GetSkillValue('Hiding') > 80) then
        begin
          UseSkill('Stealth');
          Wait(11000);
          CheckLag(15000);
        end;
      end;
    end.
    Совет: если значение переменной не изменяется, то это не переменная, а константа. В твоем случае переменные DagerType, Vendor, Korova, Bulova можно вынести в константы:

    Code: Select all

    const
      DagerType = $0F52;
      Vendor = $00021790; 
      Korova = $0001E0B8; 
      Bulova = $405C2AE2;
    Соответственно, константы в паскале объявляются до типов и переменных (в твоём случае должны идти до блока var'ов).
    Fenix я только учусь... покажи мне пожалуйста на примере. Мне сложно пока что
    xam
    Neophyte
    Neophyte
    Posts: 23
    Joined: 16.11.2010 21:48

    Post by xam »

    И как мне вот это запехнуть в мой скрипт на это местою.
    Вот сюда

    Code: Select all

    wait(11000);
    useskill('Hiding')   
    wait(11000);
    =====>>>>:>

    Code: Select all

    begin 
      while not Dead do 
      begin 
        UseSkill('Hiding'); 
        Wait(11000); 
        CheckLag(15000); 
        if Hidden and (GetSkillValue('Hiding') > 80) then 
        begin 
          UseSkill('Stealth'); 
          Wait(11000); 
          CheckLag(15000); 
        end; 
      end; 
    end.
    Fenix
    Developer
    Developer
    Posts: 275
    Joined: 24.08.2010 7:20
    Location: Ставрополь
    Contact:

    Post by Fenix »

    Сделай процедуру:

    Code: Select all

    procedure UseHiding;
    begin 
      UseSkill('Hiding'); 
      Wait(11000); 
      CheckLag(15000); 
      if Hidden and (GetSkillValue('Hiding') > 80) then 
      begin 
        UseSkill('Stealth'); 
        Wait(11000); 
        CheckLag(15000); 
      end; 
    end;
    Затем вызывай её в основной процедуре скрипта (та что между begin ... end.):

    Code: Select all

    begin
      while not Dead do
      begin
        UseHiding;
        //Тут можно добавить вызовы других методов, если таковые нужны.
      end;
    end.
    Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
    "Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
    xam
    Neophyte
    Neophyte
    Posts: 23
    Joined: 16.11.2010 21:48

    Post by xam »

    Хм а если я хочу много процедур это должно выглядить вот так?

    Code: Select all

    Program ItemID; 
    var i : Integer; 
    DagerType : Word; 
    Dager : Cardinal; 
    Vendor : Cardinal; 
    Korova : Cardinal; 
    Bulova : Cardinal; 
    
    {$Include 'all.inc'} 

    Code: Select all

    procedure FullDisconnect; 
    
    begin 
    SetARStatus(true); 
    while GetSkillValue('Hiding') < 80.0 do 
    Disconnect; 
    end;
    
    procedure UseHiding; 
    begin 
      UseSkill('Hiding'); 
      Wait(11000); 
      CheckLag(15000); 
      if Hidden and (GetSkillValue('Hiding') > 80) then 
      begin 
        UseSkill('Stealth'); 
        Wait(11000); 
        CheckLag(15000); 
      end; 
    end;
    
    begin 
      while not Dead do 
      begin 
        FullDisconnect; 
        //Тут можно добавить вызовы других методов, если таковые нужны. 
      end; 
    end.
    
    begin 
      while not Dead do 
      begin 
        UseHiding; 
        //Тут можно добавить вызовы других методов, если таковые нужны. 
      end; 
    end.
    Вот так примерно?
    Fenix
    Developer
    Developer
    Posts: 275
    Joined: 24.08.2010 7:20
    Location: Ставрополь
    Contact:

    Post by Fenix »

    Нет. Довольно грубые ошибки:
    1. Основная процедура скрипта может быть одна (то что между begin ... end. В паскале в одном модуле end с точкой может быть только один).
    2. Не пойму что у тебя делает FullDisconnect. По-названию вроде отключает стелс от сервера. По коду - включает режим автоподключения и завешивает скрипт в мёртвом цикле на дисконект при условии, что хайдинга меньше 80.
    В твоём случае код должен выглядеть примерно так (без правки реализации FullDisconnect):

    Code: Select all

    Program ItemID; 
    var i : Integer; 
    DagerType : Word; 
    Dager : Cardinal; 
    Vendor : Cardinal; 
    Korova : Cardinal; 
    Bulova : Cardinal; 
    
    {$Include 'all.inc'} 
    
    procedure FullDisconnect;
    begin 
    SetARStatus(true); 
    while GetSkillValue('Hiding') < 80.0 do 
    Disconnect; 
    end; 
    
    procedure UseHiding; 
    begin 
      UseSkill('Hiding'); 
      Wait(11000); 
      CheckLag(15000); 
      if Hidden and (GetSkillValue('Hiding') > 80) then 
      begin 
        UseSkill('Stealth'); 
        Wait(11000); 
        CheckLag(15000); 
      end; 
    end; 
    
    begin 
      while not Dead do 
      begin 
        UseHiding;
        FullDisconnect; 
        //Тут можно добавить вызовы других методов, если таковые нужны. 
      end; 
    end.
    Ну и в конце концов, может прочтешь какой-нить самоучитель по паскалю?
    Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
    "Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
    xam
    Neophyte
    Neophyte
    Posts: 23
    Joined: 16.11.2010 21:48

    Post by xam »

    Code: Select all

    Program ItemID; 
    var i : Integer; 
    Dager : Cardinal;
    vendor1 : Cardinal;
    Korova : Cardinal;
    Bulova : Cardinal;
    vendorPak : Cardinal;
    
    {$Include 'all.inc'}
    
    procedure FullDisconnect; //----------------------
    begin 
    SetARStatus(true); 
    while GetSkillValue('Hiding') < 80.0 do 
    Disconnect; 
    end; 
    
    procedure Indif; //-----------------------
    begin 
    
    Dager := $405DC690; //// Vendor Dager ID
    vendor1 := $00021790; //// Vendor ID
    Korova := $000051B2; //// Korova ID
    Bulova := $405DC690; //// Oru*ie ID
    
    while true do
    begin
      UseSkill('Arms Lore'); 
      WaitTargetObject(Bulova); 
      wait(11000); 
    if TargetPresent then CancelTarget; 
            CheckTargetError(5,2); 
            CheckSave; 
      waitconnection(3000); 
      CheckSave; 
      CheckLag(15000); 
       UseSkill('item identification'); 
       WaitTargetObject(Dager);
       wait(11000);
       if TargetPresent then CancelTarget; 
            CheckTargetError(5,2); 
            CheckSave; 
       waitconnection(3000); 
       CheckSave; 
       CheckLag(15000); 
       UseSkill('Anatomy'); 
       WaitTargetObject(vendor1); 
       Wait(10000);
       if TargetPresent then CancelTarget; 
            CheckTargetError(5,2); 
            CheckSave; 
       UseSkill('Animal Lore'); 
         	WaitTargetObject(Korova); 
       Wait(10000);
    if TargetPresent then CancelTarget; 
            CheckTargetError(5,2); 
            CheckSave;
    CheckLag(15000);
    end;
    end;
    
    procedure Snooping; //---------------------------
    begin 
    
    	vendorPak := $401615BB;//// Vendor Packs ID
    
    while true do
    useobject(vendorPak); 
       Wait(2000); 
           
    	useobject(vendorPak);
       Wait(2000); 
         
       useobject(vendorPak);
                    
       Wait(2000);
    end;
    
    procedure UseHiding; //---------------------------
    begin 
      UseSkill('Hiding'); 
      Wait(11000); 
      CheckLag(15000); 
      if Hidden and (GetSkillValue('Hiding') > 80) then
      begin 
        UseSkill('Stealth'); 
        Wait(11000); 
        CheckLag(15000); 
      end; 
    end;
    
    procedure CheckDead; //-----------------------------
    	begin 
    	waitconnection(3000); 
    	CheckSave; 
    	if Dead then 
    	begin 
     SetWarMode(true); 
     WaitGump('1'); 
     wait(5000); 
     while (Dead) do Wait (1000); 
     wait (2000); 
     Hungry(1, ground); 
    end;
    end;  
    
    
    
    
    begin 
      while not Dead do 
      begin 
        Indif;
        UseHiding; 
        Snooping;
        //Тут можно добавить вызовы других методов, если таковые нужны. 
      i := i + 1;
      end; 
    end.
    
    Вопрос а как мне теперь скрипт заставить что бы он шел по очередности т.е. Indif; =====>>> UseHiding; ====>>> Snooping;
    А то он зацикливаеться на определенном procedure и повторяет его по многу раз . Хотелось что бы дальше по procedure прыгал.. как это сделать?
    xam
    Neophyte
    Neophyte
    Posts: 23
    Joined: 16.11.2010 21:48

    Post by xam »

    Во и еще на примере пожалуйста) Как сделать так что дойдя до 100 процентов он не качал этот скил ..

    Code: Select all

    begin 
      UseSkill('Arms Lore'); 
      WaitTargetObject(Bulova); 
      wait(11000); 
    if TargetPresent then CancelTarget; 
            CheckTargetError(5,2); 
            CheckSave; 
      waitconnection(3000); 
      CheckSave; 
      CheckLag(15000); 
       UseSkill('item identification'); 
       WaitTargetObject(Dager); 
       wait(11000); 
       if TargetPresent then CancelTarget; 
            CheckTargetError(5,2); 
            CheckSave; 
       waitconnection(3000); 
       CheckSave; 
       CheckLag(15000); 
       UseSkill('Anatomy'); 
       WaitTargetObject(vendor1); 
       Wait(10000); 
       if TargetPresent then CancelTarget; 
            CheckTargetError(5,2); 
            CheckSave;
    Т.е прокачав Arms Lore до 100 он сразу же перепрыгивал и начинал качать item identification

    И через const не получилось сделать =( вообще не могу сообразить.

    Code: Select all

    const 
      DagerType = $0F52; 
      Vendor = $00021790; 
      Korova = $0001E0B8; 
      Bulova = $405C2AE2;
    Да феникс я начал изучать но тупо в книжку без советов ни как)
    Fenix
    Developer
    Developer
    Posts: 275
    Joined: 24.08.2010 7:20
    Location: Ставрополь
    Contact:

    Post by Fenix »

    1. Чтобы не зацикливался на одной процедуре и не повторял её много-много раз (пока не сдохнет от старости) нужно убрать бесконечный цикл:

    Code: Select all

    procedure Indif; //----------------------- 
    begin 
    
    Dager := $405DC690; //// Vendor Dager ID 
    vendor1 := $00021790; //// Vendor ID 
    Korova := $000051B2; //// Korova ID 
    Bulova := $405DC690; //// Oru*ie ID 
    
    while true do 
    begin
    2. Чтобы не качать скил, когда он уже докачался до 100 нужно не качать его после того, как он докачался до 100. Ты же уже использовал метод GetSkillValue. Вот он возвращает значение скила. Перед прокачкой скила проверяешь его значение и если оно меньше 100, то качаешь.
    3. Насчет констант. Неполучилось потому, что ты их объявлял не в том месте. Объявление констант в паскале идёт после секции uses, которая следуют за объявлением имени программы/модуля (program/unit).
    Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
    "Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
    xam
    Neophyte
    Neophyte
    Posts: 23
    Joined: 16.11.2010 21:48

    Post by xam »

    Code: Select all

    Program ItemID; 
    {$Include 'all.inc'} 
    const
    Dager = $405C2AE2;  ////  Dager ID 
    Usevendor = $00021790; //// Vendor ID 
    vendorPak = $401615BB;//// Vendor Packs ID 
    Korova = $000051B2; //// Korova ID 
    Bulova = $405DC690; //// Oru*ie ID 
    
    var i : Integer; 
    
    
    
    
    procedure FullDisconnect; /////////////////////////////////
    begin 
    SetARStatus(true); 
    while GetSkillValue('Hiding') < 80.0 do 
    Disconnect; 
    end; 
    
    
    
    
    
    
    procedure UseArmsLore;/////////////////////////////////////
    
    begin 
    	
     	while GetSkillValue('Arms Lore') < 100 do
    begin
      UseSkill('Arms Lore'); 
      WaitTargetObject(Bulova); 
      wait(11000); 
    if TargetPresent then CancelTarget; 
            CheckTargetError(5,2); 
            CheckSave; 
      waitconnection(3000); 
      CheckSave; 
      CheckLag(15000); 
    end;
    end;
    
    
    procedure UseItemIdentification;///////////////////////////////
    
    begin 
     	while GetSkillValue('item identification') < 100 do
    
    begin
       UseSkill('item identification'); 
       WaitTargetObject(Dager); 
       wait(11000); 
       if TargetPresent then CancelTarget; 
            CheckTargetError(5,2); 
            CheckSave; 
       waitconnection(3000); 
       CheckSave; 
       CheckLag(15000); 
    end;
    end;
    
    procedure UseAnatomy;//////////////////////////////
    
    begin 
    	while GetSkillValue('Anatomy') < 100 do
    	
    begin
       UseSkill('Anatomy'); 
       WaitTargetObject(Usevendor); 
       Wait(10000); 
       if TargetPresent then CancelTarget; 
            CheckTargetError(5,2); 
            CheckSave;
    end;
    end;
    
    
    procedure UseAnimalLore;/////////////////////////////
    
    begin 
     	while GetSkillValue('Animal Lore') < 100 do
    	
    begin
       UseSkill('Animal Lore'); 
            WaitTargetObject(Korova); 
       Wait(10000); 
    if TargetPresent then CancelTarget; 
            CheckTargetError(5,2); 
            CheckSave; 
    CheckLag(15000);
    end;
    end; 
     
     
    
    procedure UseSnooping; ////////////////////////////////////
    
    begin 
     	while GetSkillValue('Snooping') < 100 do
    	
    begin
    useobject(vendorPak); 
       Wait(2000); 
            
       useobject(vendorPak); 
       Wait(2000); 
          
       useobject(vendorPak); 
                    
       Wait(2000); 
    end; 
    end; 
    
    procedure UseHiding; /////////////////////////////////////////////
    
    begin
     	while GetSkillValue('Hiding') < 100 do
     	
    begin   
    UseSkill('Hiding'); 
      Wait(11000); 
      CheckLag(15000); 
      if Hidden and (GetSkillValue('Hiding') > 80) then 
      begin 
        UseSkill('Stealth'); 
        Wait(11000); 
        CheckLag(15000); 
      end; 
    end; 
    end; 
    
    procedure CheckDead; //----------------------------- 
       begin 
       waitconnection(3000); 
       CheckSave; 
       if Dead then 
       begin 
     SetWarMode(true); 
     WaitGump('1'); 
     wait(5000); 
     while (Dead) do Wait (1000); 
     wait (2000); 
     Hungry(1, ground); 
    end; 
    end;  
    
    
    
    
    begin 
      while not Dead do 
      begin 
        UseItemIdentification;
        UseArmsLore;  
        UseSnooping; 
        UseAnatomy; 
        UseAnimalLore; 
        UseHiding; 
       
        //Тут можно добавить вызовы других методов, если таковые нужны. 
      i := i + 1; 
      end; 
    end.
    Блин сломал голову не могу понять как сделать так что бы цикл не повторялся
    Post Reply