Page 1 of 1

Помогите....

Posted: 14.08.2009 20:58
by proZak
написать процедуру на збрасывание вещей с пака (мне нада чтобы некторые итемы с пака чар выбрасывал наземлю на одну, 2-е клетки от чара) если можна то по определеной кординате збрасывал.

Posted: 14.08.2009 21:43
by WladL

Code: Select all

function Drop(ItemID: Cardinal; Count: Integer; X,Y,Z: Integer): Boolean;

procedure FlashItem(Item: Cardinal;Count: Integer);
begin
  Drop(Item,Count,GetX(self)+1,GetY(self),GetZ(self));
end;

пример использования:
My_Item=$0F51

FindType(My_Item,backpack);
if FindCount>0 then begin
   repeat
     FlashItem(FindItem,1); //<- Будет сбрасывать на землю по 1 итему пока все не выбросит
     FindType(My_Item,backpack);
  until FindCount=0;
end;


Posted: 15.08.2009 17:20
by proZak
А так работать будет?)))

Code: Select all

Procedure StoreOre
  j, a: integer; 
begin 
  j := 1;
  UseObject(OreBox); 
  Wait(3200); 
  UOSay(Chr(39)+'resend'); 
  Wait(1000); 
  while j < 5 do 
  begin 
    If FindType(Item[j], backpack) > 0 then 
    begin 
      ItemID := finditem; 
      If not(isDead(self)) then MoveItem(ItemID, 0, OreBox, 0, 0, 0); 
      Wait(1000); 
    end 
    else 
    begin 
      j := j + 1; 
    end; 
  end;
begin 
  a := 1;
  while a < 5 do 
  begin 
    If FindType(Musor[a], backpack) > 0 then 
    begin 
      ItemID := finditem; 
      If not(isDead(self)) then Drop(ItemID,Count,GetX(self)+1,GetY(self),GetZ(self)); 
      Wait(1000); 
    end 
    else 
    begin 
      a := a + 1; 
    end; 
  end;
  addtosystemjournal('Идем ловить дальше'); 
  Dig; 
end;
end;

Posted: 15.08.2009 23:42
by WladL
proZak wrote:А так работать будет?)))

Code: Select all

 
for a := 1 to High(Musor) do 
    If FindType(Musor[a], backpack) > 0 then  begin 
       If not Dead then Drop(FindItem,FindCount или FindQuantity,GetX(self)+1,GetY(self),GetZ(self)); 
      Wait(1000); 
и еще сюда бы неплохо проверку на ворлдсейв воткнуть
    end; 

Posted: 16.08.2009 17:59
by proZak
Сам скрипт

*** Удален афтором ***

Posted: 16.08.2009 19:10
by grundick
Расставь везде отступы и посмотри, нету ли у тебя лишних END или BEGIN...

Posted: 16.08.2009 21:57
by WladL
proZak wrote:

Code: Select all

Procedure StoreOre;
 var 
  g, a, k: integer; 
begin
   CheckSave; 
   WaitConnection(3000);
   Disarm; 
   wait(1000);
    for k := 4 to 5 do 
      FindType(Tools[k], backpack); 
      If k = 4 then Equip (RhandLayer, finditem); 
      If k = 5 then Equip (LhandLayer, finditem);
 Begin
  g := 1; 
  UseObject(OreBox); 
  Wait(3200); 
  UOSay(Chr(39)+'resend'); 
  Wait(1000); 
  while g < 14 do 
  begin 
    If FindType(Item[g], backpack) > 0 then 
    begin 
      ItemID := finditem; 
      If not(isDead(self)) then MoveItem(ItemID, 0, OreBox, 0, 0, 0); 
      Wait(1000); 
    end 
    else 
    begin 
      g := g + 1; 
    end; 
  end; 
begin 
  a := 1; 
  while a < 67 do 
  begin 
    If FindType(Musor[a], backpack) > 0 then 
    begin 
     //If not Dead then < врядли FindType найдет мусор в паке если чар сдох :)  
      //FindCount - Это кол-во стопок, а тебе нужно указать сколько из стопки поэтому FindQuantity
      Drop(FindItem,FindQuantity,GetX(self)+1,GetY(self),GetZ(self)); 
      Wait(1000); 
      CheckSave;<ибо действо на сервере делаешь
    end 
    else 
    begin 
      a := a + 1; 
    end; 
  end; 
end;
Dig;
end;
end;


Posted: 23.08.2009 13:52
by Banzayka
Вопрос.А как же будет віглядить текстовик рекорд.Для такого массивного скрипта? :shock:

Posted: 23.08.2009 23:54
by WladL
Banzayka wrote:текстовик рекорд
Это ты о чем?

Posted: 24.08.2009 1:01
by Mirage
А зачем удалил? :P