#2 Re: Вопросы по скриптингу » Вопрос на счет педов. » 01-11-2008 18:51

@PoM14 - Нет. Опкод выглядит так:

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

Только не думай что вставкой одного опкода все получиться.

#3 Re: Модификации » [ SA | WIL] Реалистичная военка. » 01-11-2008 18:29

Ну, собственно, это и не массив...

В качестве индекса массива можно использовать переменную:

var
    0@: Array 10 of Actor
end
0@ = Actor.Create(Mission1, #ARMY, 0,0,0)
1@ = Actor.Create(Mission1, #ARMY, 0,0,0)
//
9@ = Actor.Create(Mission1, #ARMY, 0,0,0)
for 10@ = 0 to 9
    01B2: give_actor 0@[10@] weapon 28 ammo 60 // Load the weapon model before using this 
end

#5 Re: Модификации » [ SA | WIL] Реалистичная военка. » 01-11-2008 17:48

@flashTrash - цитата из хелпа:

Обратите внимание, что расширение указывать не надо.

@Alien - я бы сделал так:

{$CLEO}
0000:
while true
    wait 0
    if
        Player.Defined($PLAYER_CHAR)
    then
        if
            $ONMISSION == 0
        then
            if
                0154:   actor $PLAYER_ACTOR in_zone 'REST'
            then
                0A94: start_custom_mission "area69"
            end
        end
    end
end

#6 Re: Модификации » [ SA | WIL] Реалистичная военка. » 01-11-2008 14:37

То есть если я буду использовать переменную с идентификатором, скажем, $1000000, то она при компиляции запишется как есть? А раз других таких переменных нет, то конфликтов быть не должно?

Максимальная переменная $16383.

кстати когда я сохраняю скрипт в формате .cm он вообще перестает работать

Миссию нужно запустить командой

0A94: start_custom_mission "missions\CustomMission1"

...в потоке нельзя использовать в качестве имени переменную 33@, если размер массива больше 1, так как в потоках максимально допустимая локальная переменная это 33@, а элемент массива 33@ с индексом больше 0 будет за этими границами." 47, очевидно, больше 34...

Это для обычного потока в миссии кол-во локалных переменных равно 1024.

#7 Re: Модификации » [ SA | WIL] Реалистичная военка. » 01-11-2008 12:07

@GTASA - Проверь папку CLEO на наличие дублирующих скриптов. Незабывай загружать/выгружать нужные/ненужные модели.

{$CLEO}
//0A24: enable_military_zones_wanted_level 1
//Actor.PutAt($PLAYER_ACTOR, 148.9585, 1913.5857, 18.861) 
0@ = 0
while true
    wait 0
    if
        Player.Defined($PLAYER_CHAR)
    then
        if and
            0154:   actor $PLAYER_ACTOR in_zone 'REST'
            0@ == 0
        then
            Model.Load(#ARMY)
            Model.Load(#M4)
            Model.Load(#HEATSEEK)
            while true
                wait 0
                if and
                    Model.Available(#ARMY)
                    Model.Available(#M4)
                    Model.Available(#HEATSEEK)
                then
                    Break
                end
            end
            1@ = Actor.Create(Cop, #ARMY, 124.897, 1935.64, 19.269)
            0648: unknown_actor 1@ task_set 200.0 // float 
            0754: define_new_animation_path 
            0755: add_animation_path_3D_coord 124.897 1935.64 19.269 animation "ROADCROSS" IFP_file "PED" 
            0755: add_animation_path_3D_coord 159.0 1887.9 19.5 animation "ROADCROSS" IFP_file "PED" 
            0817: assign_actor 1@ to_animation_path_with_walk_mode 4 route_mode 3 
            074E: unknown_actor 1@ unknown_set 20.0 unknown_flag 1 
            2@ = Actor.Create(Cop, #ARMY, 144.2994, 1895.1399, 20.4459)
            0648: unknown_actor 2@ task_set 200.0 // float 
            0754: define_new_animation_path 
            0755: add_animation_path_3D_coord 144.2994 1895.1399 18.4459 animation "ROADCROSS" IFP_file "PED" 
            0755: add_animation_path_3D_coord 143.9082 1888.4668 18.2511 animation "ROADCROSS" IFP_file "PED" 
            0755: add_animation_path_3D_coord 117.9811 1894.7831 18.4319 animation "ROADCROSS" IFP_file "PED" 
            0755: add_animation_path_3D_coord 101.0116 1898.0337 20.3672 animation "NONE" IFP_file "NONE" 
            0755: add_animation_path_3D_coord 100.8231 1904.0637 22.9922 animation "NONE" IFP_file "NONE"
            0755: add_animation_path_3D_coord 106.8529 1904.1407 25.5 animation "NONE" IFP_file "NONE"
            0755: add_animation_path_3D_coord 106.787 1901.0818 25.4985 animation "NONE" IFP_file "NONE"
            0755: add_animation_path_3D_coord 103.0787 1901.1964 25.4985 animation "NONE" IFP_file "NONE" 
            0817: assign_actor 2@ to_animation_path_with_walk_mode 4 route_mode 3 
            074E: unknown_actor 2@ unknown_set 20.0 unknown_flag 1 
            3@ = Actor.Create(Cop, #ARMY, 22.2487, 1714.717, 22.64)
            0648: unknown_actor 3@ task_set 200.0 // float 
            0754: define_new_animation_path 
            0755: add_animation_path_3D_coord 22.2487 1714.717 22.64 animation "ROADCROSS" IFP_file "PED" 
            0755: add_animation_path_3D_coord 19.0789 1728.839 22.6453 animation "ROADCROSS" IFP_file "PED" 
            0755: add_animation_path_3D_coord 14.2273 1722.347 22.633 animation "ROADCROSS" IFP_file "PED" 
            0755: add_animation_path_3D_coord 5.0802 1725.461 22.6013 animation "ROADCROSS" IFP_file "PED" 
            0755: add_animation_path_3D_coord 5.7044 1711.155 22.5932 animation "ROADCROSS" IFP_file "PED" 
            0817: assign_actor 3@ to_animation_path_with_walk_mode 4 route_mode 3 
            074E: unknown_actor 3@ unknown_set 20.0 unknown_flag 1 
            01B2: give_actor 1@ weapon 31 ammo 6000 // Load the weapon model before using this 
            01B2: give_actor 2@ weapon 31 ammo 6000 // Load the weapon model before using this 
            01B2: give_actor 3@ weapon 36 ammo 6000 // Load the weapon model before using this
            Model.Destroy(#ARMY)
            Model.Destroy(#M4)
            Model.Destroy(#HEATSEEK)
            0@ = 1
        end
        
        if and
            8154:   not actor $PLAYER_ACTOR in_zone 'REST'
            0@ == 1
        then
            Actor.RemoveReferences(1@)
            Actor.RemoveReferences(2@)
            Actor.RemoveReferences(3@)
            0@ = 0
        end
    end
end

#8 Re: Модификации » [ SA | WIL] Реалистичная военка. » 01-11-2008 09:05

А разве могут локальные переменные быть типа Array, я пытался объявить их - но компилятор пишет ошибку...

Могут, объявляешь:

var
    0@: Array 10 of Actor
end

И используешь 0@..9@ как обычно.

Что, если сохранить в .cm-формате можно будет?

Просто увеличится число локальных переменных (0@..1023@).

А насчет переменных 32@, 33@ - это не таймеры никакие. В них лежит информация о том, что какая-либо мина вокруг базы уже взорвалась - они же не многократные...

Это внутриигровые таймеры. Каждую миллисекунду их значение увеличивается на один. Проверь:

{$CLEO}
32@ = 100
33@ = 1000
while true
    wait 0
    03F0: enable_text_draw 1 
    045A: draw_text_1number 5.0 5.0 GXT 'NUMBER' number 32@
    045A: draw_text_1number 5.0 20.0 GXT 'NUMBER' number 33@
end

add:

И вообще имена глобальных переменных я выбрал так, чтобы не перекликались с майном.

Компилятору без разницы какие имена у переменных (кроме тех что в CustomVariables.ini и числовых) для них выбирается первая свободная числовая переменная. Почитай: http://sannybuilder.com/forums/viewtopi … 3747#p3747

GTASA wrote:

Помогите пожалуста, почему я вот создал педов, один появляется у входа на военке, второй - там за углом, а третий должен у ракетниц ходить. Так вот первый появляется там, где надо, второго нету вообще, а третий у забора. Че за фигня?

Используй этот скрипт как базовый (маркеры можешь убрать):

{$CLEO}
0@ = 0
while true
    wait 0
    if
        Player.Defined($PLAYER_CHAR)
    then
        if and
            0154:   actor $PLAYER_ACTOR in_zone 'REST'
            0@ == 0
        then
            #ARMY.Load
            while not #ARMY.Available
                wait 0
            end
            1@ = Actor.Create(Mission1, #ARMY, 124.897, 1935.64, 19.269)
            2@ = Actor.Create(Mission1, #ARMY, 144.2994, 1895.1399, 20.4459)
            3@ = Actor.Create(Mission1, #ARMY, 22.2487, 1714.717, 22.64)
            #ARMY.Destroy
            11@ = Marker.CreateAboveActor(1@)
            12@ = Marker.CreateAboveActor(2@)
            13@ = Marker.CreateAboveActor(3@)
            0@ = 1
        end
        
        if and
            8154:   not actor $PLAYER_ACTOR in_zone 'REST'
            0@ == 1
        then
            Actor.RemoveReferences(1@)
            Actor.RemoveReferences(2@)
            Actor.RemoveReferences(3@)
            Marker.Disable(11@)
            Marker.Disable(12@)
            Marker.Disable(13@)
            0@ = 0
        end
    end
end

#9 Re: Модификации » [ SA | WIL] Реалистичная военка. » 31-10-2008 21:00

Ну какие будут пожелания, предложения, угрозы?

Как обычно, избавиться от глобальных переменных. Как вариант использовать скрипт как миссию.
p.s. 32@ и 33@ это таймеры, т.е. нет смысла хранить в них какие либо данные.

#10 Re: Вопросы по скриптингу » Вопросы по опкодам » 27-10-2008 17:07

@Alien - ставь опкод в цикл все будет работать:

{$CLEO}
0A24: enable_military_zones_wanted_level 1
0@ = Object.Create(3095, 268.664, 1884.06, 15.925)
034D: rotate_object 0@ from_angle 90.0 to_angle 90.0 flag 0 
Actor.PutAt($PLAYER_ACTOR, 271.2008, 1884.6787, 19.029)
while true
    wait 0
    034E: move_object 0@ to 276.14 1884.06 15.924 speed 0.05 0.0 0.0 flag 0
end

#11 Re: Вопросы по скриптингу » Один вопрос » 26-10-2008 18:05

@GTASA -

{$CLEO}
0@ = 0
32@ = 0
while true
    wait 0
    if
        Player.Defined($PLAYER_CHAR)
    then
        if
            Actor.Driving($PLAYER_ACTOR)
        then
            03C0: 1@ = actor $PLAYER_ACTOR car
            if and
                0@ == 0
                32@ >= 150
                0AB0:  key_pressed 0x33
            then
                Model.Load(1301)
                while not Model.Available(1301)
                    wait 0
                end
                2@ = Object.Create(1301, 0, 0, 0)
                Model.Destroy(1301)
                08D2: object 2@ scale_model 0.4 
                0441: 3@ = car 1@ model
                07E4: get_model 3@ dimensions_cornerA_to 5@ 5@ 5@ dimensions_cornerB_to 5@ 4@ 5@
                0681: attach_object 2@ to_car 1@ with_offset 0 4@ 0 rotation 90.0 0 0
                0@ = 1
                32@ = 0 
            end
            if and
                0@ == 1
                32@ >= 150
                0AB0:  key_pressed 0x33
            then
                Object.Destroy(2@)
                Object.RemoveReferences(2@)
                0@ = 0
                32@ = 0    
            end
        else
            if
                03CA:   object 2@ exists
            then
                Object.Destroy(2@)
                Object.RemoveReferences(2@)
                0@ = 0
            end 
        end
    end
end

#12 Re: Вопросы по скриптингу » Один вопрос » 20-10-2008 07:56

@GTASA -

{$CLEO}
0@ = 0
32@ = 0
while true
    wait 0
    if
        Player.Defined($PLAYER_CHAR)
    then
        if and
            0@ == 0
            32@ >= 150
            0AB0:  key_pressed 0x21
        then
            0@ = 1
            32@ = 0
            015D: set_gamespeed 0.1
        end
        if and
            0@ == 1
            32@ >= 150
            0AB0:  key_pressed 0x21
        then
            0@ = 0
            32@ = 0
            015D: set_gamespeed 1.0
        end
    end
end

#13 Re: Модификации » Reload weapon(alpha) » 18-10-2008 12:38

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

{$CLEO}
32@ = 0
while true
    wait 0
    if
        Player.Defined($PLAYER_CHAR)
    then
        if and
            32@ >= 250
            0AB0:  key_pressed 0x73
        then
            32@ = 0
            04ED: load_animation "colt45"
            while 84EE:   not animation "colt45" loaded
                wait 0
            end
            0615: define_AS_pack_begin 1@ 
            0605: actor -1 perform_animation_sequence "colt45_crouchreload" IFP_file "colt45" 4.0 loop 0 0 0 1 time -1 // versionA 
            04EB: AS_actor -1 crouch 1 
            0616: define_AS_pack_end 1@ 
            0618: assign_actor $PLAYER_ACTOR to_AS_pack 1@ 
            061B: remove_references_to_AS_pack 1@
            04EF: release_animation "colt45" 
        end
    end
end

#14 Re: Модификации » Reload weapon(alpha) » 18-10-2008 10:09

после выполнения этих анимаций сиджей все равно встает

{$CLEO}
32@ = 0
while true
    wait 0
    if
        Player.Defined($PLAYER_CHAR)
    then
        if and
            32@ >= 250
            0AB0:  key_pressed 0x73
        then
            32@ = 0
            04ED: load_animation "colt45"
            while 84EE:   not animation "colt45" loaded
                wait 0
            end
            0605: actor $PLAYER_ACTOR perform_animation_sequence "colt45_crouchreload" IFP_file "colt45" 4.0 loop 0 0 0 1 time -1 // versionA 
            04EF: release_animation "colt45" 
        end
    end
end
0605: actor $PLAYER_ACTOR perform_animation_sequence "colt45_crouchreload" IFP_file "colt45" 4.0 loop 0 0 0 1 time -1 // versionA

Смотри предпоследний параметр.

#15 Re: Модификации » Reload weapon(alpha) » 18-10-2008 08:01

@Alien -
1) используй сидячии анимации (colt45_crouchreload, UZI_crouchreload и т.д.)

2)

0652: $STAT_UNLOCKED_CITIES_NUMBER = integer_stat 181
0653: $STAT_FAT = float_stat 21

3)

04EF: release_animation "LOWRIDER"

#16 Re: Вопросы по скриптингу » Один вопрос » 02-10-2008 11:18

@GTASA - 1. Убери отсюда запятые:

0755: add_animation_path_3D_coord -1653.7424, -2241.114, 31.3772 animation "ROADCROSS" IFP_file "PED" 
0755: add_animation_path_3D_coord -1658.8065, -2248.6306, 33.3801 animation "ROADCROSS" IFP_file "PED"

2. В CLEO скриптах нужно использовать id модели (FAQ по CLEO 3):

{$CLEO}
Model.Load(3092)
while not Model.Available(3092)
    wait 0
end
1@ = Object.Create(3092, -1653.7424, -2241.114, 31.3772)
Object.Angle(1@) = 270.0
2@ = Object.Create(3092, 2499.9551, -1675.63, 12.0)
Object.Angle(2@) = 270.0
Model.Destroy(3092)
0A93: end_custom_thread

Такс, как мне заставить этого чела нападать на меня, или на кого-либо другого(например из моей банды и на простых), когда он меня (или кого-либо) заметит или услышит выстрел?

1@ = Actor.Create(Mission1, #WMOTR1, -1658.8065, -2248.6306, 33.3801)
077A: set_actor 1@ acquaintance 4 to_actors_pedtype 0 // see ped.dat

#18 Re: Вопросы по скриптингу » Вопрос на счет педов. » 27-09-2008 13:09

create_thread @MAN не нужен и end_thread замени на 0A93: end_custom_thread:

{$CLEO}
#FAM1.Load
while not #FAM1.Available
    wait 0
end
0@ = Actor.Create(CivMale, #FAM1, 2494.4622, -1680.92, 13.3385)
#FAM1.Destroy
0A93: end_custom_thread

#21 Re: GTA Modding » Question: The behavior numbers? » 04-09-2008 06:41

Nowhere = 0
FollowRoad = 1
KillThePlayer = 2
DriveToPlayer = 4
IgnoreRoadPaths = 8

#22 Re: Вопросы по скриптингу » Вопрос на счет педов. » 29-08-2008 16:14

Seemann wrote:

В SA 0446 не работает. По крайней мере я не нашел, где используется тот флаг, который он устанавливает.

Все отлично работает.

@PoMu4 -

{$CLEO}
0000:
while true
    wait 0
    if
        Player.Defined($PLAYER_CHAR)
    then
        0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@
        if
            1@ <> -1
        then
            0446: set_actor 1@ immune_to_headshots 0 
        end
    end
end

#23 Re: Программирование » Создание DLL в VC++ » 29-08-2008 08:53

library lib;

function Test(N: Integer): Integer; stdcall;
begin
  Result := N;
end;

exports
  Test;

begin
end.
 0AA7: call_function 3@ num_params 1 pop 0 0@ 1@

stdcall функции сами очищают стек.

#24 Re: Модификации » Двигатель » 26-08-2008 13:51

Soul_Hunter wrote:

ну и чё мне с этим делать ?

Установить CLEO.

#25 Re: Вопросы по скриптингу » San Andreas игнорирует скрипты!!!! » 18-08-2008 09:56

@grand - загружать модель для парковки (014B) необязательно.

Board footer

Powered by FluxBB