You are not logged in.
Вобщем попробовала просто скомпилировать твой код - педа пока нет.
Смотри по этим координатам (около дома CJ) 2510.2615, -1671.3036, 13.4114
Если появляешься рядом с педом. Отбеги от него подальше затем вернись обратно.
Last edited by Sanchez (14-01-2007 11:12)
Offline
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
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
ты никогда не выполнишь такое условие: одновременно БЫТЬ и НЕ БЫТЬ в одной и той же точке Убери одну из 00FE, лучше первую (чтобы актер появлялся когда ты рядом).
Offline
2 Seemann
Когда убираю одну из строк - игра вылетает.
Offline
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ты никогда не выполнишь такое условие: одновременно БЫТЬ и НЕ БЫТЬ в одной и той же точке Убери одну из 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
Вот последний кусочек скрипта 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
Тот скрипт выбора случайного педа, я давно писал, до того пока сам не протестил опкоды...
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
Спасибо, flacs. Очень интересно!
А как вот это понять:
получить актера, который появился в точке с радиусом
получить в смысле заполучить?
И почему ты рекомендуешь именно этот опкод?
Last edited by svetka (17-01-2007 21:25)
Offline
Спасибо, flacs. Очень интересно!
А как вот это понять:
получить актера, который появился в точке с радиусомполучить в смысле заполучить?
И почему ты рекомендуешь именно этот опкод?
Этот так и понимать, игра генерит прохожих, почти постоянно, вот в точке которой игра сгенерила очередного прохожего, и есть хендл актера, котрый можно получить опкодом 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
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
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
Вот весь код!
: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
ПЕДераст он, вот и не обращает внимания ))))
Не иначе!
Еще бывает полезно выводить в игре отладочную инфу, чтобы видеть - приходит игра на данный участок кода или нет.
Очень полезная информация!!!
Offline
Сделала вот так:
: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
Деньги не пришли.
Offline
: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
Ура, Seemann, спасибо!!!
Вижу теперь что я упускала. Но и свою копеечку я всё-таки внесла.
А пед хорошо бегает! Гоняется за всеми, но предпочтение отдает мне.
Именно такой пед мне и был нужен.
Sanchez, reinstal, спасибо!
Offline
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ты никогда не выполнишь такое условие: одновременно БЫТЬ и НЕ БЫТЬ в одной и той же точке Убери одну из 00FE, лучше первую (чтобы актер появлялся когда ты рядом).
Тут проверяется что игрок находится
25 < местоположение < 35
Может есть спец. опкод для этого?
Соответственно, если игрок появляется вне этой зоны клоун непоявиться, надо будет сначало убежать на расстояние 25 < местоположение < 35, а потом вернуться.
У меня этот скрипт прекрасно работает
Offline
Тут проверяется что игрок находится
25 < местоположение < 35
ну да, не заметил, что радиусы разные, поэтому показалось, что параметры абсолютно одинаковые.
отдельного опкода вроде нет, можно и подобным способом проверять.
Offline
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
2svetka:
потому что игра никогда не приходит на метку NONAME_9_300, ты ж сама проверяла через Player.Money. Покажи мне в твоем варианте кода место, откуда она может на это место прийти.
Offline
Блин, какая же я невнимательная. Всё в порядке.
Offline
Копы ЛА появляются только в ЛА, копы СФ в СФ и т.д., и т.п. Где заложена информация о зонах их появления?
Offline
2svetka:
в ехе. Я находил процедуру генерации, там записаны модели копов и, в зависимости от номера города, выбирается та или иная модель для генерации. В принципе через массивы можно попробовать поменять номера моделей, так чтобы вместо копов, например в ЛА, бегали клоуны
Offline
Понятно. Для меня это у-у-у...
А вот еще.
Допустим пустынное место. Педов нет. Но стоит там поставить магазин с витринами, как возле витрин начинают тусоваться пиплы. Эта привязка наверное тоже через ехе делается? Вот если бы можно было такую привязку делать к желаемому об'екту. Чтобы, например, привязала их к лавке. Поставила лавку в пустыне и возле нее генерировались бы педы. Можно такое?
Offline
Я не знаю, как можно населять местность педами через скрипты. Делается это вроде как через popcycle.dat
Offline