#1 25-07-2013 12:54

oleg_berezov
Registered: 25-07-2013
Posts: 6

Помогите с парковкой в III

Здравствуйте. Весь интернет обшарил, для gta 3 нормального примера не нашел, все для SA.
Просто хочу, чтобы в опредленных координатах спаунились тачки.
Вот что смог сделать на основе некоторых постов и строк из MAIN.SCM:

{$CLEO .cs}

014B: 0@ = init_parked_car_generator #CHEETAH -1 -1 0 alarm 100 door_lock 0 0 10000 at -789.106 302.7411 49.0594 angle -30.0
014C: set_parked_car_generator 0@ cars_to_generate_to 101

014B: 1@ = init_parked_car_generator #CHEETAH -1 -1 0 alarm 100 door_lock 0 0 10000 at 1242.8705 -112.5124 14.4031 angle 90.0
014C: set_parked_car_generator 1@ cars_to_generate_to 101

014B: 2@ = init_parked_car_generator #CHEETAH -1 -1 0 alarm 100 door_lock 0 0 10000 at 167.8421 -1254.3971 32.2764 angle 90.0
014C: set_parked_car_generator 2@ cars_to_generate_to 101

05DC: end_custom_thread

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

Offline

#2 25-07-2013 13:08

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Помогите с парковкой в III

Это не CLEO пишет внутрь сохранения, это особенность работы опкодов 014B. Эти парковки создаются при старте игры и действуют на всем ее протяжении. При сохранении игры парковки в числе прочих объектов - сохраняются.

Если вам нужно создавать машины без сохранения, используйте опкод 00A5

Примеры того, как это сделать, можно найти на форуме, вот сходу пару ссылок
http://sannybuilder.com/forums/viewtopi … 810#p11810
http://sannybuilder.com/forums/viewtopic.php?id=1514
http://sannybuilder.com/forums/viewtopi … 7030#p7030

Offline

#3 25-07-2013 17:17

oleg_berezov
Registered: 25-07-2013
Posts: 6

Re: Помогите с парковкой в III

Спасибо, 00A5 помогло

Last edited by oleg_berezov (25-07-2013 17:18)

Offline

#4 28-07-2013 08:18

oleg_berezov
Registered: 25-07-2013
Posts: 6

Re: Помогите с парковкой в III

Теперь другая проблема. Если я покатаюсь на заспауненой скриптом машине, а потом брошу, то она не пропадает, а будет стоят на том же месте, если я сохраню и загружу игру. Т.е. опять пишет в сэйв.
Говорят, надо использовать опкод 01С3 для снятия "уникальности", но с ним машина не появляется:


{$CLEO .cs}

 wait 0 ms

:LOAD
0247: request_model #STINGER
038B: load_requested_models

:CREATE
wait 0 ms
00D6: if 
0248: model #STINGER available 
004D: jump_if_false @LOAD
   
00A5: 0@ = create_car #STINGER at 882.695 -219.8703 3.0283
0175: set_car 0@ z_angle_to 0.0
0249: release_model #STINGER
01C3: remove_references_to_car 0@ // с этой строкой машина не спаунится. Если убрать, то машина будет уникальной

05DC: end_custom_thread

Не уверен, но возможно она просто пропадает до того, как я до нее доехал.

Last edited by oleg_berezov (28-07-2013 08:29)

Offline

#5 28-07-2013 08:44

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Помогите с парковкой в III

@oleg_berezov -

она просто пропадает до того, как я до нее доехал.

да, так и есть.

надо сделать проверку на то, сел ли игрок в машину, если да, то сделать 01С3 и перейти в начало скрипта на создание машины или завершить скрипт.

{$CLEO .cs}


:LOAD
0247: request_model #STINGER
038B: load_requested_models

:CREATE
wait 0 ms
00D6: if 
0248: model #STINGER available 
004D: jump_if_false @CREATE
   
00A5: 0@ = create_car #STINGER at 882.695 -219.8703 3.0283
0175: set_car 0@ z_angle_to 0.0
0249: release_model #STINGER


while true
    wait 250
    if
        0256:   player $PLAYER_CHAR defined 
    then
        if
            00DB:   actor $PLAYER_ACTOR in_car 0@
        then
            01C3: remove_references_to_car 0@
            break
        end
    end
end
//wait 25000
//jump @LOAD
05DC: end_custom_thread

Last edited by Seemann (28-07-2013 10:07)

Offline

#6 28-07-2013 09:58

oleg_berezov
Registered: 25-07-2013
Posts: 6

Re: Помогите с парковкой в III

Ваш код не компилировался из-за неправильного синтаксиса, вероятно он для SA.

Player.Defined($PLAYER_CHAR) заменил на 0256:   player $PLAYER_CHAR defined
И после двух end-ов добавил еще один.

Проверил, вроде работает. Машины не спаунятся без скрипта и не сохраняются, если бросить их.
Спасибо большое.

Offline

#7 28-07-2013 10:04

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Помогите с парковкой в III

@oleg_berezov - да, писал на ходу, забыл что в GTA3 классов то и нет)) верные замечания. рад, что получилось

Offline

#8 28-07-2013 10:58

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Помогите с парковкой в III

А я в Vice City так делаю, для спавна самолетов MVL:

{$CLEO .cs}
0000:

while true
wait 0
if 
00F5:   player $player_char 0 -1525.995 -1343.5867 14.8445 radius 275.0 275.0 275.0 
then
    if or
    8248:   not model 6091 available 
    8248:   not model 6092 available
    8248:   not model 6093 available
    8248:   not model 6094 available
    then
    Model.Load(6091)
    Model.Load(6092)
    Model.Load(6093)
    Model.Load(6094) 
    038B: load_requested_models 
    end
    2@ = Car.Create(6091, -1525.995, -1343.5867, 14.8445)
    //01C3: remove_references_to_car 2@   
    3@ = Car.Create(6092, -1550.8831, -1366.282, 14.8445)
    //01C3: remove_references_to_car 3@   
    4@ = Car.Create(6093, -1474.1169, -1332.1602, 14.8687)
    //01C3: remove_references_to_car 4@   
    5@ = Car.Create(6094, -1431.2992, -1323.0088, 14.8456)
    //01C3: remove_references_to_car 5@    
0249: release_model 6091
0249: release_model 6092
0249: release_model 6093
0249: release_model 6094
while 00F5:   player $player_char 0 -1525.995 -1343.5867 14.8445 radius 275.0 275.0 275.0
wait 0
end 
    01C3: remove_references_to_car 2@   
    01C3: remove_references_to_car 3@   
    01C3: remove_references_to_car 4@   
    01C3: remove_references_to_car 5@
    end
end

Offline

#9 28-07-2013 12:40

oleg_berezov
Registered: 25-07-2013
Posts: 6

Re: Помогите с парковкой в III

Seemann, теперь после сохранения и загрузки тачки спаунятся одна на другой слоями smile
Т.е. нужно удалять уникальность сразу после спауна.
Sergey81, я как раз думал насчет спауна тачек, когда игрок входит в зону определенного радиуса.
Спасибо за пример. Может быть для полной уверенности машины стоит разрушать, когда игрок выходит из радиуса?

Простой спаун авто, а столько головной боли smile

Last edited by oleg_berezov (28-07-2013 12:48)

Offline

#10 28-07-2013 12:49

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Помогите с парковкой в III

@oleg_berezov - После опкода 01C3: remove_references_to_car, игра сама все сделает, т.к. радиус большой в моём примере.

Last edited by Sergey81 (28-07-2013 12:49)

Offline

#11 28-07-2013 13:30

oleg_berezov
Registered: 25-07-2013
Posts: 6

Re: Помогите с парковкой в III

Спасибо. Вроде работает, сейчас тестирую.


{$CLEO .cs}
0000:

while true
wait 0
if
00F5:   player $player_char 0 1242.8705 -112.5124 14.4031 radius 175.0 175.0 175.0 
then
0002: jump @LOAD 
 
:LOAD
0247: request_model #STINGER
038B: load_requested_models

:CREATE
00D6: if 
0248: model #STINGER available 
004D: jump_if_false @CREATE
   
00A5: 0@ = create_car #STINGER at 1242.8705 -112.5124 14.4031
0175: set_car 0@ z_angle_to 90.0
0249: release_model #STINGER

while 00F5:   player $player_char 0 1242.8705 -112.5124 14.4031 radius 175.0 175.0 175.0
wait 0
end 
    01C3: remove_references_to_car 0@   
    end
end

Last edited by oleg_berezov (28-07-2013 14:05)

Offline

Board footer

Powered by FluxBB