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

Помогите понять в чем проблема.

тут можно задать вопрос по скриптингу
Post Reply
soulen
Neophyte
Neophyte
Posts: 18
Joined: 16.01.2012 13:29

Помогите понять в чем проблема.

Post by soulen »

Code: Select all

Program New;
{$Include 'all.inc'}
const
kolvo = 60;
s_reag = $63B851AF ;
rmax = 3;
RB  = $59E0BAF7 ; 
RBreag = $5DF46819 ;
typemen=$0190;// тип мущины.
typevymen=$0191;// тип женщины.
RunaHome = 1051;
Xhome = 589;
GP = 20000;
NS  =  $0F88 ;
MR  =  $0F86 ;
GA  =  $0F84 ;
GI  =  $0F85 ;
BP  =  $0F7A ;
BM  =  $0F7B ;
SS  =  $0F8D ;
SA  =  $0F8C ;


type
regs_rail = array[1..3] of Integer;
DropReag = array[1..9] of Integer;

var 
runa : array [1..32] of integer;
r,z:integer;


procedure skidivaem_v_sunduk;
var Regs : DropReag;
b : Integer;
begin
 Regs[1]:=$0F88; 
 Regs[2]:=$0F86;  
 Regs[3]:=$0F84;
 Regs[4]:=$0F85; 
 Regs[5]:=$0F7A;
 Regs[6]:=$0F7B;
 Regs[7]:=$0F8D;
 Regs[8]:=$0F8C;
 Regs[9]:=$0EED;
 Useobject(s_reag);
 wait(1000);
 for b:=1 to 9 do
  begin
  repeat
  findtype(Regs[b],backpack)
  if findcount > 0 then
  begin
  checksave;
   MoveItem(FindItem,FindQuantity,s_reag,0,0,0);
   wait(800);
   end;
    until FindType(Regs[b],backpack)=0 
 end;
  AddToSystemJournal('Скинул Реги.');
end;



procedure Reags;
var Reg : regs_rail;
i : Integer;
begin
 Reg[1]:=$0F7B;
 Reg[2]:=$0F7A; 
 Reg[3]:=$0F86;
 AddToSystemJournal('Берем реги');
 Useobject(s_reag);
 wait(500);
 for i:=1 to 3 do
  begin
  findtype(Reg[i],backpack)
  if (FindCount = 0) or (Count(Reg[i]) < 20) then
  begin
  findtype(Reg[i],s_reag);
  if findcount > 0 then
   begin
     checksave;
   MoveItem(FindItem,50,Backpack,0,0,0);
   wait(100);
  end;
 end;
 findtype($0EED,Backpack);
 if FindQuantity < 5000 then
  begin
   findtype($0EED,s_reag);
   wait(100);
   MoveItem(FindItem,30000,Backpack,0,0,0);
  end; 
 end;
end;


procedure check_mana;
begin
AddToSystemJournal('Проверка маны');
 if Mana < 30 then
  begin
  repeat
   useskill('Meditation');
     checksave;
   wait(10000);
  until Mana = Int;
 end;
end;
 


procedure alhmik; // поиск алхимика
var
vendorx,vendory: integer;
x: integer;
FindList: TStringList;
ItemID: Cardinal;
begin
 FindDistance:=10;
 FindType(typemen,Ground);  
 FindList := TStringList.Create();
 GetFindedList(FindList);
 FindType(typevymen,Ground);
 GetFindedList(FindList);
 for x := 0 to FindList.Count - 1 do
  begin
   ItemID := StrToint('$' + FindList.Strings[x]);
   CheckLag(30000);
   Useobject(ItemID);
   CheckLag(30000);
  if Pos('the Scribe', GetTitle(ItemID)) <> 0 or Pos('the Mage', GetTitle(ItemID)) or Pos('the Alchemist', GetTitle(ItemID)) then  
   begin    
    vendorx:=GetX(ItemID); 
    vendory:=GetY(ItemID);
    wait(500);
    CheckLag(30000);
    wait(500);
    CheckLag(30000);
    newMoveXY(vendorx,vendory,true,1,true)
    CheckLag(30000);
    SetAutoBuyDelay(1);
    Autobuy(NS,$0000,60);
    //Autobuy(BM,$0000,60);
    Autobuy(MR,$0000,60); 
    Autobuy(GA,$0000,60);
  //Autobuy(reags,$0000,60);
  //Autobuy(reags,$0000,60);
  //Autobuy(reags,$0000,60); 
  //Autobuy(reags,$0000,60);
    CheckLag(30000);
    UOSay(GetName(ItemID)+' buy');
    wait(800);
    CheckLag(30000);
   end;
  end; 
FindList.Free();
end;


procedure Recall;
begin
Runa[1] := 1; 
Runa[2] := 1; // Nomera run v RB po shahtam [1-16] <Need Setup>
Runa[3] := 5;
Runa[4] := 5; //esli netu stolko run prosto povtorit' neskolko odinakovih
Runa[5] := 9;
Runa[6] := 9;
Runa[7] := 13;
Runa[8] := 13;
Runa[9] := 17;
Runa[10] := 17;
Runa[11] := 21;
Runa[12] := 21;
Runa[13] := 25;
Runa[14] := 25;
Runa[15] := 29;
Runa[16] := 29;
Runa[17] := 33;
Runa[18] := 33;
Runa[19] := 37;
Runa[20] := 37;
Runa[21] := 41;
Runa[22] := 41;
Runa[23] := 45;
Runa[24] := 45;
Runa[25] := 49;
Runa[26] := 49;
Runa[27] := 54;
Runa[28] := 54;
Runa[29] := 59;
Runa[30] := 59;
Runa[31] := 63;
Runa[32] := 63;
for r:=1 to 32 do
 begin
  CheckLag(10000);
  UseObject(RBreag);
  wait (1000);
  CheckLag(10000);
  WaitGump(IntToStr(1042 + Runa[r]));
  wait(4000);
  check_mana;
  alhmik;
  r:=r+1;  
  if (r > 32) then r:=1;
 end; 
end;


procedure Home;
begin
 repeat
    checksave;
  disarm;
  CheckLag(10000);
  UseObject(RB); 
  CheckLag(10000);
  wait (1000);
  WaitGump(IntToStr(RunaHome));
  wait(4000);
  if (GetX(self) <> Xhome) then
   begin
    Raw_move(Random(7), true);
    wait(250);
    Raw_move(GetDirection(self), true);
    wait(500);
   end;
 until (GetX(self) = Xhome) or dead
 skidivaem_v_sunduk;
 Reags;
end;

procedure res;
begin
 if dead then
  begin
   CheckLag(10000);
   uosay('.rescue');
   wait(3000);
   Addtosystemjournal('y6uJIu!!!');
  end;
end;



begin
 repeat
  res;
  Home;
  Recall;
 until false
end.
Проблема в следующем:
1. На ЗХР вендора неуязвимые и когда они появляются в области видимости, то в журнале мы видим вот такую надпись:
[14:27:37:363] You see: Stephanie the Tailor
[14:27:37:364] You see: [invulnerable]
[14:27:37:523] You see: Stephanie the Tailor
[14:27:37:537] You see: [invulnerable]
В скрипте, когда я получаю имя вендора, при покупке он пишет не "Имя вендора" buy, а [invulberable] buy... Никак не могу решить эту проблему
2. Проблема с реколом по регам. У нас на шарде рунбуки. 2 способа рекола, по зарядам и по регам. По регам быстрее и удобнее, но не удобно вычислять гампы реколов. Гампы реколов по зарядам идут по порядку с 1 по 16 (1025,1026,1027 итд). проковырявшись добрые полчаса, я наконец понял что рекол по регам начинается с 1043 гампа и каждая следующая руна (перелистываются страницы в рунбуке) идет с периодичностью в 4 руны (1043, 1047, 1051 итд) но у меня реколился через одну руну (1, 3, 5 итд.)
В общем, я сначала написал нормально кусок кода с рунами. То есть у меня реколился по номерам гампов. Потом я решил общую цифру (1042) вынести сюда WaitGump(IntToStr(1042 + Runa[r])); . Просто я не знал в чем проблема.

Я решил продублировать, чтобы четные руны повторяли нечетные. Скрипт заработал... но это такое, извините за выражение, у***ще, что аж самому стыдно, а в чем дело не могу понять. Может кто поможет решить проблему?
soulen
Neophyte
Neophyte
Posts: 18
Joined: 16.01.2012 13:29

Re: Помогите понять в чем проблема.

Post by soulen »

Ребят нашел почему не пишет имя... дело в том что имя объекта - invulnerable, а вот ToolTip --- Arania the mage... Вот так вот. КВот только никак не возьму в толк, что написать вместо GetName... какая команда выдает нам значение тултипа?

Тааак, все нашел команду на тултип))) GetToolTip она и была))) просто изначально был косячок в скрипте и он не запускался.

А вот с реколами проблема( не знаю даже что может быть)(
Last edited by soulen on 16.03.2012 19:37, edited 1 time in total.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Помогите понять в чем проблема.

Post by Vizit0r »

GetTooltip
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply