Page 1 of 2

Golden_Boy зарабатываем зоолто убивая мобов.

Posted: 08.04.2013 10:50
by shinma
В принципе скрипт рабочий, но я его каждый раз переделываю под новые точки.
Скрипт собирает золото убивая слабых монстров.
Скрипт удобно использовать как шаблон для своих ботов.
идет по точкам ищет мобов убивает собирает лут. лут тоже может быть какой угодно для удобства все сделано через динамические массивы.
так же в боте заложена функция самоодевания. можно кинуть в сумку пару наборов брони и штук 10 оружия он сам будет их одевать при поломке. юзает бинты если есть. Так же есть возможность юзать рунбуку , много чего просто закомментировано. ну короче сами разбирайтесь. тестил на RunUO.
и еще у кого нету мозга - я на нем заработал порядка 50 000 000. кто не умеет думать это его проблемы.

P.S. на Abyss он уже запрещен (((( увидят дадут банан.

Code: Select all

Program Golden_Boy;
const
money=30000;//кол-во денег после которого чар понесет их домой
homeX=2655 ;//Координата Х где встать для разгрузки
homeY= 534; //Координата У где встать для разгрузки

buttonHome=51;
buttonSkelet=50;

FindDistanceMob=75; //Дистанция поиска мобов

Helm= $2B10 ;  //Тип шлема
gorget= $2B0E ;   //Тип горжетки
legs = $2B06 ;   //Тип штанов
perchatki=$2B0C ; //Тип перчаток
Lokti=$2B0A ;  //Тип локтей  Arms
Cloak  = $2B04 ; //Плащь
Sandali=$2B13 ;//Сандали
Bracer =$1086 ;//Браслет
Ring=$108A ;//кольцо
Breastplate =$2B08 ;//Грудь

Shild=$1B76 ;  //Тип щита
Weapon=$1405 ; //Тип оружия


runebook= $4003B326 ;//ИД рунбуки

bankbox=$408428E8 ;

 goldcoin=$0EED;         		//ГП
 clean_bandages = $0E21;		//бинты   
 
 kolvodot=10; //кол-во точек которые будем обходить  
 
bagAll=$401335C7  ;//Ид сумки в которой лежат все остальные подсумки
bagweapon= $4020EB4D; //ид сундука откуда брать оружие и щит
bagarmor= $4020F6D6 ; //ид сундука откуда брать броню
bugMoney= $40212441 ;//ид сундука куда класть бабки
bugreagent=$40117D52 ;//ID bag reagent
BagRing=$40212437 ;  //ИД сумки куда класть кольцами
BagBrace=$40212440  ;//ИД сумки куда класть браслеты

var
//brockenItem:cardinal;  
monstro:array of word;
bodymonstro:array of word;
checkheal,k,hhh,mmn,checkmobss,dotResp:integer;
telo,TargetZ: cardinal;
ctime: TDateTime;
grabmas:array of word;
dot:array [0..10] of TFoundTile;
ctimeq:TDatetime;



procedure Init;
begin
monstro:=[$0003,$0099,$0038,$0032,$0094,$001A ];//  типы монстров которых надо бить. вписывать через запятую 
grabmas:=[$0EED];
//,$0F88,$0F78,$0F86,$0F8D,$0F7B,$0F8C,$0F7E    ,$0F8E,$0F8A,$0F7D,$0F84,$0F7A,$0F85,$0F84,$0F7D,$0F8F ] ; //$1F06,$1086-Браслеты.$1F09,$108A - кольца

{skeleton Type: $0032 
ghoul Type: $0099
}
FindVertical := 5;
moveOpenDoor := True; 
bodymonstro:=[$2006];// типы трупов монстров которые надо обыскивать
ctimeq := Now;
checkheal:=0;
SetPauseScriptOnDisconnectStatus(True);
SetARStatus(True);
mmn:=0;
dotResp:=0;
ctimeq := Now;

dot[0].X:=3679;      //точки которые будем обходить
dot[0].Y:=2481;
dot[1].X:=3654;
dot[1].Y:=2480;
dot[2].X:=3619;
dot[2].Y:=2482;
dot[3].X:=3597;
dot[3].Y:=2452;
dot[4].X:=3619;
dot[4].Y:=2507;
dot[5].X:=3643;
dot[5].Y:=2514;
dot[6].X:=3640;
dot[6].Y:=2512;
dot[7].X:=3637;     
dot[7].Y:=2539;
dot[8].X:=3658;     
dot[8].Y:=2537;
dot[9].X:=3661;     
dot[9].Y:=2512;


dot[10].X:=548;     
dot[10].Y:=969;

end;


procedure tele(kuda:Integer);
var
agump:Word;
ctime:TDatetime;

begin
{
waitgump(kuda);
wait(1000)  ;
UseObject(runebook);
wait (1000);
CloseSimpleGump(0);
}
ctime := Now; 
repeat
AddToSystemJournal('1');
if InJournalBetweenTimes('The spell fizzles|needs time to recharge|location is blocked', ctime, Now)>=0 then
begin
AddToSystemJournal('Ждем 10 сек');
wait(10000);
end;
if InJournalBetweenTimes('More reagents are needed', ctime, Now)>=0 then
begin
AddToSystemJournal('Нет реагентов для рекола.должите реагентов');
wait(60000);
end;
ctime := Now; 
checklag(60000);
  agump := GetGumpsCount;
  UseObject(runebook); 
  //If IsGump then
  while agump = GetGumpsCount do
    Wait(50);
  //NumGumpTextEntry(GetGumpsCount-1,513, '30');
  NumGumpButton(GetGumpsCount-1,kuda);
  wait(6000);         
						checklag(60000);  
AddToSystemJournal('2');
		until  (InJournalBetweenTimes('The spell fizzles|This book needs time to recharge|That location is blocked|More reagents are needed', ctime, Now)<0) or dead;
AddToSystemJournal('3');
end;


procedure equip_tool(type_of_tool:word;layer:Byte);
begin
while (GetType(ObjAtLayer(layer))<>type_of_tool) and (not dead) do
    begin    
{    while (GetType(ObjAtLayer(layer))<>0) or (not dead) do
      begin   
      checklag(60000); 
      unequip(layer); 
      wait(1000);
      end;  } 
    checklag(60000); 
    equipt(layer,type_of_tool);
    wait(1000);
   end;
end;


function podhod(targetk:Cardinal):Boolean;
begin
AddToSystemJournal('Жертва: '+GetName(targetk)+'.ID: '+inttohex(targetk,8)+'.Х: '+inttostr(GetX(targetk))+'.Y: '+inttostr(GetY(targetk))+'.Z:'+inttostr(GetZ(targetk))+'. дистанция: ' +inttostr(GetDistance(targetk)));
checklag(60000);

AddToSystemJournal('My person: '+GetName(Self)+'.Х: '+inttostr(GetX(Self))+'.Y: '+inttostr(GetY(Self))+'.Z:'+inttostr(GetZ(Self)));
checklag(60000);


if (GetX(targetk)>3686) and (GetY(targetk)>2501) and (GetX(targetk)<3701) and (GetY(targetk)<2521) then result:=False
else 
result:= NewMoveXY(GetX(targetk),GetY(targetk),true,1,true);
//wait(500);
end;

procedure Heal;// хилимcя 
var
m:integer;
begin
  if (gethp(self) < (getmaxhp(self)*0.7))and (not dead)and(ctimeq<now) then   
 //if (gethp(self) < 98) and (not dead) then  
//  while (gethp(self) < (getmaxhp(self))) and (not dead) do
    begin		
    ctimeq := now+EncodeTime(0,0,7,0);  
      AddToSystemJournal('Хилимся');
      checklag(60000); 
      UseObject(FindType(clean_bandages,Backpack)); 
      checklag(60000); 
      WaitTargetObject(Self); 
   { m:=0;   
    if (InJournalBetweenTimes('You finish applying the bandages|You apply the bandages, but they barely help', ctimeq, Now)>= 0) then   
    begin
     checkheal:=0;   
     ctimeq := Now;
    end;
     if  ctimeq+EncodeTime(0,1,0,0)<Now then
     checkheal:=0;
     
 //   while (CountEx(clean_bandages,$0000,backpack) < 1) and  (not dead) do
 if  (CountEx(clean_bandages,$0000,backpack) < 1) and  (not dead) then
    begin
      AddToSystemJournal('Нет бинтов');  
      wait(1000);
    end
    else    
     if (InJournalBetweenTimes('You finish applying the bandages|You apply the bandages, but they barely help', ctimeq, Now)< 0)and(not dead) and( (checkheal=0))  then   
     begin
      AddToSystemJournal('Хилимся');
      checklag(60000); 
      UseObject(FindType(clean_bandages,Backpack)); 
      checklag(60000); 
      WaitTargetObject(Self); 
      checkheal:=1;       
			ctimeq := Now;  
      end; }
  end;
end;

procedure checkwar; //включаем вармоде
begin
if IsWarMode(self) then
 begin
  setWarMode(false);
 end;
end;

function Fight(zertva:cardinal):integer ; //Бьем цель
var
KolVoZahod:integer;
begin
if (gethp(self) < (getmaxhp(self)*0.7)) and not dead then
Heal;
 
//AddToSystemJournal('ghj 56');  
KolVoZahod:=0;   
//Cast('Evasion');
while (GetHP(zertva)<>0) and (KolVoZahod<2) do 
begin
AddToSystemJournal('GetHP(zertva) = '+inttostr(GetHP(zertva)));  
//if IsActiveSpellAbility( 'Lightning Strike') = false then Cast('Lightning Strike');
//AddToSystemJournal('ghj 3');
setWarMode(true);
//if GetActiveAbility  <> 'Lightning Strike' then 
//Cast('Lightning Strike');
//  AddToSystemJournal('GetActiveAbility='+GetActiveAbility);
//AddToSystemJournal('16');
Attack (zertva);
Heal;
//AddToSystemJournal('17');
 if podhod(zertva)=false then 
 begin 
  //  AddToSystemJournal('Нет прохода');  
    KolVoZahod:=KolVoZahod+1;
 end;
 //AddToSystemJournal('18');
 result:=KolVoZahod;
end;
Heal;
end;



//function checkshmot:Boolean;//проверяем поломана ли вещь если да то глобальная переменная примет значение поломанной вещи
//begin
//brockenItem:= ;
//end;


procedure Stock;//выгружаем loot
var
ppp:integer;
lootReg:array of word;
lootRing:array of word;
lootBrace:array of word;
begin

lootReg:=[$0F8D,$0F84,$0F8A,$0F88,$0F86,$0F7B,$0F7D,$0F8A,$0F8C,$0F78,$0F8E,$0F7A ,$0F8F,$0F7E,$0F85 ];
lootRing:=[$1F09,$108A];
lootBrace:=[$1F06,$1086];

  checklag(60000);
  UseObject(bagAll); 
  wait(1000); 
                        
  
  //AddToSystemJournal('606 Заработал ГП : '+ inttostr(CountEx(GoldCoin,$0000,backpack)));  
  
 checklag(60000);
  UseObject(bugMoney); 
  wait(1000); 
    
  begin
     while (Count(goldcoin) > 0) and not dead do
     begin
	      checklag(60000);
        FindType (goldcoin,Backpack) ;
        MoveItem(FindItem,0,bugMoney,0,0,0);
      wait(600);
     end;
  end;    
  
    begin
     while (Count(clean_bandages) > 0) and not dead do
     begin
	      checklag(60000);
        FindType (clean_bandages,Backpack) ;
        MoveItem(FindItem,0,bagAll,0,0,0);
      wait(600);
     end;
  end;  
  
checklag(60000);
  UseObject(bugreagent); 
  wait(1000); 
    
  for  ppp:=0 to (GetArrayLength(lootReg)-1) do
  begin
     while (Count(lootReg[ppp]) > 0) and not dead do
     begin
	      checklag(60000);
        FindType (lootReg[ppp],Backpack) ;
        MoveItem(FindItem,0,bugreagent,0,0,0);
      wait(600);
     end;
  end;   
  
  checklag(60000);
  UseObject(BagRing); 
  wait(1000); 

  for  ppp:=0 to (GetArrayLength(lootRing)-1) do
  begin
     while (Count(lootRing[ppp]) > 0) and not dead do
     begin
	      checklag(60000);
        FindType (lootRing[ppp],Backpack) ;
        MoveItem(FindItem,0,BagRing,0,0,0);
      wait(600);
     end;
  end;

  checklag(60000);
  UseObject(BagBrace); 
  wait(1000); 

  for  ppp:=0 to (GetArrayLength(lootBrace)-1) do
  begin
     while (Count(lootBrace[ppp]) > 0) and not dead do
     begin
	      checklag(60000);
        FindType (lootBrace[ppp],Backpack) ;
        MoveItem(FindItem,0,BagBrace,0,0,0);
      wait(600);
     end;
  end;  
end;

procedure checkweapon;  
begin
{
AddToSystemJournal('srtghtrr'+inttostr(GetLayer($400A6BD5 ))); 
equip_tool(Ring,RingLayer);
AddToSystemJournal('1');
equip_tool(Breastplate,TorsoLayer);
AddToSystemJournal('2');
equip_tool(Bracer,BraceLayer);
AddToSystemJournal('3');
equip_tool(Sandali,ShoesLayer);
AddToSystemJournal('4');
equip_tool(Cloak,CloakLayer);
//AddToSystemJournal('5');
equip_tool(Lokti,ArmsLayer);
//AddToSystemJournal('6');
equip_tool(perchatki,GlovesLayer);
//AddToSystemJournal('7');
equip_tool(legs,PantsLayer);
//AddToSystemJournal('8');
equip_tool(gorget,NeckLayer);
//AddToSystemJournal('9');
equip_tool(Helm,HatLayer);
//AddToSystemJournal('10'); }
//AddToSystemJournal('Shild');
equip_tool(Shild,LhandLayer);
//AddToSystemJournal('Weapon');
equip_tool(Weapon,RhandLayer);
//AddToSystemJournal('все');
     
end;

procedure Zagruzka_regov;// запасаемся реагентами
var
pppp:integer;
RegZag:array of word;
begin
RegZag:=[$0F7B ,$0F7A ,$0F86 ];
  checklag(60000);
  UseObject(bagAll); 
  wait(1000); 
    begin
     while (Count(clean_bandages) < 80) and not dead do
     begin
	      checklag(60000);
        FindType (clean_bandages,bagAll) ;  
        MoveItem(FindItem,100,Backpack,0,0,0);
      wait(600);
     end;
  end;     
  
   checklag(60000);
  UseObject(bugreagent); 
  wait(1000); 
   for  pppp:=0 to (GetArrayLength(RegZag)-1) do
   begin
     while (Count(RegZag[pppp]) < 20) and not dead do
     begin
	      checklag(60000);
        FindType (RegZag[pppp],bugreagent) ;  
        MoveItem(FindItem,20,Backpack,0,0,0);
      wait(600);
     end;
  end; 

end;

function targetzertva:cardinal;
var
//bad_list:array [0..400] of cardinal;
distance,mob:integer;
cur_mob:cardinal;                 
begin
distance := 9999999;
FindDistance:=FindDistanceMob;
    
    for mob:=0 to (GetArrayLength(monstro)-1) do 
        while FindType(monstro[mob],Ground) <> 0 do  
          begin
           AddToSystemJournal('function targetzertva '+inttohex(FindItem,8));
            if GetDistance(FindItem) < distance  then      
                begin
                distance := GetDistance(FindItem) ;
                cur_mob := FindItem;
            end;                
                Ignore(FindItem); 
          end;       
    IgnoreReset;           
 //AddToSystemJournal('Жертва: '+GetName(cur_mob)+'. координата Х: '+inttostr(GetX(cur_mob))+'. координата Y: '+inttostr(GetY(cur_mob))+'. дистанция: ' +inttostr(GetDistance(cur_mob)));     
//if (GetX(cur_mob) in [3686..3701]) and (GetY(cur_mob) in [2502..2521]) then cur_mob:= 0;
if (GetX(cur_mob)>3686) and (GetY(cur_mob)>2502) and (GetX(cur_mob)<3701) and (GetY(cur_mob)<2521) then cur_mob:=0; 

result:= cur_mob;    //получаем сериал ближнего моба
end;

 Procedure PutMoneyBank;
begin
  checklag(60000); 
  AddToSystemJournal('606 Заработал ГП : '+ inttostr(CountEx(goldcoin,$0000,backpack)));
  begin
     while (CountEx(goldcoin,$0000,backpack) > 0) and not dead do
     begin
       checklag(60000); 
       FindTypeEx (goldcoin,$0000,Backpack,True) ;
       checklag(60000); 
        MoveItem(FindItem,0,bankbox,0,0,0);
     wait(2000);
     end;
  end;
end; 

begin
IgnoreReset; 
AddToSystemJournal('Init');
init;
//tele(buttonSkelet);
while not dead do
if (Weight < (MaxWeight-50)) then
  begin //Бой в городе
    begin
      checkmobss:=0 ;
     // checkwar;
      TargetZ:=targetzertva;   
      checkweapon;     
      AddToSystemJournal('TargetZ = '+inttohex(TargetZ,8));
      if (Fight(TargetZ)>1) or (TargetZ=0) then
        begin      
            if dotResp=kolvodot-1 then dotResp:=0;
            //AddToSystemJournal('Точка: '+inttostr(dotResp)); 
              
            if (NewMoveXY(dot[dotResp].X,dot[dotResp].Y,true,1,true))= true then 
            dotResp:=dotResp+1
            else    
            begin
           // tele(buttonSkelet);     
            //dotResp:=0; 
            dotResp:=0;  
            NewMoveXY(dot[dotResp].X,dot[dotResp].Y,true,1,true);
            end;    
        end;
      for k:=0 to (GetArrayLength(bodymonstro)-1) do
        begin   
          FindDistance:=2;
          FindType(bodymonstro[k],Ground);  
          if (Findcount > 0) then  
          begin 
            telo:=finditem; //telo - ИД убитый монстр  
            checklag(60000);
            if NewMoveXY(GetX(telo),GetY(telo),true,1,true) = false then 
            //tele(buttonSkelet); 
            begin
           // tele(buttonSkelet);     
            dotResp:=0;  
            NewMoveXY(dot[dotResp].X,dot[dotResp].Y,true,1,true);
            end;  
             
            checklag(60000); 
            ctime := Now;
            UseObject(telo);  
            if WaitJournalLine(ctime,'not earn the right to loot this creature', 500) = false then
                begin  
                for hhh:=0 to (GetArrayLength(grabmas)-1)  do 
                  begin 
                  if  CountEx(grabmas[hhh],$FFFF,telo)>0 then
                      begin  
                        checklag(60000);
                        Grab(findItem,telo);   
                        wait(600); 
                      end;  
                  end ;
              end;
           ignore(telo); 
        end ;    
      end ;    
      
      end ; 
      end
      else
       begin //Рекол домой и разгрузка 
           {tele(buttonHome); 
      NewMoveXY(homeX,homeY,true,1,true);  
      Stock;
      Zagruzka_regov;
      tele(buttonSkelet);
      checkweapon; } 
      // SetARStatus(false);
      //Disconnect;     
      checklag(60000);
      NewMoveXY(3494,2571,true,1,true); 
      checklag(60000);
      uosay('bank');  
      wait(1000);  
      UseObject(bankbox); 
      PutMoneyBank;
      end;  

end.

Re: Golden_Boy зарабатываем зоолто убивая мобов.

Posted: 08.04.2013 18:28
by chrisok1
I was able to take some functions from this to use in my t2a script. thank you.

Re: Golden_Boy зарабатываем зоолто убивая мобов.

Posted: 09.07.2013 1:36
by globaluo
Не запускается. Пишет:
Compiling
Compiler: [Hint] (bot.sc at 182:1): Variable 'M' never used
Compiled succesfully
Init

Re: Golden_Boy зарабатываем зоолто убивая мобов.

Posted: 09.07.2013 9:38
by shinma
Variable 'M' never used

Если ты разберешься со скриптом то пожалуй заметишь что там на самом деле нет переменной 'M', этот скрипт написан для более опытных стелсеров. В нем надо посидеть и разобраться, если хочешь чтоб он работал под твои условия.

Re: Golden_Boy зарабатываем зоолто убивая мобов.

Posted: 12.07.2013 19:45
by chernysh
Спасибо за такие скрипты!

Я сам такой скрипт писал, правда на питоне. Но увы, у питона потоки крашили стелз.

В дополнении функционала я еще и через аську мог разговаривать с окружающим миром (игроками или ГМами), и мелкие комманды отправлять скрипту :)

Главное время и идея, а закодить можно все что угодно :)

Но ГМы такое не любят, к сожалению.

Re: Golden_Boy зарабатываем зоолто убивая мобов.

Posted: 25.07.2013 1:26
by HeadShot1989
Очень хороший скрипт, дописал себе в него и хил нормальный, и резку трупа, и юз химии, и проверки на ГМа. Но с одним бьюсь и не могу поправить: если он убил на одном месте двух мобов, лутит и режет только первого, остальных просто игнорит.

Re: Golden_Boy зарабатываем зоолто убивая мобов.

Posted: 25.07.2013 2:49
by Vizit0r
порезанный труп в игнор, и снова поиск трупов.

Re: Golden_Boy зарабатываем зоолто убивая мобов.

Posted: 25.07.2013 9:28
by VeL

Code: Select all

const
  Corpse        = $2006;        { тип трупа                                 }

//--------------------------------------------------------
// Получить ID последнего трупа
//--------------------------------------------------------

function LastCorpse: Cardinal;
var
  FindedList    : TStringList;
begin
  Result := FindType(Corpse, Ground);
  if Result > 0 then
    begin
      FindedList := TStringList.Create;
      if GetFindedList(FindedList) then
        Result := StrToInt('$' + FindedList.Strings[0]);
      FindedList.Free;
    end;
end; { LastCorpse }

Re: Golden_Boy зарабатываем зоолто убивая мобов.

Posted: 25.07.2013 12:02
by Vizit0r
интересный вопрос, подумаю на досуге. вот так сходу сказал бы, что много проще игнорить уже ненужные трупы, чем среди ВСЕХ айтемов искать конкретно последний труп. Ненадежно это. Времена, когда все айтемы шли одним большим списком - уже прошли, и теперь порядок выдачи айтемов в поиск - далеко не "подряд по мере прихода с сервера"

Re: Golden_Boy зарабатываем зоолто убивая мобов.

Posted: 25.07.2013 13:11
by HeadShot1989
в этом скрипте игнор то прописан. но где-то в скрипте, прокол... что следующий труп рядом просто игнорится, не лутаясь и не разрезаясь. если хорошенько всмотреться может и сам найду, просто решил откоментить, мало ли кто еще заморочится этим вопросом.
PS offtop: Вел с уорпг? :)

Re: Golden_Boy зарабатываем зоолто убивая мобов.

Posted: 25.07.2013 18:40
by shinma
хехе базара нет что пропускает он и не написан искать все трупы он работает 1 кил 1 труп 1 подбор лута и повторяет. ставь циклс с проверкой на трупы на земле и все. но мне это не нужно т.к. когда мобов дофига твоего чара просто заколбасят пока он будет по трупам бегать.

P.S. вот вы жадные и так на боте работаете еще и трупов вам мало.

Re: Golden_Boy зарабатываем зоолто убивая мобов.

Posted: 25.07.2013 23:46
by HeadShot1989
:) не в жадности дело, мобов много, они слабые, но с них добывается нужный реагент... А они кучками по 5-6 штук на болоте, потому и задался этим вопросом. А сильных мобов, которые по одному скрипт не осиливает, отход-отхил нужно делать. Плюс рандомно арты падают, и с них основной доход бывает, а если такого моба пропустил - считай в ноль долбишь... А так, спасибо за бота всё таки, в целом, он довольно неплох, если доработать для себя нужные функции.

Re: Golden_Boy зарабатываем зоолто убивая мобов.

Posted: 14.03.2015 12:59
by MaskedPerson
Скрипт просто супер. Работает как бешеный. Но есть одно но - выбирает рандомный труп если их больше одного в одном месте, как правило уже пустой.

Code: Select all

 begin   
          FindDistance:=2;
          FindType(bodymonstro[k],Ground);  
          if (Findcount > 0) then  
          begin 
            telo:=finditem; //telo - ИД убитый монстр  
            checklag(60000);
            if NewMoveXY(GetX(telo),GetY(telo),true,1,true) = false then 
            //tele(buttonSkelet); 
            begin
           // tele(buttonSkelet);     
            dotResp:=0;  
            NewMoveXY(dot[dotResp].X,dot[dotResp].Y,true,1,true);
            end;  
             
            checklag(60000); 
            ctime := Now;
            UseObject(telo);  
            if WaitJournalLine(ctime,'not earn the right to loot this creature', 500) = false then
                begin  
                for hhh:=0 to (GetArrayLength(grabmas)-1)  do 
                  begin 
                  if  CountEx(grabmas[hhh],$FFFF,telo)>0 then
                      begin  
                        checklag(60000);
                        Grab(findItem,telo);   
                        wait(600); 
                      end;  
                  end ;
              end;
           ignore(telo); 
        end ;    
      end ;    
Как сюда прикрутить проверку на последний труп? Или может можно как-то трупы прятать с помощью ,hide? Знатоки, помогите :roll:

Re: Golden_Boy зарабатываем зоолто убивая мобов.

Posted: 15.03.2015 12:46
by drabadan
MaskedPerson wrote:Скрипт просто супер. Работает как бешеный. Но есть одно но - выбирает рандомный труп если их больше одного в одном месте, как правило уже пустой.

Code: Select all

 begin   
          FindDistance:=2;
          FindType(bodymonstro[k],Ground);  
          if (Findcount > 0) then  
          begin 
            telo:=finditem; //telo - ИД убитый монстр  
            checklag(60000);
            if NewMoveXY(GetX(telo),GetY(telo),true,1,true) = false then 
            //tele(buttonSkelet); 
            begin
           // tele(buttonSkelet);     
            dotResp:=0;  
            NewMoveXY(dot[dotResp].X,dot[dotResp].Y,true,1,true);
            end;  
             
            checklag(60000); 
            ctime := Now;
            UseObject(telo);  
            if WaitJournalLine(ctime,'not earn the right to loot this creature', 500) = false then
                begin  
                for hhh:=0 to (GetArrayLength(grabmas)-1)  do 
                  begin 
                  if  CountEx(grabmas[hhh],$FFFF,telo)>0 then
                      begin  
                        checklag(60000);
                        Grab(findItem,telo);   
                        wait(600); 
                      end;  
                  end ;
              end;
           ignore(telo); 
        end ;    
      end ;    
Как сюда прикрутить проверку на последний труп? Или может можно как-то трупы прятать с помощью ,hide? Знатоки, помогите :roll:
заведи себе список полутанных трупов, то-есть при луте запомни айди трупа в список, и каждый раз когда ищешь труп для лута проверяй не был ли он полутан, то-есть имеется ли такой адишничек в списке.

Re: Golden_Boy зарабатываем зоолто убивая мобов.

Posted: 15.03.2015 18:50
by Vizit0r
да игнорить распотрошенный труп и все.