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

Kristyan

Известный
165
16
Как переворачивать обратно int значения? Использую такой метод но в конце выдает только 0
CLEO:
        0AA5: call 0x8220AD num_params 4 pop 4 12@ 11@v "]%d[%s" 10@
        log "%d" 11@
        003b: 13@ = 11@
        log "%d" 13@
         0C2D: strrev in 13@ out 14@
        log "ID: %d | Nick: %s" 14@ 12@
 

D3.Pheonix

🎹
Модератор
2,817
1,599
Забудь.. Мне нужно 11@ переворачивать обратно.
CLEO:
        0AA5: call 0x8220AD num_params 4 pop 4 12@ 11@s "]%d[%s" 10@
         0C2D: strrev in 11@ out 13@
        log "ID: %s | Nick: %s" 13@ 12@
CLEO:
{alloc 13@ 0@ 10@ 12@}

0AA5: call 0x8220AD num_params 4 pop 4 12@ 11@v "]%d[%s" 10@
format 0@ "%d" 11@
0C2D: strrev in 0@ out 13@
log "ID: %s | Nick: %s" 13@ 12@
 

клешь рояль

Известный
1,255
551
По идее то что я накакал, должно отправлять моё местоположение на респу грув и дамажить весь сервер, но так сказать весь сервер дамажит но не с респы грув а с того места где я
CLEO:
{$CLEO .cs}
0000:
repeat
wait 0
until samp.Available()
0B34: samp register_client_command "ueban" to_label @cmd

repeat
    wait 0
    if
    20@ == 1
        then       
            actor.StorePos($PLAYER_ACTOR 5@,1@,7@)
            call @SendFakeFootData 3 2494.5344 -1684.6302 13.5106
jump @kick


:kick
if
   SAMP.IsPlayerConnected(6@)
jf @Noname_311
0BCC: samp send_take_damage issuerid 6@ damage 1.0 weapon 37 bodypart 3

printf "~G~ueban: %d" 2000 6@
wait 10

:Noname_311
6@ += 1
  6@ > 1000
jf @kick
wait 5000
jump @tp


:tp

            call @SendFakeFootData 3 5@ 1@ 7@
            end        

until false
  
:cmd
20@ = 1
samp.CmdRet()

:SendFakeFootData //0@ - x / 1@ - y / 2@ - z
alloc 3@ 68
0B2B: samp 4@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0BBA: samp store_player 4@ onfoot_data 3@
0C0D: struct 3@ offset 6 size 4 = 0@
0C0D: struct 3@ offset 10 size 4 = 1@
0C0D: struct 3@ offset 14 size 4 = 2@
0BC0: samp send_onfoot_data 3@
free 3@
0AB2: ret 0
 

astap_

Известный
Всефорумный модератор
626
597
:SendFakeFootData //0@ - x / 1@ - y / 2@ - z alloc 3@ 68 0B2B: samp 4@ = get_player_id_by_actor_handle $PLAYER_ACTOR 0BBA: samp store_player 4@ onfoot_data 3@ 0C0D: struct 3@ offset 6 size 4 = 0@ 0C0D: struct 3@ offset 10 size 4 = 1@ 0C0D: struct 3@ offset 14 size 4 = 2@ 0BC0: samp send_onfoot_data 3@ free 3@ 0AB2: ret 0
Эта функция отправляет фейк-местоположение серверу, но лишь на ~cекунду. Потом сервер синхронизирует тебя с твоей локальной позицией, и ты снова там же ,где и был.
Если ты хочешь так и оставаться на груве, нужно нопнуть офнут дату. Проще всего это делается через адреса памяти.
CLEO:
SAMP.ReadSAMPMemory(1@, 0x4D10, 2)
SAMP.WriteSAMPMemory(0x4D10, 0xC390, 2) // включаем NOP Onfoot Data

SAMP.WriteSAMPMemory(0x4D10, 1@, 2)     //  выключаем NOP OnFoot Data

Но есть ли смысл так заморачиваться с синхрой, если можно просто переместиться с помощью:
CLEO:
Actor.PutAt($PLAYER_ACTOR, x, y, z)
 
  • Нравится
Реакции: клешь рояль

SoniQ

Новичок
13
2
Использует команду от 0 до 15хп, как сделать, чтобы команда использовалась только от 3 до 16хп
CLEO:
 if 8029:  not 1@ >=15
 

SoniQ

Новичок
13
2
if and
0029: 1@ >= 3
8029: not 1@ >= 16
Благодарю и последний
Нужно, чтобы /udc использовал только если хп менее 16 и всего 1 раз а не флудил её много раз, а если больше, то не нужно, он почему-то сразу 3 команды флудит, уже по разному пробовал, не получается

CLEO:
 if 0B61:  samp is_local_player_spawned
        then
        1@ = actor.Health($3)     
        if and
        0029: 1@ >= 1
        8029: not 1@ >= 16
        then
        say "/eat"
        wait 0
        say "/usemeds"
        wait 0
        say "/udc"
        wait 2500
        end
        end
 

D3.Pheonix

🎹
Модератор
2,817
1,599
Благодарю и последний
Нужно, чтобы /udc использовал только если хп менее 16 и всего 1 раз а не флудил её много раз, а если больше, то не нужно, он почему-то сразу 3 команды флудит, уже по разному пробовал, не получается

CLEO:
 if 0B61:  samp is_local_player_spawned
        then
        1@ = actor.Health($3) 
        if and
        0029: 1@ >= 1
        8029: not 1@ >= 16
        then
        say "/eat"
        wait 0
        say "/usemeds"
        wait 0
        say "/udc"
        wait 2500
        end
        end
ХМ :D
Пока что в голове только 1 идея, сделать активацию на команду, и в цмд лабел вынести команду udc, а остальное будет в цикле
 

SoniQ

Новичок
13
2
ХМ :D
Пока что в голове только 1 идея, сделать активацию на команду, и в цмд лабел вынести команду udc, а остальное будет в цикле
Ладно, упустим это, когда с м4 зажимают, команды используются перед смертью, во время анимации смерти, или после смерти перед спавном, хотя должно быть если менее 1 хп он уже не должен её использовать, как фиксить?:D
 

astap_

Известный
Всефорумный модератор
626
597
Ладно, упустим это, когда с м4 зажимают, команды используются перед смертью, во время анимации смерти, или после смерти перед спавном, хотя должно быть если менее 1 хп он уже не должен её использовать, как фиксить?:D
добавить условие.
CLEO:
NOT Actor.Dead($PLAYER_ACTOR)
 
Последнее редактирование: