#51 Re: Вопросы по скриптингу » Заморозка патронов » 19-06-2008 06:10

{$CLEO}
0@ = 0
while true
    wait 0
    if
        Player.Defined($PLAYER_CHAR)
    then
        if and
            0@ == 0
            0AB0:  key_pressed 0x73
        then
            0@ = 1
            0A8C: write_memory 0x0073FA85 size 1 value 0x90 virtual_protect 1
            0A8C: write_memory 0x0073FAAF size 1 value 0x90 virtual_protect 1
            0A8C: write_memory 0x0073FAB0 size 2 value 0x9090 virtual_protect 1
            0A8C: write_memory 0x007428AF size 1 value 0x90 virtual_protect 1
            0A8C: write_memory 0x007428E6 size 1 value 0x90 virtual_protect 1
            0A8C: write_memory 0x007428E7 size 2 value 0x9090 virtual_protect 1
            wait 150
        end
        if and
            0@ == 1
            0AB0:  key_pressed 0x73
        then
            0@ = 0
            0A8C: write_memory 0x0073FA85 size 1 value 0x48 virtual_protect 1
            0A8C: write_memory 0x0073FAAF size 1 value 0xFF virtual_protect 1
            0A8C: write_memory 0x0073FAB0 size 2 value 0x0C4E virtual_protect 1
            0A8C: write_memory 0x007428AF size 1 value 0x48 virtual_protect 1
            0A8C: write_memory 0x007428E6 size 1 value 0xFF virtual_protect 1
            0A8C: write_memory 0x007428E7 size 2 value 0x0C4E virtual_protect 1
            wait 150
        end
    end
end

#52 Re: Вопросы по скриптингу » Помогите с актёрами » 05-06-2008 12:48

05D3: AS_actor $PLAYER_ACTOR goto_point 681.8004 -474.1063 15.5363 mode 4 3000 ms // versionA

1 параметр - переменная актера;
2, 3, 4 параметры - координаты места назначения;
5 параметр - если 4 идет, если 6 - бежит, 7 - бежит еще быстрее;
6 параметр - время в течении которого актер идет/бежит, если -1 ограничения по времени нет.
05D3 - идет/бежит напрямую; 05F5, 0603 - идет/бежит по дорогам.

#53 Re: Вопросы по скриптингу » Помогите с актёрами » 05-06-2008 12:22

@V!RU$ -

05D3: AS_actor $PLAYER_ACTOR goto_point 681.8004 -474.1063 15.5363 mode 4 3000 ms // versionA 
05F5: AS_actor 43@ goto_point 2516.686 -1675.861 13.1227 mode 4 5500 ms // versionB 
0603: AS_actor 65@(48@,3i) goto 2493.82 -1669.91 12.8 mode 7 timelimit -1 // versionC 
0637: AS_actor -1 goto 2075.15 -1363.85 23.85 mode 6 turn_radius 0.5 stop_radius 5.0 look_at_actor $PLAYER_ACTOR 
06C2: AS_actor -1 goto -1762.369 951.1278 23.7487 mode 4 turn_radius 1.0 stop_radius 1.0 actor 37@ with_offset 0.0 0.0 0.0

#54 Re: Модификации » [SA | WIP] Minigun » 04-06-2008 11:42

if and
    0AB0:   key_pressed 17
    0AB0:   key_pressed 53
then
    // ...
end

#55 Re: Вопросы по скриптингу » INTEGER vs FLOAT » 04-06-2008 11:30

Выводить на экран можно только целые числа, чтобы вывести дробное число его нужно представить в виде двух целых чисел, одно число будет отвечать за целую часть, другое за дробную. Вот код для вывода дробного числа (в 0@), в 2@ запишется целая часть в 0@ дробная, для вывода на экран нужно использовать строку вида "~1~.~1~".

008E: 1@ = float 0@ to_integer // 2@ 0@
0085: 2@ = 1@ // (int) 
1@ *= 1000 // кол-во цифр в дробной части (1000 - 3 цифры)
0@ *= 1000.0 // кол-во цифр в дробной части  (1000 - 3 цифры)
008E: 0@ = float 0@ to_integer
0062: 0@ -= 1@ // (int)
0095: make 0@ absolute_integer
045B: draw_text_2numbers 320.0 390.0 GXT 'TXT' numbers 2@ 0@  // ~1~.~1~

#56 Re: Модификации » [SA | WIP] Minigun » 04-06-2008 08:15

Для начала нужно загрузить модель минигана, а потом уж использовать опкод 01B2. В опкоде 01B9 нужно указать номер оружия, которым нужно вооружить игрока, в данном случае 38.

{$CLEO}
0000:
while true
    wait 250
    if
        Player.Defined($PLAYER_CHAR)
    then
        if
            0AB0:  key_pressed 105
        then
            #MINIGUN.Load
            while not #MINIGUN.Available
                wait 0
            end
            01B2: give_actor $PLAYER_ACTOR weapon 38 ammo 9999 // Load the weapon model before using this
            01B9: set_actor $PLAYER_ACTOR armed_weapon_to 38
            #MINIGUN.Destroy
        end
    end
end

#57 Re: Вопросы по скриптингу » Тюнинг копской тачки. » 03-06-2008 07:00

@Yarik -

#DUMPER
#FIRETRUK
#TRASH
#MULE
#MRWHOOP
#RHINO
#BARRACKS
#MONSTER
#YANKEE
#SKIMMER
#RCBARON
#PATRIOT
#RUSTLER
#DOZER
#BOXVILLE
#BENSON
#JOURNEY
#BEAGLE
#CROPDUST
#STUNT
#PETRO
#RDTRAIN
#SHAMAL
#HYDRA
#CEMENT
#COMBINE
#VORTEX
#FIRELA
#NEVADA
#MONSTERA
#MONSTERB
#DUNERIDE
#AT400
#DFT30
#HOTDOG
#ANDROM
#DODO
#BOXBURG

#58 Re: Модификации » Наемнички:) » 02-06-2008 06:25

Номер оружия можно найти опкодом:

0781: get_weapon_with_ID $AMMU_SELECTED_WEAPON model_to $AMMU_SELECTED_WEAPON_MODEL

---
Точнее наоборот позволяет узнать модель оружия по его ид, но в любом случае это позволяет использовать только один массив, экономя локальные переменные:

{$CLEO}
var
    0@: Array 5 of Integer
    5@: Integer
end
0@ = 29
1@ = 30
2@ = 31
3@ = 33
4@ = 38
while true
    wait 250
    if
        Player.Defined($PLAYER_CHAR)
    then
        if
            0AB0:  key_pressed 90
        then
            0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 5@ closest_ped_to 6@
            if
                6@ > -1
            then
                5@ = Random(0, 5)
                0781: get_weapon_with_ID 0@[5@] model_to 7@
                Model.Load(7@)
                while not Model.Available(7@)
                    wait 0
                end
                0631: put_actor 6@ in_group $PLAYER_GROUP
                01B2: give_actor 6@ weapon 0@[5@] ammo 9999 // Load the weapon model before using this
                Model.Destroy(7@)
            end
        end
        if
            0AB0:  key_pressed 88
        then
            0632: release_group $PLAYER_GROUP 
        end   
    end
end

#59 Re: Вопросы по скриптингу » Добавление машины » 08-05-2008 11:32

да, с wait'ом получилось. А что насчет пути? Почему оно улетает в небо?

Попробуй так:

if
    Actor.InCar($PLAYER_ACTOR, 3@)
then
    Player.CanMove($PLAYER_CHAR) = false
    04BA: set_car 3@ speed_to 20.0
    Car.DriveTo(3@, 1245.465, -2055.352, 59.82913)
    Car.SetMaxSpeed(3@, 30.0)
    00AE: set_car 3@ traffic_behaviour_to 2
    
    while true
        wait 0
        if
            01AF:   car 3@ sphere 0 in_sphere 1245.465 -2055.352 59.82913 radius 3.0 3.0 4.0
        then
            0633: AS_actor $PLAYER_ACTOR exit_car
            Break 
        end 
    end
    
    Player.CanMove($PLAYER_CHAR) = true
end

#60 Re: Вопросы по скриптингу » Добавление машины » 08-05-2008 05:33

@iKtulhu

Как я из этого понял, оно должно ехать ко мне? Но уезжает в хренпойминск

Попробуй убрать:

Car.RemoveReferences(3@)
Actor.RemoveReferences(4@)

видимо из-за этого, сейчас игры нет точно не могу сказать. Проверь находиться ли машина около игрока иди нет, если да то делай ремув.

Ну, и немного по наглею, как можно проверить сел ли игрок именно в этом машину? Которую вызвал тильдой

if
    Actor.InCar($PLAYER_ACTOR, 3@)
then
    // ...
end

#61 Re: Вопросы по скриптингу » Добавление машины » 07-05-2008 19:48

@iKtulhu

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

Сперва ты должен загрузить модель, которую собираешься использовать:

#HMOST.Load

while not #HMOST.Available
 wait 0
end
actor.InCar

Это проверка находиться ли данный актер в машине. Если ты хочешь создать актера в машине используй опкод:

0129: 41@ = create_actor_pedtype 23 model #SPECIAL02 in_car 35@ driverseat

---

create_thread @taxi

// ...

:taxi
while true
    wait 0
    if
        Player.Defined($PLAYER_CHAR)
    then
        if
            0AB0:  key_pressed 0xC0
        then
            #TAXI.Load
            while not #TAXI.Available
                wait 0
            end
            #WFYBU.Load
            while not #WFYBU.Available
                wait 0
            end
            Actor.StorePos($PLAYER_ACTOR, 0@, 1@, 2@)
            0@ += 20.0
            1@ += 1.0
            3@ = Car.Create(#TAXI, 0@, 1@, 2@)
            0129: 4@ = create_actor_pedtype 4 model #WFYBU in_car 3@ driverseat
            Car.SetDriverBehaviour(3@, DriveToPlayer)
            #TAXI.Destroy
            #WFYBU.Destroy
            Car.RemoveReferences(3@)
            Actor.RemoveReferences(4@) 
        end
    end
end

Board footer

Powered by FluxBB