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

D3.Pheonix

🎹
Модератор
2,819
1,597
Если уровень игрока 0-4 -- скрипт пытается выполнить сразу две команды
Если уровень 5+ -- скрипт выполняет только вторую команду
Как пофиксить первую часть?
CLEO:
:test
Samp.IsCommandTyped(0@)
if
0AD4: 1@ = scan_string 0@ format "%d" 2@
then
    if
        Samp.IsPlayerConnected(2@)
    then
        3@ = Samp.GetPlayerScore(2@)
            if 3@ <= 4
            then
                say "/Êîìàíäà1 %d" 2@
            end
         
            if 3@ >= 5
            then
                say "/Êîìàíäà2 %d" 2@
            end
            else
                chatmsg "Èãðîê ñ ID: %d íå íàéäåí" -1 2@
            end   
end 
Samp.CmdRet()
CLEO:
:test
Samp.IsCommandTyped(0@)
if
0AD4: 1@ = scan_string 0@ format "%d" 2@
then
    if
        Samp.IsPlayerConnected(2@)
    then
        3@ = Samp.GetPlayerScore(2@)
            if 3@ <= 4
            then
                say "/Команда1 %d" 2@
            else
                say "/Команда2 %d" 2@
            end
    else
    chatmsg "Игрок с ID: %d не найден" -1 2@
    end   
end 
Samp.CmdRet()
 

jasd241

Новичок
29
1
CLEO:
{$CLEO}
0000:

int 16@
16@ = 0

repeat
wait 0
until samp.Available()
0B34: samp register_client_command "abot" to_label @On

while true
wait 0
if
30@ == 1
then

repeat
if
30@ == 1
then
0001: wait 0 ms
0B56: set_game_key 1 state -128
11@ = 1914.4750
12@ = 170.6227
0AB1: call_scm_func @GoToCoords 2 11@ 12@
end 
until 00ED:   actor $PLAYER_ACTOR sphere 0 near_point 11@ 12@ radius 0.5 0.5 on_foot

repeat
if
30@ == 1
then
0001: wait 0 ms
0B56: set_game_key 1 state -128
11@ = 1916.1313
12@ = 177.1411
0AB1: call_scm_func @GoToCoords 2 11@ 12@
end 
until 00ED:   actor $PLAYER_ACTOR sphere 0 near_point 11@ 12@ radius 0.5 0.5 on_foot

repeat
if
30@ == 1
then
0001: wait 0 ms
0B56: set_game_key 1 state -128
11@ = 1920.7675
12@ = 194.4547
0AB1: call_scm_func @GoToCoords 2 11@ 12@
end
until 00ED:   actor $PLAYER_ACTOR sphere 0 near_point 11@ 12@ radius 0.5 0.5 on_foot

while true
wait 0
0C72: set_virtual_key 13 down true // æìåì åíòåð
wait 500
0C72: set_virtual_key 13 down false // îòæèìàåì
if and
0C5D: samp textdraw 270 is_exists
0C5D: samp textdraw 271 is_exists
0C5D: samp textdraw 272 is_exists
0C5D: samp textdraw 273 is_exists
0C5D: samp textdraw 274 is_exists
0C5D: samp textdraw 275 is_exists
0C5D: samp textdraw 276 is_exists
0C5D: samp textdraw 277 is_exists
then
call @TextDrawClicker 0
else

repeat
if 30@ == 1
then
0001: wait 0 ms
0B56: set_game_key 1 state -128
11@ = 1918.3890
12@ = 185.2332
0AB1: call_scm_func @GoToCoords 2 11@ 12@
end 
until 00ED:   actor $PLAYER_ACTOR sphere 0 near_point 11@ 12@ radius 0.5 0.5 on_foot

repeat
if 30@ == 1
then
0001: wait 0 ms
0B56: set_game_key 1 state -128
11@ = 1912.9735
12@ = 165.0622
0AB1: call_scm_func @GoToCoords 2 11@ 12@
end 
until 00ED:   actor $PLAYER_ACTOR sphere 0 near_point 11@ 12@ radius 0.5 0.5 on_foot

end
end
//íà÷àëî 2-ãî äåðåâà

repeat
if
30@ == 1
then
0001: wait 0 ms
0B56: set_game_key 1 state -128
11@ = 1914.7059
12@ = 171.0723
0AB1: call_scm_func @GoToCoords 2 11@ 12@
end 
until 00ED:   actor $PLAYER_ACTOR sphere 0 near_point 11@ 12@ radius 0.5 0.5 on_foot

repeat
if
30@ == 1
then
0001: wait 0 ms
0B56: set_game_key 1 state -128
11@ = 1932.1223
12@ = 193.8615
0AB1: call_scm_func @GoToCoords 2 11@ 12@
end 
until 00ED:   actor $PLAYER_ACTOR sphere 0 near_point 11@ 12@ radius 0.5 0.5 on_foot

while true
wait 0
0C72: set_virtual_key 13 down true // æìåì åíòåð
wait 500
0C72: set_virtual_key 13 down false // îòæèìàåì
if or
0C5D: samp textdraw 270 is_exists
0C5D: samp textdraw 271 is_exists
0C5D: samp textdraw 272 is_exists
0C5D: samp textdraw 273 is_exists
0C5D: samp textdraw 274 is_exists
0C5D: samp textdraw 275 is_exists
0C5D: samp textdraw 276 is_exists
0C5D: samp textdraw 277 is_exists
then
call @TextDrawClicker 0
else

repeat
if
30@ == 1
then
0001: wait 0 ms
0B56: set_game_key 1 state -128
11@ = 1915.2284
12@ = 172.5655
0AB1: call_scm_func @GoToCoords 2 11@ 12@
end
until 00ED:   actor $PLAYER_ACTOR sphere 0 near_point 11@ 12@ radius 0.5 0.5 on_foot

repeat
if
30@ == 1
then
0001: wait 0 ms
0B56: set_game_key 1 state -128
11@ = 1913.0244
12@ = 165.3465
0AB1: call_scm_func @GoToCoords 2 11@ 12@
end 
until 00ED:   actor $PLAYER_ACTOR sphere 0 near_point 11@ 12@ radius 0.5 0.5 on_foot

end
end
// íà÷àëî 3-åãî äåðåâà

repeat
if
30@ == 1
then
0001: wait 0 ms
0B56: set_game_key 1 state -128
11@ = 1914.8591
12@ = 170.5447
0AB1: call_scm_func @GoToCoords 2 11@ 12@
end 
until 00ED:   actor $PLAYER_ACTOR sphere 0 near_point 11@ 12@ radius 0.5 0.5 on_foot

repeat
if
30@ == 1
then
0001: wait 0 ms
0B56: set_game_key 1 state -128
11@ = 1944.3033
12@ = 193.5877
0AB1: call_scm_func @GoToCoords 2 11@ 12@
end 
until 00ED:   actor $PLAYER_ACTOR sphere 0 near_point 11@ 12@ radius 0.5 0.5 on_foot

while true
wait 0
0C72: set_virtual_key 13 down true // æìåì åíòåð
wait 500
0C72: set_virtual_key 13 down false // îòæèìàåì
if or
0C5D: samp textdraw 270 is_exists
0C5D: samp textdraw 271 is_exists
0C5D: samp textdraw 272 is_exists
0C5D: samp textdraw 273 is_exists
0C5D: samp textdraw 274 is_exists
0C5D: samp textdraw 275 is_exists
0C5D: samp textdraw 276 is_exists
0C5D: samp textdraw 277 is_exists
then
call @TextDrawClicker 0
else

repeat
if
30@ == 1
then
0001: wait 0 ms
0B56: set_game_key 1 state -128
11@ = 1915.4835
12@ = 171.9216
0AB1: call_scm_func @GoToCoords 2 11@ 12@
end 
until 00ED:   actor $PLAYER_ACTOR sphere 0 near_point 11@ 12@ radius 0.5 0.5 on_foot

repeat
if
30@ == 1
then
0001: wait 0 ms
0B56: set_game_key 1 state -128
11@ = 1913.1858
12@ = 165.1552
0AB1: call_scm_func @GoToCoords 2 11@ 12@
end
until 00ED:   actor $PLAYER_ACTOR sphere 0 near_point 11@ 12@ radius 0.5 0.5 on_foot

end
end
// íà÷àëî 4-ãî äåðåâà

repeat
if
30@ == 1
then
0001: wait 0 ms
0B56: set_game_key 1 state -128
11@ = 1914.4937
12@ = 170.4806
0AB1: call_scm_func @GoToCoords 2 11@ 12@
end 
until 00ED:   actor $PLAYER_ACTOR sphere 0 near_point 11@ 12@ radius 0.5 0.5 on_foot

repeat
if
30@ == 1
then
0001: wait 0 ms
0B56: set_game_key 1 state -128
11@ = 1955.2632
12@ = 191.7564
0AB1: call_scm_func @GoToCoords 2 11@ 12@
end 
until 00ED:   actor $PLAYER_ACTOR sphere 0 near_point 11@ 12@ radius 0.5 0.5 on_foot

while true
wait 0
0C72: set_virtual_key 13 down true // æìåì åíòåð
wait 500
0C72: set_virtual_key 13 down false // îòæèìàåì
if or
0C5D: samp textdraw 270 is_exists
0C5D: samp textdraw 271 is_exists
0C5D: samp textdraw 272 is_exists
0C5D: samp textdraw 273 is_exists
0C5D: samp textdraw 274 is_exists
0C5D: samp textdraw 275 is_exists
0C5D: samp textdraw 276 is_exists
0C5D: samp textdraw 277 is_exists
then
call @TextDrawClicker 0
else

repeat
if 30@ == 1
then
0001: wait 0 ms
0B56: set_game_key 1 state -128
11@ = 1916.0692
12@ = 172.0714
0AB1: call_scm_func @GoToCoords 2 11@ 12@
end 
until 00ED:   actor $PLAYER_ACTOR sphere 0 near_point 11@ 12@ radius 0.5 0.5 on_foot

repeat
if 30@ == 1
then
0001: wait 0 ms
0B56: set_game_key 1 state -128
11@ = 1913.6207
12@ = 164.8409
0AB1: call_scm_func @GoToCoords 2 11@ 12@
end 
until 00ED:   actor $PLAYER_ACTOR sphere 0 near_point 11@ 12@ radius 0.5 0.5 on_foot

end
end

end
end

:GoToCoords
00A0: store_actor $PLAYER_ACTOR position_to 2@ 3@ 4@
0063: 0@ -= 2@ // (float)
0063: 1@ -= 3@ // (float)
0604: get_Z_angle_for_point 0@ 1@ store_to 5@
0173: set_actor $PLAYER_ACTOR Z_angle_to 5@
02EB: restore_camera_with_jumpcut
0AB2: ret 0                                    
                     
:TextDrawClicker
04D7: set_actor $PLAYER_ACTOR locked true
repeat      // ïîâòîðÿåì íàæèòèå åíòåð è êëèêàåì ïî ÿáëîêàì, ïîêà èõ íå áóäåò
wait 0
0C72: set_virtual_key 13 down true
wait 500
0C72: set_virtual_key 13 down false
0209: 16@ = random_int_in_ranges 270 279
0BCA: samp send_click_textdraw 16@
wait 3000
until 0C5D: samp textdraw 16@ is_exists
04D7: set_actor $PLAYER_ACTOR locked false
0BCA: samp send_click_textdraw 2069
ret 0
             
:On
wait 0
0B12: 30@ = 30@ XOR 1
cmdret
что такое? проверяет существование текстдравов и, если они существуют, вызывает функцию клика на текстдрав, но когда он добегает до определенных координат, после которых идет проверка и вызов функции, в первый раз нажимает ентер, чтоб войти в меню с текстдравами, а второй раз и последующие просто бегает, и в первый раз не жмет на текстдравы, хотя они существуют
 

Qsany

Потрачен
464
147
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Для самых маленьких:
Почему сдесь цвет жёлтый, а не серый?
ugvqOyv.jpg

CLEO:
0A8C: write_memory 12235312 size 4 value 969696 virtual_protect 1
0001: wait 100 ms

B60TH9x.jpg
 

hnnssy

Известный
Друг
2,684
2,750
потому что цвет нужно указывать в 16-тиричном виде, и про альфу не забудь.
 

D3.Pheonix

🎹
Модератор
2,819
1,597
Не могу допереть, есть генератор?
Конвертер Цветов Онлайн — HEX ⇒ RGB ⇒ RGBA ⇒ CMYK ⇒ HSL ⇒ HSLA ⇒ HSB ⇒ HSV ⇒ XYZ ⇒ LAB. Калькулятор цветов HTML. Генератор цветов CSS3 — ColorScheme.Ru(https://colorscheme.ru/color-converter.html)
Да можно и в фотошопе, копируешь hex код цвета и слева дописываешь альфу, типа FF ,например 0xFFFF0000 - непрозрачный красный
 

Kristyan

Известный
165
16
Как я могу сравнить 3@v с INF?

CLEO:
{$CLEO}
0000:

repeat
wait 0
until SAMP.Available()

const
INF = "Infernus"
end

0b34: "car" @cmd
0BDE: pause_thread 0


:cmd
samp.IsCommandTyped(2@)
if
    0AD4: 0@ = scan_string 2@ format "%s" 3@v
then
 if and
 0AD4: 1@ = scan_string 3@v format INF
 1@ == true
 then

 chatmsg "PASSED" -1
 chatmsg "%s" -1 INF

 else
  chatmsg "LOH" -1
  chatmsg "%s" -1 3@v
end
end
SAMP.CmdRet()
 
Последнее редактирование модератором:

Qsany

Потрачен
464
147
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Конвертер Цветов Онлайн — HEX ⇒ RGB ⇒ RGBA ⇒ CMYK ⇒ HSL ⇒ HSLA ⇒ HSB ⇒ HSV ⇒ XYZ ⇒ LAB. Калькулятор цветов HTML. Генератор цветов CSS3 — ColorScheme.Ru(https://colorscheme.ru/color-converter.html)
Да можно и в фотошопе, копируешь hex код цвета и слева дописываешь альфу, типа FF ,например 0xFFFF0000 - непрозрачный красный

CLEO:
0A8C: write_memory 12235312 size 4 value 0xFFde7878 virtual_protect 1

Должен быть таким
keguzRT.jpg


а он такой

cAV7Mmv.jpg
 

D3.Pheonix

🎹
Модератор
2,819
1,597
CLEO:
0A8C: write_memory 12235312 size 4 value 0xFFde7878 virtual_protect 1

Должен быть таким
keguzRT.jpg

а он такой

cAV7Mmv.jpg
Значит там не ARGB, а RGBA, альфу в конец
0xDE7878FF
p.s
так то это всё в interfaceEditor.ini менять можно, без всяких скриптов
 

D3.Pheonix

🎹
Модератор
2,819
1,597
Как я могу сравнить 3@v с INF?

CLEO:
{$CLEO}
0000:

repeat
wait 0
until SAMP.Available()

const
INF = "Infernus"
end

0b34: "car" @cmd
0BDE: pause_thread 0


:cmd
samp.IsCommandTyped(2@)
if
    0AD4: 0@ = scan_string 2@ format "%s" 3@v
then
 if and
 0AD4: 1@ = scan_string 3@v format INF
 1@ == true
 then

 chatmsg "PASSED" -1
 chatmsg "%s" -1 INF

 else
  chatmsg "LOH" -1
  chatmsg "%s" -1 3@v
end
end
SAMP.CmdRet()
помоему 0C14 / 0C21
 

D3.Pheonix

🎹
Модератор
2,819
1,597
Херня полная... И с 0С14 пробовал, с всё что попало пробовал, не чего...

CLEO:
:cmd
samp.IsCommandTyped(2@)
0AD4: 0@ = scan_string 2@ format "%d %s" 5@ 3@v
if     
  0C14: strcmp string1 3@v string2 "Infernus"
then
chatmsg "ID: %d" -1 5@
chatmsg "Car: %s " -1 3@v
end
SAMP.CmdRet()
Чекни @s или
Попробуй не юзать строковую переиенную, а выдели нормально память
 

Dark_Knight

Me, me and me.
Друг
4,065
2,079
0ad4 криво работает со сканами на стринги. Ищи в сниппетах использование sscanf