GTA San Andreas > Скриптинг

Проблема со скриптом охраны

(1/3) > >>

drs36:
Скрипт на охранника вылетает в чем может быть дело ?


--- Код: ---thread 'Actor'   

:Actor
wait 0
if
player.Defined(0)
jf @Actor
if and
not actor.Dead($PLAYER_ACTOR)
not actor.Driving($PLAYER_ACTOR)
0AB0:   key_pressed 50

jf @Actor

:Actor2
repeat
wait 0
until player.Defined(0)
model.Load(#AK47)
Model.Load(#BALLAS2)
038B: load_requested_models
3@ = Actor.Create(gang2,#BALLAS2, 1@, 2@, 3@)
$1307 = Marker.CreateAboveActor(3@)
04C4: create_coordinate 1@ 2@ 3@ from_actor $PLAYER_ACTOR offset 0.0 1.2 0.0
0631: put_actor 3@ in_group $PLAYER_GROUP
01B2: give_actor 3@ weapon 30 ammo 6000 // Load the weapon model before using this   
Model.Destroy(#AK47)
Model.Destroy(#BALLAS2)
       
0243: set_actor 3@ ped_stats_to 6       
011A: set_actor 3@ flags 64       
011A: set_actor 3@ flags 16
actor.Health(3@) = 850
04F7: status_text $HLT 0 line 1 'TEXT4'       
while true
wait 0     
$HLT = actor.Health(3@)
         if or
         not player.Defined(0)
         0AB6: store_target_marker_coords_to 1@ 2@ 3@ // IF and SET
         then
           
         break
         else
             if
             actor.Dead(3@)
             then
               
             break                     
             end
         end
end
wait 5
0151: remove_status_text $HLT
actor.RemoveReferences(3@)
jump @Actor2
end_thread
--- Конец кода ---

Shagg_E:
Это CLEO скрипт?

Если да, то: не юзай глобальные переменные типа $1307, используй локальные 1@ 2@ и т.д.
----------------------------------------------------------------------------------

Далее:
***ты загружаешь модели

--- Код: ---model.Load(#AK47)
Model.Load(#BALLAS2)
038B: load_requested_models
--- Конец кода ---
А потом сразу создаешь чувака и даешь ему оружие

--- Код: ---3@ = Actor.Create(gang2,#BALLAS2, 1@, 2@, 3@)
$1307 = Marker.CreateAboveActor(3@)
04C4: create_coordinate 1@ 2@ 3@ from_actor $PLAYER_ACTOR offset 0.0 1.2 0.0
0631: put_actor 3@ in_group $PLAYER_GROUP
01B2: give_actor 3@ weapon 30 ammo 6000 // Load the weapon model before using this   
--- Конец кода ---
, а модели игрока и оружия могут не успеть прогрузиться.
поэтому тебе нужно делать проверку, загрузились ли модели, и лишь потом создавать чела с оружием:

--- Код: ---0248:   model #AK47 available
0248:   model #BALLAS2 available
--- Конец кода ---
----------------------------------------------------------------------------------

*** ты создаешь чувака:

--- Код: ---3@ = Actor.Create(gang2,#BALLAS2, 1@, 2@, 3@)
--- Конец кода ---
а уже потом получаешь координаты игрока, в которые нужно спавнить "охранника":

--- Код: ---04C4: create_coordinate 1@ 2@ 3@ from_actor $PLAYER_ACTOR offset 0.0 1.2 0.0
--- Конец кода ---
, т.е. нужно это поменять местами.
----------------------------------------------------------------------------------

***ты используешь одну переменную в двух противоречивых местах:

--- Цитировать ---3@ = Actor.Create(gang2,#BALLAS2, 1@, 2@, 3@)
--- Конец цитаты ---
Это нормально, если ты хочешь оптимизировать код, но лишь если код позволяет это сделать, но у тебя ниже идут строки:

--- Цитировать ---$HLT = actor.Health(3@) // кстати здесь опять нужно заменить глоб. переменную на локальную
         if or
         not player.Defined(0)
         0AB6: store_target_marker_coords_to 1@ 2@ 3@ // IF and SET
         then
           
         break
         else
             if
             actor.Dead(3@)
--- Конец цитаты ---
- и в результате - каша. В общем замени переменную актера 3@ на 4@, чтобы не путалось с координатами.

P.S. Может еще че есть, но пока - это то, что бросилось в глаза.

mfisto:
для загрузки моделей есть опкод -> 038B: load_requested_models
и проверять ничего не надо.
это работает во всей третьей серии.

я заметил только строчку (04C4: create_coordinate 1@ 2@ 3@ from_actor $PLAYER_ACTOR offset 0.0 1.2 0.0), которую надо переместить повыше создания актера, и стараться следить, какая у актера переменная будет во всем скрипте. не напутал ли ты чего. дай актеру переменную 4@ это лучший вариант.

drs36:
Благодарю всех за советы.ПОЛУЧИЛОСЬ.

Shagg_E:

--- Цитата: mfisto от Апрель 02, 2014, 10:25:53 am ---для загрузки моделей есть опкод -> 038B: load_requested_models
и проверять ничего не надо.
это работает во всей третьей серии.

--- Конец цитаты ---
o_0 хз у меня иногда вылетало, если загружал, и сразу использовал без проверки

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии