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

k1sher

Известный
201
4
Как добавить второе значения для хука (например)?
0C18: 8@ = strstr string1 5@ string2 "Привет..." первое слова для хука, нужно еще добавить. как?


Код:
:cmsg
0BE5: raknet 6@ = get_hook_param PARAM_BITSTREAM
0BE5: raknet 7@ = get_hook_param PARAM_PACKETID
if
7@ == RPC_ScrClientMessage
then
    0BE7: raknet 9@ = bit_stream_read 6@ type BS_TYPE_INT
    0BE7: raknet 10@ = bit_stream_read 6@ type BS_TYPE_INT
    0C11: memset destination 5@ value 0 size 256
    0BE8: raknet bit_stream 6@ read_array 5@ size 10@
    0C0F: array 5@ element 10@ = 0x00
    if
    0C18: 8@ = strstr string1 5@ string2 "Êòî-òî óæå äàâàë ðåêëàìó, æäè..."
    then
        0C76: reset_timer 0@
        0C78: set_timer 0@ active false
    end                                                  
end
0BE0: raknet hook_ret true
 

k1sher

Известный
201
4
У "o" - 0B35: samp 2@ = get_last_command_params
У "ad" - 0B35: samp 3@ = get_last_command_params
И почему же тогда у меня включается таймер? Если вродь все стоит.
Код:
:adrek
0B35: samp 3@ = get_last_command_params
if
0C79:    is_timer 0@ active
then
    0C7C: 4@ = get_timer 0@ time_left
    4@ /= 1000
    chatmsg "ыфыв (%d сек.)." 0xbfbfbf 4@
else
    say "/ad %s" 3@
    0C76: reset_timer 0@
    0C78: set_timer 0@ active true
end
cmdret
 

BlackKnigga

Известный
BH Team
922
445
И почему же тогда у меня включается таймер? Если вродь все стоит.
Код:
:adrek
0B35: samp 3@ = get_last_command_params
if
0C79:    is_timer 0@ active
then
    0C7C: 4@ = get_timer 0@ time_left
    4@ /= 1000
    chatmsg "ыфыв (%d сек.)." 0xbfbfbf 4@
else
    say "/ad %s" 3@
    0C76: reset_timer 0@
    0C78: set_timer 0@ active true
end
cmdret
Так условие ставь на то что в 3@ пусто. Я же тебе делал с /o так. Как там сделано так и тут делай

Как добавить второе значения для хука (например)?
0C18: 8@ = strstr string1 5@ string2 "Привет..." первое слова для хука, нужно еще добавить. как?
if or
 
Последнее редактирование модератором:

k1sher

Известный
201
4
Так условие ставь на то что в 3@ пусто. Я же тебе делал с /o так. Как там сделано так и тут делай
Код:
:msg
0B35: samp 2@ = get_last_command_params
if
8C14: not strcmp string1 2@ string2 ""
then
if
0C79:    is_timer 0@ active
then
    0C7C: 1@ = get_timer 0@ time_left
    1@ /= 1000
    chatmsg "Анти-флуд (%d сек.)." 0xbfbfbf 1@
else
    say "/o %s" 2@
    0C76: reset_timer 0@
    0C78: set_timer 0@ active true
end
cmdret

:timer
chatmsg "{ff0000}[Откат OOC] {ebebeb}ыыы." color -1
0C78: set_timer 0@ active false
else
    say "/o" 
end 
cmdret

:adrek
0B35: samp 3@ = get_last_command_params
if
8C14: not strcmp string1 3@ string2 ""
then
if
0C79:    is_timer 0@ active
then
    0C7C: 4@ = get_timer 0@ time_left
    4@ /= 1000
    chatmsg "ыфыв (%d сек.)." 0xbfbfbf 4@
else
    say "/ad %s" 3@
    0C76: reset_timer 0@
    0C78: set_timer 0@ active true
end
cmdret
Если ты имел введу так сделать. То компилировать не хочет, что то про end говорит.
 

BlackKnigga

Известный
BH Team
922
445
Код:
:msg
0B35: samp 2@ = get_last_command_params
if
8C14: not strcmp string1 2@ string2 ""
then
if
0C79:    is_timer 0@ active
then
    0C7C: 1@ = get_timer 0@ time_left
    1@ /= 1000
    chatmsg "Анти-флуд (%d сек.)." 0xbfbfbf 1@
else
    say "/o %s" 2@
    0C76: reset_timer 0@
    0C78: set_timer 0@ active true
end
cmdret

:timer
chatmsg "{ff0000}[Откат OOC] {ebebeb}ыыы." color -1
0C78: set_timer 0@ active false
else
    say "/o"
end
cmdret

:adrek
0B35: samp 3@ = get_last_command_params
if
8C14: not strcmp string1 3@ string2 ""
then
if
0C79:    is_timer 0@ active
then
    0C7C: 4@ = get_timer 0@ time_left
    4@ /= 1000
    chatmsg "ыфыв (%d сек.)." 0xbfbfbf 4@
else
    say "/ad %s" 3@
    0C76: reset_timer 0@
    0C78: set_timer 0@ active true
end
cmdret
Если ты имел введу так сделать. То компилировать не хочет, что то про end говорит.
Перед цмдрет еще енд поставь
 

k1sher

Известный
201
4
Перед цмдрет еще енд поставь
А вот еще один вопросик смотри. Нулевость команд сделали и когда я пишу /o то он мне пишет как и должно быть без этого клео. А когда я пишу /ad то вообще ничего не происходит. Как сделать чтоб он понял что я /ad пишу и сервер мне нормально ответил, пример (Использование: /ad [текст рекламы].)

Код:
:msg
0B35: samp 2@ = get_last_command_params
if
8C14: not strcmp string1 2@ string2 ""
then
if
0C79:    is_timer 0@ active 
then
    0C7C: 1@ = get_timer 0@ time_left
    1@ /= 1000
    chatmsg "Анти-флуд (%d сек.)." 0xbfbfbf 1@
else
    say "/o %s" 2@ 
    0C76: reset_timer 0@
    0C78: set_timer 0@ active true
end
cmdret

:timer
chatmsg "{ff0000}[Отка] {ebebeb}qwrrtt" color -1
0C78: set_timer 0@ active false
else
    say "/o"  
end
cmdret

:adrek
0B35: samp 3@ = get_last_command_params
if
8C14: not strcmp string1 3@ string2 ""
then
if
0C79:    is_timer 0@ active 
then
    0C7C: 4@ = get_timer 0@ time_left
    4@ /= 1000
    chatmsg "qwr (%d сек.)." 0xbfbfbf 4@
else
    say "/ad %s" 3@ 
    0C76: reset_timer 0@
    0C78: set_timer 0@ active true
end
end
cmdret
 

BlackKnigga

Известный
BH Team
922
445
А вот еще один вопросик смотри. Нулевость команд сделали и когда я пишу /o то он мне пишет как и должно быть без этого клео. А когда я пишу /ad то вообще ничего не происходит. Как сделать чтоб он понял что я /ad пишу и сервер мне нормально ответил, пример (Использование: /ad [текст рекламы].)

Код:
:msg
0B35: samp 2@ = get_last_command_params
if
8C14: not strcmp string1 2@ string2 ""
then
if
0C79:    is_timer 0@ active
then
    0C7C: 1@ = get_timer 0@ time_left
    1@ /= 1000
    chatmsg "Анти-флуд (%d сек.)." 0xbfbfbf 1@
else
    say "/o %s" 2@
    0C76: reset_timer 0@
    0C78: set_timer 0@ active true
end
cmdret

:timer
chatmsg "{ff0000}[Отка] {ebebeb}qwrrtt" color -1
0C78: set_timer 0@ active false
else
    say "/o" 
end
cmdret

:adrek
0B35: samp 3@ = get_last_command_params
if
8C14: not strcmp string1 3@ string2 ""
then
if
0C79:    is_timer 0@ active
then
    0C7C: 4@ = get_timer 0@ time_left
    4@ /= 1000
    chatmsg "qwr (%d сек.)." 0xbfbfbf 4@
else
    say "/ad %s" 3@
    0C76: reset_timer 0@
    0C78: set_timer 0@ active true
end
end
cmdret
Перед последним end в самом низу вставь
CLEO:
else
    say "/ad"
 

k1sher

Известный
201
4
Перед последним end в самом низу вставь
CLEO:
else
    say "/ad"
Так?
Код:
:adrek
0B35: samp 3@ = get_last_command_params
if
8C14: not strcmp string1 3@ string2 ""
then
if
0C79:    is_timer 0@ active 
then
    0C7C: 4@ = get_timer 0@ time_left
    4@ /= 1000
    chatmsg "ттатат(%d сек.)." 0xbfbfbf 4@
else
    say "/ad %s" 3@ 
    0C76: reset_timer 0@
    0C78: set_timer 0@ active true
end
else
    say "/ad"
end
cmdret
Игра начала зависать постоянно, спасает завершение процесса. В чем может быть дело?

Перед последним end в самом низу вставь
CLEO:
else
    say "/ad"
Хмм... Помогло от вылетов только когда я удалил вот эту проверку на нулевость и сделал вот так вот.

Код:
:adrek
0B35: samp 3@ = get_last_command_params
if
0C79:    is_timer 0@ active 
then
    0C7C: 4@ = get_timer 0@ time_left
    4@ /= 1000
    chatmsg "Ñìîæåøü ñíîâà ïîäàòü ðåêëàìó ÷åðåç (%d ñåê.)." 0xbfbfbf 4@
else
    say "/ad %s" 3@ 
    0C76: reset_timer 0@
    0C78: set_timer 0@ active true
end
cmdret
Ну а это конечно не дело. :(
 
Последнее редактирование модератором:

azdsfbzxv

Новичок
73
6
Необходима помощь в создании скрипта. Суть: Скрипт должен писать заданное слово над головой игрока. Проблема в том что id нужного игрока часто разный. Необходимо найти игрока. Узнать его id и вписать в опкод ниже его id. Далее выведется слово над его головой. С авто получается, так как id нужных авто постоянный. А вот id игрока меняются.
CLEO:
{$CLEO .cs}

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

:Noname_2
0001: wait 2500 ms
00D6: if
0AFA:  is_samp_available
004D: jump_if_false @Noname_2

:Noname_10
//Часть кода. Которая будет искать заданного игрока игрока "Nike_Name" и определять его id. И записываться в переменную 9@

:Noname_20
0001: wait 0 ms
0B44: samp 1@ = create_3d_text "Слово" color -1 position 0.0 0.0 2.0 view_distance 20.0 show_behind_walls 0 attached_to_player 9@ attached_to_vehicle -1
0001: wait 20000 ms
0002: jump @Noname_10

Большое спасибо за урок iTz_XG4M3R. Урок 3D текст опкоды.
 
Последнее редактирование:

hnnssy

Известный
Друг
2,684
2,750
Необходима помощь в создании скрипта. Суть: Скрипт должен писать заданное слово над головой игрока. Проблема в том что id нужного игрока часто разный. Необходимо найти игрока. Узнать его id и вписать в опкод ниже его id. Далее выведется слово над его головой. С авто получается, так как id нужных авто постоянный. А вот id игрока меняются.
CLEO:
{$CLEO .cs}

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

:Noname_2
0001: wait 2500 ms
00D6: if
0AFA:  is_samp_available
004D: jump_if_false @Noname_2

:Noname_10
//Часть кода. Которая будет искать заданного игрока игрока "Nike_Name" и определять его id. И записываться в переменную 9@

:Noname_20
0001: wait 0 ms
0B44: samp 1@ = create_3d_text "Слово" color -1 position 0.0 0.0 2.0 view_distance 20.0 show_behind_walls 0 attached_to_player 9@ attached_to_vehicle -1
0001: wait 20000 ms
0002: jump @Noname_10

Большое спасибо за урок iTz_XG4M3R. Урок 3D текст опкоды.
CLEO:
for 9@ = 0 to 999
  if 0B23: samp is_player_connected 9@
  then   
  10@ = SAMP.GetPlayerNickname(9@)   
  if 0C21: stricmp string1 10@ string2 "Nick_Name"
  then   
  break
  end   
  end
end
 

BlackKnigga

Известный
BH Team
922
445
Так?
Код:
:adrek
0B35: samp 3@ = get_last_command_params
if
8C14: not strcmp string1 3@ string2 ""
then
if
0C79:    is_timer 0@ active
then
    0C7C: 4@ = get_timer 0@ time_left
    4@ /= 1000
    chatmsg "ттатат(%d сек.)." 0xbfbfbf 4@
else
    say "/ad %s" 3@
    0C76: reset_timer 0@
    0C78: set_timer 0@ active true
end
else
    say "/ad"
end
cmdret
Игра начала зависать постоянно, спасает завершение процесса. В чем может быть дело?


Хмм... Помогло от вылетов только когда я удалил вот эту проверку на нулевость и сделал вот так вот.

Код:
:adrek
0B35: samp 3@ = get_last_command_params
if
0C79:    is_timer 0@ active
then
    0C7C: 4@ = get_timer 0@ time_left
    4@ /= 1000
    chatmsg "Ñìîæåøü ñíîâà ïîäàòü ðåêëàìó ÷åðåç (%d ñåê.)." 0xbfbfbf 4@
else
    say "/ad %s" 3@
    0C76: reset_timer 0@
    0C78: set_timer 0@ active true
end
cmdret
Ну а это конечно не дело. :(
Весь код полностью скинь. Где-то в другом месте косяк.
 

azdsfbzxv

Новичок
73
6
CLEO:
for 9@ = 0 to 999
  if 0B23: samp is_player_connected 9@
  then
  10@ = SAMP.GetPlayerNickname(9@)
  if 0C21: stricmp string1 10@ string2 "Nick_Name"
  then
  break
  end
  end
end
Почему то не показывает ничего. Подставил ник нужный. Он подбежал и ничего не показало
CLEO:
{$CLEO .cs}

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

:Noname_2
0001: wait 2500 ms
00D6: if
0AFA:  is_samp_available
004D: jump_if_false @Noname_2

:Noname_20
0001: wait 0 ms
0006: 9@ = 0
00D6: if
0B23:  samp is_player_connected 9@
004D: jump_if_false @Noname_93
0B36: samp 10@ = get_player_nickname 9@
00D6: if
0C21: stricmp string1 10@ string2 "Nike_Name"
004D: jump_if_false @Noname_93
0002: jump @Noname_115

:Noname_93
000A: 9@ += 1
0019:   9@ > 999
004D: jump_if_false @Noname_20

:Noname_115
0001: wait 0 ms
0B44: samp 1@ = create_3d_text "Слово" color -1 position 0.0 0.0 2.0 view_distance 20.0 show_behind_walls 0 attached_to_player 9@ attached_to_vehicle -1
0001: wait 1000 ms
0002: jump @Noname_20
 
Последнее редактирование:

hnnssy

Известный
Друг
2,684
2,750
Почему то не показывает ничего. Подставил ник нужный. Он подбежал и ничего не показало
CLEO:
{$CLEO .cs}

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

:Noname_2
0001: wait 2500 ms
00D6: if
0AFA:  is_samp_available
004D: jump_if_false @Noname_2

:Noname_20
0001: wait 0 ms
0006: 9@ = 0
00D6: if
0B23:  samp is_player_connected 9@
004D: jump_if_false @Noname_93
0B36: samp 10@ = get_player_nickname 9@
00D6: if
0C21: stricmp string1 10@ string2 "Nike_Name"
004D: jump_if_false @Noname_93
0002: jump @Noname_115

:Noname_93
000A: 9@ += 1
0019:   9@ > 999
004D: jump_if_false @Noname_20

:Noname_115
0001: wait 0 ms
0B44: samp 1@ = create_3d_text "Слово" color -1 position 0.0 0.0 2.0 view_distance 20.0 show_behind_walls 0 attached_to_player 9@ attached_to_vehicle -1
0001: wait 1000 ms
0002: jump @Noname_20
а чё, обязательно что ли работать с декомпилом? бесите уже
у тебя в коде постоянно ид на 0 сбрасывается
 

#Serko

Новичок
3
0
Не работает функция,по коду всё работает кроме опкода 0AF9 тобишь не отправляется сообщение в самп.
Код:
{$CLEO}
0000:
wait 2000
chatmsg "[TP for mats]:{FFFFFF} TP for mats load. Àâòîð: {FFCC33}[CM]T4WERKA" 16763955

:telep
wait 0
if
0ADC:   test_cheat "gtpmats"
jf @telep
0ACC: show_text_lowpriority "Teleporting..." time 3000
00A1: set_char_coordinates $PLAYER_ACTOR to 2515.9709 -1722.6837 18.5821
wait 1000
0AF9: samp say_msg "/give guns 500"
00A1: set_char_coordinates $PLAYER_ACTOR to 2521.5928 -1686.6742 13.5695
jump @telep
 

azdsfbzxv

Новичок
73
6
Не работает функция,по коду всё работает кроме опкода 0AF9 тобишь не отправляется сообщение в самп.
Код:
{$CLEO}
0000:
wait 2000
chatmsg "[TP for mats]:{FFFFFF} TP for mats load. Àâòîð: {FFCC33}[CM]T4WERKA" 16763955

:telep
wait 0
if
0ADC:   test_cheat "gtpmats"
jf @telep
0ACC: show_text_lowpriority "Teleporting..." time 3000
00A1: set_char_coordinates $PLAYER_ACTOR to 2515.9709 -1722.6837 18.5821
wait 1000
0AF9: samp say_msg "/give guns 500"
00A1: set_char_coordinates $PLAYER_ACTOR to 2521.5928 -1686.6742 13.5695
jump @telep
Попробуй задержку поставь перед командой 2000. И после команды 2000. Может не успевает взять