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

Обработка текста через Gump

тут можно задать вопрос по скриптингу
Post Reply
eugen319
Neophyte
Neophyte
Posts: 10
Joined: 21.11.2017 14:23

Обработка текста через Gump

Post by eugen319 »

Доброе время суток !

Я нашел пост еще 2009 года, когда Vizit0r в этом топике сказал, что обработчика для текста не будет, да бы не отправлять лишние запросы на сервер, я хотел бы узнать, что-то изменилось за 8 лет ?

У меня задача приблизительно похожая, крафтятся банки через свиток, есть поле количества банок и кнопка. Кнопку обрабатывать научился, мне помог этот топик и ответ Edreda здесь

В инфогамп я вижу текстовое поле и номер текстового поля, который мне надо вводить, а вот как с ним работать не научился, буду рад услышать комментарии.

Code: Select all

Text: ____________
    0] <BASEFONT COLOR="#00a500"><BASEFONT SIZE="7"><CENTER>Greater Clever Potion</CENTER></BASEFONT>
    1] Ingredients:
    2] - Mandrake Root 6
    3] - Nightshade 4
    4] - empty bottle 1
    5] Is required:
    6] - Alchemy 75.0
    7] Amount:
    8] 1
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Обработка текста через Gump

Post by nah nah »

Можно картинку гампа и инфогамп целиком?
eugen319
Neophyte
Neophyte
Posts: 10
Joined: 21.11.2017 14:23

Re: Обработка текста через Gump

Post by eugen319 »

Буду благодарен за любую помощь.

Image

Code: Select all

_____infogump_______
injection id	0x5748d800
serial	0x005490bc
gumpid	0xc6d0913e
X	25
Y	5
in client 	yes
876	packet size
0	reply packet size
Buttons: ________
   17 [    2] image=0x0FB1 at 317:389
   18 [    1] image=0x0FB7 at 417:389
Checks&Radios: __
Entryes: ________
   16 [    1] 405:349*50:20 [1]
All commands: ____
    1] gumppic 233 127 2080
    2] gumppic 250 164 2081
    3] gumppic 250 234 2082
    4] gumppic 250 304 2081
    5] gumppic 250 374 2082
    6] gumppic 250 369 2081
    7] gumppic 251 434 2083
    8] htmlgump 264 134 240 19 0 0 0
    9] text 342 179 90 1
   10] text 270 209 1152 2
   11] text 270 234 1152 3
   12] text 270 259 1152 4
   13] text 342 289 90 5
   14] text 270 319 1152 6
   15] text 346 349 90 7
   16] textentry 405 349 50 20 1152 1 8
   17] button 317 389 4017 4019 1 0 2
   18] button 417 389 4023 4025 1 0 1
Text: ____________
    0] <BASEFONT COLOR="#00a500"><BASEFONT SIZE="7"><CENTER>Greater Clever Potion</CENTER></BASEFONT>
    1] Ingredients:
    2] - Mandrake Root 6
    3] - Nightshade 4
    4] - empty bottle 1
    5] Is required:
    6] - Alchemy 75.0
    7] Amount:
    8] 1

nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Обработка текста через Gump

Post by nah nah »

Code: Select all

NumGumpTextEntry(GetGumpsCount - 1, 1, '25')
Должно вписать 25
eugen319
Neophyte
Neophyte
Posts: 10
Joined: 21.11.2017 14:23

Re: Обработка текста через Gump

Post by eugen319 »

nah nah wrote:

Code: Select all

NumGumpTextEntry(GetGumpsCount - 1, 1, '25')
Должно вписать 25
Потестил, делает 1 штуку. Подозреваю, что NumGumpTextEntry работает, но не в моем случае.

Code: Select all

NumGumpTextEntry(GetGumpsCount - 1, 1, '25'); // вводим 25
WaitGump('1'); // Жмем кнопку и крафтим 25 штук
eugen319
Neophyte
Neophyte
Posts: 10
Joined: 21.11.2017 14:23

Re: Обработка текста через Gump

Post by eugen319 »

Пошуршил немного в документации, вставил в скрипт

Code: Select all

GumpAutoTextEntry(1, '30');
Заработало! Спасибо!

Вот, что у меня получилось в итоге:

Code: Select all

program Alchemi;

const
stupka = $0E9B;
recept = $14EF;

begin
Useobject(FindType(stupka,backpack));
WaitTargetObject(FindType(recept,backpack));
GumpAutoTextEntry(1, '30');
WaitGump('1');
end.
и у меня остался вопрос новичка, банки крафтятся, все ок, но бывают дисконекты и чар естественно перестает их делать. Как грамотно бы было сделать проверку ? Через журнал или таймер? И если можно бы было маленький пример проверки. Допустим сообщение при крафте: "Вы сделали бутылку"
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Обработка текста через Gump

Post by Vizit0r »

проверку на что?
если на сообщение в журнале - то ищи через WaitJournalLine или InJournalBetweenTimes - на форуме полно скриптов с ними.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
eugen319
Neophyte
Neophyte
Posts: 10
Joined: 21.11.2017 14:23

Re: Обработка текста через Gump

Post by eugen319 »

Vizit0r wrote:проверку на что?
если на сообщение в журнале - то ищи через WaitJournalLine или InJournalBetweenTimes - на форуме полно скриптов с ними.
Я уперся в эти две функции и уже пересмотрел много скриптов, в основном это скрипты на крафт, фишинг, мининг и т.д. Если я правильно понял в случае с WaitJournalLine - я жду определенную строку в журнале, в случае с InJournalBetweenTimes - я не до конца понял принцип работы, из-за того, что он принимает значения "больше-меньше-равно".

Допустим чар сделал N изделий и перестал делать. В журнале приблизительно следующие сообщения:

Code: Select all

[00:04] Чар: Сделал что-то полезное
[00:08] Чар: Сделал что-то полезное
[00:12] Чар: Сделал что-то полезное
....
И затем чара надо подтолкнуть на процедуру крафта снова. По сути условие простое: Если интервал между сообщениями 'Сделал что-то полезное' больше 20 секунд, тогда делай что-то. И вот я не знаю как прописать правильно условие через If, потому что здесь завязано и время и отслеживание журнала, хотя подозреваю, что мне может помочь InJournalBetweenTimes
Last edited by eugen319 on 29.11.2017 0:56, edited 1 time in total.
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Обработка текста через Gump

Post by nah nah »

Code: Select all

craft()
while not waitjournalline(line, 20000):
    craft()
eugen319
Neophyte
Neophyte
Posts: 10
Joined: 21.11.2017 14:23

Re: Обработка текста через Gump

Post by eugen319 »

nah nah wrote:

Code: Select all

craft()
while not waitjournalline(line, 20000):
    craft()

Могу конечно из-за своей невнимательности ошибаться, но Stealth мне пишет: "Invalid number of parameters".

Code: Select all

begin
while not waitjournalline('Что-то скрафтили', 20000) do
begin
Addtosystemjournal('Крафтить будем ?');
end; 
end.
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Обработка текста через Gump

Post by nah nah »

Code: Select all

function WaitJournalLine(StartTime : TDateTime; Str : String; MaxWaitTimeMS : Integer) : Boolean

Code: Select all

const line = 'Что-то скрафтили';
var time : TDateTime;
time := now;
craft;
while WaitJournalLine(time, line, 20000) do
    AddToSystemJournal('Крафтить будем ?');
eugen319
Neophyte
Neophyte
Posts: 10
Joined: 21.11.2017 14:23

Re: Обработка текста через Gump

Post by eugen319 »

nah nah wrote:

Code: Select all

function WaitJournalLine(StartTime : TDateTime; Str : String; MaxWaitTimeMS : Integer) : Boolean

Code: Select all

const line = 'Что-то скрафтили';
var time : TDateTime;
time := now;
craft;
while WaitJournalLine(time, line, 20000) do
    AddToSystemJournal('Крафтить будем ?');

Я так обрадовался, все оказалось намного проще, чем я думал. Да, невнимателен, вижу. Примного благодарен, все работает, как часы) Я бы еще с этими журналами бы сидел и ковырялся неделю )
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Обработка текста через Gump

Post by nah nah »

а где большой пост со скриптом?)
Post Reply