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

Perojek)0

Известный
205
3
Как можно строку "Всем привет" изменить на "привет Всем" или что-то тип того?
 

Vovich

HOT
Проверенный
717
197
крч, как я понял хук получает все тексты со всего сервера, что пиздец как херово, я хочу например что бы выводились в чат только те возле которых я в радиусе 50 метров..
Но в итоге, я заебался чёт думать как бы его так сделать, вот допустим код ниже, как он работает, я например даже подойду к 3d тексту, о нем мне в чат не отобразит инфы, если зайти в интерьер и выйти - сразу же появится инфа, я хз почему так, то есть он как что ли отображается только когда ты не в вирт мире, или инте, это меня немного настораживает...

кароче подскажите, как мне отображать инфу о 3D тексте, в цикле, то есть я хочу получать каждую секунду инфу о этом тексте, но эта инфа как минимум не каждую секунду получается, и вообще со всего сервера все 3d тексты собирает, что мне вообще не нужно.
Можно ли как-то это обойти?)
Код:
{$CLEO .cs}
{$INCLUDE SF}
0000:
repeat
wait 150
until 0afa:
0BE3: raknet setup_incoming_rpc_hook @DHOOK
0B34: samp register_client_command "test" to_label @cmd
while true
wait 0
end

:cmd
if 23@ == 0
then
23@ = 1
chatmsg "активатед" -1
else
chatmsg "деактеватед" -1
23@ = 0
end
SAMP.CmdRet()

:DHOOK
if 23@ == 1
then
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
  if 0@ == RPC_SCRCREATE3DTEXTLABEL
  then
  0BE5: raknet 1@ = get_hook_param PARAM_BITSTREAM
  0BE7: raknet 2@ = bit_stream_read 1@ type BS_TYPE_SHORT
  0BE7: raknet 3@ = bit_stream_read 1@ type BS_TYPE_INT
  0BE7: raknet 4@ = bit_stream_read 1@ type BS_TYPE_FLOAT // x
  0BE7: raknet 5@ = bit_stream_read 1@ type BS_TYPE_FLOAT // y
  0BE7: raknet 6@ = bit_stream_read 1@ type BS_TYPE_FLOAT
  0BE7: raknet 7@ = bit_stream_read 1@ type BS_TYPE_FLOAT
  0BE7: raknet 8@ = bit_stream_read 1@ type BS_TYPE_BYTE
  0BE7: raknet 9@ = bit_stream_read 1@ type BS_TYPE_SHORT
  0BE7: raknet 10@ = bit_stream_read 1@ type BS_TYPE_SHORT
  alloc 11@ 1024
  0C11: memset 11@ 0 1024
  0BF4: raknet bit_stream 1@ decode_string 11@ size 1023
     if 0C29: 20@ = stristr string1 11@ string2 "Владелец"
     then
     00A0: store_actor $PLAYER_ACTOR position_to 12@ 13@ 14@
     0509: 17@ = distance_between_XY 12@ 13@ and_XY 4@ 5@
       if 17@ < 50.0
       then
       chatmsg "---------------------------------------------------" -1
       chatmsg "%s" 3@ 11@
       chatmsg "---------------------------------------------------" -1
       free 11@
       end
     end
  end
end
0BE0: raknet hook_ret true
 

hnnssy

Известный
Друг
2,684
2,768
крч, как я понял хук получает все тексты со всего сервера, что пиздец как херово, я хочу например что бы выводились в чат только те возле которых я в радиусе 50 метров..
Но в итоге, я заебался чёт думать как бы его так сделать, вот допустим код ниже, как он работает, я например даже подойду к 3d тексту, о нем мне в чат не отобразит инфы, если зайти в интерьер и выйти - сразу же появится инфа, я хз почему так, то есть он как что ли отображается только когда ты не в вирт мире, или инте, это меня немного настораживает...

кароче подскажите, как мне отображать инфу о 3D тексте, в цикле, то есть я хочу получать каждую секунду инфу о этом тексте, но эта инфа как минимум не каждую секунду получается, и вообще со всего сервера все 3d тексты собирает, что мне вообще не нужно.
Можно ли как-то это обойти?)
Код:
{$CLEO .cs}
{$INCLUDE SF}
0000:
repeat
wait 150
until 0afa:
0BE3: raknet setup_incoming_rpc_hook @DHOOK
0B34: samp register_client_command "test" to_label @cmd
while true
wait 0
end

:cmd
if 23@ == 0
then
23@ = 1
chatmsg "активатед" -1
else
chatmsg "деактеватед" -1
23@ = 0
end
SAMP.CmdRet()

:DHOOK
if 23@ == 1
then
0BE5: raknet 0@ = get_hook_param PARAM_PACKETID
  if 0@ == RPC_SCRCREATE3DTEXTLABEL
  then
  0BE5: raknet 1@ = get_hook_param PARAM_BITSTREAM
  0BE7: raknet 2@ = bit_stream_read 1@ type BS_TYPE_SHORT
  0BE7: raknet 3@ = bit_stream_read 1@ type BS_TYPE_INT
  0BE7: raknet 4@ = bit_stream_read 1@ type BS_TYPE_FLOAT // x
  0BE7: raknet 5@ = bit_stream_read 1@ type BS_TYPE_FLOAT // y
  0BE7: raknet 6@ = bit_stream_read 1@ type BS_TYPE_FLOAT
  0BE7: raknet 7@ = bit_stream_read 1@ type BS_TYPE_FLOAT
  0BE7: raknet 8@ = bit_stream_read 1@ type BS_TYPE_BYTE
  0BE7: raknet 9@ = bit_stream_read 1@ type BS_TYPE_SHORT
  0BE7: raknet 10@ = bit_stream_read 1@ type BS_TYPE_SHORT
  alloc 11@ 1024
  0C11: memset 11@ 0 1024
  0BF4: raknet bit_stream 1@ decode_string 11@ size 1023
     if 0C29: 20@ = stristr string1 11@ string2 "Владелец"
     then
     00A0: store_actor $PLAYER_ACTOR position_to 12@ 13@ 14@
     0509: 17@ = distance_between_XY 12@ 13@ and_XY 4@ 5@
       if 17@ < 50.0
       then
       chatmsg "---------------------------------------------------" -1
       chatmsg "%s" 3@ 11@
       chatmsg "---------------------------------------------------" -1
       free 11@
       end
     end
  end
end
0BE0: raknet hook_ret true
ну так правильно, это же рпц, он и приходит всего раз, когда этот самый 3д текст и создаётся
 

Perojek)0

Известный
205
3
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

repeat
    wait 10000
until 0AFA:  is_samp_available

0AC8: 4@ = allocate_memory_size 512
0AD3: 4@ = format "Nick_Name_Moy" 
0AF8: samp add_message_to_chat 4@ color -1
0AC9: free_allocated_memory 4@

while true
wait 0
1@=1
    if
    0ADC: test_cheat "6"
    then        
        for 0@ = 1 to 999 step 1
            if 
            0B23: samp is_player_connected 0@
            then
            0AC8: 2@ = allocate_memory_size 512
            0AC8: 3@ = allocate_memory_size 512
            0B36: samp 2@ = get_player_nickname 0@
                if
                0C21: stricmp string1 2@ string2 4@
                then
                1@=2
                break
                end
            0AC9: free_allocated_memory 2@
            0AC9: free_allocated_memory 3@
            end
        end
        if
        1@=2
        then
        0AF8: samp add_message_to_chat "Игрок найден! Nickname: %s [%d]" color -1 2@ 0@
        else
        0AF8: samp add_message_to_chat "Данный игрок не был найден. :c" color -1
        end
    end
end
Не пашет и не могу найти ошибку :c
 

hnnssy

Известный
Друг
2,684
2,768
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

repeat
    wait 10000
until 0AFA:  is_samp_available

0AC8: 4@ = allocate_memory_size 512
0AD3: 4@ = format "Nick_Name_Moy"
0AF8: samp add_message_to_chat 4@ color -1
0AC9: free_allocated_memory 4@

while true
wait 0
1@=1
    if
    0ADC: test_cheat "6"
    then       
        for 0@ = 1 to 999 step 1
            if
            0B23: samp is_player_connected 0@
            then
            0AC8: 2@ = allocate_memory_size 512
            0AC8: 3@ = allocate_memory_size 512
            0B36: samp 2@ = get_player_nickname 0@
                if
                0C21: stricmp string1 2@ string2 4@
                then
                1@=2
                break
                end
            0AC9: free_allocated_memory 2@
            0AC9: free_allocated_memory 3@
            end
        end
        if
        1@=2
        then
        0AF8: samp add_message_to_chat "Игрок найден! Nickname: %s [%d]" color -1 2@ 0@
        else
        0AF8: samp add_message_to_chat "Данный игрок не был найден. :c" color -1
        end
    end
end
Не пашет и не могу найти ошибку :c
0AC9: free_allocated_memory 4@
0C21: stricmp string1 2@ string2 4@
нельзя обращаться к памяти после её освобождения

for 0@ = 1 to 999 step 1
иды с 0 начинаются

0AC8: 2@ = allocate_memory_size 512
0AC8: 3@ = allocate_memory_size 512
0B36: samp 2@ = get_player_nickname 0@
if
0C21: stricmp string1 2@ string2 4@
then
1@=2
break
end
0AC9: free_allocated_memory 2@
0AC9: free_allocated_memory 3@
тут вообще выделение памяти ни к чему
 
  • Нравится
Реакции: Perojek)0

orJIenoK_iT

Новичок
7
0
0aef
Что делает\для чего\и что такое логарифм

для чего такой цикл
repeat
wait10000
until 0AFA: is_samp_available
 
Последнее редактирование модератором:

BlackKnigga

Известный
BH Team
922
447
  • Нравится
Реакции: orJIenoK_iT