You are not logged in.
Я весьма и весьма новичек в скриптинге. У меня есть ряд вопросов, которые не удалось разрешить при помощи существующих пособий, рекомендаций и прочих
рид ми.
Вопрос 1.
Можно ли прописать такой скрипрт, что я могу выбрать любого педа на улице , как все равно выбирала бы бандита из своей банды ?
Offline
Можно ли прописать такой скрипрт, что я могу выбрать любого педа на улице , как все равно выбирала бы бандита из своей банды ?
Так чтобы к любому педу можно было подойти, нажать правую кнопку мыши и завербовать его к себе? Может и можно, но боюсь, что это очень сложно реализовать.
Offline
Так чтобы к любому педу можно было подойти, нажать правую кнопку мыши и завербовать его к себе?
Да.
Может и можно, но боюсь, что это очень сложно реализовать.
Всё это очень прискорбно.
Я пробовала просто создать педа и присвоить ему = Actor.Create(Gang2, #WMYVA,$X_...,$Y_...,$Z_...)) Когда я производила "вербовку" - пед в готовности прижимал руки к груди, но следовать за мной не хотел (:
Вопрос 2.
Можно ли создать педа в безлюдной зоне?
Я пыталась создать педа в лесу (и пр. "нежилых" зонах), но пед не появлялся. И возле лесной избушки (неподалеку от Сосны Ангела) ставила. Не появляется.
В "жилом" же секторе проблем нет.
Вот этот мой обыкновенный скриптик:
:PED
Model.Load(#WMYVA)
wait 0
if
Model.Available(#WMYVA)
jf @PED
2@ = Actor.Create(CivMale, #WMYVA, $X_..., $Y_..., $Z_...)
Actor.Health(2@) = 200
end_thread
Может я что-то не дописала?
Offline
Никаких проблем с созданием актеров на карте не должно быть. Кажется, существуют определенные сложности с созданием оных в интерьерах, но уж на карте-то все должно получаться.
Главное, убедись, что ты задаешь правильные координаты места создания (особенно высоту, иначе актер может запросто провалиться под землю). Для проверки можно создавать маркер над актером, чтобы видеть его местоположение на карте.
Вот пример содания актера возле избушки на горе Чилиад
#WMYVA.Load while not #WMYVA.Available wait 0 end 0@ = Actor.Create(CivMale, #WMYVA, -2803.624, -1532.1052, 139.2891) Actor.PutAt($PLAYER_ACTOR, -2803.624, -1530.1052, 139.2891) #WMYVA.Destroy
Что касается твоего кода, то во-первых команда Load не должна находиться в цикле проверки загрузки модели (посмотри оригинальные скрипты), а во-вторых после использования модели (в данном случае создания актера) ее нужно выгрузить из памяти командой Destroy.
пед в готовности прижимал руки к груди, но следовать за мной не хотел
может надо еще дополнительно к нему применять команду, типа follow_player?
Offline
Спасибо, Seemann.
Offline
Помогите мне пожалуйста! Все мозги сломала. Не пойму в чем дело.
При загрузке начала игры перед появлением в аэропорту я на мнгновенье появляюсь в нижеуказанных координатах, где BMYDJ пытается меня атаковать. Далее идет ролик прибытия CJ в LS.
Затем, когда я прибываю в координаты, где у меня стоит BMYDJ, то этот актер не проявляет ко мне никакого интереса. А по моему замыслу должен бы атаковать. Где у меня ошибка?
:NONAME_15_5
0@ = Actor.Create(CivMale, #BMYDJ, -2298.5823, 1790.6545, 11.5)
Actor.PutAt($PLAYER_ACTOR, -2298.5823, 1789.6545, 11.5)
05E2: AS_actor 0@ kill_actor $PLAYER_ACTOR
Model.Destroy(#BMYDJ)
И еще. Никак не могу ни одного педа заставить выполнять анимацию. Не подскажете примерчик или ссылку.
Вот мой пример заставить актера двигаться:
:DAN
thread 'DAN'
:DAN_1
Model.Load(#BMYDJ)
:DAN_2
not Model.Available(#BMYDJ)
else_jump @DAN_3
wait 0
jump @DAN_2
:DAN_3
1@ = Actor.Create(CivMale, #BMYDJ, -1544.8781, -441.1077, 5.008)
Actor.Angle(1@) = 7.3643
:DAN_4
04ED: load_animation "DANCING"
:DAN_5
04EF: release_animation "DANCING"
:DAN_6
0605: actor 1@ perform_animation_sequence "DAN_LOOP_A" from_file "DANCING" 4.0 loop 1 0 0 0 -1 ms
Model.Destroy(#BMYDJ)
Last edited by svetka (05-01-2007 19:28)
Offline
Затем, когда я прибываю в координаты, где у меня стоит BMYDJ, то этот актер не проявляет ко мне никакого интереса. А по моему замыслу должен бы атаковать
за это время игра уже сто раз сотрет всю информацию о том, что этот актер кого-то атакует. Попробуй написать в цикле проверку, если актер рядом игроком, то 05E2.
Никак не могу ни одного педа заставить выполнять анимацию
Сначала загружаем анимацию и потом сразу же выгружаем?
Наверно правильнее было бы
:DAN_4
04ED: load_animation "DANCING"
:load
wait 0
if
04EE: animation_loaded "DANCING"
jf @load
0605: actor 1@ perform_animation_sequence "DAN_LOOP_A" from_file "DANCING" 4.0 loop 1 0 0 0 -1 ms
Model.Destroy(#BMYDJ)
04EF: release_animation "DANCING"
Offline
svetka
просмотри тему "Автомобиль с человеком" там я тоже похожий скрипт писал, может что найдёшь полезное
Last edited by reinstal (05-01-2007 21:54)
Offline
Спасибо, Seemann. С анимацией, после твоей раскладки и разбираться не пришлось. Всё как по маслу. Теперь я поняла в чем суть конструкции.
А вот с убиением CJ-я ну никак. Я и так, и эдак...
Написала так - так еле вышла в виндоус. Жутко висануло.
У меня в этой стряпухе хоть что-то правильное есть?
:NONAME_15_28
0@ = Actor.Create(CivMale, #BMYDJ, -2298.582, 1790.655, 11.5)
Actor.PutAt($PLAYER_ACTOR, -2298.582, 1789.655, 11.5)
wait 100
Model.Destroy(#BMYDJ)
1@ = Marker.CreateAboveActor(0@)
07E0: set_marker 1@ type_to 1
:NONAME_15_97
if
00F2: actor $PLAYER_ACTOR near_actor 0@ radius 20.0 20.0 0
else_jump @NONAME_15_97
05E2: AS_actor 0@ kill_actor $PLAYER_ACTOR
jump @NONAME_15_28
end_thread
Спасибо, reinstal. Посмотрю твой топик. Может действительно что-то найду.
Offline
может я чегото не понимаю но я думаю что Model.Destroy(#BMYDJ)не в том месте находится.
смотри:
0@ = Actor.Create(CivMale, #BMYDJ, -2298.582, 1790.655, 11.5)\\здесь ты создала актёра и занесла его в переменную
Actor.PutAt($PLAYER_ACTOR, -2298.582, 1789.655, 11.5)\\потом зоздаёшь игрока в томже месте, я думаю лучше создать игрока рядом а не в техже координатах, так как они появятся друг в друге
wait 100\\ждём
Model.Destroy(#BMYDJ) \\а вот здесь, удаляем модель=)
1@ = Marker.CreateAboveActor(0@)\\создаём маркер над актёром которого нет
ну и так далее...
думаю так будет правельнее:
:NONAME_15_28 0@ = Actor.Create(CivMale, #BMYDJ, -2298.582, 1790.655, 11.5) Actor.PutAt($PLAYER_ACTOR, .. .. ..) 1@ = Marker.CreateAboveActor(0@) 07E0: set_marker 1@ type_to 1 :NONAME_15_97 if 00F2: actor $PLAYER_ACTOR near_actor 0@ radius 20.0 20.0 0 else_jump @NONAME_15_97 05E2: AS_actor 0@ kill_actor $PLAYER_ACTOR wait 100 if actor.Dead(0@) jf @NONAME_15_97 Model.Destroy(#BMYDJ) jump @NONAME_15_28 end_thread
ну или я суть скрипта не так понял=)
Last edited by reinstal (05-01-2007 23:07)
Offline
Спасибо, reinstal. Попробую. Мне любая помощь на вес золота.
Offline
:NONAME_15_97
if
00F2: actor $PLAYER_ACTOR near_actor 0@ radius 20.0 20.0 0
else_jump @NONAME_15_97
т.к. это цикл, то в него обязательно нужно вставлять задержку, иначе игра зависнет
:NONAME_15_97
wait 250
if
00F2: actor $PLAYER_ACTOR near_actor 0@ radius 20.0 20.0 0
else_jump @NONAME_15_97
и так с любым циклом!
05E2: AS_actor 0@ kill_actor $PLAYER_ACTOR
jump @NONAME_15_28
здесь надо опять перейти на начало цикла jump @NONAME_15_97
end thread не нужен. В циклах, в которых проверяется что-то связанное с игроком, нужно обязательно сначала проверять 0256 (причем отдельно от остальных проверок). Тоже самое и для актеров и машин (actor.dead, car.wrecked)
:NONAME_15_97
wait 250
if
Player.Defined
jf @NONAME_15_97
if
00F2: actor $PLAYER_ACTOR near_actor 0@ radius 20.0 20.0 0
else_jump @NONAME_15_97
может я чегото не понимаю но я думаю что Model.Destroy(#BMYDJ)не в том месте находится
модель можно выгружать сразу после использования. Она нужна только при создании копии актера (машины, объекта), в дальнейшем держать ее в памяти не требуется, если только вы не создаете еще такого же актера.
Offline
Спасибо, Seemann!
Ну, где еще найдешь такую помощь с пояснениями!
Я всё поняла.
Offline
Такой вопрос. Я тут эксперементировала с выводом текстур. Насколько сильно это нагружает процесс игры, если скажем я хочу в разное время вывести на экран текстур эдак двадцать? И влияет ли "вес" текстуры на производительность?
Offline
мот я поздно, на миссионсе вот это лежит
ОбычныйТерминСписокопределенийАдресЦитатыФорматированныйЕсть такой опкод, который выбирает случайную машину на улице, а людей нет. Непорядок думаю надо исправить! Теперь то же самое и с людьми! Походим к актёру и жмём ТАБ до тех пор пока он не выделится маркером! :Random_act 0001: wait 0 ms 0006: $pr = 0 ;; integer values 00D6: if 0 80DF: NOT actor $PLAYER_ACTOR driving 004D: jump_if_false ЈЈRandom_act 00D6: if 0 00E1: key pressed 0 4 004D: jump_if_false ЈЈRandom_act 04C4: create_coordinate $X2 $Y2 $Z2 from_actor $PLAYER_ACTOR offset 2.0 2.0 0.0 04C4: create_coordinate $X3 $Y3 $Z3 from_actor $PLAYER_ACTOR offset -2.0 -2.0 0.0 00D6: if 0 0039: $pr == 0 ;; integer values 004D: jump_if_false ЈЈRandom_act 0396: 0 (clear) useless_flag 0376: @88 = create random actor 0.0 0.0 0.0 0008: $pr += 1 ;; integer values 01C2: remove_references_to_actor @88 ;; Like turning an actor into a random pedestrian 0767: 'SAN_AND' 1 02DD: set_actor @88 creation_zone 'SAN_AND' 1 0 1 00D6: if 0 056D: carcass_of_actor @88 valid 004D: jump_if_false ЈЈRandom_act2 00D6: if 0 0104: actor $PLAYER_ACTOR near actor @88 radius 2.0 2.0 2.0 sphere 0 ;;дистанцию регулировать здесь 004D: jump_if_false ЈЈRandom_act2 0187: $m_rand = create marker above actor @88 0396: 1 (set) useless_flag 01C2: remove references to actor @88 00BA: text styled 'BEEFY' 1000 ms 2 ; Beefy Baron 0001: wait 3000 ms 0164: disable marker $m_rand 0006: $pr = -1 ;; integer values 0249: release model @88 01C5: remove actor from mission cleanup list @88 00D8: mission cleanup 01C2: remove_references_to_actor @88 ;; Like turning an actor into a random pedestrian 0006: $pr = 0 ;; integer values 0002: jump ЈЈRandom_act :Random_act2 03C4: set status text to $pr 0 (number) 'ZER2_43' ; Score ~1~ 009B: destroy actor instantly @88 0006: $pr = -1 ;; integer values ;0317: increment mission attempts 01C5: remove actor from mission cleanup list @88 01C2: remove_references_to_actor @88 ;; Like turning an actor into a random pedestrian 00D8: mission cleanup 0006: $pr = 0 ;; integer values 0001: wait 100 ms 0002: jump ЈЈRandom_act ------ Автор: flacs E-mail: flacs@mail.ru ICQ: 290082850
wait 0
Offline
Спасибо, Satyricon. Попробую понять.
Offline
Seemann, в этом скрипте никак не получается убрать труп WMYVA2 и снять с него маркер. Вследствии чего он после смерти не появляется. Какие только варианты не пробовала. Помоги пожалуйста.
:NONAME_14
Model.Load(#WMYVA2)
038B: load_requested_models
:NONAME_14_7
wait 100
if and
Model.Available(#WMYVA2)
Player.Defined($PLAYER_CHAR)
else_jump @NONAME_14_7
2@ = Actor.Create(CivMale, #WMYVA2, 2219.5239, -1144.2228, 25.7939)
Model.Destroy(#WMYVA2)
Actor.Health(2@) = 200
Actor.Armour(2@) = 100
9@ = Marker.CreateAboveActor(2@)
07E0: set_marker 9@ type_to 1
:NONAME_14_112
wait 250
if
Player.Defined($PLAYER_CHAR)
else_jump @NONAME_14_112
wait 250
if
00F2: actor $PLAYER_ACTOR near_actor 2@ radius 20.0 20.0 0
else_jump @NONAME_14_112
wait 250
if
05E2: AS_actor 2@ kill_actor $PLAYER_ACTOR
else_jump @NONAME_14_112
:NONAME_14_189
wait 250
if or
wasted_or_busted
Actor.Dead(2@)
jf @NONAME_14_190
:NONAME_14_190
Marker.Disable(9@)
Actor.RemoveReferences(2@)
wait 10000
jump @NONAME_14_7
Offline
05E2: AS_actor 2@ kill_actor $PLAYER_ACTOR
Это команда, а не условие.
Используй:
Actor.Dead(2@)
Я уже приводил это код, привиду еще раз, может поможет:
:EXAMPLE var $SA_VASYA: Actor $SA_VASYA_MARKER: Marker $SA_VASYA_FLAG: Integer = 0 end // var while true wait 0 // Создаем актера если, 25.0 < расстояние до игрока < 35.0 if and $SA_VASYA_FLAG == 0 80FE: not actor $PLAYER_ACTOR 0 2510.2615 -1671.3036 13.4114 radius 25.0 25.0 15.0 00FE: actor $PLAYER_ACTOR 0 2510.2615 -1671.3036 13.4114 radius 35.0 35.0 15.0 then #WMOICE.Load while not #WMOICE.Available wait 0 end $SA_VASYA_FLAG = 1 $SA_VASYA.Create(CivMale, #WMOICE, 2510.2615, -1671.3036, 13.4114) $SA_VASYA.Angle = 84.2641 $SA_VASYA_MARKER.CreateAboveActor($SA_VASYA) end // if // Проверка, если расстояние от игрока до актера > 35.0 if and $SA_VASYA_FLAG == 1 80FE: not actor $PLAYER_ACTOR 0 2510.2615 -1671.3036 13.4114 radius 35.0 35.0 15.0 then $SA_VASYA.RemoveReferences #WMOICE.Destroy $SA_VASYA_MARKER.Disable $SA_VASYA_FLAG = 0 end // if // Проверка на смерть актера if and $SA_VASYA_FLAG == 1 $SA_VASYA.Dead then $SA_VASYA.RemoveReferences #WMOICE.Destroy $SA_VASYA_MARKER.Disable $SA_VASYA_FLAG = 0 end // if // Другие проверки... end // while
Last edited by Sanchez (11-01-2007 10:58)
Offline
05E2: AS_actor 2@ kill_actor $PLAYER_ACTOR.
Это команда, а не условие.
Я понимаю, что это команда. У меня WMYVA2 атакует PLAYER_ACTORа. Вот.
Но когда я убиваю WMYVA2, то он не исчезает, не исчезает маркер, и как следствие - WMYVA2 не появляется после смерти.
Или я не могу понять о чем ты мне хочешь сказать.
Ты по видимому опытный скриптер. Мне же не понятно, например вот это значение:
$SA_VASYA_FLAG == 0
Естественно я ему и аналог-то подобрать затрудняюсь. Разве что:
0489: unknown_actor $PLAYER_ACTOR flag 0
Или вот это: while not #WMOICE.Available
это "по-русски" означает
if
not Model.Available (#WMOICE) ?
С моими мизерными познаниями мне пока далеко до понимания таких определений.
Offline
:
:NONAME_14_189
wait 250
if
Actor.Dead(2@)
jf @NONAME_14_189:NONAME_14_190
Marker.Disable(9@)
Actor.RemoveReferences(2@)
wait 10000
Вот так пробуй
и if
05E2: AS_actor 2@ kill_actor $PLAYER_ACTOR
else_jump @NONAME_14_112
убери
jump @NONAME_14_7
wait 0
Offline
Я понимаю, что это команда. У меня WMYVA2 атакует PLAYER_ACTORа. Вот
А зачем тогда используешь ее в условии.
Но когда я убиваю WMYVA2, то он не исчезает, не исчезает маркер, и как следствие - WMYVA2 не появляется после смерти.
Я не могу представить чего ты хочешь добиться от этого:
if 05E2: AS_actor 2@ kill_actor $PLAYER_ACTOR else_jump @NONAME_14_112
Используй мой код.
$SA_VASYA_FLAG == 0
Естественно я ему и аналог-то подобрать затрудняюсь. Разве что:
0489: unknown_actor $PLAYER_ACTOR flag 0
Нет, это я проверяю что актер существует.
Offline
Я не могу представить чего ты хочешь добиться от этого:
Код:
if
05E2: AS_actor 2@ kill_actor $PLAYER_ACTOR
else_jump @NONAME_14_112
Смешно?!
Я хочу, чтобы WMYVA2 нападал на Си Джея.
Проблема:
Когда WMYVA2 на меня нападает, то если я его убиваю - труп и маркер не исчезают.
У меня уже ум за разум заходит от поисков.
Теория для меня пока труднопостижима и поэтому я пользуюсь методом "научного" тыка.
А воспользоваться твоим кодом я не понимаю как. Где в нем Вася нападает на CJ? Мне надо, чтоб Вася нападал. И чтобы умирал как полагается.:)
Offline
А воспользоваться твоим кодом я не понимаю как. Где в нем Вася нападает на CJ? Мне надо, чтоб Вася нападал. И чтобы умирал как полагается
Дык, в коде написанно
// Другие проверки...
Вот туда добовляй что хочешь:
if and $SA_VASYA_FLAG == 1 00F2: actor $PLAYER_ACTOR near_actor $SA_VASYA radius 10.0 10.0 0 then 05E2: AS_actor $SA_VASYA kill_actor $PLAYER_ACTOR end
Или добавь сразу после создания актера команду 05E2: AS_actor $SA_VASYA kill_actor $PLAYER_ACTOR, вот так:
$SA_VASYA_FLAG = 1 $SA_VASYA.Create(CivMale, #WMOICE, 2510.2615, -1671.3036, 13.4114) $SA_VASYA.Angle = 84.2641 $SA_VASYA_MARKER.CreateAboveActor($SA_VASYA) 05E2: AS_actor $SA_VASYA kill_actor $PLAYER_ACTOR
Offline
Спасибо, Sanchez, попробую!
Offline
Вобщем попробовала просто скомпилировать твой код - педа пока нет.
Last edited by svetka (12-01-2007 15:45)
Offline