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

проблема 2ух гампов

тут можно задать вопрос по скриптингу
Post Reply
neverflash
Novice
Novice
Posts: 70
Joined: 14.09.2010 16:04
Location: BY, Minsk

проблема 2ух гампов

Post by neverflash »

Дорого времени суток господа!

Решил сделать такой скрипт :
есть булк ордер в паке, узнаётся кол-во итемов, куётся и добавлется в булк ордер (допустим мы заведомо знаем что это например катаны, пока что) , если предмет не эксепт - переплавляется

Проблема: Не понятно себя ведут гампы, у молотка свой гамп , у булк ордера свой. Как только переплавяется итем, то перестаёт срабатывать гамп на добавление в булк ордер, а вместо него срабатывает гамп молотка со значением которое в гампе булк ордер.

привожу свой код:

Code: Select all

Program New;
const
instrum = $13E3; // молтоток (тип)
bulk_type = $2258; // bulk order (тип)

procedure craft_item (cat : integer; item : integer);  // куём нужный итем (передаётся  гамп категории и гамп итема)
begin
  waitgump(IntToStr(cat));
  UseType(instrum, 0);
  wait(500);
  CloseSimpleGump(cat);
  waitgump(IntToStr(item));
  wait(1500);
  CloseSimpleGump(item);
end;

procedure selmet_item (item_type : cardinal); // добавляем эксепт в булк ордер если не эксепт - плавим
var
str : string;
begin
str := GetCliloc(FindType(item_type,backpack));
if (FindType(item_type, backpack) <> 0) And (pos('exceptional',str)=0)  then 
   begin
    uosay('плавлю');
    waitgump('14');
    WaitTargetObject(FindType(item_type,backpack));
    UseObject(FindType(instrum,backpack));
    wait(2000);
    CloseSimpleGump(14);
   //ignore(FindItem); 
   end;
if (FindType(item_type, backpack) <> 0) And (pos('exceptional',str)>0)  then
   begin
    uosay('добавляю');
    waitgump('2');
    UseObject(FindType(bulk_type,backpack));
    WaitTargetObject(FindType(item_type,backpack));
    wait(2000);
    CloseSimpleGump(2);
   end;    
end;  

var
str,count : string;
fnd,i : integer;
begin
// узнаём из клилока сколько вещей в bulk order
str := GetCliloc(FindType(bulk_type,backpack)); fnd := pos('make:',str); count := Copy(str,fnd+6,2); fnd := StrToInt(count);
for i :=1 to fnd do
  begin
   craft_item(22,100);
   wait(1000);
   selmet_item($13FF);
  end;
   
end.
так же предоставляю скрины гампов (дождитесь загрузки):
Image
Fenix
Developer
Developer
Posts: 275
Joined: 24.08.2010 7:20
Location: Ставрополь
Contact:

Post by Fenix »

1. Что за "CloseSimpleGump(14)"? И все остальные CloseSimpleGump тоже. Туда в качестве параметра должен передаваться порядковый номер гампа, а вы туда передаёте код возврата кнопки гампа.
2. WaitGump перебирает все существующие сейчас и приходящие после гампы на предмет наличия кнопки с соответствующим кодом возврата. Соответственно, если возникнет ситуация с лагом и у вас окажется открыто и окно гампа крафта, и окно гампа заказа, то какое из них обработается перым никто не гарантирует.

Совет - закрывать возможные открытые гампы перед каждым крафтом/использованием светка заказа, использовать ивенты (evIncomingGump если не ошибаюсь) и NumGumpButton.
MuDaCk
Apprentice
Apprentice
Posts: 393
Joined: 10.10.2006 0:03
Contact:

Post by MuDaCk »

Я тоже хочу показаться умным!!!
Перечитай всё про гумпы, некоторые люди там могли найти нужную информацию :lol: .
Тебе хотели сказать, что стелс может работать только с одним гампом одновременно.
My name is Игорёшка Image
Пишу скрипты за едуImage
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

MuDaCK wrote:Тебе хотели сказать, что стелс может работать только с одним гампом одновременно.

ТАКОЕ ему точно не говорили, и вряд ли хотели сказать.
Стелс работает одновременно хоть с сотней гампов, главное чтоб плеер делал это правильно.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply