Вопросы по CLEO-скриптингу

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,469
Потому что выводишь хендл, а не ид.
 

MATRIXJ

Новичок
5
0
Помогите пожалуйста! У меня маленькая проблемка. Скрипт полностью работает, но есть одна проблема, созданный пикап не как не хочет исчезать, уже все перепробывал. Вот весь скрипт (В низу есть описания):

Код:
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP

:NONAME_1
0001: wait 0 ms
if
not Player.WantedLevel($PLAYER_CHAR) > 0
004D: jump_if_false @NONAME_1
00BF: 28@ = current_time_hours, 29@ = current_time_minutes
00D6: if or
0029:   28@ >= 23
001B:   0 > 28@
004D: jump_if_false @NONAME_1
00D6: if
00FF:   actor $PLAYER_ACTOR sphere 0 in_sphere -957.63 -987.8633 130.4428 radius 40.0 40.0 40.0 on_foot
004D: jump_if_false @NONAME_1
0247: load_model #NLO
023C: load_special_actor 'ALIEN' as 1 // models 290-299 
038B: load_requested_models
0002: jump @NONAME_2

:NONAME_2
0001: wait 0 ms
00D6: if
0248:   model #NLO available
023D:   special_actor 1 loaded -962.0784 -984.3268 130.4494
004D: jump_if_false @NONAME_2
00A5: 1@ = create_car #NLO at -961.9903 -984.1838 150.4428
0229: set_car 1@ primary_color_to 0 secondary_color_to 6
07FF: set_car 1@ hydraulics 1
01EC: make_car 1@ very_heavy 1
09C4: set_car 1@ gas_tank_explosion_enabled 0 
0175: set_car 1@ Z_angle_to 50.5387
0129: 2@ = create_actor_pedtype 4 model #SPECIAL01 in_car 1@ driverseat
0001: wait 100 ms
0519: set_car 1@ locked 1
02AC: set_car 1@ immunities BP 1 FP 1 EP 1 CP 1 MP 1 
06B1: 3@ = create_searchlight_at -962.1 -984.1838 152.4428 radius 0.8 target -962.1 -984.1838 130.4428 radius 20.0
0AAB:   file_exists "CLEO\SOUND\12.MP3"
0AAC: 11@ = load_audiostream "CLEO\SOUND\12.MP3"
0ABC: set_audiostream 11@ volume 0.8
0001: wait 100 ms
0AAD: set_audiostream 11@ perform_action 1
0AC0: loop_audiostream 11@ flag 1
0002: jump @NONAME_3

:NONAME_3
0001: wait 0 ms
00D6: if
00FF:   actor $PLAYER_ACTOR sphere 0 in_sphere -957.63 -987.8633 130.4428 radius 100.0 100.0 100.0 on_foot
004D: jump_if_false @NONAME_4
00D6: if
00FF:   actor $PLAYER_ACTOR sphere 0 in_sphere -957.63 -987.8633 130.4428 radius 10.0 10.0 10.0 on_foot
004D: jump_if_false @NONAME_3
0001: wait 2000 ms
009A: 4@ = create_actor_pedtype 4 model #SPECIAL01 at -961.2871 -985.462 130.4568
009A: 5@ = create_actor_pedtype 4 model #SPECIAL01 at -961.7728 -983.1941 130.4258
0173: set_actor 4@ Z_angle_to 73.5245
0173: set_actor 5@ Z_angle_to 108.9315
04D7: set_actor 4@ locked 0
04D7: set_actor 5@ locked 0
02AB: set_actor 4@ immunities BP 1 FP 1 EP 1 CP 1 MP 1
02AB: set_actor 5@ immunities BP 1 FP 1 EP 1 CP 1 MP 1
0001: wait 1000 ms
0002: jump @NONAME_5

:NONAME_4
0001: wait 0 ms
0296: unload_special_actor 1
0249: release_model #NLO
00A6: destroy_car 1@
009B: destroy_actor 2@
06B2: destroy_searchlight 3@
0AC0: loop_audiostream 11@ flag 0
0AAE: release_audiostream 11@
0002: jump @NONAME_1

:NONAME_5
0001: wait 0 ms
00D6: if or
0457: player $PLAYER_CHAR aiming_at_actor 4@
0457: player $PLAYER_CHAR aiming_at_actor 5@
004D: jump_if_false @NONAME_6
0002: jump @NONAME_11 

:NONAME_6
0001: wait 0 ms
00D6: if
00FF:   actor $PLAYER_ACTOR sphere 0 in_sphere -962.0784 -984.3268 130.4494 radius 100.0 100.0 100.0 on_foot
004D: jump_if_false @NONAME_11
00D6: if
00FF:   actor $PLAYER_ACTOR sphere 0 in_sphere -962.0784 -984.3268 130.4494 radius 5.0 5.0 5.0 on_foot
004D: jump_if_false @NONAME_3
0ACE: show_formatted_text_box "Press Enter!"
0002: jump @NONAME_7

:NONAME_7
0001: wait 0 ms
00D6: if
04ED: load_animation "BOMBER"
04ED: load_animation "MISC"
0247: load_model 2976
038B: load_requested_models
0002: jump @NONAME_8

:NONAME_8
0001: wait 0 ms
00D6: if or
0457: player $PLAYER_CHAR aiming_at_actor 4@
0457: player $PLAYER_CHAR aiming_at_actor 5@
004D: jump_if_false @NONAME_9
0002: jump @NONAME_12 
:NONAME_9
0001: wait 0 ms
00D6: if
00FF:   actor $PLAYER_ACTOR sphere 0 in_sphere -962.0784 -984.3268 130.4494 radius 100.0 100.0 100.0 on_foot
004D: jump_if_false @NONAME_12
00D6: if
00E1:   player 0 pressed_key 15
004D: jump_if_false @NONAME_8
if
04EE:   animation "BOMBER" loaded
04EE:   animation "MISC" loaded
0248:   model 2976 available
004D: jump_if_false @NONAME_9
0605: actor $PLAYER_ACTOR perform_animation_sequence "BOM_PLANT" IFP_file "BOMBER" 4.0 loop 1 1 1 0 time 4000 // versionA
0001: wait 4000 ms
0213: $GR = create_pickup 2976 type 9 at -962.0784 -984.3268 129.8      // Вот созданный пикап, какой должен исчезать!!!
0001: wait 100 ms
0AAB:   file_exists "CLEO\SOUND\10.WAV"
0AAC: 12@ = load_audiostream "CLEO\SOUND\10.WAV"
0ABC: set_audiostream 12@ volume 1.0
0001: wait 100 ms
0AAD: set_audiostream 12@ perform_action 1
0605: actor 4@ perform_animation_sequence "IDLE_CHAT_02" IFP_file "MISC" 4.0 loop 1 1 1 0 time 4000 // versionA
0001: wait 4000 ms
0605: actor 5@ perform_animation_sequence "IDLE_CHAT_02" IFP_file "MISC" 4.0 loop 1 1 1 0 time 4000 // versionA
0001: wait 4000 ms
0002: jump @NONAME_10

:NONAME_10
0001: wait 0 ms
00D6: if
09D1:   pickup $GR created  // Проверка на существование пикапа не срабатывает почему то.
004D: jump_if_false @NONAME_10
0215: destroy_pickup $GR  // Здесь пикап должен уничтожаться.
0002: jump @NONAME_13

:NONAME_11
0001: wait 0 ms
0321: kill_actor $PLAYER_ACTOR
0249: release_model #NLO
00A6: destroy_car 1@
009B: destroy_actor 2@
06B2: destroy_searchlight 3@
009B: destroy_actor 4@
009B: destroy_actor 5@ 
0296: unload_special_actor 1
0AC0: loop_audiostream 11@ flag 0
0AAE: release_audiostream 11@
0002: jump @NONAME_13

:NONAME_12
0001: wait 0 ms
0321: kill_actor $PLAYER_ACTOR
0249: release_model #NLO
00A6: destroy_car 1@
009B: destroy_actor 2@
06B2: destroy_searchlight 3@
009B: destroy_actor 4@
009B: destroy_actor 5@ 
0296: unload_special_actor 1
0AC0: loop_audiostream 11@ flag 0
0AAE: release_audiostream 11@
0249: release_model 2976
04EF: release_animation "BOMBER"
04EF: release_animation "MISC"

:NONAME_13
0ACE: show_formatted_text_box "BBBB!"
0A93: end_custom_thread

Скрипт работает так: Сиджей кладёт на землю пикап и через некоторое время он должен исчезнуть.
 
Последнее редактирование модератором:

OWSLA

Новичок
32
0
Как можно сделать паузу, чтобы, когда я попадал в те координаты, которые проверяю, то писался один раз текст, а не флудил.
Пробовал через break остановить бесконечный цикл, но не вышло, мигает все при спавне.
Код:
while true
wait 0

    if 00FE: actor $PLAYER_ACTOR sphere 0 in_sphere -48.00 1400.28 1084.43 radius 15.0 15.0 15.0
    then  
        0af8: "Test." 0xFFFFFF
        break
    end                                                      
end
 

cover

Известный
Проверенный
245
271
Как можно сделать паузу, чтобы, когда я попадал в те координаты, которые проверяю, то писался один раз текст, а не флудил.
Пробовал через break остановить бесконечный цикл, но не вышло, мигает все при спавне.
Код:
while true
wait 0

    if 00FE: actor $PLAYER_ACTOR sphere 0 in_sphere -48.00 1400.28 1084.43 radius 15.0 15.0 15.0
    then 
        0af8: "Test." 0xFFFFFF
        break
    end                                                     
end
Способов довольно много, держи способ с перезагрузкой. Ты заходишь на координаты 1 раз пишет текст, если ты повторно зайдешь на них не перезагрузив значения то ничего не будет, а если перезагрузил то так же 1 раз напишет, способ корявый(Первое в голову пришло)

Код:
{$CLEO .cs}
0000:

repeat
wait 300
until 0AFA:  is_samp_available

0B34: samp register_client_command "reload" to_label @reload

while true
wait 0
    if and
    0@ == 0 
    00FE: actor $PLAYER_ACTOR sphere 0 in_sphere -48.00 1400.28 1084.43 radius 15.0 15.0 15.0
    then  
    0af8: "Test." 0xFFFFFF
    0@ += 1
    end                                                      
end

:reload

0@ = 0
0B43: samp cmd_ret
 

cover

Известный
Проверенный
245
271
Пацаны, помогайте... Нужно считать ид с команды...
Код:
repeat
wait 0
until SAMP.Available()
0B34: samp register_client_command "comanda" to_label @comanda

repeat
wait 0
         if 0@ == 5  // Тут должен быть ид который прописан после команды...

until false

:comanda
Код:
{$CLEO .cs}
0000:

repeat
wait 300
until 0AFA:  is_samp_available

0B34: samp register_client_command "cmd" to_label @cmd_mycmd

while true
wait 0
    if 0@ == true
    then
    // you code
    0@ = false
    end
end

:cmd_mycmd

0@ = true
0B43: samp cmd_ret
 

Enjoy

Новичок
Проверенный
164
11
Эт я знаю... А как получить ид после команды?... На пример /car 524 ... Как мне в переменную записать число 524

Это чели?
Код:
0B35: samp 20@= get_last_command_params // Опкод получения того,что было введено после команды.
if0AD4:25@= scan_string 20@ format "%d %d"21@22@// Сканирование строки на числа,в кавычках введены индификаторы соответствующие типу числа
 

Enjoy

Новичок
Проверенный
164
11
Да... Только как теперь значение переменной 21@ вернуть в поток
В смысле в сам цикл-то? Так ты после метки сразу получи эти значения да, и потом в цикл переменную закинь, так типо не по пацански или че? В вики тож так делают и ниче.
 

cover

Известный
Проверенный
245
271
Можно отключить управление игроком, либо зациклить восстановление камеры
 

san0

Известный
Друг
411
268
Тогда не эмулируется нажатие калвиш. А мне для бота нужно ;c
просто используй в цикле данную фу-ку, координаты Z не нужны
0AB1: call_scm_func @set_angel 2 XY 0@ 1@
Код:
:set_angle
Actor.StorePos($PLAYER_ACTOR, 3@, 4@, 5@)
0063: 0@ -= 3@
0063: 1@ -= 4@
0604: get_Z_angle_for_point 0@ 1@ store_to 5@
Actor.Angle($PLAYER_ACTOR) = 5@
Camera.Restore_WithJumpCut()
0AB2: ret 0
 

Xample

Новичок
89
1
Парни помогите доделать скрипт бота
[HIDE=10]
Код:
{$CLEO}
0000:

wait 0
0B34: samp register_client_command "shahtaon" to_label @shahtaon
0B34: samp register_client_command "shahtaoff" to_label @shahtaoff
wait 5000
chatmsg "{FF0000}>{483D8B}=============================={FF0000}<" 6908265
chatmsg "{FF0000}>{483D8B}Бот шахтёр: {8470FF}Загружен{FF0000}<" 6908265
chatmsg "{FF0000}>{483D8B}Сервер: {8470FF}Diamond RP{FF0000}<" 6908265
chatmsg "{FF0000}>{483D8B}Автор: {8470FF}Shtebon{FF0000}<" 6908265
chatmsg "{FF0000}>{483D8B}{8470FF}/shahtaon /shahtaoff{FF0000}<" 6908265
chatmsg "{FF0000}>{483D8B}=============================={FF0000}<" 6908265
0DBA: 30@ = new_cleo_thread from_label @chatcheck


:testonoff             //проверка вкл или выкл бот
wait 0
if
  1@ == 1
else_jump @testonoff     //проверка вкл или выкл бот


:testchat
0BFD: 10@ = get_global_var "BOTSTATE"
if
10@ == 0
else_jump @testchat


:POINT1        //промежуточная координата
wait 0
if
  1@ == 1
jf @shahtaoff
0AB3: var 740 = 3
05D3: AS_actor $PLAYER_ACTOR goto_point 585.501 857.967 -43.0016 mode 6 time 5000 ms
if
00EC: actor $PLAYER_ACTOR 0 near_point 585.501 857.967 radius 3.0 3.0
else_jump @POINT1
jump @POINT2      //промежуточная координата


:POINT2            //координаты найденого пикапа
wait 0
if
  1@ == 1
jf @shahtaoff
Actor.StorePos($PLAYER_ACTOR, 3@, 4@, 5@)
0DB4: 6@ = nearset marker to position x 3@ y 4@ radius 100.0 //IF AND SET
wait 100
0DB3:  marker 6@ position to x 7@ y 8@ z 9@ //IF AND SET
0AB3: var 740 = 3
05D3: AS_actor $PLAYER_ACTOR goto_point 7@ 8@ 9@ mode 6 time 3000 ms // versionA
if
00EC: actor $PLAYER_ACTOR 0 near_point 7@ 8@ radius 3.0 3.0
else_jump @POINT2       //координаты найденого пикапа
wait 1500
jump @testonoff




:shahtaon  //вкл бота
1@ = 1
0ACC: show_text_lowpriority "BOT Shahta ~g~ON" time 1000
018C: play_sound 1052 at 0.0 0.0 0.0
SAMP.CmdRet


:shahtaoff  //выкл бота
1@ = 0
0ACC: show_text_lowpriority "BOT Shahta ~g~OFF" time 1000
0AB3: var 740 = 0
0687: clear_actor $PLAYER_ACTOR task
018C: play_sound 1052 at 0.0 0.0 0.0
SAMP.CmdRet

jump @testonoff





:chatcheck
0000:

0AC8: 0@ = allocate_memory_size 144
0AC8: 1@ = allocate_memory_size 32
while true
wait 0
0B75: samp get_chat_string 99 text_to 0@ prefix_to 1@ color_to 2@ prefix_color_to 0
// кол-во строк в чате - 100, начиная 0 => номер последней 99
if or
  // 2@ == 0xff5030ff // цвет, шестнадцатеричная система счисления, формат: AARRGGBB
  0C18: 0 = strstr string1 0@ string2 "тойте"
  0C18: 0 = strstr string1 0@ string2 "новитесь"
  0C18: 0 = strstr string1 0@ string2 "ут?"
then
  wait 2000
  0BFC: set_global_var "BOTSTATE" = 0

  wait 2000
  0AF9: samp say_msg "Что?"
  wait 2000
  0AF9: samp say_msg "что надо?"
  wait 10000
  0BFC: set_global_var "BOTSTATE" = 1
 
end
end
[/HIDE]


Дело в том что нужна проверка 0BFC: set_global_var "BOTSTATE" = 1 или как там 0BFD: 1@ = get_global_var BOTSTATE" нихотит чтото проверка работать, что не так?




незнаю как написать вырожение проверки глобальной переменной, 1 она или 0
 

Enjoy

Новичок
Проверенный
164
11
Я чето нихуя не понял, ты используешь переменную для проверки была ли прописана команда /shahtaon и в то же время эту же переменную записываешь в глобальную для проверки вкл бота?ЧО КАК? Это у тебя каша или я ебанутый?