Данный скрипт сделает всё за вас. Работа развозчиком металла и топлива хороша, но вот выгрузка на заводе по производству продуктов утомляет, особенно если разгружаются несколько человек.
Меньше болтовни, больше практики:
~$Enter:: ; Начнём с того, что обработаем команду
{
if (isInChat() = 1 & IsDialogOpen() = 0)
{
sleep 150
dwAddress := dwSAMP + 0x12D8F8
chatInput := readString(hGTA, dwAddress, 256)
if chatInput contains /metallsell ; Будем продавать металл на завод
{
if (pWork = "Metall") ; У нас будет глобальная переменная, в которой будем хранить тип задания (металл или топливо). "Metall" значит задание уже выполняется, если значение переменной - "" (пустое значение), то задание не выполняется и его нужно начать
{
SetTimer, pWorkJob, off ; Остановим таймер продажи
AddChatMessage("{9C27B0}Автопродажа металла остановлена")
pWork := "" ; Сообщим скрипту, что закончили работу развозчиком (по крайней мере, на данный момент)
return
}
if (pWork = "") ; Пустое значение, значит мы ещё не приступали к работе и нам нужно разгрузиться
{
SetTimer, pWorkJob, 1500 ; Установим таймер с названием pWorkJob между продажами командой /sellm в 1,5 секунды
pWork := "Metall" ; Сообщим скрипту, что начали продавать металл
AddChatMessage("{9C27B0}Автопродажа металла началась, для остановки введите {E0E0E0}/metallsell {9C27B0}ещё раз")
return
}
}
if chatInput contains /fuelsell ; С топливом аналогично алгоритму с металлом
{
if (pWork = "Fuel")
{
SetTimer, pWorkJob, off
AddChatMessage("{9C27B0}Автопродажа топлива остановлена")
pWork := ""
return
}
if (pWork = "")
{
SetTimer, pWorkJob, 1500
pWork := "Fuel"
AddChatMessage("{9C27B0}Автопродажа топлива началась, для остановки введите {E0E0E0}/fuelsell {9C27B0}ещё раз")
return
}
}
}
}
pWork - у нас глобальная переменная, но мы её ещё не объявили, так давайте сделаем это!
global pWork := "" ; Это необходимо вставить в самом верху скрипта
А вот и сам таймер pWorkJob:
pWorkJob: ; Внимание, одно двоеточие, и это не ошибка, а почему так?
{
SetTimer, pWorkJob, Off ; Остановим таймер
if (pWork = "Metall") ; Если продаём металл:
{
Random, randomnumber, 1, 2 ; Выбираем случайное число (1 или 2) кг металла, которое будем выгружать. Будет срабатывать не всегда, но дабы создать ощущение, что продает игрок, а не машина, примем это как должное
sendchat("/sellm " randomnumber) ; Отправит в чат команду для продажи, при чём sendchat работает "тихо", т.е. игрок может писать в чат, открывать чат, листать TAB, да хоть стоять AFK, скрипт всё равно будет работать как должен
SetTimer, pWorkJob, 1500 ; И делаем это раз в 1,5 секунды
return
}
if (pWork = "Fuel")
{
Random, randomnumber, 1, 4 ; а тут число от 1 до 4, почему - см. комментарий ниже
sendchat("/sellf " randomnumber)
SetTimer, pWorkJob, 1100 ; Практика показала, что количество литров топлива на складе уменьшается быстрее, чем металл, поэтому интервал 1,1 сек
return
}
}
Итого:
Достоинства:
- можно оставить игру и забыть, или сидеть в AFK;
- не надо долбить по клавиатуре и следить за состоянием склада, напрягая зрение;
- продаст всё автоматически, вам только загрузить, привести и включить;
Недостатки:
- могут посчитать за бот (я точно не знаю, я сам пользовался, ничего криминального);
- нельзя стоять долго в AFK, работая с топливом (примерно до 2 минут). Цистерна исчезает.