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

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,961
пихает в 0@ строку, а надо integer
Он вроде указатель пихает в 0@. Проблема тут скорее в том, что машине которую ты хочешь дать скорость просто нет. Если хочешь дать своей машине скорость, то надо так:


PHP:
03C0: 31@ = actor $PLAYER_ACTOR car
04BA: set_car 31@ speed_to 20.0
 

Vovich

HOT
Проверенный
717
197
Сделал вот так, ограничения по скорости таки не добился...
Код:
{$CLEO .cs}
0000:

0B34: samp register_client_command "test" to_label @cmd

while true
wait 0
if 22@ == 1
then
03C0: 31@ = actor $PLAYER_ACTOR car
00AD: set_car 31@ max_speed_to 20.0
end
end

:cmd
22@ = 1
SAMP.CmdRet()
 

Zaxar_D

Известный
53
5
Вообщем, вот скрипт. Когда я прицеливаюсь и нажимаю опредёленную клавишу, то игроку даётся вирт. мир или ганы с хп.
Но когда меня убью, то при нажатии на клавишу(в моём случае R и G) игроку убившему меня выдается то что выдаётся при прицеливании. Это надо исправить. Пытался чистить память после смерти, не помогает.
Код:
{$CLEO .cs}   
//-------------MAIN--------------- 
      
thread "Lev"      
    
29@ = SAMP.Base()      
wait 400      
SAMP.Available   
jf @Lev_121    

0AC8: 11@ = allocate_memory_size 4 //Ò.ê â ID ìàêñèìóì 4 ïåðåìåííûå
0AC8: 10@ = allocate_memory_size 4 //Ò.ê â ID ìàêñèìóì 4 ïåðåìåííûå

:Dead
wait 0
if
Actor.Dead($PLAYER_ACTOR)
0AC9: free_allocated_memory 10@
0AC9: free_allocated_memory 11@
jump @dead
    
:Lev_121
wait 0      
if and      
0AD2: 29@ = player $0[2] targeted_actor    
key_down 82     
jf @Lev_122
10@ = SAMP.GetSAMPPlayerIDByActorHandle(29@)
if
Player.Defined($PLAYER_CHAR) 
0AF9: "/setvw %d 1" 10@
wait 500                          
jump @Lev_121 

:Lev_122
wait 0      
if and      
0AD2: 29@ = player $0[2] targeted_actor    
key_down 71     
jf @Lev_121
11@ = SAMP.GetSAMPPlayerIDByActorHandle(29@)
if
Player.Defined($PLAYER_CHAR) 
0AF9: "/givegun %d 24 999" 11@
0AF9: "/givegun %d 25 999" 11@
0AF9: "/givegun %d 31 999" 11@
0AF9: "/givegun %d 31 999" 11@
0AF9: "/givegun %d 33 999" 11@
0AF9: "/sethp %d 120" 11@
wait 500                          
jump @Lev_122
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Мусор.
Выделение памяти для чего? Не для чего ведь.
Не дописываешь условия if. К примеру, в Dead, или проверка загрузки структур SAMP'а в начале кода.
Код в метке Dead вряд ли вообще будет выполняться когда-то.

Та же проверка Player.Defined, она ни к чему. Она будет возвращать true уже после загрузки SAMP'а.
 

Zaxar_D

Известный
53
5
Код:
{$CLEO .cs}
//-------------MAIN---------------

thread "Lev"

29@ = SAMP.Base()
wait 400
SAMP.Available
jf @Lev_121

:Lev_121
wait 0
if and
0AD2: 29@ = player $0[2] targeted_actor
key_down 82
jf @Lev_122
10@ = SAMP.GetSAMPPlayerIDByActorHandle(29@)
jf @Dead
0AF9: "/setvw %d 1" 10@
wait 500
jump @Lev_121

:Lev_122
wait 0
if and
0AD2: 29@ = player $0[2] targeted_actor
key_down 71
jf @Lev_121
11@ = SAMP.GetSAMPPlayerIDByActorHandle(29@)
jf @Dead
0AF9: "/givegun %d 24 999" 11@
0AF9: "/givegun %d 25 999" 11@
0AF9: "/givegun %d 31 999" 11@
0AF9: "/givegun %d 31 999" 11@
0AF9: "/givegun %d 33 999" 11@
0AF9: "/sethp %d 120" 11@
wait 500
jump @Lev_122

:Dead
wait 0
if
Actor.Dead($PLAYER_ACTOR)
else_jump @Lev_121
Так?
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Ты код скопировал откуда-то? Я думаю, что ты нихера не понимаешь и суешь части кода куда попало...
 

Zaxar_D

Известный
53
5
Ты код скопировал откуда-то? Я думаю, что ты нихера не понимаешь и суешь части кода куда попало...
:-\
Ничего я не копировал, просто понять не могу как исправить этот баг.
Вроде сделал как ты сказал, помоги друг :friends:!
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Ошибки насчет кода:
  1. Проверка инициализации структур SAMP'а(нужно проверять в цикле);
  2. jf @Dead(jf используется тогда, когда при использовании условия возвратило false. А ты просто вставил, перед ним нет условия);
  3. Метка Dead незавершенная. Если там будет выполняться код и если игрок мертв, то будет вылет.

Код:
{$CLEO}

0001: wait 0 ms

repeat
    wait 400
until SAMP.Available()

while true
    wait 0
    if and
        8118: NOT actor $PLAYER_ACTOR dead
        0AD2: 0@ = player $PLAYER_CHAR targeted_actor
    then
        1@ = SAMP.GetSAMPPlayerIDByActorHandle(0@)
        if 1@ <> -1
        then
            if key_down 82
            then
                0AF9: "/setvw %d 1" 1@

                call @key_unpress 1 key 82
            end
           
            if key_down 71
            then
                0AF9: "/givegun %d 24 999" 1@
                0AF9: "/givegun %d 25 999" 1@
                0AF9: "/givegun %d 31 999" 1@
                0AF9: "/givegun %d 31 999" 1@
                0AF9: "/givegun %d 33 999" 1@
                0AF9: "/sethp %d 120" 1@

                call @key_unpress 1 key 71
            end
        end
    end                                                      
end

:key_unpress
while key_down 0@
    wait 0
end
ret 0
 

Zaxar_D

Известный
53
5
Ошибки насчет кода:

  1. Проверка инициализации структур SAMP'а(нужно проверять в цикле);
    jf @Dead(jf используется тогда, когда при использовании условия возвратило false. А ты просто вставил, перед ним нет условия);
    Метка Dead незавершенная. Если там будет выполняться код и если игрок мертв, то будет вылет.

Код:
{$CLEO}

0001: wait 0 ms

repeat
    wait 400
until SAMP.Available()

while true
    wait 0
    if and
        8118: NOT actor $PLAYER_ACTOR dead
        0AD2: 0@ = player $PLAYER_CHAR targeted_actor
    then
        1@ = SAMP.GetSAMPPlayerIDByActorHandle(0@)
        if 1@ <> -1
        then
            if key_down 82
            then
                0AF9: "/setvw %d 1" 1@

                call @key_unpress 1 key 82
            end
          
            if key_down 71
            then
                0AF9: "/givegun %d 24 999" 1@
                0AF9: "/givegun %d 25 999" 1@
                0AF9: "/givegun %d 31 999" 1@
                0AF9: "/givegun %d 31 999" 1@
                0AF9: "/givegun %d 33 999" 1@
                0AF9: "/sethp %d 120" 1@

                call @key_unpress 1 key 71
            end
        end
    end                                                     
end

:key_unpress
while key_down 0@
    wait 0
end
ret 0
Ох уж этот тру код :D
В этом случае надо было не прыгать по меткам, а просто проверить смерть актёра?
За помощь спасибо :)
 

spiceman

GOWNIK <3
104
35
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Но если юзать тот то после активации просто авто начинает само ехать прямо с заданой скорость.
братан, смотри, узнаешь скорость тачки, если больше предела, то ставишь максимально возможную скорость
PHP:
//
while true

    const
        MAX_VEHICLE_SPEED = 20.0
    end

    02E3: get_car_speed 0@ store_to 1@

    if 1@ > MAX_VEHICLE_SPEED
    then 04BA: set_car_forward_speed 0@ to MAX_VEHICLE_SPEED
    end

end
//
 
Последнее редактирование:
  • Нравится
Реакции: Niko

Julia

Больше нет с нами
369
53
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
как скрыть туризмо вырезать или удалить на сервере чтобы не видно было хотяб визуально и чтоб не спавнилась а то она крашит?

это не помогло
смена радиуса тоже не помогла

Код:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .CS}

//-------------MAIN---------------
0000: NOP

:NONAME_2
wait 0

:NONAME_6
Actor.StorePos($PLAYER_ACTOR, 0@, 1@, 2@)
0AE2: 3@ = random_vehicle_near_point 0@ 1@ 2@ in_radius 500.0 find_next 1 pass_wrecked 1 //IF and SET
else_jump @NONAME_2
   Car.Model(3@) == #TURISMO
else_jump @NONAME_6
Car.Destroy(3@)
jump @NONAME_6
 

MISTER_GONWIK

Всефорумный гонщик
Всефорумный модератор
1,260
1,738
как скрыть туризмо вырезать или удалить на сервере чтобы не видно было хотяб визуально и чтоб не спавнилась а то она крашит?

это не помогло
смена радиуса тоже не помогла

Код:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .CS}

//-------------MAIN---------------
0000: NOP

:NONAME_2
wait 0

:NONAME_6
Actor.StorePos($PLAYER_ACTOR, 0@, 1@, 2@)
0AE2: 3@ = random_vehicle_near_point 0@ 1@ 2@ in_radius 500.0 find_next 1 pass_wrecked 1 //IF and SET
else_jump @NONAME_2
   Car.Model(3@) == #TURISMO
else_jump @NONAME_6
Car.Destroy(3@)
jump @NONAME_6
такие вещи тебе не помогут, надо ставить хук на рпц создания машины и если это turismo, игнорировать рпц
 

Julia

Больше нет с нами
369
53
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.