#1 29-12-2006 18:38

svetka
Registered: 29-12-2006
Posts: 222

Выбор произвольного педа.

Я весьма и весьма новичек в скриптинге. У меня есть ряд вопросов, которые не удалось разрешить при помощи существующих пособий, рекомендаций и прочих
рид ми.

Вопрос 1.
Можно ли прописать такой скрипрт, что я могу выбрать любого педа на улице ,  как все равно выбирала бы бандита из своей банды ?

Offline

#2 29-12-2006 18:51

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

Re: Выбор произвольного педа.

Можно ли прописать такой скрипрт, что я могу выбрать любого педа на улице ,  как все равно выбирала бы бандита из своей банды ?

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

Offline

#3 29-12-2006 22:23

svetka
Registered: 29-12-2006
Posts: 222

Re: Выбор произвольного педа.

Так чтобы к любому педу можно было подойти, нажать правую кнопку мыши и завербовать его к себе?

Да.

Может и можно, но боюсь, что это очень сложно реализовать.

Всё это очень прискорбно.

Я пробовала просто создать педа и присвоить ему  = 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

#4 30-12-2006 06:48

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

Re: Выбор произвольного педа.

Никаких проблем с созданием актеров на карте не должно быть. Кажется, существуют определенные сложности с созданием оных в интерьерах, но уж на карте-то все должно получаться.

Главное, убедись, что ты задаешь правильные координаты места создания (особенно высоту, иначе актер может запросто провалиться под землю). Для проверки можно создавать маркер над актером, чтобы видеть его местоположение на карте.

Вот пример содания актера возле избушки на горе Чилиад

#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

#5 31-12-2006 15:57

svetka
Registered: 29-12-2006
Posts: 222

Re: Выбор произвольного педа.

Спасибо, Seemann.

Offline

#6 05-01-2007 19:26

svetka
Registered: 29-12-2006
Posts: 222

Re: Выбор произвольного педа.

Помогите мне пожалуйста! Все мозги сломала. Не пойму в чем дело.
При загрузке начала игры перед появлением в аэропорту я на мнгновенье появляюсь в нижеуказанных координатах, где 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

#7 05-01-2007 19:40

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

Re: Выбор произвольного педа.

Затем, когда я прибываю в координаты, где у меня стоит 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

#8 05-01-2007 21:54

reinstal
Registered: 08-12-2006
Posts: 45

Re: Выбор произвольного педа.

svetka
просмотри тему "Автомобиль с человеком" там я тоже похожий скрипт писал, может что найдёшь полезное

Last edited by reinstal (05-01-2007 21:54)

Offline

#9 05-01-2007 22:34

svetka
Registered: 29-12-2006
Posts: 222

Re: Выбор произвольного педа.

Спасибо, 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

#10 05-01-2007 23:05

reinstal
Registered: 08-12-2006
Posts: 45

Re: Выбор произвольного педа.

может я чегото не понимаю но я думаю что 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

#11 05-01-2007 23:55

svetka
Registered: 29-12-2006
Posts: 222

Re: Выбор произвольного педа.

Спасибо, reinstal. Попробую. Мне любая помощь на вес золота.

Offline

#12 06-01-2007 06:35

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

Re: Выбор произвольного педа.

: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


reinstal wrote:

может я чегото не понимаю но я думаю что Model.Destroy(#BMYDJ)не в том месте находится

модель можно выгружать сразу после использования. Она нужна только при создании копии актера (машины, объекта), в дальнейшем держать ее в памяти не требуется, если только вы не создаете еще такого же  актера.

Offline

#13 06-01-2007 07:03

svetka
Registered: 29-12-2006
Posts: 222

Re: Выбор произвольного педа.

Спасибо, Seemann!
Ну, где еще найдешь такую помощь с пояснениями!
Я всё поняла.

Offline

#14 10-01-2007 19:57

svetka
Registered: 29-12-2006
Posts: 222

Re: Выбор произвольного педа.

Такой вопрос. Я тут эксперементировала с выводом текстур. Насколько сильно это нагружает процесс игры, если скажем я хочу в разное время вывести на экран текстур эдак двадцать? И влияет ли "вес" текстуры на производительность?

Offline

#15 10-01-2007 20:42

Satyricon
Registered: 06-01-2007
Posts: 10

Re: Выбор произвольного педа.

мот я поздно, на миссионсе вот это лежит

ОбычныйТерминСписокопределенийАдресЦитатыФорматированныйЕсть такой опкод, который выбирает случайную машину на улице, а людей нет. Непорядок думаю надо исправить! Теперь то же самое и с людьми! Походим к актёру и жмём ТАБ до тех пор пока он не выделится маркером!


: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

#16 11-01-2007 10:06

svetka
Registered: 29-12-2006
Posts: 222

Re: Выбор произвольного педа.

Спасибо, Satyricon. Попробую понять.

Offline

#17 11-01-2007 10:10

svetka
Registered: 29-12-2006
Posts: 222

Re: Выбор произвольного педа.

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

#18 11-01-2007 10:19

Sanchez
Registered: 18-08-2006
Posts: 280

Re: Выбор произвольного педа.

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

#19 11-01-2007 13:45

svetka
Registered: 29-12-2006
Posts: 222

Re: Выбор произвольного педа.

Sanchez wrote:

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) ?

С моими мизерными познаниями мне пока далеко до понимания таких определений. smile

Offline

#20 11-01-2007 17:30

Satyricon
Registered: 06-01-2007
Posts: 10

Re: Выбор произвольного педа.

:
: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

#21 12-01-2007 11:26

Sanchez
Registered: 18-08-2006
Posts: 280

Re: Выбор произвольного педа.

Я понимаю, что это команда. У меня WMYVA2 атакует PLAYER_ACTORа. Вот

А зачем тогда используешь ее в условии.

Но когда я убиваю WMYVA2, то он не исчезает, не исчезает  маркер, и как следствие - WMYVA2 не появляется после смерти.

Я не могу представить чего ты хочешь добиться от этого:

if
05E2: AS_actor 2@ kill_actor $PLAYER_ACTOR 
else_jump @NONAME_14_112

Используй мой код. smile

$SA_VASYA_FLAG == 0
Естественно я ему и аналог-то подобрать затрудняюсь. Разве что:
0489: unknown_actor $PLAYER_ACTOR flag 0

Нет, это я проверяю что актер существует.

Offline

#22 12-01-2007 12:11

svetka
Registered: 29-12-2006
Posts: 222

Re: Выбор произвольного педа.

Sanchez wrote:

Я не могу представить чего ты хочешь добиться от этого:
Код:
if
05E2: AS_actor 2@ kill_actor $PLAYER_ACTOR
else_jump @NONAME_14_112

Смешно?! smile
Я хочу, чтобы  WMYVA2 нападал на Си Джея.

Проблема:
Когда WMYVA2 на меня нападает, то если я его убиваю - труп и маркер не исчезают.
У меня уже ум за разум заходит от поисков. sad
Теория для меня пока труднопостижима и поэтому я пользуюсь методом "научного" тыка.
А воспользоваться твоим кодом я не понимаю как. Где в нем Вася нападает на CJ? Мне надо, чтоб Вася  нападал. И чтобы умирал как полагается.:)

Offline

#23 12-01-2007 12:24

Sanchez
Registered: 18-08-2006
Posts: 280

Re: Выбор произвольного педа.

А воспользоваться твоим кодом я не понимаю как. Где в нем Вася нападает на 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

#24 12-01-2007 12:51

svetka
Registered: 29-12-2006
Posts: 222

Re: Выбор произвольного педа.

Спасибо, Sanchez, попробую!

Offline

#25 12-01-2007 14:06

svetka
Registered: 29-12-2006
Posts: 222

Re: Выбор произвольного педа.

Вобщем попробовала просто скомпилировать твой код - педа пока нет.

Last edited by svetka (12-01-2007 15:45)

Offline

Board footer

Powered by FluxBB