Неактуально Бот-шахтёр для ARP

Статус
В этой теме нельзя размещать новые ответы.

gcode

нестандартное звание звание звание звание звани...
Автор темы
Друг
789
357

3qiWhkPi63.jpg


Захотелось сделать что-нибудь для любимого сервера, бот-шахтёр уже как-то мелькал, но такого ещё точно не было. :)
В архиве два скомпилированных скрипта miner.cs, miner.passive и исходный код.

Преимущества:
  • Не скользит, бегает, спринтует;
  • Месторождение выбирается случайно из 3-х возможных + случайные координаты;
  • Сам собирает зар. плату. Количество кругов нужно указать при запуске;
  • Если бот нарушит технологию, то он побежит получать работу заного;
  • Респавнит машины брошенные в округе, чтобы те не заграждали путь;
    ( Введите "/miner [кол-во кругов] 1", чтобы отключить респавн )
  • Можно остановить или поставить на паузу в любой момент.
Управление:
  1. Начните работу шахтёра;
  2. Чуть-чуть отойдя от иконки "майки", введите /miner [кол-во кругов];
  3. Занимайтесь своими делами;
  4. Нажмите клавишу F1, чтобы остановить бота, или введите /minerpause, чтобы поставить его на паузу.
История изменений:
  • 0.1.0 - Публичный релиз.
  • 0.1.1 - Добавлен спринт, поправлены координаты.
  • 0.1.2 - Исправлен вылет с warningами при сборе з/п.
  • 0.2.0 - Добавлена возможность указывать кол-во кругов до сбора з/п. При смерти бот отключится сам. Незначительные изменения в коде.
  • 0.2.1 - Исправлена проблема с ломанием тележки. Исправлены анимации добычи руды, складывания руды, анимация на поворотах.
  • 0.2.2 - Теперь ещё и респавнит все машины в округе, чтобы те не заграждали путь боту. (Большое спасибо mgmoldova за помощь)
  • 0.3.0 - Полностью пересмотрено строение скрипта. Добавлена возможность менять кол-во кругов прямо во время работы бота. Небольшое исправление респауна машин.
  • 0.3.1 - Возможность менять кол-во кругов "на лету" убрана из-за багов. Теперь бота можно выключить даже во время добычи руды. Служебные переменные заменены на рабочие.
  • 0.3.2 - Отныне бот будет действительно случайно выбирать одно из трёх месторождений + координаты "чекпоинтов" тоже будут выбираться каждый раз случайно. Спавн машин будет происходить чуть реже + добавлена возможность совсем его отключить. Клавиша выключения бота изменена на F1. Убраны баги связанные с ненормальным поведением машин в течении 2х минут после остановки скрипта. Снова можно менять кол-во кругов "на лету". :)
  • 0.3.3 - Исправлен редкий сбив анимации добычи руды. Добавлена возможность ставить бота на паузу командой /minerpause.
  • 0.3.4 - Попытка решить проблему с поломкой тележки.
  • 0.3.5 - Теперь если бот нарушит технологию, он побежит сдавать работу.
  • 0.3.6 - hotfix
  • 0.3.7 - Теперь бот будет сдавать/получать работу моментально при открытии окошка. И даже если сервер лагает, он будет ждать пока оно не откроется.
  • 0.3.8 - Убрано скольжение. Обновлены координаты маркеров.
  • 0.4.0 - Бот проходит сквозь машины и игроков.
Исходный код:
PHP:
{$CLEO .cs}
0662: NOP "CLEO : ARP Miner Bot"
0662: NOP "gcode : 2013"
0662: NOP "ACheats.ru : BlastHack.net"
thread "miner"
 
if
    8AF7: get_samp_base_to 33@
then
    0A93: end_custom_thread
end
repeat
    wait 400
until 0AFA: is_samp_structures_available
0AF1: write_int_to_ini_file 0 path "cleo\miner.tmp" section "Temp" key "cheatstate"
0AF8: samp add_message_to_chat "[MinerBot]: {EAEAEA}Введите {e9c69a}/miner [кол-во кругов]{EAEAEA}, чтобы включить бота-шахтёра." 0xe9c69a
0AF8: samp add_message_to_chat "[MinerBot]: {EAEAEA}Для {e9c69a}acheats.ru {EAEAEA}и {e9c69a}blasthack.net {EAEAEA}от {e9c69a}gcode{EAEAEA}." 0xe9c69a
0B34: samp register_client_command "miner" to_label @mineron
0B34: samp register_client_command "minerpause" to_label @minerpause
 
:miner
wait 0
0AF0: 30@ = read_int_from_ini_file "cleo\miner.tmp" section "Temp" key "cheatstate"
if
    30@ == 1
else_jump @miner
    28@ = 0
    0AF0: 29@ = read_int_from_ini_file "cleo\miner.tmp" section "Temp" key "laps"
    0ACD: show_text_highpriority "~W~MinerBot ~G~ON" time 1500
    0AF8: samp add_message_to_chat "[MinerBot]: {EAEAEA}Нажмите клавишу {e9c69a}F1{EAEAEA}, чтобы выключить бота-шахтёра." 0xe9c69a
    0AF8: samp add_message_to_chat "[MinerBot]: {EAEAEA}Введите {e9c69a}/minerpause{EAEAEA}, чтобы поставить бота на паузу." 0xe9c69a
    0AB1: call_scm_func @bot 5 -1840.21 -1604.03 21.76 0 1
    0AB1: call_scm_func @bot 5 -1838.44 -1642.34 21.75 0 1
    :miner1
    wait 0
    0AF0: 29@ = read_int_from_ini_file "cleo\miner.tmp" section "Temp" key "laps"
    if
        001D: 29@ > 28@
    then
        0AF0: 24@ = read_int_from_ini_file "cleo\miner.tmp" section "Temp" key "spawnstate"
        if and
            23@ == 4
            24@ == 0
        then
            23@ = 0
            0A92: create_custom_thread "miner.passive"
        end
        0209: 27@ = generate_random_int_in_range 0 3
        if
            27@ == 0
        else_jump @minera
            0AB1: call_scm_func @bot 5 -1807.81 -1646.1 22.3528 1 0
            jump @minerb
        :minera
        wait 0
        if
            27@ == 1
        then
            0AB1: call_scm_func @bot 5 -1811.34 -1651.28 21.6805 1 0
        else
            0AB1: call_scm_func @bot 5 -1809.78 -1656.86 21.9987 1 0
        end
        :minerb
        wait 0
        0AB1: call_scm_func @waiter 1 16600
        0208: 22@ = generate_random_float_in_range -3.0 0.3
        22@ -= 1642.34
        0AB1: call_scm_func @bot 5 -1838.44 22@ 21.75 0 0
        0208: 22@ = generate_random_float_in_range -3.0 0.3
        22@ -= 1856.43
        0AB1: call_scm_func @bot 5 22@ -1627.41 21.93 0 0
        0AB1: call_scm_func @bot 5 -1867.21 -1612.16 20.688 1 0
        0AB1: call_scm_func @waiter 1 2000
        0208: 22@ = generate_random_float_in_range -0.5 2.5
        22@ -= 1856.43
        0AB1: call_scm_func @bot 5 22@ -1627.41 21.93 0 1
        0208: 22@ = generate_random_float_in_range -3.0 1.0
        22@ -= 1642.34
        0AB1: call_scm_func @bot 5 -1838.44 22@ 21.75 0 1
        28@ += 1
        23@ += 1
    else
        28@ = 0
        0AF9: samp say_msg "/mn"
        repeat
            wait 0
            0B4E: samp 17@ = get_current_dialog_id
        until 17@ == 27
        0B47: samp close_current_dialog_with_button 0
        0AB1: call_scm_func @bot 5 -1840.21 -1604.03 21.76 0 1
        0AB1: call_scm_func @bot 5 -1864.77 -1560.77 21.75 1 1
        repeat
            wait 0
            0B4E: samp 17@ = get_current_dialog_id
        until 17@ == 110
        0B47: samp close_current_dialog_with_button 1
        repeat
            wait 0
            0B4E: samp 17@ = get_current_dialog_id
        until 17@ == 109
        0B47: samp close_current_dialog_with_button 1
        0AB1: call_scm_func @bot 5 -1840.21 -1604.03 21.76 0 1
        0AB1: call_scm_func @bot 5 -1838.44 -1642.34 21.75 0 1
    end
    jump @miner1
 
:mineron
0B35: samp 26@ = get_last_command_params
if
    0AD4: 25@ = scan_string 26@ format "%d" 29@
then
    24@ = 0
    0AD4: 25@ = scan_string 26@ format "%d %d" 29@ 24@
    0AF0: 30@ = read_int_from_ini_file "cleo\miner.tmp" section "Temp" key "cheatstate"
    if
        30@ == 0
    then
        0AF1: write_int_to_ini_file 1 path "cleo\miner.tmp" section "Temp" key "cheatstate"
        0AF1: write_int_to_ini_file 24@ path "cleo\miner.tmp" section "Temp" key "spawnstate"
        0AF1: write_int_to_ini_file 29@ path "cleo\miner.tmp" section "Temp" key "laps"
        0AF1: write_int_to_ini_file 0 path "cleo\miner.tmp" section "Temp" key "paused"
        0AF1: write_int_to_ini_file 0 path "cleo\miner.tmp" section "Temp" key "techno"
    else
        0AF8: samp add_message_to_chat "[MinerBot]: {EAEAEA}Вы изменили кол-во кругов до сбора з/п на {e9c69a}%d{EAEAEA}." 0xe9c69a 29@
        0AF1: write_int_to_ini_file 24@ path "cleo\miner.tmp" section "Temp" key "spawnstate"
        0AF1: write_int_to_ini_file 29@ path "cleo\miner.tmp" section "Temp" key "laps"
    end
else
    0AF8: samp add_message_to_chat "[MinerBot]: {EAEAEA}Вы забыли указать кол-во кругов до сбора з/п. Введите {e9c69a}/miner [кол-во кругов]{EAEAEA}." 0xe9c69a
end
0B43: samp cmd_ret
 
:minerpause
0AF0: 30@ = read_int_from_ini_file "cleo\miner.tmp" section "Temp" key "cheatstate"
if
    30@ == 1
then
    0AF0: 21@ = read_int_from_ini_file "cleo\miner.tmp" section "Temp" key "paused"
    if
        21@ == 0
    then
        0AF1: write_int_to_ini_file 1 path "cleo\miner.tmp" section "Temp" key "paused"
        Actor.StorePos($PLAYER_ACTOR, 20@, 19@, 18@)
        18@ -= 1.0
        Actor.PutAt($PLAYER_ACTOR, 20@, 19@, 18@)
        0AB3: var 740 = 0
        0AF8: samp add_message_to_chat "[MinerBot]: {EAEAEA}Вы поставили бота на паузу, введите {e9c69a}/minerpause{EAEAEA}, чтобы продолжить." 0xe9c69a
        0ACD: show_text_highpriority "~W~MinerBot ~R~Paused" time 1500
    else
        0AF1: write_int_to_ini_file 0 path "cleo\miner.tmp" section "Temp" key "paused"
        0ACD: show_text_highpriority "~W~MinerBot ~G~Continued" time 1500
    end
else
    0AF8: samp add_message_to_chat "[MinerBot]: {EAEAEA}Введите {e9c69a}/miner [кол-во кругов]{EAEAEA}, чтобы включить бота-шахтёра." 0xe9c69a
end
0B43: samp cmd_ret
 
:mineroff
wait 0
0AB3: var 740 = 0
0ACD: show_text_highpriority "~W~MinerBot ~R~OFF" time 1500
0AF1: write_int_to_ini_file 0 path "cleo\miner.tmp" section "Temp" key "cheatstate"
0AF1: write_int_to_ini_file 0 path "cleo\miner.tmp" section "Temp" key "spawnstate"
0AF1: write_int_to_ini_file 0 path "cleo\miner.tmp" section "Temp" key "paused"
wait 100
0B47: samp close_current_dialog_with_button 1
jump @miner
 
:minerse
28@ = 0
0208: 22@ = generate_random_float_in_range -3.0 1.0
22@ -= 1642.34
0AB1: call_scm_func @bot 5 -1838.44 22@ 21.75 0 1
0AF9: samp say_msg "/mn"
repeat
    wait 0
    0B4E: samp 17@ = get_current_dialog_id
until 17@ == 27
0B47: samp close_current_dialog_with_button 0
0AB1: call_scm_func @bot 5 -1840.21 -1604.03 21.76 0 1
0AB1: call_scm_func @bot 5 -1864.77 -1560.77 21.75 1 1
        repeat
            wait 0
            0B4E: samp 17@ = get_current_dialog_id
        until 17@ == 110
        0B47: samp close_current_dialog_with_button 1
        repeat
            wait 0
            0B4E: samp 17@ = get_current_dialog_id
        until 17@ == 109
        0B47: samp close_current_dialog_with_button 1
0AB1: call_scm_func @bot 5 -1840.21 -1604.03 21.76 0 1
0AB1: call_scm_func @bot 5 -1838.44 -1642.34 21.75 0 1
0AF1: write_int_to_ini_file 0 path "cleo\miner.tmp" section "Temp" key "techno"
jump @miner1
 
:bot
wait 0
if and
    0AB0:  key_pressed 112
    not SAMP.ChatInputOpened
then
    Actor.StorePos($PLAYER_ACTOR, 0@, 1@, 2@)
    2@ -= 1.0
    Actor.PutAt($PLAYER_ACTOR, 0@, 1@, 2@)
    jump @mineroff
end
if
    Actor.Dead($PLAYER_ACTOR)
then
    jump @mineroff
end
0AF0: 6@ = read_int_from_ini_file "cleo\miner.tmp" section "Temp" key "techno"
if
    6@ == 0
then
    0B4E: samp 6@ = get_current_dialog_id
    if
        6@ == 0
    then
        0AF1: write_int_to_ini_file 1 path "cleo\miner.tmp" section "Temp" key "techno"
        0B47: samp close_current_dialog_with_button 1
        jump @minerse
    end
end
0AF0: 5@ = read_int_from_ini_file "cleo\miner.tmp" section "Temp" key "paused"
if
    5@ == 0
else_jump @bot
Player.InfiniteRun($PLAYER_ACTOR) = True
05D3: AS_actor $PLAYER_ACTOR goto_point 0@ 1@ 2@ mode 6 2000 ms
if
    4@ == 1
then
    0AB3: var 740 = 3
else
    0AB3: var 740 = 2
end
Camera.SetBehindPlayer()
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 7@ closest_ped_to 8@
if
    8@ > 0
then
    0619: enable_actor 8@ collision_detection 0
end
if
    7@ > 0
then
    099A: set_car 7@ collision_detection 0
end
if
    00ED: actor $PLAYER_ACTOR 0 near_point 0@ 1@ radius 1.9 1.9 on_foot
else_jump @bot
    if
        3@ == 1
    then
        wait 500
        0AB3: var 740 = 0
        0687: clear_actor $PLAYER_ACTOR task
    end
    0AB2: ret 0
 
:waiter
wait 0
0@ /= 100
for 3@ = 0 to 0@
if and
    0AB0:  key_pressed 112
    not SAMP.ChatInputOpened
then
    Actor.StorePos($PLAYER_ACTOR, 0@, 1@, 2@)
    2@ -= 1.0
    Actor.PutAt($PLAYER_ACTOR, 0@, 1@, 2@)
    jump @mineroff
end
if
    Actor.Dead($PLAYER_ACTOR)
then
    jump @mineroff
end
0AF0: 6@ = read_int_from_ini_file "cleo\miner.tmp" section "Temp" key "techno"
if
    6@ == 0
then
    0B4E: samp 6@ = get_current_dialog_id
    if
        6@ == 0
    then
        0AF1: write_int_to_ini_file 1 path "cleo\miner.tmp" section "Temp" key "techno"
        0B47: samp close_current_dialog_with_button 1
        jump @minerse
    end
end
0AF0: 4@ = read_int_from_ini_file "cleo\miner.tmp" section "Temp" key "paused"
if
    4@ == 0
else_jump break
Camera.SetBehindPlayer()
wait 100
end
0AB2: ret 0

Проверь(те):
  1. SAMP R1 (не R1-2). Скачать можно отсюда: http://blasthack.net/data/samp/sa-mp-0.3x-R1-install.exe
  2. CLEO 4.1. Скачать можно отсюда: http://cleo.sannybuilder.com/cleo4/CLEO4_setup.exe
  3. SAMPFUNCS 2.4 или новее. Скачать можно отсюда: http://blasthack.net/threads/cleo-plugin-sampfuncs.17/
  4. GOTO SHUFFLE FIX. Скачать можно отсюда: http://blasthack.net/threads/goto-shuffle-fix.711/
 

Вложения

  • miner bot.zip
    16.6 KB · Просмотры: 2,535

gcode

нестандартное звание звание звание звание звани...
Автор темы
Друг
789
357
Небольшой update 0.1.1
Теперь когда бот без тележки, он будет спринтовать, а не бежать + подправил координаты точек.
 

querta

Известный
Проверенный
345
41
а кстати да. Зп не сибирает, просто бежит на чекпоинт и ждет. Типо надо самому нажать
 

querta

Известный
Проверенный
345
41
да и кстати, много варнонгов вылазит. Я несколько антикрашеров скачал и радуюсь
 

gcode

нестандартное звание звание звание звание звани...
Автор темы
Друг
789
357
Баг с warningaми возникает после выключения и повторного включения бота, доберусь до компа - попробую пару идей по этому поводу.
 

Tampon

Потрачен
19
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Збс, видел много ботов но чтоб ходил а не тп такова не видел.
 
Статус
В этой теме нельзя размещать новые ответы.