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

san0

Известный
Друг
411
268
Ну а как записать размер?
Что не нужно перезаписывать, но пропустить
0BEA: raknet bit_stream 0@ reset_write_pointer
0BEB: raknet bit_stream 0@ ignore_bits 1@
0BEC: raknet bit_stream 0@ set_write_offset 1@
Напоминание: тут биты, а не байты.
Ну а чтоб записать правильно, то все параметры по очереди записывать в битстрим -> длину строки (BS_TYPE_BYTE), и саму строку (BS_TYPE_ARRAY)
 
Последнее редактирование:
  • Нравится
Реакции: Lightkiller и Perojek)0

BlackKnigga

Известный
BH Team
922
446
Как вывести название оружие про его иду?

Описание: Получение названия оружия с ида его.
Использование: 0AB1 call @get_weapon_name_by_id 1 id 0@ to 1@
Код:
:get_weapon_name_by_id
{
Params:
In: 0@ - WeaponID
Out: 1@ - weaponName

Example: call @get_weapon_name_by_id 1 id 0@ to 1@
}
0AC6: 1@ = label @weapons offset
0@ *= 19
005A: 1@ += 0@ // (int)
ret 1 1@

:weapons
hex
"Duke" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 0 }
"Brass Knuckles" 00 00 00 00 00 { 1 }
"Golf Club" 00 00 00 00 00 00 00 00 00 00 { 2 }
"Nite Stick" 00 00 00 00 00 00 00 00 00 { 3 }
"Knife" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 4 }
"Baseball" 00 00 00 00 00 00 00 00 00 00 00 { 5 }
"Shovel" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 6 }
"Pool Cue" 00 00 00 00 00 00 00 00 00 00 00 { 7 }
"Katana" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 8 }
"Chainsaw" 00 00 00 00 00 00 00 00 00 00 00 { 9 }
"Dildo" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 10 }
"Dildo" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 11 }
"Dildo" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 12 }
"Dildo" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 13 }
"Flowers" 00 00 00 00 00 00 00 00 00 00 00 00 { 14 }
"Cane" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 15 }
"Grenade" 00 00 00 00 00 00 00 00 00 00 00 00 { 16 }
"Tear Gas" 00 00 00 00 00 00 00 00 00 00 00 { 17 }
"Molotov" 00 00 00 00 00 00 00 00 00 00 00 00 { 18 }
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 19 }
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 20 }
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 21 }
"Pistol" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 22 }
"Silencer" 00 00 00 00 00 00 00 00 00 00 00 { 23 }
"Deagle" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 24 }
"Shotgun" 00 00 00 00 00 00 00 00 00 00 00 00 { 25 }
"SawnOff" 00 00 00 00 00 00 00 00 00 00 00 00 { 26 }
"Spas12" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 27 }
"Tec9" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 28 }
"MP5" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 29 }
"AK47" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 30 }
"M4" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 31 }
"Mac10" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 32 }
"Rifle" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 33 }
"Sniper" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 34 }
"Rocket Launcher" 00 00 00 00 { 35 }
"HS Rocket Launcher" 00 { 36 }
"Flamethrower" 00 00 00 00 00 00 00 { 37 }
"Minigun" 00 00 00 00 00 00 00 00 00 00 00 00 { 38 }
"C4" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 39 }
"Detonator" 00 00 00 00 00 00 00 00 00 00 { 40 }
"Spray" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 { 41 }
"Fire Extinguisher" 00 00 { 42 }
"Camera" 00 00 00 00 00 00 00 00 00 00 00 00 00 { 43 }
"Nightvision" 00 00 00 00 00 00 00 00 { 44 }
"Infrared Vision" 00 00 00 00 { 45 }
"Parachute" 00 00 00 00 00 00 00 00 00 00 { 46 }
end
Пример:
Код:
0470: 0@ = actor $PLAYER_ACTOR current_weapon
call @get_weapon_name_by_id 1 id 0@ to 1@
0AA8: call_function_method 0x6A0050 0xC1B340 num_params 1 pop 0 'CRED400' 2@
0AA5: call 0x718600 2 pop 2 2@ 1@
033E: set_draw_text_position 360.0 240.0 GXT 'CRED400'
 
  • Нравится
Реакции: Сэнд

zalupka05

Новичок
5
0
Открываю скрипт нажимаю просто компилировать его не изменяя скрипт, и скрипт перестает работать кто может помочь?
 

k1sher

Известный
201
4
Помогите пожалуйста.

Код:
{$CLEO .cs}
{$INCLUDE SF}
0000:
  
repeat
wait 400
until 0AFA: is_samp_structures_available

alloc 5@ 256
0C11: memset destination 5@ value 0 size 256

chatmsg "{ff0000}[Откат OOC] {ebebeb}тудум." 0xffffff
0B34: samp register_client_command "o" @msg
0B34: samp register_client_command "ad" @adrek
0C74: 0@ = create_timer_interval 300000 on_label @timer
0C78: set_timer 0@ active false
0BE3: raknet setup_incoming_rpc_hook @cmsg

while true
    wait 0
end

: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
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

: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 3@ = 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
Вылетает при вводе команды /ad "text". Если писать просто /ad например, то все нормально. /ad "text" до сервера доходит, но меня выкидывает из игры. Может кто помочь? Где ошибка в коде?
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
0C0F: array 5@ element 3@ = 0
Попытка перезаписать несуществующий элемент массива
 

Garrus

Известный
159
20
По глобальным переменным СФ, помимо ограничения по размеру, больше никаких ограничений нет?
 

k1sher

Известный
201
4
0C0F: array 5@ element 3@ = 0
Попытка перезаписать несуществующий элемент массива
А вот не подскажешь еще? 0C0F я исправил, все хорошо. Как видишь в коде срабатывает таймер при вообще команды /o "text", сделал чтоб таймер не срабатывал при вводе /o без текста. Тоже самое пытаюсь сделать с /ad командой, но что-то не получается. Я так понял
Код:
if
8C14: not strcmp string1 2@ string2 ""
then
этот код отвечает за проверку на нулевость?

Код:
{$CLEO .cs}
{$INCLUDE SF}
0000:
 
repeat
wait 400
until 0AFA: is_samp_structures_available

alloc 5@ 256
0C11: memset destination 5@ value 0 size 256

chatmsg "{ff0000}[Откат OOC] {ebebeb}тудум." 0xffffff
0B34: samp register_client_command "o" @msg
0B34: samp register_client_command "ad" @adrek
0C74: 0@ = create_timer_interval 300000 on_label @timer
0C78: set_timer 0@ active false
0BE3: raknet setup_incoming_rpc_hook @cmsg

while true
    wait 0
end

: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
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

: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
 

#Serko

Новичок
3
0
Подскажите пожалуйста,при компилировании пишет Недостаточно параметров. Ожидалось 2 параметров.
Код:
{$CLEO}
0000:
chatmsg "[TP for mats]:{FFFFFF} TP for mats load. Àâòîð: {FFCC33}[CM]T4WERKA" 16763955


:1
if
0B34: samp register_client_command "tpg" to_label
then
0ACC: show_text_lowpriority "Teleporting..." time 3000
00A1: set_char_coordinates $PLAYER_ACTOR to 2515.9709 -1722.6837 18.5821
0AF9: samp say_msg "/give guns 500"
wait 2000
00A1: set_char_coordinates $PLAYER_ACTOR to 2521.5928 -1686.6742 13.5695
jump @1
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
А вот не подскажешь еще? 0C0F я исправил, все хорошо. Как видишь в коде срабатывает таймер при вообще команды /o "text", сделал чтоб таймер не срабатывал при вводе /o без текста. Тоже самое пытаюсь сделать с /ad командой, но что-то не получается. Я так понял
У "o" - 0B35: samp 2@ = get_last_command_params
У "ad" - 0B35: samp 3@ = get_last_command_params