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

Enjoy

Новичок
Проверенный
164
11
Опытные кодеры, скажите как сделать условие "Если переменная 3 НЕ равна переменной 6, то..."
Я пробывал свой вариант, но выдает ошибку:
Код:
Неверное выражение 3@ == 6@.
Одна из переменных имеет неизвестный тип, либо их типы несовместимы.

Код скрипта:
Код:
{$CLEO}
0000: NOP

repeat
    wait 100
until 0AFA:  is_samp_available

0B34: samp register_client_command "zsave" to_label @zsave

0@ = false // статус

while true // Начало цикла
    wait 0 // Ожидание 0 миллисекунд
    if 0@ == true
    then
        00A0: store_actor $PLAYER_ACTOR position_to 4@ 5@ 6@
        if not 3@ == 6@
        then
            0AF8: samp add_message_to_chat "Вас проверяют" color 0xFF0000
            0@ = false         
        end
    end
end // Конец цикла

:zsave // Начало тела команды
if 0@ == false
then
    0@ = true
    00A0: store_actor $PLAYER_ACTOR position_to 1@ 2@ 3@
    0AF8: samp add_message_to_chat "Проверка включена" color -1
end
0B43: samp cmd_ret // Конец тела команды

Объяви переменные.
var
3@: float
6@: float
end
И неравенство обозначается так: <>

При прицеливании на игрока и последующем нажатии клавиши Z при зажатой клавише прицела, происходит написание команды /knockout.
но ничего этого не происходит. где ошибка?

Вроде так, ты там указатели напутал.
Код:
{$CLEO .cs}

0000:
Thread "KnockOut"

repeat
wait 400
until 0AFA:

while true
wait 0
    if and
        0AD2: 0@ = player $PLAYER_CHAR targeted_actor
        0AB0: key_pressed 90
    then
        0B2B: samp 1@ = get_player_id_by_actor_handle 0@
        0B36: samp 2@ = get_player_nickname 1@
        0AF9: samp say_msg "/knockout %s" 2@
        wait 1000
    end
end
 

Dikson777

Новичок
45
0
Объяви переменные.
var
3@: float
6@: float
end
И неравенство обозначается так: <>



Вроде так, ты там указатели напутал.
Код:
{$CLEO .cs}

0000:
Thread "KnockOut"

repeat
wait 400
until 0AFA:

while true
wait 0
    if and
        0AD2: 0@ = player $PLAYER_CHAR targeted_actor
        0AB0: key_pressed 90
    then
        0B2B: samp 1@ = get_player_id_by_actor_handle 0@
        0B36: samp 2@ = get_player_nickname 1@
        0AF9: samp say_msg "/knockout %s" 2@
        wait 1000
    end
end

А VAR'om объявляется глобальная переменная? Объясни значение
 

Enjoy

Новичок
Проверенный
164
11
А зачем ее объявлять? Другие же переменные не объявляем. Объясни пожалуйста :)
Блядь, ну ты же сам написал в своем посте:

"Одна из переменных имеет неизвестный тип, либо их типы несовместимы."

Голову то включи. Если видишь такое, значит нужно всегда объявлять, СБ же не может за тебя решать какие переменные и для чего они требуются.(Тип)
 

Dikson777

Новичок
45
0
Блядь, ну ты же сам написал в своем посте:

"Одна из переменных имеет неизвестный тип, либо их типы несовместимы."

Голову то включи. Если видишь такое, значит нужно всегда объявлять, СБ же не может за тебя решать какие переменные и для чего они требуются.(Тип)

Воу, тише. Да, я туплю, есть такое, за ответ спасибо :)

Затем чтобы компилятор сам подбирал опкод для для сравнения переменных. Откуда он знает, что там инт или флоат?

Спасибо за понятное объяснение :). Объявлять переменные можно в абсолютно любом месть?
 

Enjoy

Новичок
Проверенный
164
11
Воу, тише. Да, я туплю, есть такое, за ответ спасибо :)



Спасибо за понятное объяснение :). Объявлять переменные можно в абсолютно любом месть?

Ты бы лучше подучил основы, это ведь даже не особенность скриптовых языков.
По сабжу: по-моему, да. Видел какие-то исходники, где там в метках чуть ли не в самом конце скрипта объявляли.
Но нахуй так делать, поэтому по дефолту в начале скрипта прописывать var.
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,447
Ты бы лучше подучил основы, это ведь даже не особенность скриптовых языков.
По сабжу: по-моему, да. Видел какие-то исходники, где там в метках чуть ли не в самом конце скрипта объявляли.
Но нахуй так делать, поэтому по дефолту в начале скрипта прописывать var.
У клео всего 34 переменных. Если поставить в начале скрипта, то это может привести к ошибкам.
 
  • Нравится
Реакции: Enjoy

Enjoy

Новичок
Проверенный
164
11
Куда поставить?
Короче смотри, у тебя там была метка по вызову команды до цикла, её нужно после ставить, попробуй, должно все гуд быть.
Код:
{$CLEO}
{$INCLUDE SF}
const
EVENT_BUTTON_CLICKED = 257
EVENT_COMBOBOX_SELECTION_CHANGED = 513
EVENT_RADIOBUTTON_CHANGED = 769
EVENT_CHECKBOX_CHANGED = 1025
EVENT_SLIDER_VALUE_CHANGED = 1281
EVENT_EDITBOX_STRING = 1537
EVENT_EDITBOX_CHANGE = 1538
EVENT_LISTBOX_ITEM_DBLCLK = 1793
EVENT_LISTBOX_SELECTION = 1794
end
0000:
repeat
wait 300
until 0AFA: is_samp_available
wait 9000
chatmsg "[{fb0000}TP:MENU:YSL{FFFFFF}]:{0bfb00} CLEO by {fb0000}kraft1k" -1
chatmsg "[{fb0000}TP:MENU:YSL{FFFFFF}]:{fb0000} Êîìàíäà - {0bfb00}/ysl" -1

0B34: samp register_client_command "ysl" to_label @dlg_show

0B80: dialog 0@ = create "[YSL:TP:MENU] by kraft1k"
0B84: dialog 0@ set_pos_XY 500 600 size 500 225
if 0B87: dialog 0@ is_visible
then 0B86: dialog 0@ set_visible 0
else 0B86: dialog 0@ set_visible 1
end
0B82: dialog 0@ add_button id 1 text "Çîíà 51" pos_XY 0 0 size 100 30
0B82: dialog 0@ add_button id 2 text "Ñïîðò Çàë ËÑ" pos_XY 0 30 size 120 30
0B82: dialog 0@ add_button id 3 text "Ìýðèÿ" pos_XY 0 60 size 100 30
0B82: dialog 0@ add_button id 4 text "Four Dragons Casino" pos_XY 0 90 size 180 30
0B82: dialog 0@ add_button id 5 text "Àììî ËÑ" pos_XY 0 120 size 100 30
0B82: dialog 0@ add_button id 6 text "LS:PD" pos_XY 0 150 size 100 30
0B82: dialog 0@ add_button id 7 text "Áîëüíèöà ËÑ" pos_XY 0 180 size 120 30
0B82: dialog 0@ add_button id 8 text "Áîëüíèöà ÑÔ" pos_XY 120 180 size 120 30
0B82: dialog 0@ add_button id 9 text "ÌÎÉ ÑÏÀÂÍ" pos_XY 240 180 size 120 30
0B82: dialog 0@ add_button id 10 text "Êðóòîé Äîì" pos_XY 100 0 size 120 30
0B82: dialog 0@ add_button id 11 text "The KillerS" pos_XY 220 0 size 120 30
0B82: dialog 0@ add_button id 12 text "Àììî ÑÔ" pos_XY 100 120 size 120 30
0B82: dialog 0@ add_button id 13 text "Casino Rich" pos_XY 180 90 size 120 30
0B82: dialog 0@ add_button id 14 text "Àììî ËÂ" pos_XY 220 120 size 120 30
0B82: dialog 0@ add_button id 15 text "SF:PD" pos_XY 100 150 size 100 30
0B82: dialog 0@ add_button id 17 text "Street Racers" pos_XY 340 0 size 140 30

while true
wait 0
if 0B81: dialog 0@ pop_event_to 1@ control_id_to 2@
then
if 1@ == EVENT_BUTTON_CLICKED
then
if 2@ == 1
then
Actor.Angle($PLAYER_ACTOR) = -90.0
select_interior 6
0860: link_actor $PLAYER_ACTOR to_interior 6
Actor.PutAt($PLAYER_ACTOR, 316.524993,-167.706985,998.593750)
end
if 2@ == 2
then
Actor.Angle($PLAYER_ACTOR) = -90.0
select_interior 5
0860: link_actor $PLAYER_ACTOR to_interior 5
Actor.PutAt($PLAYER_ACTOR, 772.111999,-3.898649,1000.728820)
end
if 2@ == 3
then
Actor.Angle($PLAYER_ACTOR) = -90.0
select_interior 3
0860: link_actor $PLAYER_ACTOR to_interior 3
Actor.PutAt($PLAYER_ACTOR, 384.808624,173.804992,1008.382812)
end
if 2@ == 4
then
Actor.Angle($PLAYER_ACTOR) = -90.0
select_interior 10
0860: link_actor $PLAYER_ACTOR to_interior 10
Actor.PutAt($PLAYER_ACTOR, 2009.4140,1017.8990,994.4680)
end
if 2@ == 5
then
Actor.Angle($PLAYER_ACTOR) = -90.0
select_interior 1
0860: link_actor $PLAYER_ACTOR to_interior 1
Actor.PutAt($PLAYER_ACTOR, 286.148986,-40.644397,1001.515625)
end
if 2@ == 6
then
Actor.Angle($PLAYER_ACTOR) = -90.0
select_interior 6
0860: link_actor $PLAYER_ACTOR to_interior 6
Actor.PutAt($PLAYER_ACTOR, 246.783996,63.900199,1003.640625)
end
if 2@ == 7
then
Actor.Angle($PLAYER_ACTOR) = -90.0
select_interior 4
0860: link_actor $PLAYER_ACTOR to_interior 4
Actor.PutAt($PLAYER_ACTOR, 464.1356 151.9879 1039.1078)
end
if 2@ == 8
then
Actor.Angle($PLAYER_ACTOR) = -90.0
select_interior 6
0860: link_actor $PLAYER_ACTOR to_interior 6
Actor.PutAt($PLAYER_ACTOR, 464.1356 151.9879 1039.1078)
end
if 2@ == 9
then
samp.SendSpawn($PLAYER_ACTOR)
end
if 2@ == 10
then
Actor.Angle($PLAYER_ACTOR) = -90.0
select_interior 47
0860: link_actor $PLAYER_ACTOR to_interior 47
Actor.PutAt($PLAYER_ACTOR, 1257.9557, -612.1636, 1000.9794)
end
if 2@ == 11
then
Actor.Angle($PLAYER_ACTOR) = -90.0
select_interior 3
0860: link_actor $PLAYER_ACTOR to_interior 3
Actor.PutAt($PLAYER_ACTOR, 964.106994,-53.205497,1001.124572)
end
if 2@ == 12
then
Actor.Angle($PLAYER_ACTOR) = -90.0
select_interior 4
0860: link_actor $PLAYER_ACTOR to_interior 4
Actor.PutAt($PLAYER_ACTOR, 289.72, -83.2191, 1000.5156)
end
if 2@ == 14
then
Actor.Angle($PLAYER_ACTOR) = -90.0
select_interior 7
0860: link_actor $PLAYER_ACTOR to_interior 7
Actor.PutAt($PLAYER_ACTOR, 312.7627, -138.298, 998.6016)
end
if 2@ == 13
then
Actor.Angle($PLAYER_ACTOR) = -90.0
select_interior 12
0860: link_actor $PLAYER_ACTOR to_interior 12
Actor.PutAt($PLAYER_ACTOR, 1133.3331, -12.9579, 999.6797)
end
if 2@ == 15
then
Actor.Angle($PLAYER_ACTOR) = -90.0
select_interior 10
0860: link_actor $PLAYER_ACTOR to_interior 10
Actor.PutAt($PLAYER_ACTOR, 223.4759, 121.0754, 999.0792)
end
if 2@ == 17
then
Actor.Angle($PLAYER_ACTOR) = -90.0
select_interior 18
0860: link_actor $PLAYER_ACTOR to_interior 18
Actor.PutAt($PLAYER_ACTOR, -225.4303, 1403.0435, 26.7734)
end


end
end
end

:dlg_show
if 0B87: dialog 0@ is_visible
then 
0B86: dialog 0@ set_visible 0
0B5D: samp toggle_cursor 0
else 
0B86: dialog 0@ set_visible 1
0B5D: samp toggle_cursor 1
end
SAMP.CmdRet
Вроде как-то так.
Дак куда ставить?
Если ты будешь использовать больше 34 переменных, то тебе понадобится объявлять в метках о переменных(локальные).
Иначе же смело ебашь в начале скрипта.
 

m0zeratus

Новичок
8
0
Вроде так, ты там указатели напутал.
Код:
        0B2B: samp 1@ = get_player_id_by_actor_handle 0@
        0B36: samp 2@ = get_player_nickname 1@
        0AF9: samp say_msg "/knockout %s" 2@
благодарю за помощь, но на сервер не отправляет команду " /knockout ID ", где ID = ник игрока, который определен опкодом 0B36 строчкой выше. ну или ид игрока, а не ник. отправляет пустую команду /knockout
можешь еще помочь чуточку? :/
 

hnnssy

Известный
Друг
2,684
2,744
благодарю за помощь, но на сервер не отправляет команду " /knockout ID ", где ID = ник игрока, который определен опкодом 0B36 строчкой выше. ну или ид игрока, а не ник. отправляет пустую команду /knockout
можешь еще помочь чуточку? :/
0AF9: samp say_msg "/knockout %d" 2@
 

Enjoy

Новичок
Проверенный
164
11

Во, щас короче должно все ок быть.
Код:
{$CLEO}
{$INCLUDE SF}

0000:

const
    EVENT_BUTTON_CLICKED = 257
    EVENT_COMBOBOX_SELECTION_CHANGED = 513
    EVENT_RADIOBUTTON_CHANGED = 769
    EVENT_CHECKBOX_CHANGED = 1025
    EVENT_SLIDER_VALUE_CHANGED = 1281
    EVENT_EDITBOX_STRING = 1537
    EVENT_EDITBOX_CHANGE = 1538
    EVENT_LISTBOX_ITEM_DBLCLK = 1793
    EVENT_LISTBOX_SELECTION = 1794
end

repeat
wait 400
until 0AFA:

chatmsg "[{fb0000}TP:MENU:YSL{FFFFFF}]:{0bfb00} CLEO by {fb0000}kraft1k" -1
chatmsg "[{fb0000}TP:MENU:YSL{FFFFFF}]:{fb0000} Êîìàíäà - {0bfb00}/ysl" -1

0B80: dialog 0@ = create "[YSL:TP:MENU] by kraft1k"
0B84: dialog 0@ set_pos_XY 500 600 size 500 225

0B82: dialog 0@ add_button id 1 text "Çîíà 51" pos_XY 0 0 size 100 30
0B82: dialog 0@ add_button id 2 text "Ñïîðò Çàë ËÑ" pos_XY 0 30 size 120 30
0B82: dialog 0@ add_button id 3 text "Ìýðèÿ" pos_XY 0 60 size 100 30
0B82: dialog 0@ add_button id 4 text "Four Dragons Casino" pos_XY 0 90 size 180 30
0B82: dialog 0@ add_button id 5 text "Àììî ËÑ" pos_XY 0 120 size 100 30
0B82: dialog 0@ add_button id 6 text "LS:PD" pos_XY 0 150 size 100 30
0B82: dialog 0@ add_button id 7 text "Áîëüíèöà ËÑ" pos_XY 0 180 size 120 30
0B82: dialog 0@ add_button id 8 text "Áîëüíèöà ÑÔ" pos_XY 120 180 size 120 30
0B82: dialog 0@ add_button id 9 text "ÌÎÉ ÑÏÀÂÍ" pos_XY 240 180 size 120 30
0B82: dialog 0@ add_button id 10 text "Êðóòîé Äîì" pos_XY 100 0 size 120 30
0B82: dialog 0@ add_button id 11 text "The KillerS" pos_XY 220 0 size 120 30
0B82: dialog 0@ add_button id 12 text "Àììî ÑÔ" pos_XY 100 120 size 120 30
0B82: dialog 0@ add_button id 13 text "Casino Rich" pos_XY 180 90 size 120 30
0B82: dialog 0@ add_button id 14 text "Àììî ËÂ" pos_XY 220 120 size 120 30
0B82: dialog 0@ add_button id 15 text "SF:PD" pos_XY 100 150 size 100 30
0B82: dialog 0@ add_button id 17 text "Street Racers" pos_XY 340 0 size 140 30
0B86: dialog 0@ set_visible 0

0B34: samp register_client_command "ysl" to_label @dlg_show

while true
wait 0

    if 3@ == 1
    then
        0B5D: samp toggle_cursor 1
        if 0B81: dialog 0@ pop_event_to 1@ control_id_to 2@
        then
            if 1@ == EVENT_BUTTON_CLICKED
            then
                if 2@ == 1
                then
                    Actor.Angle($PLAYER_ACTOR) = -90.0
                    select_interior 6
                    0860: link_actor $PLAYER_ACTOR to_interior 6
                    Actor.PutAt($PLAYER_ACTOR, 316.524993,-167.706985,998.593750)
                end
                if 2@ == 2
                then
                    Actor.Angle($PLAYER_ACTOR) = -90.0
                    select_interior 5
                    0860: link_actor $PLAYER_ACTOR to_interior 5
                    Actor.PutAt($PLAYER_ACTOR, 772.111999,-3.898649,1000.728820)
                end
                if 2@ == 3
                then
                    Actor.Angle($PLAYER_ACTOR) = -90.0
                    select_interior 3
                    0860: link_actor $PLAYER_ACTOR to_interior 3
                    Actor.PutAt($PLAYER_ACTOR, 384.808624,173.804992,1008.382812)
                end
                if 2@ == 4
                then
                    Actor.Angle($PLAYER_ACTOR) = -90.0
                    select_interior 10
                    0860: link_actor $PLAYER_ACTOR to_interior 10
                    Actor.PutAt($PLAYER_ACTOR, 2009.4140,1017.8990,994.4680)
                end
                if 2@ == 5
                then
                    Actor.Angle($PLAYER_ACTOR) = -90.0
                    select_interior 1
                    0860: link_actor $PLAYER_ACTOR to_interior 1
                    Actor.PutAt($PLAYER_ACTOR, 286.148986,-40.644397,1001.515625)
                end
                if 2@ == 6
                then
                    Actor.Angle($PLAYER_ACTOR) = -90.0
                    select_interior 6
                    0860: link_actor $PLAYER_ACTOR to_interior 6
                    Actor.PutAt($PLAYER_ACTOR, 246.783996,63.900199,1003.640625)
                end
                if 2@ == 7
                then
                    Actor.Angle($PLAYER_ACTOR) = -90.0
                    select_interior 4
                    0860: link_actor $PLAYER_ACTOR to_interior 4
                    Actor.PutAt($PLAYER_ACTOR, 464.1356 151.9879 1039.1078)
                end
                if 2@ == 8
                then
                    Actor.Angle($PLAYER_ACTOR) = -90.0
                    select_interior 6
                    0860: link_actor $PLAYER_ACTOR to_interior 6
                    Actor.PutAt($PLAYER_ACTOR, 464.1356 151.9879 1039.1078)
                end
                if 2@ == 9
                then
                    samp.SendSpawn($PLAYER_ACTOR)
                end
                if 2@ == 10
                then
                    Actor.Angle($PLAYER_ACTOR) = -90.0
                    select_interior 47
                    0860: link_actor $PLAYER_ACTOR to_interior 47
                    Actor.PutAt($PLAYER_ACTOR, 1257.9557, -612.1636, 1000.9794)
                end
                if 2@ == 11
                then
                    Actor.Angle($PLAYER_ACTOR) = -90.0
                    select_interior 3
                    0860: link_actor $PLAYER_ACTOR to_interior 3
                    Actor.PutAt($PLAYER_ACTOR, 964.106994,-53.205497,1001.124572)
                end
                if 2@ == 12
                then
                    Actor.Angle($PLAYER_ACTOR) = -90.0
                    select_interior 4
                    0860: link_actor $PLAYER_ACTOR to_interior 4
                    Actor.PutAt($PLAYER_ACTOR, 289.72, -83.2191, 1000.5156)
                end
                if 2@ == 14
                then
                    Actor.Angle($PLAYER_ACTOR) = -90.0
                    select_interior 7
                    0860: link_actor $PLAYER_ACTOR to_interior 7
                    Actor.PutAt($PLAYER_ACTOR, 312.7627, -138.298, 998.6016)
                end
                if 2@ == 13
                then
                    Actor.Angle($PLAYER_ACTOR) = -90.0
                    select_interior 12
                    0860: link_actor $PLAYER_ACTOR to_interior 12
                    Actor.PutAt($PLAYER_ACTOR, 1133.3331, -12.9579, 999.6797)
                end
                if 2@ == 15
                then
                    Actor.Angle($PLAYER_ACTOR) = -90.0
                    select_interior 10
                    0860: link_actor $PLAYER_ACTOR to_interior 10
                    Actor.PutAt($PLAYER_ACTOR, 223.4759, 121.0754, 999.0792)
                end
                if 2@ == 17
                then
                    Actor.Angle($PLAYER_ACTOR) = -90.0
                    select_interior 18
                    0860: link_actor $PLAYER_ACTOR to_interior 18
                    Actor.PutAt($PLAYER_ACTOR, -225.4303, 1403.0435, 26.7734)
                end


            end
        end
    end
end

:dlg_show
wait 0
0B12: 3@ = 3@ XOR 1
if 3@ == 1
then
    0B86: dialog 0@ set_visible 1
else
    0B86: dialog 0@ set_visible 0
    0B5D: samp toggle_cursor 0
end
SAMP.CmdRet

Легенд, кстати, почему тогл курсор не работает в метке?
Почему-то всегда казалось, что его можно юзать один раз при включении скрипта самого.