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

Enjoy

Новичок
Проверенный
164
11
Нужен короче стронг хелп. Напутал что-то с циклом.
Что делает цикл в данный момент: при вводе команды проверят нахожусь ли я в тех координатах, если да то покупает и завершает свою работу.
Что нужно: при каждом появлении на заданных координатах срабатывает один раз команда, но не завершает свою работу. То есть в дальнейшем на появлении координат он должен так же один раз сработать. Я там чет короче с госабами нахерачил сам не понял.

Код:
{$CLEO .cs}       
 
Thread 'AutoGetDrugs'
 
if
    8AF7: get_samp_base_to 33@
then
    0A93: end_custom_thread
end
repeat
    wait 400
until 0AFA: is_samp_structures_available
 
0B34: samp register_client_command "gdrugs" to_label @nark
0B34: samp register_client_command "gdoff" to_label @off
 
while true
    wait 0
 
    if 1@ == 1
    then
    wait 400
        if 00EC: actor $PLAYER_ACTOR 0 near_point  318.59 1117.41 radius 25.0 25.0
        then
        call @2 3 322.95 1119.69 1083.88
        gosub @cmd
        end
        1@ = 0
end
end
 
:cmd
wait 0
0B35: samp 10@ = get_last_command_params
if 0AD4: 12@ = scan_string 10@ format "%d" 11@
then
0AF9: samp say_msg "/get drugs %d" 11@
end
return
 
:nark
wait 0
1@ = 1
0B35: samp 10@ = get_last_command_params
if 0AD4: 12@ = scan_string 10@ format "%d" 11@
then
    0AF8: samp add_message_to_chat "[Enjoy]: Âû àêòèâèðîâàëè àâòîïîêóïêó íàðêîòèêîâ.(%d ãð)" color 0x009900 11@ 
else
    0AF8: samp add_message_to_chat "[Enjoy]: Âû íåïðàâèëüíî ââåëè ÷èñëî, ïîïðîáóéòå åù¸ ðàç. (Îò 1 äî 150)" color 0x990000 
end 
Samp.CmdRet()
 
:off
wait 0
0AF8: samp add_message_to_chat "[Enjoy]: Âû îòêëþ÷èëè àâòîïîêóïêó íàðêîòèêîâ." color 0x990000
1@ = 0
Samp.CmdRet()
 
:2
0B2B: samp 3@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0B24: samp 3@ = get_player_struct_ptr 3@
000A: 3@ += 55
0AC8: 4@ = allocate_memory_size 68
0C10: memcpy destination 4@ source 3@ size 68
0C0D: struct 4@ offset 6 size 4 = 0@
0C0D: struct 4@ offset 10 size 4 = 1@
0C0D: struct 4@ offset 14 size 4 = 2@
0B3D: raknet 5@ = new_bit_stream
0B40: raknet bit_stream 5@ write 212 type 0 size 1
0B40: raknet bit_stream 5@ write 4@ type 5 size 68
0B8B: raknet send bit_stream 5@
0B3E: raknet delete_bit_stream 5@
0AC9: free_allocated_memory 4@
0AB2: ret 0
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,463
Код:
{$CLEO .cs}   
 
wait 0
 
repeat
    wait 400
until 0AFA: is_samp_structures_available
 
0B34: samp register_client_command "gdrugs" to_label @nark
 
while true
    wait 0
    if 0@ == 1
    then
        wait 400
        if 00EC: actor $PLAYER_ACTOR 0 near_point  318.59 1117.41 radius 25.0 25.0
        then
            call @SendOnFootData 3 XYZ 322.95 1119.69 1083.88
            gosub @cmd
            0@ = 0
        end
    end
end
 
:cmd
0AF9: samp say_msg "/get drugs %d" 1@
return
 
:nark
if 0@ == 0
then
    0B35: samp 0@ = get_last_command_params
    if 0AD4: 2@ = scan_string 0@ format "%d" 1@
    then
        0AF8: samp add_message_to_chat "[Enjoy]: Когда будете на тере, пропишется команда /get drugs %d" color 0x009900 1@
        0@ = 1
    else 0AF8: samp add_message_to_chat "[Enjoy]: Бла бла №2" color 0x990000
    end
else
    0AF8: samp add_message_to_chat "[Enjoy]: Атключена" color 0x990000
    0@ = 0
end
Samp.CmdRet()
 
:SendOnFootData
0B2B: samp 3@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0B24: samp 3@ = get_player_struct_ptr 3@
000A: 3@ += 55
0AC8: 4@ = allocate_memory_size 68
0C10: memcpy destination 4@ source 3@ size 68
0C0D: struct 4@ offset 6 size 4 = 0@
0C0D: struct 4@ offset 10 size 4 = 1@
0C0D: struct 4@ offset 14 size 4 = 2@
0B3D: raknet 5@ = new_bit_stream
0B40: raknet bit_stream 5@ write 212 type 0 size 1
0B40: raknet bit_stream 5@ write 4@ type 5 size 68
0B8B: raknet send bit_stream 5@
0B3E: raknet delete_bit_stream 5@
0AC9: free_allocated_memory 4@
0AB2: ret 0
 

Enjoy

Новичок
Проверенный
164
11
Чет не заехало, я обратно забегаю когда в инт (на те самые координаты), то не срабатывает покупка.
Там че типо нужно поменять, когда покидаешь коорды, то все равно включить скрипт?
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,463
Чет не заехало, я обратно забегаю когда в инт (на те самые координаты), то не срабатывает покупка.
Там че типо нужно поменять, когда покидаешь коорды, то все равно включить скрипт?
Код:
call @SendOnFootData 3 XYZ 322.95 1119.69 1083.88
gosub @cmd
0@ = 0

на

Код:
call @SendOnFootData 3 XYZ 322.95 1119.69 1083.88
gosub @cmd
   
while 00EC: actor $PLAYER_ACTOR 0 near_point  318.59 1117.41 radius 25.0 25.0
    wait 0
    if 0@ == 0
    then break
    end
end
 
  • Нравится
Реакции: Alex21rus

fiendshadow

3LFhocV726q7pKWWky2vv3W38Dm9sGJV86
Проверенный
455
122
Чет не заехало, я обратно забегаю когда в инт (на те самые координаты), то не срабатывает покупка.
Там че типо нужно поменять, когда покидаешь коорды, то все равно включить скрипт?

да нихуя работать не будет,хули ты мучаешься ( с моим исходником :D )
 

DoneUp

Новичок
28
0
PHP:
{$CLEO}thread "DoneUp" // Не обязательно
if not 0@ = SAMP.Base()
then 0A93: end_custom_thread
end
while not SAMP.Available()
wait 100
end
:DoneUp
wait 0
if
0AE1: $actor = random_actor_near_point 0@ 1@ 2@ in_radius 5.0 find_next 1 pass_deads 1 // ищем случайного игрока
jf @DoneUp
0B2B: samp 20@ = get_player_id_by_actor_handle $actor // получаем id игрока
0AF9: samp say_msg "/frisk %s" 20@ //Текст имеет идентификатор %s (string)- строка символов.
samp.CmdRet()

goto @DoneUp
В чем ошибка? Бегаю вокруг игроков даже в притык подхожу, всеравно не вводит команду /frisk
 

SR_team

like pancake
BH Team
4,722
6,382
PHP:
{$CLEO}thread "DoneUp" // Не обязательно
if not 0@ = SAMP.Base()
then 0A93: end_custom_thread
end
while not SAMP.Available()
wait 100
end
:DoneUp
wait 0
if
0AE1: $actor = random_actor_near_point 0@ 1@ 2@ in_radius 5.0 find_next 1 pass_deads 1 // ищем случайного игрока
jf @DoneUp
0B2B: samp 20@ = get_player_id_by_actor_handle $actor // получаем id игрока
0AF9: samp say_msg "/frisk %s" 20@ //Текст имеет идентификатор %s (string)- строка символов.
samp.CmdRet()

goto @DoneUp
В чем ошибка? Бегаю вокруг игроков даже в притык подхожу, всеравно не вводит команду /frisk

Опкод 0AE1: не работает. В конце должно быть не samp.CmdRet(), а джамп в начало цикла. Вообще лучше пиши на высокоуровневом коде
 

Enjoy

Новичок
Проверенный
164
11
Как проверить переменную на наличие в ней %d/%c, если это возможно.


* изменил пост, сначала не так сформулировал.
 

Enjoy

Новичок
Проверенный
164
11
Карочи зырьте, недавно начал пробывать с иником что-то, ну вот не получается.
Пишет какие-то иероглифы вместо заданных слов в инике + сам ini не создается клео скриптом, хотя в уроке говорится об обратном.
Мб он старый слишком((

Код:
{$CLEO .cs}
 
0000:
Thread 'DOKLAD'
 
repeat
wait 400
SAMP.Available()
until 0AFA: is_samp_structures_available
 
0B34: samp register_client_command "rept" to_label @cmd
 
while true
wait 0
 
    if 0@ == 1
    then
    wait 400
    gosub @ini
    0AF9: samp say_msg " [%s]: Äîêëàäûâàåò %s Äèñïåò÷åð %d-%d %c" 3@ 4@ 5@ 6@ 7@
    end
    0@ = 0
end
 
:cmd
0B35: samp 1@ = get_last_command_params
if 0AD4: 2@ = scan_string 1@ format "%d %d %c" 5@ 6@ 7@
then
    0@ = 1
else
    0AF8: samp add_message_to_chat "Íåïðàâèëüíî ââåë ÷èñëî." color 0xCC0000
    0@ = 0
end
SAMP.CmdRet()
 
 
:ini
alloc 3@ 128
alloc 4@ 128
if 0AAB: file_exists "CLEO\INI\rept.ini"
then
    0AF4: 3@ = read_string_from_ini_file "CLEO\INI\rept.ini" section "ini" key "Tag"
    0AF4: 4@ = read_string_from_ini_file "CLEO\INI\rept.ini" section "ini" key "Name"
else
    0AF5: write_string "test" to_ini_file "CLEO\INI\rept.ini" section "ini" key "Tag"
    0AF5: write_string "test1" to_ini_file "CLEO\INI\rept.ini" section "ini" key "Name"
    0AF4: 3@ = read_string_from_ini_file "CLEO\INI\rept.ini" section "ini" key "Tag"
    0AF4: 4@ = read_string_from_ini_file "CLEO\INI\rept.ini" section "ini" key "Name"
end
0ac9: 3@
0ac9: 4@
return
 

hnnssy

Известный
Друг
2,684
2,753
Карочи зырьте, недавно начал пробывать с иником что-то, ну вот не получается.
Пишет какие-то иероглифы вместо заданных слов в инике + сам ini не создается клео скриптом, хотя в уроке говорится об обратном.
Мб он старый слишком((

Код:
{$CLEO .cs}
 
0000:
Thread 'DOKLAD'
 
repeat
wait 400
SAMP.Available()
until 0AFA: is_samp_structures_available
 
0B34: samp register_client_command "rept" to_label @cmd
 
while true
wait 0
 
    if 0@ == 1
    then
    wait 400
    gosub @ini
    0AF9: samp say_msg " [%s]: Äîêëàäûâàåò %s Äèñïåò÷åð %d-%d %c" 3@ 4@ 5@ 6@ 7@
    end
    0@ = 0
end
 
:cmd
0B35: samp 1@ = get_last_command_params
if 0AD4: 2@ = scan_string 1@ format "%d %d %c" 5@ 6@ 7@
then
    0@ = 1
else
    0AF8: samp add_message_to_chat "Íåïðàâèëüíî ââåë ÷èñëî." color 0xCC0000
    0@ = 0
end
SAMP.CmdRet()
 
 
:ini
alloc 3@ 128
alloc 4@ 128
if 0AAB: file_exists "CLEO\INI\rept.ini"
then
    0AF4: 3@ = read_string_from_ini_file "CLEO\INI\rept.ini" section "ini" key "Tag"
    0AF4: 4@ = read_string_from_ini_file "CLEO\INI\rept.ini" section "ini" key "Name"
else
    0AF5: write_string "test" to_ini_file "CLEO\INI\rept.ini" section "ini" key "Tag"
    0AF5: write_string "test1" to_ini_file "CLEO\INI\rept.ini" section "ini" key "Name"
    0AF4: 3@ = read_string_from_ini_file "CLEO\INI\rept.ini" section "ini" key "Tag"
    0AF4: 4@ = read_string_from_ini_file "CLEO\INI\rept.ini" section "ini" key "Name"
end
0ac9: 3@
0ac9: 4@
return
Ты сначала выполняй действие со стрингами, которые считал с иника, и только после этого очищай память.