#26 13-01-2007 09:38

Sanchez
Registered: 18-08-2006
Posts: 280

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

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

Смотри по этим координатам (около дома CJ) 2510.2615, -1671.3036, 13.4114

Если появляешься рядом с педом. Отбеги от него подальше затем вернись обратно.

Last edited by Sanchez (14-01-2007 11:12)

Offline

#27 17-01-2007 16:05

svetka
Registered: 29-12-2006
Posts: 222

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

2 Sanchez

Я всё о старых баранах.
Вот твой код после компиляции.
Нет клоуна. Ни возле дома CJ, ни в других координатах, которые я ему задавала.
Что интересно, что игра вылетала после компиляции на SannyBuilder - v 2.99е.
На SannyBuilder - v 2.98 всё нормально, только клоуна всё равно нет.
Переменные выставляла как локальные, так и глобальные.

:NONAME_17
0@ = 0 // integer values
wait 0
if and
  0@ == 0 // integer values
  80FE: not actor $PLAYER_ACTOR 0 2510.261 -1671.304 13.4114 radius 25.0 25.0 15.0
  00FE: actor $PLAYER_ACTOR 0 2510.261 -1671.304 13.4114 radius 35.0 35.0 15.0
jf @NONAME_17_181
Model.Load(#WMOICE)

:NONAME_17_108
  not Model.Available(#WMOICE)
jf @NONAME_17_131
wait 0
jump @NONAME_17_108

:NONAME_17_131
0@ = 1 // integer values
1@ = Actor.Create(CivMale, #WMOICE, 2510.261, -1671.304, 13.4114)
Actor.Angle(1@) = 84.2641
2@ = Marker.CreateAboveActor(1@)

:NONAME_17_181
if and
  0@ == 1 // integer values
  80FE: not actor $PLAYER_ACTOR 0 2510.261 -1671.304 13.4114 radius 35.0 35.0 15.0
jf @NONAME_17_258
Actor.RemoveReferences(1@)
Model.Destroy(#WMOICE)
Marker.Disable(2@)
0@ = 0 // integer values

:NONAME_17_258
if and
  0@ == 1 // integer values
  Actor.Dead(1@)
jf @INITIAL
Actor.RemoveReferences(1@)
Model.Destroy(#WMOICE)
Marker.Disable(2@)
0@ = 0 // integer values

Offline

#28 17-01-2007 16:22

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

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

if and
  0@ == 0 // integer values
  80FE: not actor $PLAYER_ACTOR 0 2510.261 -1671.304 13.4114 radius 25.0 25.0 15.0
  00FE: actor $PLAYER_ACTOR 0 2510.261 -1671.304 13.4114 radius 35.0 35.0 15.0
jf @NONAME_17_181

ты никогда не выполнишь такое условие: одновременно БЫТЬ и НЕ БЫТЬ в одной и той же точке smile Убери одну из 00FE, лучше первую (чтобы актер появлялся когда ты рядом).

Offline

#29 17-01-2007 16:37

svetka
Registered: 29-12-2006
Posts: 222

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

2 Seemann

Когда убираю одну из строк - игра вылетает.

Offline

#30 17-01-2007 19:02

reinstal
Registered: 08-12-2006
Posts: 45

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

Seemann wrote:

if and
  0@ == 0 // integer values
  80FE: not actor $PLAYER_ACTOR 0 2510.261 -1671.304 13.4114 radius 25.0 25.0 15.0
  00FE: actor $PLAYER_ACTOR 0 2510.261 -1671.304 13.4114 radius 35.0 35.0 15.0
jf @NONAME_17_181

ты никогда не выполнишь такое условие: одновременно БЫТЬ и НЕ БЫТЬ в одной и той же точке smile Убери одну из 00FE, лучше первую (чтобы актер появлялся когда ты рядом).

может я и не очень разбираюсь, но у меня в одном скрипте такие условия, и они работают на 100%

00FE:   actor $PLAYER_ACTOR 0 1455.0 -2489.9999 13.0 radius 300.0 300.0 300.0 
80FE:   not actor $PLAYER_ACTOR 0 1455.0 -2489.9999 13.0 radius 200.0 200.0 200.0

Offline

#31 17-01-2007 19:47

svetka
Registered: 29-12-2006
Posts: 222

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

Вот последний кусочек скрипта Sanchez-а.
То, что в нем идет jf @INITIAL это нормально?

:NONAME_17_258
if and
  0@ == 1 // integer values
  Actor.Dead(1@)
jf @INITIAL
Actor.RemoveReferences(1@)
Model.Destroy(#WMOICE)
Marker.Disable(2@)
0@ = 0 // integer values

Last edited by svetka (17-01-2007 19:49)

Offline

#32 17-01-2007 20:28

flacs
Registered: 17-01-2007
Posts: 16

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

Тот скрипт выбора случайного педа, я давно писал, до того пока сам не протестил опкоды...
089E: 11@ = get_random_actor_from_point  3@ 4@ 5@ with_radius 5.0 - получить случайного актера в точке с радиусом
08E5: 0@ = get_actor_which_has_appeared_from_point 27@ 28@ 29@ radius 20.0 - получить актера, который появился в точке с радиусом
073F: 27@ = get_actor point 4@ 7@ 10@ radius 20.0 unknown 1 1 1 - получить актера в точке с радиусом и неизветсными флагами
091C: 16@ = get_actor_from_point $X_COORD2 $Y_COORD2 $Z_COORD2 radius 1.5 model #KB_BANDIT_U animation "PEDSLOT" 16@ - получить актера в точке с радиусом, с заданной моделью, и анимацией

Рекомендуеться изпользовать 08E5:

Offline

#33 17-01-2007 21:15

svetka
Registered: 29-12-2006
Posts: 222

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

Спасибо, flacs. Очень интересно!

А как вот это понять:
получить актера, который появился в точке с радиусом

получить в смысле заполучить? smile
И почему ты рекомендуешь именно этот опкод?

Last edited by svetka (17-01-2007 21:25)

Offline

#34 18-01-2007 06:09

flacs
Registered: 17-01-2007
Posts: 16

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

svetka wrote:

Спасибо, flacs. Очень интересно!

А как вот это понять:
получить актера, который появился в точке с радиусом

получить в смысле заполучить? smile
И почему ты рекомендуешь именно этот опкод?

Этот так и понимать, игра генерит прохожих, почти постоянно, вот в точке которой игра сгенерила очередного прохожего, и есть хендл актера, котрый можно получить опкодом 08E5.

пример изпольтзования

04C4: create coordinate @0 @1 @2 from actor $PLAYER_ACTOR offset  0.0  0.0 0.0 ; снимаем координаты игрока
08E5: $FEAR_ACTOR = get_actor_which_has_appeared_from_point @0 @1 @2  radius 5.0 ; получить актера, который появился в точке с радиусом
00D6: if  0
056D:   unknown actor $FEAR_ACTOR dead but valid  ;Обязательно проверяем существует ли он???!!!
004D: jump_if_false ЈЈbegininig
;После этого проделуваем манипуляции с переменной актера $FEAR_ACTOR

Почему рекомендую имменно этот? - потому что этот опкод позволяет выделить всех типов людей, полицейских там и т.д., например 089E, не позволяет выделить полицейских!:)

Last edited by flacs (18-01-2007 06:18)

Offline

#35 18-01-2007 10:50

svetka
Registered: 29-12-2006
Posts: 222

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

2 Sanchez
Кажется я немного разобралась в твоем коде. Пед появляется. Атакует других педов. Умирает правильно.
Но вот он совсем не обращает внимания на меня. Стоит, смотрит в упор, а потом бежит доставать других педов.
Вот, что у меня в концовке получилось:

:NONAME_9_258
if and
  $11764 == 1 // integer values
  Actor.Dead($11765)
jf @NONAME_9_7
Actor.RemoveReferences($11765)
Model.Destroy(#WMOICE)
Marker.Disable($11766)
$11764 = 0 // integer values
jump @NONAME_9_7

:NONAME_9_300
if and
  $11764 == 1 // integer values
  00F2: actor $PLAYER_ACTOR near_actor $11765 radius 10.0 10.0 0
jf @NONAME_9_300
05E2: AS_actor $11765 kill_actor $PLAYER_ACTOR

Не хочет он меня убивать.

Offline

#36 18-01-2007 11:04

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

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

2svetka:

Но вот он совсем не обращает внимания на меня

ПЕДераст он, вот и не обращает внимания :)))))

:NONAME_9_300
if and
  $11764 == 1 // integer values
  00F2: actor $PLAYER_ACTOR near_actor $11765 radius 10.0 10.0 0
jf @NONAME_9_300
05E2: AS_actor $11765 kill_actor $PLAYER_ACTOR

если не выполняется 05e2 значит либо $11764 не равна 1, либо игра никогда не приходит на то условие. Запости весь код, который ты имеешь.

Еще бывает полезно выводить в игре отладочную инфу, чтобы видеть - приходит игра на данный участок кода или нет. Способы самые разные от показа text_box до увеличения денег (я так делаю).
Поставь сразу после :NONAME_9_300

Player.Money($PLAYER_CHAR) += $11764

и если деньги не увеличиваются, значит что-то не так.

Offline

#37 18-01-2007 11:23

svetka
Registered: 29-12-2006
Posts: 222

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

Вот весь код!

:NONAME_9
$11764 = 0 // integer values

:NONAME_9_7
wait 0
if and
  $11764 == 0 // integer values
  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
jf @NONAME_9_181
Model.Load(#WMOICE)

:NONAME_9_108
  not Model.Available(#WMOICE)
jf @NONAME_9_131
wait 0
jump @NONAME_9_108

:NONAME_9_131
$11764 = 1 // integer values
$11765 = Actor.Create(CivMale, #WMOICE, 2510.2615, -1671.3036, 13.4114)
Actor.Angle($11765) = 84.2641
$11766 = Marker.CreateAboveActor($11765)

:NONAME_9_181
if and
  $11764 == 1 // integer values
  80FE: not actor $PLAYER_ACTOR 0 2510.2615 -1671.3036 13.4114 radius 35.0 35.0 15.0
jf @NONAME_9_258
Actor.RemoveReferences($11765)
Model.Destroy(#WMOICE)
Marker.Disable($11766)
$11764 = 0 // integer values

:NONAME_9_258
if and
  $11764 == 1 // integer values
  Actor.Dead($11765)
jf @NONAME_9_7
Actor.RemoveReferences($11765)
Model.Destroy(#WMOICE)
Marker.Disable($11766)
$11764 = 0 // integer values
jump @NONAME_9_7

:NONAME_9_300
if and
  $11764 == 1 // integer values
  00F2: actor $PLAYER_ACTOR near_actor $11765 radius 10.0 10.0 0
jf @NONAME_9_300
05E2: AS_actor $11765 kill_actor $PLAYER_ACTOR
jf @NONAME_9_300

Offline

#38 18-01-2007 11:27

svetka
Registered: 29-12-2006
Posts: 222

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

Seemann wrote:

ПЕДераст он, вот и не обращает внимания smile))))

Не иначе!

Seemann wrote:

Еще бывает полезно выводить в игре отладочную инфу, чтобы видеть - приходит игра на данный участок кода или нет.

Очень полезная информация!!!

Offline

#39 18-01-2007 11:32

svetka
Registered: 29-12-2006
Posts: 222

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

Сделала вот так:

:NONAME_9_300
Player.Money($PLAYER_CHAR) += $11764
if and
  $11764 == 1 // integer values
  00F2: actor $PLAYER_ACTOR near_actor $11765 radius 10.0 10.0 0
jf @NONAME_9_300
05E2: AS_actor $11765 kill_actor $PLAYER_ACTOR
jf @NONAME_9_300

Деньги не пришли. sad

Offline

#40 18-01-2007 11:50

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

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

:LOAD_MODEL
Model.Load(#WMOICE)

:CREATE_ACTOR
wait 250
if
  Model.Available(#WMOICE)
jf @CREATE_ACTOR
$ACTOR = Actor.Create(CivMale, #WMOICE, 2510.2615, -1671.3036, 13.4114)
Model.Destroy(#WMOICE)
Actor.Angle($ACTOR) = 84.2641
$MARKER = Marker.CreateAboveActor($ACTOR)

:CHECK_PLAYER_IS_NEAR_ACTOR_LOOP
wait 250
if
  Player.Defined($PLAYER_CHAR)
jf @CHECK_PLAYER_IS_NEAR_ACTOR_LOOP
if
  not Actor.Dead($ACTOR)
jf @ACTOR_DEAD
if
  00F2: actor $PLAYER_ACTOR near_actor $ACTOR radius 10.0 10.0 0 
jf @CHECK_PLAYER_IS_NEAR_ACTOR_LOOP
05E2: AS_actor $ACTOR kill_actor $PLAYER_ACTOR

:CHECK_ACTOR_DEAD
wait 250 
if
  Actor.Dead($ACTOR)
jf @CHECK_ACTOR_DEAD

:ACTOR_DEAD
Actor.RemoveReferences($ACTOR)
Marker.Disable($MARKER)
054C: use_GXT_table 'WUZI2' 
00BC: show_text_highpriority 'WUZ2_RB' time 2000 1
end_thread

Offline

#41 18-01-2007 15:43

svetka
Registered: 29-12-2006
Posts: 222

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

Ура, Seemann, спасибо!!!
Вижу теперь что я упускала. Но и свою копеечку я всё-таки внесла.
А пед хорошо бегает! Гоняется за всеми, но предпочтение отдает мне. smile
Именно такой пед мне и был нужен.
Sanchez, reinstal, спасибо!

Offline

#42 19-01-2007 10:42

Sanchez
Registered: 18-08-2006
Posts: 280

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

Seemann wrote:

if and
  0@ == 0 // integer values
  80FE: not actor $PLAYER_ACTOR 0 2510.261 -1671.304 13.4114 radius 25.0 25.0 15.0
  00FE: actor $PLAYER_ACTOR 0 2510.261 -1671.304 13.4114 radius 35.0 35.0 15.0
jf @NONAME_17_181

ты никогда не выполнишь такое условие: одновременно БЫТЬ и НЕ БЫТЬ в одной и той же точке smile Убери одну из 00FE, лучше первую (чтобы актер появлялся когда ты рядом).

Тут проверяется что игрок находится
25 < местоположение < 35
Может есть спец. опкод для этого?

Соответственно, если игрок появляется вне этой зоны клоун непоявиться, надо будет сначало убежать на расстояние 25 < местоположение < 35, а потом вернуться.

У меня этот скрипт прекрасно работает wink

Offline

#43 19-01-2007 10:50

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

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

Sanchez wrote:

Тут проверяется что игрок находится
25 < местоположение < 35

ну да, не заметил, что радиусы разные, поэтому показалось, что параметры абсолютно одинаковые.

отдельного опкода вроде нет, можно и подобным способом проверять.

Offline

#44 19-01-2007 15:40

svetka
Registered: 29-12-2006
Posts: 222

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

2 Sanchez :

Так почему у меня все-таки не получилось привязать условие на убийство:

:NONAME_9_258
if and
  $11764 == 1 // integer values
  Actor.Dead($11765)
jf @NONAME_9_7
Actor.RemoveReferences($11765)
Model.Destroy(#WMOICE)
Marker.Disable($11766)
$11764 = 0 // integer values
jump @NONAME_9_7

:NONAME_9_300
if and
  $11764 == 1 // integer values
  00F2: actor $PLAYER_ACTOR near_actor $11765 radius 10.0 10.0 0
jf @NONAME_9_300
05E2: AS_actor $11765 kill_actor $PLAYER_ACTOR
jf @NONAME_9_300

Offline

#45 19-01-2007 16:41

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

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

2svetka:
потому что игра никогда не приходит на метку NONAME_9_300, ты ж сама проверяла через Player.Money. Покажи мне в твоем варианте кода место, откуда она может на это место прийти.

Offline

#46 19-01-2007 19:04

svetka
Registered: 29-12-2006
Posts: 222

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

Блин, какая же я невнимательная. Всё в порядке.

Offline

#47 19-01-2007 20:18

svetka
Registered: 29-12-2006
Posts: 222

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

Копы ЛА появляются только в ЛА, копы СФ в СФ и т.д., и т.п. Где заложена информация о зонах их появления?

Offline

#48 20-01-2007 05:20

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

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

2svetka:
в ехе. Я находил процедуру генерации, там записаны модели копов и, в зависимости от номера города, выбирается та или иная модель для генерации. В принципе через массивы можно попробовать поменять номера моделей, так чтобы вместо копов, например в ЛА, бегали клоуны wink

Offline

#49 20-01-2007 17:13

svetka
Registered: 29-12-2006
Posts: 222

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

Понятно. Для меня это у-у-у...
А вот еще.
Допустим пустынное место. Педов нет. Но стоит там поставить магазин с витринами, как возле витрин начинают тусоваться пиплы. Эта привязка наверное тоже через ехе делается? Вот если бы можно было такую привязку делать к желаемому об'екту. Чтобы, например, привязала их к лавке. Поставила лавку в пустыне и возле нее генерировались бы педы. Можно такое?

Offline

#50 21-01-2007 08:37

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

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

Я не знаю, как можно населять местность педами через скрипты. Делается это вроде как через popcycle.dat

Offline

Board footer

Powered by FluxBB