You are not logged in.
Pages: 1
Вот мой безглючный(?) вариант кода охраны.
В написании части кода "ОХРАНА" во многом мне помогли идеи Capushon-a, за что ему и спасибо
В написании части кода "DAMAGE" идеи Zibatop-a (взяла из кода эффектных аварий), за что ему также спасибо
А также спасибо Seemann, за антиаварийный опкод, Stalker2012, yelmi за опкод обстрела авто.
За возможные глюки прошу вышеупомянутых скриптеров не винить.
Cуть кода: вызов охраны со стандартными функциями("ОХРАНА") + отстрел атакующих авто("DAMAGE").
Буду крайне благодарна за конструктивную критику, советы и предложения
:OXPAHA not Model.Available(#CELLPHONE) else_jump @OXPAHA_35 Model.Load(#CELLPHONE) wait 0 jump @OXPAHA :OXPAHA_35 wait 100 Player.Defined($PLAYER_CHAR) else_jump @OXPAHA_35 if and not Actor.Driving($PLAYER_ACTOR) 00E1: player 0 pressed_key 10 00E1: player 0 pressed_key 16 else_jump @OXPAHA_35 Player.Money($PLAYER_CHAR) > 999 else_jump @OXPAHA_1403 Player.CanMove($PLAYER_CHAR) = False 0729: AS_actor $PLAYER_ACTOR hold_cellphone 1 wait 2500 054C: use_GXT_table 'TRU1' 00BC: show_text_highpriority GXT 'TRU1@01' time 2000 flag 1 // ~z~Подбирайте свой вариант текста! wait 2100 054C: use_GXT_table 'TRU1' 00BB: show_text_lowpriority GXT 'TRU1@02' time 2000 flag 1 // ~z~Подбирайте свой вариант текста! wait 1500 0729: AS_actor $PLAYER_ACTOR hold_cellphone 0 Player.CanMove($PLAYER_CHAR) = True Model.Destroy(#CELLPHONE) wait 0 023C: load_special_actor 'TBONE' as 1 // models 290-299 Model.Load(#AK47) Model.Load(#MESA) 038B: load_requested_models :OXPAHA_225 wait 100 if and Model.Available(#AK47) Model.Available(#MESA) else_jump @OXPAHA_225 023D: special_actor 1 loaded else_jump @OXPAHA_225 :OXPAHA_261 wait 0 0208: 0@ = random_float_in_ranges -70.0 70.0 0208: 1@ = random_float_in_ranges -70.0 70.0 not Actor.Dead($PLAYER_ACTOR) else_jump @OXPAHA_1351 wait 500 04C4: store_coords 2@ 3@ 4@ from_actor $PLAYER_ACTOR with_offset 0@ 1@ 0 02C1: store_to 21@ 22@ 23@ car_path_coords_closest_to 2@ 3@ 4@ 80EC: not actor $PLAYER_ACTOR 0 near_point 21@ 22@ radius 20.0 20.0 else_jump @OXPAHA_261 wait 100 0395: clear_area 1 at 21@ 22@ 23@ radius 5.0 04C4: store_coords 10@ 8@ 7@ from_actor $PLAYER_ACTOR with_offset 0.1 0.1 15.37 5@ = Car.Create(#MESA, 21@, 22@, 23@) 0594: unknown_car 5@ flag 0 Car.Health(5@) = 3000 0423: set_car 5@ improved_handling_to 1.5 // (float) 00AE: set_car 5@ traffic_behavior_to 2 06ED: set_car 5@ paintjob 0 0229: set_car 5@ primary_color_to 14 secondary_color_to 14 Car.SetMaxSpeed(5@, 35.0) 072F: unknown 5@ 1.0 2000 1 1 1 -1 04C4: store_coords 2@ 3@ 4@ from_actor $PLAYER_ACTOR with_offset 0 5.0 0 0129: 6@ = create_actor_pedtype 19 model #SPECIAL01 in_car 5@ driverseat 0337: toggle_actor 6@ visibility 64 0350: toggle_actor 6@ maintain_position_when_attacked 1 0568: toggle_actor 6@ targetable 1 0446: toggle_actor 6@ immune_to_headshots 0 07FE: set_actor 6@ fighting_style_to 16 6 060B: set_actor 6@ decision_maker_to 65543 0770: unknown_actor 6@ flag 1 07DD: set_actor 6@ temper_to 100 // see pedstats.dat 051B: actor 6@ damaged_by_car 0 0526: unknown_actor 6@ flag 1 0433: toggle_actor 6@ criminal_flag 1 0982: unknown_actor 6@ flag 1 01B2: give_actor 6@ weapon 30 ammo 6000 // Load the weapon model before using this Actor.WeaponAccuracy(6@) = 100 Actor.Health(6@) = 500 Actor.Armour(6@) = 200 0296: unload_special_actor 1 Model.Destroy(#AK47) Actor.StorePos($PLAYER_ACTOR, 2@, 3@, 4@) Car.DriveTo(5@, 2@, 3@, 4@) :OXPAHA_726 wait 500 01C1: car 5@ stopped else_jump @OXPAHA_726 05CD: AS_actor 6@ exit_car 5@ 0631: put_actor 6@ in_group $PLAYER_GROUP Player.Money($PLAYER_CHAR) += -1000 20@ = Marker.CreateAboveActor(6@) :OXPAHA_775 wait 0 0104: actor 6@ near_actor $PLAYER_ACTOR radius 5.0 5.0 5.0 sphere 0 else_jump @OXPAHA_775 Marker.Disable(20@) :DAMAGE_816 wait 0 if and not Actor.Dead(6@) not Actor.Dead($PLAYER_ACTOR) else_jump @DAMAGE_1295 wait 0 0104: actor 6@ near_actor $PLAYER_ACTOR radius 150.0 150.0 5.0 sphere 0 else_jump @DAMAGE_1295 :DAMAGE_884 wait 0 Player.Defined($PLAYER_CHAR) else_jump @DAMAGE_884 Actor.Driving($PLAYER_ACTOR) else_jump @DAMAGE_816 03C0: 9@ = actor $PLAYER_ACTOR car :DAMAGE_920 wait 0 Actor.Driving($PLAYER_ACTOR) else_jump @DAMAGE_1269 0407: store_coords_to 14@ 15@ 16@ from_car 9@ with_offset 10.0 10.0 0 0407: store_coords_to 17@ 18@ 19@ from_car 9@ with_offset -10.0 0 -3.0 053E: 8@ = get_random_car_with_actors -1 in_rectangle_cornerA 14@ 15@ cornerB 17@ 18@ wait 0 Actor.Driving($PLAYER_ACTOR) else_jump @DAMAGE_1269 056E: car 8@ defined else_jump @DAMAGE_920 046C: 7@ = car 8@ driver jump @DAMAGE_1050 :DAMAGE_1050 wait 0 if and Actor.Driving($PLAYER_ACTOR) 056D: actor 7@ defined else_jump @DAMAGE_1269 0407: store_coords_to $101 $102 $103 from_car 8@ with_offset -10.0 0 -3.0 0407: store_coords_to $104 $105 $106 from_car 8@ with_offset 10.0 10.0 0 00A4: actor $PLAYER_ACTOR sphere 0 in_cube_cornerA $101 $102 $103 cornerB $104 $105 $106 else_jump @DAMAGE_1269 0208: 13@ = random_float_in_ranges -10.0 10.0 0208: 12@ = random_float_in_ranges -10.0 10.0 0208: 11@ = random_float_in_ranges -10.0 10.0 wait 0 080E: get_actor 7@ ped_event_to 10@ 10@ == 73 else_jump @DAMAGE_816 0713: unknown_action_sequence 6@ -1 8@ 0.0 0.0 0.0 100.0 8 1 90 jump @DAMAGE_816 :DAMAGE_1269 wait 0 Car.RemoveReferences(9@) Car.RemoveReferences(8@) Actor.RemoveReferences(7@) jump @DAMAGE_816 :DAMAGE_1295 Actor.RemoveReferences(6@) Car.RemoveReferences(5@) jump @OXPAHA :OXPAHA_1322 wait 250 Player.Defined($PLAYER_CHAR) else_jump @OXPAHA_1322 not Actor.Dead(6@) else_jump @OXPAHA_1379 :OXPAHA_1351 wait 250 if or Actor.Dead($PLAYER_ACTOR) Actor.Dead(6@) wasted_or_busted else_jump @OXPAHA_1351 :OXPAHA_1379 Actor.RemoveReferences(6@) Car.RemoveReferences(5@) wait 6000 jump @OXPAHA :OXPAHA_1403 wait 0 054C: use_GXT_table 'ZERO2' 00BC: show_text_highpriority GXT 'IE07' time 1000 flag 1 // ~r~“ BAC HEЂOCTATO4HO ЂEHE†! jump @OXPAHA
Last edited by svetka (11-07-2007 18:15)
Offline
Зачем загружать модель еще до начала основной работы?
:OXPAHA_28 jump @OXPAHA_35 :OXPAHA_35
jump лишний. Судя по всему, ты сначала вставила while..end, потом декомпилировала код и запостила здесь.
jump @OXPAHA end_thread
end_thread лишний
Offline
Прикольный скрипт. Можно еще добавить:
1) Добавит машине выброс шипов.
2) Если бой затягивается, то на подмогу приезжает грузовик со сватовцами или хантер\гидра прилетает и все превращает в груду хлама!!!
3) Ну а когда совсем плохо можно и танков подогнать и включить режим войны на улицах.
Давно хотел такой скрипт написать да времени нет.
jump лишний. Судя по всему, ты сначала вставила while..end, потом декомпилировала код и запостила здесь.
Вот поэтому я и пишу по-старинке руками весь код, а автоматика мусор оставляет.
Offline
Seemann, спасибо, что откликнулся
На самом деле в коде есть серьезная(?) ошибка.
Например, меня убивают, но охранник стается жив. В этом случае, чтобы вновь вызвать охрану мне надо сесть на любое транспортное средство и выйти из него. Передвигаться на нем не обязательно. Без этой манипуляции охрана не вызывается.
Другой пример. Я жива - охранника убивают. Охранник падает, истекает кровью, кровь высыхает - охранник лежит. В этом случае, чтобы вновь вызвать охранника надо отойти на 150 игровых метров.
Ну как мне избавиться от этой напасти? Где у меня ошибка? Может я не дописала чего? Уже даже не соображу, в каком месте искать и что Ум вообще не умный какой-то
jump лишний. Судя по всему, ты сначала вставила while..end, потом декомпилировала код и запостила здесь.
Ты совершенно прав. Просто пар из мозгов глаза застил
Stalker2012, спасибо за отклик
Добавить машине выброс шипов.
Это у меня идет отдельным скриптом для всех машин. Шипы у меня один дядечка продает. Скрипт в стадии написания. С проверками на целостность и проколы шин пока разбираюсь.
Если бой затягивается, то на подмогу приезжает грузовик со сватовцами...
В другом варианте скрипта я делала привязку к здоровью охранника. Если здоровье меньше, чем 20% приезжает товарищ с более авторитетным оружием. Если и у того со здоровьем не ах - приезжает команда "Ух!"
Offline
Svetka:
На самом деле в коде есть серьезная(?) ошибка
скрипт зацикливаетса на метке DAMAGE_884, в проверке
Actor.Driving($PLAYER_ACTOR)
else_jump @DAMAGE_884
еще мешает проверка
:OXPAHA_726
01C1: car 5@ stopped
бывает что машина вообще не добирается до игрока и ищи ее потом не знама где, а скрипт зацикливается.
и самое главное не срабатывает проверка на смерть актеров
if or
not Actor.Dead(6@)
not Actor.Dead($PLAYER_ACTOR)
а надо
if and
not Actor.Dead(6@)
not Actor.Dead($PLAYER_ACTOR)
Last edited by Stalker2012 (10-07-2007 09:02)
Offline
скрипт зацикливаетса на метке DAMAGE_884, в проверке
Actor.Driving($PLAYER_ACTOR)
else_jump @DAMAGE_884
Вот на этом моменте я и зациклилась. Прямо слепое пятно какое-то Просто напросто не соображу как выйти из этого цикла.
Offline
Svetka:
Вот на этом моменте я и зациклилась. Прямо слепое пятно какое-то Просто напросто не соображу как выйти из этого цикла.
Это самый примитивный способ(обычно использую для отладки), может кто знает лучше:
через 10 сек машина переносится к игроку
..............
$r=0:OXPAHA_726
wait 500
0513: text_1number_text_box 'number' $r
$r +=1
if or
$r > 20
01C1: car 5@ stopped
else_jump @OXPAHA_726
04C4: store_coords 25@ 26@ 27@ from_actor $PLAYER_ACTOR with_offset 0 2.0 0
00AB: put_car 5@ at 25@ 26@ 27@
wait 300
05CD: AS_actor 6@ exit_car 5@
0631: put_actor 6@ in_group $PLAYER_GROUP
Player.Money($PLAYER_CHAR) += -1000
20@ = Marker.CreateAboveActor(6@):OXPAHA_775
............
Вообще по идее надо проверять на застревание машины в пути и следить за координатами игрока, а то убежишь в другое место а он проносится мимо и едит на начальное место и ждет там.
Last edited by Stalker2012 (10-07-2007 10:48)
Offline
Stalker2012, я зациклилась на:
скрипт зацикливаетса на метке DAMAGE_884, в проверке
Actor.Driving($PLAYER_ACTOR)
else_jump @DAMAGE_884
Вот здесь у меня проблемы.
А против аварий у меня пока неплохо работает опкод:
072F: unknown 5@ 1.0 2000 1 1 1 -1
И к тому же, если охранник выходит из машины - над ним появляется маркер. Так что издали будет на радаре виден.
Сама машина генерируется в 70-ти игровых метрах от местоположения актера.
Offline
Svetka:
И к тому же, если охранник выходит из машины - над ним появляется маркер. Так что издали будет на радаре виден.
Сама машина генерируется в 70-ти игровых метрах от местоположения актера.
Так-то оно так, но у меня все время машина генерится на трассе под мостом рядом с домом CJ и телохранитель начинает ездить в объезд и ждать его приходится долго.
Я уменьшил радиус до 10 метров позади игрока и вроде он стал добиратся быстрее. Вобщем весьма полезный скрипт.
Last edited by Stalker2012 (10-07-2007 12:13)
Offline
Я уменьшил радиус до 10 метров позади игрока и вроде он стал добиратся быстрее.
Ну, да. Это на любителя
Offline
if or
not Actor.Dead(6@)
not Actor.Dead($PLAYER_ACTOR)а надо
if and
not Actor.Dead(6@)
not Actor.Dead($PLAYER_ACTOR)
Вот это я что-то не совсем поняла. Я всегда считала, что if or говорит, что либо, либо. В моем случае, ставя условие таким образом я подразумевала переход или в случае смерти плеера, или охраны.
Но ты, Stalker2012, оказался прав, предложив формулировку условия: if and.
Объясни мне, почему именно так? Совсем я запуталась.
2Seemann:
Опкод
072F: иной раз все же позволяет моей охране застревать. Может я его не туда поставила?
Offline
2svetka:
Правило Де Моргана не учила? not(not(усл1) or not(усл2)) = усл1&усл2 . Т.е. у тебя переход в случае невыполнения условия выполняется когда актер и игрок умерли. А с if and в случае невыполнения как раз наоборот - либо игрок, либо актер умерли. Но помойму тут все и без ДеМоргана понятно. И в целом код охраны трудно назвать безглючным...
Offline
Спасибо, Nikitos.
И в целом код охраны трудно назвать безглючным...
И это всё?
Была бы признательна за указание на сомнительные моменты.
Offline
Исправила в коде глюк со смертью актеров. Теперь все умирают как положено и охрана вызывается без проблем.
Offline
Выложите плизз декомпилированный файл для клео чтобы его скачать. И скажите как вызвать охрану.
Моды - вот что украшает игру!
Offline
Pages: 1