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

Skelerll

Известный
154
8
Зависает гташка через некоторое время наметво, после чего "прекрашена работа программы". Что не так?
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

REPEAT
wait 0
UNTIL 0AFA:  is_samp_available

0BE3: raknet setup_incoming_rpc_hook @hook
alloc 4@ 512

WHILE TRUE
wait 0     
            IF AND                                           
            0C18: 0 = strstr string1 4@ string2 "1"         
            THEN                                               
                say "1"
            END     
END

:hook
0BE5: raknet 0@ = get_hook_param {PARAM_BITSTREAM}0
0BE5: raknet 1@ = get_hook_param {PARAM_PACKETID}1
IF 1@ == 93
THEN
    0BE7: raknet 2@ = bit_stream_read 0@ type {BS_TYPE_INT}3
    0BE7: raknet 3@ = bit_stream_read 0@ type {BS_TYPE_INT}3
    alloc 4@ 256
    0C11: memset destination 4@ value 0 size 256
  
    0BE8: raknet bit_stream 0@ read_array 4@ size 3@
    0C0F: array 4@ element 3@ = 0x00                   
END
0BE0: raknet hook_ret true
 

Romelo

dev.
Проверенный
540
624
Ну а зачем ты переобъявляешь, и зачем тебе проверка в цикле? Омагад..
В хуке и работай, если тебе нужно моментально выполнить какое-то действие.
И зачем ты пихаешь if and в одно условие?

CLEO:
0BE3: raknet setup_incoming_rpc_hook @hook
0BDE: pause_thread 0

:hook
0BE5: raknet 0@ = get_hook_param {PARAM_BITSTREAM}0
0BE5: raknet 1@ = get_hook_param {PARAM_PACKETID}1
if 1@ == 93
then
    0BE7: raknet 2@ = bit_stream_read 0@ type {BS_TYPE_INT}3
    0BE7: raknet 3@ = bit_stream_read 0@ type {BS_TYPE_INT}3
    alloc 4@ 256
    0C11: memset destination 4@ value 0 size 256
    0BE8: raknet bit_stream 0@ read_array 4@ size 3@
        if                                          
            0C18: 0 = strstr string1 4@ string2 "1"        
            then                                              
                say "1"
            end    
    0C0F: array 4@ element 3@ = 0x00
    free 4@
end
0BE0: raknet hook_ret true
 
  • Нравится
Реакции: D3.Pheonix

Skelerll

Известный
154
8
Ну а зачем ты переобъявляешь, и зачем тебе проверка в цикле? Омагад..
В хуке и работай, если тебе нужно моментально выполнить какое-то действие.
И зачем ты пихаешь if and в одно условие?

CLEO:
0BE3: raknet setup_incoming_rpc_hook @hook
0BDE: pause_thread 0

:hook
0BE5: raknet 0@ = get_hook_param {PARAM_BITSTREAM}0
0BE5: raknet 1@ = get_hook_param {PARAM_PACKETID}1
if 1@ == 93
then
    0BE7: raknet 2@ = bit_stream_read 0@ type {BS_TYPE_INT}3
    0BE7: raknet 3@ = bit_stream_read 0@ type {BS_TYPE_INT}3
    alloc 4@ 256
    0C11: memset destination 4@ value 0 size 256
    0BE8: raknet bit_stream 0@ read_array 4@ size 3@
        if                                         
            0C18: 0 = strstr string1 4@ string2 "1"       
            then                                             
                say "1"
            end   
    0C0F: array 4@ element 3@ = 0x00
    free 4@
end
0BE0: raknet hook_ret true
В хуке работать не буду, а на IF AND в одном условии не обращай внимания. Я просто сократил код и просто не вырезал этого всего. Хотел сделать все короче. А про переоъявление переменной надо проверить. Если что, я тот код бы не скомпилировал, так что это не ошибка, а очепятка при сокращении.

Да, это из-за переобъявления переменной.
 

клешь рояль

Известный
1,255
551
Зависает гташка через некоторое время наметво, после чего "прекрашена работа программы". Что не так?
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

REPEAT
wait 0
UNTIL 0AFA:  is_samp_available

0BE3: raknet setup_incoming_rpc_hook @hook
alloc 4@ 512

WHILE TRUE
wait 0   
            IF AND                                         
            0C18: 0 = strstr string1 4@ string2 "1"       
            THEN                                             
                say "1"
            END   
END

:hook
0BE5: raknet 0@ = get_hook_param {PARAM_BITSTREAM}0
0BE5: raknet 1@ = get_hook_param {PARAM_PACKETID}1
IF 1@ == 93
THEN
    0BE7: raknet 2@ = bit_stream_read 0@ type {BS_TYPE_INT}3
    0BE7: raknet 3@ = bit_stream_read 0@ type {BS_TYPE_INT}3
    alloc 4@ 256
    0C11: memset destination 4@ value 0 size 256
 
    0BE8: raknet bit_stream 0@ read_array 4@ size 3@
    0C0F: array 4@ element 3@ = 0x00                 
END
0BE0: raknet hook_ret true
Вод рабочий код
CLEO:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP
0AC6: 0@ = label @Noname_269 offset
0BE3: raknet setup_incoming_rpc_hook @Noname_23
0BDE: pause_thread 0

:Noname_23
0BE5: raknet 1@ = get_hook_param 1
if
  1@ == 93
else_jump @Noname_71
call @Noname_116 3 3 3 0@ 1@ 2@

:Noname_71
if
  1@ == 101
else_jump @Noname_112
call @Noname_116 3 2 0 0@ 1@ 2@

:Noname_112
0BE0: raknet hook_ret 1

:Noname_116
0BE5: raknet 25@ = get_hook_param 0
26@ = BitStream.GetReadOffset(25@)
BitStream.ResetReadPointer(25@)
27@ = BitStream.Read(25@, 0@)
28@ = BitStream.Read(25@, 1@)
BitStream.ReadArray(25@, 2@, 28@)
0C1E: array 2@ element 28@ el_size 1 = 0
if
0C18: 0 = strstr string1 2@ string2 "1"
else_jump @Noname_250
say "1"

:Noname_250
BitStream.SetReadOffset(25@, 26@)
ret 2 27@ 28@
Мне его писал даркипксель вроде
 
Последнее редактирование модератором:

D[a]Ni

Участник
63
3
Как называется анимация "справить малую нужду" только без лишних движения как серверах через /piss
 

#saniwe

глаза пофикси
218
107
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
каким опкодом можно выдать самому себе розыск.
 
  • Нравится
Реакции: scrooddge.cs

#saniwe

глаза пофикси
218
107
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
забей.. в игре кодом выдал, вообще забыл, что они существуют :D

как правильно реализовать проверку, если диалог 0@ в открытом состоянии, т ов чат отпишет - Закройте. Если диалог в закрытом состоянии, то откроется диалог 7@

CLEO:
:site
if samp.IsDialogActive(0@)
then
0AF8: samp add_message_to_chat "[HELP] - У вас открыт диалог! Закройте его." color -1
else
0B80: dialog 7@ = create "dialog"
0B84: dialog 7@ set_pos_XY 500 500 size 300 225
end
Samp.CmdRet()
 
  • Нравится
Реакции: scrooddge.cs

astap_

Известный
Всефорумный модератор
626
597
CLEO:
0098: 0@ = random_float_in_ranges_ 0.0 _to_ 1.0 // float
0099: 1@ = random_int_in_ranges 0 to_ 32767 // int (целое число)
@DonkRage
 
  • Нравится
Реакции: DonkRage

Skelerll

Известный
154
8
Когда создаю команду, она не распознается, мол нет её. Что делац?
0B34: samp register_client_command "1" to_label @1
 

#saniwe

глаза пофикси
218
107
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
@Skelerll
0B34: samp register_client_command "1" to_label @TEST

:test
0AF8: samp add_message_to_chat "qq." color -1
SAMP.CmdRet
--------------------------------------------------------------------------------------------------------------------------
 
Последнее редактирование:
  • Нравится
Реакции: scrooddge.cs