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

kennex

Известный
69
25
Как поставить символ табуляции, например, в диалоге?(Чтобы отступ был)
upd: и как можно округлить число до определённого знака после запятой?
кто нибудь читает Wiki

https://www.blast.hk/wiki/tutorials:local_dialogs

// \t - символ(0x9) табуляции
// \n - символ(0xA) перехода на новую строку
// \0 - символ(0x0) конца строки

как можно округлить число до определённого знака после запятой?

%.2f
 
Последнее редактирование:
  • Нравится
Реакции: Perojek)0

я воскрес

Активный
245
36
CLEO:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

0000: NOP

:samp   ///çàïóùåí òèïà ñàìï
wait 400
   SAMP.Available
else_jump @samp

:label  //Ñêàí ñòðîêè
wait 0
alloc 1@ 256
SAMP.GetChatString(99, 1@, 3@, 4@, 25@)
if
0C18: 9@ = strstr string1 1@ string2 "[Sucre Family] Sven_Sucre"
else_jump @free   /// Åñëè íåòó íåòó èä¸ì ê free
jump @kod ///   ïðûãàåì ê ïîëó÷åíèþ êîäà

:free
free 1@
jump @label  /// Ê ËÀÁÅËÓ ÊÎÃÄÀ ÎÑÂÎÁÎÄÈËÈ | ÏÎÂÒÎÐÅÍÈÅ ÊÐ×

:kod
wait 1000
0AD4: 4@ = scan_string 9@ format "[Sucre Family] Sven_Sucre[%d] çàñïàâíèë %d" 6@ 5@  /// %D  öå ñàì êîä
jump @vzyalcar   /// Ïðûãàåì ê îòïðàâêå

:vzyalcar
wait 0
0AF9: samp say_msg "Âçÿë àâòî %s . Ïðîøó íå ñïàâíèòü!" 5@
jump @free

2 ошибки.
1. Почему текст в чат выводит 2 раза?
2. Авто выводит как "(null)"

ещё одна проблема, скрипт реагирует на все мои сообщения в /fam
 
Последнее редактирование модератором:

LokoLoyKoo

Новичок
103
8
Как сделать так что бы данная команда не работала на скины ментов
CLEO:
:frisk
wait 0
0AB0:   key_pressed 49
if 0AD4: 0@ = scan_string 0@ format "%d" 1@
then
    if 0B23: samp is_player_connected 1@
    then
    0af9: "/frisk %d" 1@
    end
end
0B12: 21@ = 21@ XOR 1
Samp.CmdRet()
 

fiendshadow

3LFhocV726q7pKWWky2vv3W38Dm9sGJV86
Проверенный
455
121
Как сделать так что бы данная команда не работала на скины ментов
CLEO:
:frisk
wait 0
0AB0:   key_pressed 49
if 0AD4: 0@ = scan_string 0@ format "%d" 1@
then
    if 0B23: samp is_player_connected 1@
    then
    0af9: "/frisk %d" 1@
    end
end
0B12: 21@ = 21@ XOR 1
Samp.CmdRet()
Ставишь условие на проверку ID скина, т.е. перечисляешь скины, которые тебе не нужны
https://www.blast.hk/wiki/opcodes:02f2
 

p1cador

cerf
Проверенный
220
359
Я хочу например: Вкл. скрипт, после рядом со мной проходит игрок и ему пишет "Добро пожаловать "ID"", или например чтоб я бегал мимо игрока и мне писало "рядом "ID""
Это тут очень даже причем. Вот, вводишь /dist расстояние и скрипт флудит иды игроков, расстояние от тебя до которых <= введенного.
CLEO:
{$CLEO .cs}

0000:
while not SAMP.Available()
    wait 100
end 
0B34: samp register_client_command "chelp" to_label @reload
0B34: samp register_client_command "dist" to_label @on_off
    
while true
    wait 0
    for 31@ = 0 to 1001 step 1               
        if 0B20: samp 30@ = actor_handle_by_samp_player_id 31@     
            then
            Actor.StorePos($PLAYER_ACTOR, 26@, 25@, 24@)
            Actor.StorePos(30@, 29@, 28@, 27@)   
            050A: 23@ = distance_between_XYZ 29@ 28@ 27@ and_XYZ 26@ 25@ 24@     
            if 8025:   23@ < 22@  // (float) 
                then     
                0af8: "p1cador: id: {ffffff}%d {ff0000}| dist: {ffffff}%.2f {ff0000}{ff5555}(<= %.2f)" 0xff0000  31@ 23@ 22@
            end
        end
    end
end


:on_off
0B35: samp 22@ = get_last_command_params
0C1B: 22@ = atof 22@ 
0af8: "Distantion: {ffffff}%.0f" 0xff0000 22@
0b43: samp cmd_ret

:reload
0A92: create_custom_thread "cleohelp.CS"
0A93: end_custom_thread
0b43: samp cmd_ret
 
Последнее редактирование модератором:

LokoLoyKoo

Новичок
103
8
CLEO:
:frisk
wait 0
0AB0:   key_pressed 113
if 0AD4: 0@ = scan_string 0@ format "%d" 1@
then
    if 0B2B: samp 2@ = get_player_id_by_actor_handle 0@
    then
        if 0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 1@ closest_ped_to 0@
        then
            if and
            056D:   actor 0@ defined
            0ab0: key_pressed 113
            then
                if or 02F2: actor $PLAYER_ACTOR model == #lapd1  // 1
                02F2: actor $PLAYER_ACTOR model == #sfpd1         // 2
                02F2: actor $PLAYER_ACTOR model == #csher         // 3
                02F2: actor $PLAYER_ACTOR model == #lapdm1        // 4
                02F2: actor $PLAYER_ACTOR model == #swat          // 5
                02F2: actor $PLAYER_ACTOR model == #fbi           // 6
                02F2: actor $PLAYER_ACTOR model == #ARMY          // 7
                02F2: actor $PLAYER_ACTOR model == #DSHER         // 8
                then   
                    if 0B23: samp is_player_connected 1@ 
                         
                    0af9: "/frisk %d" 1@ 2@
                    end
                end
            end
        end
    end
0B12: 21@ = 21@ XOR 1
Samp.CmdRet()
Не хочет использовать команду для ближайшего игрока, в чем ошибка?
 

p1cador

cerf
Проверенный
220
359
CLEO:
                02F2: actor $PLAYER_ACTOR model == #lapd1  // 1
                02F2: actor $PLAYER_ACTOR model == #sfpd1         // 2
                02F2: actor $PLAYER_ACTOR model == #csher         // 3
                02F2: actor $PLAYER_ACTOR model == #lapdm1        // 4
                02F2: actor $PLAYER_ACTOR model == #swat          // 5
                02F2: actor $PLAYER_ACTOR model == #fbi           // 6
                02F2: actor $PLAYER_ACTOR model == #ARMY          // 7
                02F2: actor $PLAYER_ACTOR model == #DSHER         // 8
Не хочет использовать команду для ближайшего игрока, в чем ошибка?
Ты сделал обратную проверку, т.е. /frisk сработает толкьо если скин будет РАВЕН указанному. Тебе, как я понял, нужно сделать наоборот. Замени каждый 02F2: на 82F2: или перед каждым 02F2 напиши not

пс
не, пересмотрел, там ваще дичь какая-то, чуть позже помогу, если до меня не помоугт
 

BlackKnigga

Известный
BH Team
922
445
CLEO:
:frisk
wait 0
0AB0:   key_pressed 113
if 0AD4: 0@ = scan_string 0@ format "%d" 1@
then
    if 0B2B: samp 2@ = get_player_id_by_actor_handle 0@
    then
        if 0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 1@ closest_ped_to 0@
        then
            if and
            056D:   actor 0@ defined
            0ab0: key_pressed 113
            then
                if or 02F2: actor $PLAYER_ACTOR model == #lapd1  // 1
                02F2: actor $PLAYER_ACTOR model == #sfpd1         // 2
                02F2: actor $PLAYER_ACTOR model == #csher         // 3
                02F2: actor $PLAYER_ACTOR model == #lapdm1        // 4
                02F2: actor $PLAYER_ACTOR model == #swat          // 5
                02F2: actor $PLAYER_ACTOR model == #fbi           // 6
                02F2: actor $PLAYER_ACTOR model == #ARMY          // 7
                02F2: actor $PLAYER_ACTOR model == #DSHER         // 8
                then  
                    if 0B23: samp is_player_connected 1@
                        
                    0af9: "/frisk %d" 1@ 2@
                    end
                end
            end
        end
    end
0B12: 21@ = 21@ XOR 1
Samp.CmdRet()
Не хочет использовать команду для ближайшего игрока, в чем ошибка?
И что в теле команды 0ab0 делает? И ты еще вверху проебал получение параметров команды перед сканом. Еще один end потерян.
 

kennex

Известный
69
25
Как сделать так что бы данная команда не работала на скины ментов
CLEO:
:frisk
0B35: samp 0@ = get_last_command_params
if 0AD4: 4@ = scan_string 0@ format "%d" 1@
then
  if 0B23: samp is_player_connected 1@
  then
  0665: get_actor 1@ model_to 7@
  if or
  7@ <> 280
  7@ <> 281
  7@ <> 282
  7@ <> 283
  7@ <> 284
  7@ <> 285
  7@ <> 288
  7@ <> 300  
  then
  if or
  7@ <> 301
  7@ <> 302
  7@ <> 306
  7@ <> 307
  7@ <> 309
  7@ <> 310
  7@ <> 311
  then
  0af9: "/frisk %d" 1@
  end
  end
  end
end
0B12: 21@ = 21@ XOR 1
Samp.CmdRet()
Не проверял , но вроде должно работать
 

fiendshadow

3LFhocV726q7pKWWky2vv3W38Dm9sGJV86
Проверенный
455
121
CLEO:
:frisk
wait 0
0AB0:   key_pressed 113
if 0AD4: 0@ = scan_string 0@ format "%d" 1@
then
    if 0B2B: samp 2@ = get_player_id_by_actor_handle 0@
    then
        if 0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 1@ closest_ped_to 0@
        then
            if and
            056D:   actor 0@ defined
            0ab0: key_pressed 113
            then
                if or 02F2: actor $PLAYER_ACTOR model == #lapd1  // 1
                02F2: actor $PLAYER_ACTOR model == #sfpd1         // 2
                02F2: actor $PLAYER_ACTOR model == #csher         // 3
                02F2: actor $PLAYER_ACTOR model == #lapdm1        // 4
                02F2: actor $PLAYER_ACTOR model == #swat          // 5
                02F2: actor $PLAYER_ACTOR model == #fbi           // 6
                02F2: actor $PLAYER_ACTOR model == #ARMY          // 7
                02F2: actor $PLAYER_ACTOR model == #DSHER         // 8
                then  
                    if 0B23: samp is_player_connected 1@
                        
                    0af9: "/frisk %d" 1@ 2@
                    end
                end
            end
        end
    end
0B12: 21@ = 21@ XOR 1
Samp.CmdRet()
Не хочет использовать команду для ближайшего игрока, в чем ошибка?
if not вапщ, тебе ведь нужно что бы работал на всех скинах, кроме пдшных(фибиай)
 

LokoLoyKoo

Новичок
103
8
CLEO:
:frisk
0B35: samp 0@ = get_last_command_params
if 0AD4: 4@ = scan_string 0@ format "%d" 1@
then
  if 0B23: samp is_player_connected 1@
  then
  0665: get_actor 1@ model_to 7@
  if or
  7@ <> 280
  7@ <> 281
  7@ <> 282
  7@ <> 283
  7@ <> 284
  7@ <> 285
  7@ <> 288
  7@ <> 300
  then
  if or
  7@ <> 301
  7@ <> 302
  7@ <> 306
  7@ <> 307
  7@ <> 309
  7@ <> 310
  7@ <> 311
  then
  0af9: "/frisk %d" 1@
  end
  end
  end
end
0B12: 21@ = 21@ XOR 1
Samp.CmdRet()
Не проверял , но вроде должно работать
Не работает.

CLEO:
:START
wait 0
if
0AB0:   key_pressed 113
jf @START
if
0AB1: call @nearid 0 retr_to fdist 0@ sid 1@
jf @START
0AF9: "/iznas %d" 1@
wait 100
0C72: set_virtual_key 0x7A down true
wait 100
0C72: set_virtual_key 0x7A down false
wait 1000
jump @START

:nearid
3@ = 1000.0
4@ = 0xFFFFFF
0A8D: 0@ = read_memory 0xB74490 size 4 virtual_protect 0
0@ += 4
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
for 1@ = 0 to 35584 step 0x100
    0A8D: 2@ = read_memory 0@ size 1 virtual_protect 0
    0@++
    if and
        2@ >= 0x00
        2@ < 0x80
    then
        005A: 2@ += 1@
        if or
            003C: $PLAYER_ACTOR == 2@
            856D: NOT actor 2@ defined
        then continue
        end
   
        0AB1: call @dist 1 remote_player_handle 2@ retr_dist_to 5@
        if 0025: 3@ > 5@
        then
            0087: 3@ = 5@
            0085: 4@ = 2@
        end
    end
end
if 4@ = SAMP.GetSAMPPlayerIDByActorHandle(4@)
then
    0485:  return_true
else
    059A:  return_false
end
0AB2: ret 2 3@ 4@
:dist
Actor.StorePos(0@, 1@, 2@, 3@)
Actor.StorePos($PLAYER_ACTOR, 4@, 5@, 6@)
050A: 7@ = distance_between_XYZ 4@ 5@ 6@ and_XYZ 1@ 2@ 3@
0AB2: ret 1 7@
Выдает ошибку нулевой оффсет.
 
Последнее редактирование модератором: