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

Kristyan

Известный
165
16
Ребят, ну помогите мне пожалуйста :wall: Уже 3 недели прошло и я не имог решить проблему. Мне нужно чтобы текст сработал только один раз, вот код. Маркер статичный.
CLEO:
{$CLEO}
0000:
repeat
   wait 0
until 0afa:

WHILE TRUE
wait 0
if
call @is_cp_active_LS 0
then
   31@ = 0
   call @get_cp_pos_LS 0 0@ 1@ 2@

    if and
    0@ ==  1554.532104
    1@ ==  -1675.580688
    2@ ==  16.195313
    then
        31@ = 1
        if
        31@ == 1
        then
            31@ = 4
            018C: play_sound 1052 at 0.0 0.0 0.0
            chatmsg "text1" -1
        end
    end

    if and
    0@ ==  2287.257813
    1@ ==  2431.447998
    2@ ==  10.820302
    then
        31@ = 2
        if
        31@ == 2
        then
            31@ = 4
            018C: play_sound 1052 at 0.0 0.0 0.0
            chatmsg "text2" -1
        end
    end

    if and
    0@ ==  -1605.046143
    1@ ==  711.501038
    2@ ==  13.867177
    then
        31@ = 3
        if
        31@ == 3
        then
            31@ = 4
            018C: play_sound 1052 at 0.0 0.0 0.0
            chatmsg "text2" -1
        end
     end
end

END // END WHILE TRUE

:is_cp_active_LS
0AA2: 0@ = loadlib "samp.dll"
0A8E: 1@ = 0@ + 0x21A10C
0A8D: 1@ = readMem 1@ sz 4 vp 0
1@ += 0x24
0A8D: 1@ = readMem 1@ sz 4 vp 0
IF 1@ == TRUE
THEN 0485:  return_true
ELSE 059A:  return_false
END
0AA3: freelib 0@
0AB2: ret 0

:get_cp_pos_LS
0AA2: 0@ = loadlib "samp.dll"
0A8E: 1@ = 0@ + 0x21A10C
0A8D: 1@ = readMem 1@ sz 4 vp 0
1@ += 0xC
0A8D: 2@ = readMem 1@ sz 4 vp 0
1@ += 0x4
0A8D: 3@ = readMem 1@ sz 4 vp 0
1@ += 0x4
0A8D: 4@ = readMem 1@ sz 4 vp 0
0AA3: freelib 0@
0AB2: ret 3 2@ 3@ 4@
 
Последнее редактирование:

NookieONE

Участник
128
1
Всем привет.
Помогите с скриптом.

Нужно чтобы при вводе команды (/chh ID) через ID игрока проверялся уровень игрока, а после проверки, в зависимости от уровня игрока выполнялись команды.

Help!
 

D3.Pheonix

🎹
Модератор
2,819
1,599
Всем привет.
Помогите с скриптом.

Нужно чтобы при вводе команды (/chh ID) через ID игрока проверялся уровень игрока, а после проверки, в зависимости от уровня игрока выполнялись команды.

Help!
CLEO:
repeat
wait 0
until Samp.Available()
Samp.RegisterClientCommand("chh", @chh)
0BDE: 0

:chh
Samp.IsCommandTyped(0@)
if
0AD4: 1@ = scan_string 0@ format "%d" 2@
then
    if
        Samp.IsPlayerConnected(2@)
    then
        3@ = Samp.GetPlayerScore(2@)
            if 3@ == 10 // Esli LVl = 10
            then
                say "/sms %d ti lox 10 lvla" 2@ // deystvie v zavisimosti ot LVLa
            end
          
            if 3@ == 11 // Esli LVL = 11
            then
                say "/sms %d ti lox 11 lvla" 2@ // deystvie v zavisimosti ot LVLa
            end
    else
        chatmsg "Player with id %d not connected" -1 2@
    end
end
Samp.CmdRet()
 

NookieONE

Участник
128
1
CLEO:
repeat
wait 0
until Samp.Available()
Samp.RegisterClientCommand("chh", @chh)
0BDE: 0

:chh
Samp.IsCommandTyped(0@)
if
0AD4: 1@ = scan_string 0@ format "%d" 2@
then
    if
        Samp.IsPlayerConnected(2@)
    then
        3@ = Samp.GetPlayerScore(2@)
            if 3@ == 10 // Esli LVl = 10
            then
                say "/sms %d ti lox 10 lvla" 2@ // deystvie v zavisimosti ot LVLa
            end
         
            if 3@ == 11 // Esli LVL = 11
            then
                say "/sms %d ti lox 11 lvla" 2@ // deystvie v zavisimosti ot LVLa
            end
    else
        chatmsg "Player with id %d not connected" -1 2@
    end
end
Samp.CmdRet()
Еще маленький вопрос, как сделать
if 3@ == 10 // Esli LVl = 10 чтобы не только 10 был, а например с 0 по 10
 

grandpafromghetto

НАСТАЯЩИЙ ДАГИСТАНИЦ
Проверенный
335
119
0B75 подойдет для проверок? или как проверить текст на нахождение в чате?
 

D3.Pheonix

🎹
Модератор
2,819
1,599
0B75 подойдет для проверок? или как проверить текст на нахождение в чате?
CLEO:
0B75: samp get_chat_string 1@ text_to 2@ prefix_to 3@ color_to 4@ prefix_color_to 5@
Получаешь текст в 2@, а дальше проверяешь например через 0C18 / 0C29
Как определить $PLAYER_ACTOR handle или его id
Это и есть твой хендл $PLAYER_ACTOR
Если чей-то другой - то
0B20: samp 2@ = actor_handle_by_samp_player_id 1@
 
  • Нравится
Реакции: grandpafromghetto

Kplich

Новичок
22
1
получается я могу написать 0B2B: samp 2@ = get_player_id_by_actor_handle $PLAYER_ACTOR и 2@ будет ид игрока?
 

Trawer2289

Известный
48
9
Пацаны, что не так с кодом? Хотелось сделать так чтобы при вводе /test [id игрока] то игрока дамажило кулаком пока он не здохнит, если игрок умрет то скрипт деактивируется или же если мы сами деактивируем. А получается хрень! Вот нужно чтоб дамажило кулаком до тех пор пока не умрет/деактивируем скрипт.
CLEO:
{$CLEO .cs}
0000: NOP

repeat
    wait 400
until Samp.Available()
0B34: samp register_client_command "test" to_label @test

repeat
wait 0
    if 0@ == 1
        then
        Samp.IsCommandTyped(1@)
        if 0AD4: 1@ = scan_string 1@ format "%d" 1@
        then
        if Samp.IsPlayerConnected(1@)
        then
        2@ = Samp.GetActorHandleByPlayerID(1@)
        3@ = Samp.GetPlayerNickname(1@)
        if 056D:   actor 2@ defined
        then
        for 4@ = 0 to 1
        0BCB: samp send_give_damage playerid 1@ damage 999.0 weapon 0 bodypart 3
        chatmsg "[Test]: Ебашим %s[id %d]" 0xFF0000
        else
        chatmsg "[Test]: Игрок не найден" 0xFF0000
        end
        else
        chatmsg "[Test]: Введите: /test [id игрока]" 0xFF0000
        end
        else
        chatmsg "[Test]: Игрок не в зоне стрима" 0xFF0000
        end
        5@ += 1
        end
    0@ = 1
end
until false

:test
if 0@ == 1
then
0@ = 0
chatmsg "[Test]: Деактивирован" 0xFF0000
else
0@ = 1
chatmsg "[Test]: Активирован" 0xFF0000
end
Samp.CmdRet()