Перейти к контенту

dsh

Жители
  • Число публикаций

    4 084
  • Регистрация

  • Последнее посещение

  • Дней в топе

    19
  • AMKoin

    29,429 [Подарить AMKoin]

Весь контент пользователя dsh

  1. dsh

    Скриптование

    @TIGER_VLAD, про вертолеты и бтры не скажу, не смотрел. Возможно, даже если соотв. класс не поддерживается, читать, как alife item, и устанавливать только custom data. Для мутантов поддержка есть, m_net_utils.get_monster_data() и xs_netpk.monster().
  2. dsh

    Скриптование

    @TIGER_VLAD, вот по тому примеру делать не нужно. Выкинь каку. Лучше делать
  3. dsh

    Скриптование

    @TIGER_VLAD, самый простой вариант - сделать для него секцию, в ней указать "custom_data". Универсальный вариант - создать непися через alife():create() и любым, удобным для тебя, способом записать в его нетпакет нужную custom_data.
  4. Я вот сейчас на память не скажу, но кажется мне, если ты в параметре не укажешь файл логики, то будет использоваться дефолтный. Могу ошибаться, надо в скрипте проверить. Ты с крысами не перепутал? Это они будут разбредаться, а тушканчики кинуться атаковать кого-нибудь, да еще и в таком количестве. Я же писал, idle_spawn ни для чего не используется. Во всяком случае в тех респаунерах, что есть в Солянке. Интервал респауна там захаркоден. xyzlg = respawn_section = min_count = 100 max_count = 100 max_spawn = 0 Как-то так. По памяти пишу, могу ошибиться. В пустые места допиши свое. Ну дык. В этом и есть смысл респауна. Он поддерживает численность популяции, т.е. периодически доспаунивает недостающее кол-во мобов. Это был просто пример из практики. Автомато-гранатометный комплекс Гроза. Автомат такой.
  5. Можешь. Это просто респаунер и ему все равно кого спаунить. Только имей ввиду, из-за ошибки или это фича такая странная, но все созданные мобы не будут иметь none = true в секции смарт террейнов и при первой же возможности сбегут в свободный смарт. idle_spawn и min_spawn ни за что не отвечают. Если совсем точно, то idle_spawn = -1 делает тоже самое, что и spawn_once = true. Т.е. выполняет спаун один раз и все. Больше ни для чего не используется. Смешно было, разбирая Солянку, видеть копирование этой фигни из одного респаунера в другой. Используются следующие параметры: min_count - минимальное кол-во заспауненых мобов. При каждом респауне численность мобов будет восстановлена до этого значения, если кого нет в живых. max_count - максимальное кол-во заспауненых мобов. max_spawn - после спауна min_count мобов будет сделана попытка заспаунить еще max_spawn штук, но что бы кол-во всех мобов не первысило max_count. Имеет смысл при использовании conditions, где задается не 100% вероятность. Т.е. max_spawn = 3 condition = 90 будет пытаться заспаунить мобов 3 раза, каждый раз сравнивая math.random( 100 ) с 90. Если меньше, то создаст моба, иначе - нет. Да, и еще одна проблема с этим респаунерами. Там совершенно не обрабатывается момент гибели подопечного. Т.е. возможна такая ситуация: 1. Создана плоть 2. Плоть убили 3. После этого, и перед наступлением времени респауна, в игре создается предмет с таким же id, как у убитой плоти. Гроза, к примеру. Все, теперь это Гроза будет жить в списке респаунера, пока она существует в игровом мире. Т.е. на одну плоть станет меньше, т.к. Грозу никто не убьет.
  6. dsh

    X-Ray extensions

    @Malandrinus, вот это определение состояния актора по битам, имеет какие-нибудь отличия от db.actor:is_actor_running() и т.п. из того же OGSE? Или это тоже самое?
  7. dsh

    dsh mod

    Нет, просто делаем это менее выгодным, что бы повысить привлекательность собирания артефактов после выброса и перенести акцент экономики с торговли хламом, на торговлю артефактами. Изначально я хотел совсем эту торговлю хламом удешевить. Но подумал, мало-ли как у кого сложиться с артефактами, надо альтернативу оставить. А ты зря так про нелегко. У NLC это гармоничная и продуманная система ограничений. Не ищи логичности там, где ее искать не нужно. Это игра. А это такие правила. Как правила игры в футбол, к примеру. Кажутся они тебе логичными или нет - они такие, какие есть. Во первых, ты этот артефакт можешь на пояс повесить. А во вторых, много ты усилий потратил, что бы получить этот хороший, не дешевый именной ствол? И вообще, что ты имеешь ввиду? Ты Сайгу Кардана будешь у Ворона на артефакт менять? Ну так не делай так. Я считаю это глупостью и поощрять не буду. Или ты какой-нибудь снайперский сиг имеешь ввиду, который можно на Болотах отобрать у бандитов, без какого-либо труда? Да, этот ничего не стоящий ствол ты поменяешь на ничего не стоящую безделушку. Или не поменяешь, тебе выбирать. С чего ты решил, что все в этой Зоне должно быть для тебя, игрока? Что это за махровый эгоцентризм?
  8. dsh

    dsh mod

    @petrov0805, все там так. Ты только воображение подключи. То, что ты нашел у собаки копыто значит что? Правильно, она перед этим закусила на завтрак кабаном. То, что ты нашел у бюрера пленку значит что? Правильно, эти противные карлики любят всякие блестяшки и тащат все, что светится. Про четыре когтя. Не ожидай у всех полный комплект. Это только у химеры есть, т.к. мутант крепкий, а в список отслеживаемых костей включено много костей, которые легко задеть. Т.ч. выбирая между включить меньше костей и выпадать один коготь или включить больше костей и выпадать максимум, я выбрал второе. Вот если я сделаю, вдруг, что кабана, что бы завалить, нужно будет измолотить дробью, вот тогда с него будет шанс получить 4 копыта. При условии, конечно, что ты провозишься час, выцеливая его в глаз, что бы случайно не задеть какую-нибудь кость и не уменьшить кол-во получаемых копыт.
  9. @aromatizer, к этой штуке, в пару, нужны еще автопродавалка вещей и автопроходилка игры. И наступит тогда счастье.
  10. dsh

    Скриптование

    @vampirnik77, и net_spawn и net_destroy вызываются. Когда граната появляется в руках, вызывается net_spawn и у этой гранаты есть parent. Потом гранату бросают и вызывается net_destroy, а потом появляется новая граната и для нее вызывается net_spawn. parent-а у этой гранаты нет. Она летит, падает и взрывается. Вызывается net_destroy. Один из вариантов отловить взрыв гранаты - это в net_spawn сохранить parent_id, а в net_destroy проверять, имеется-ли сохраненный parent_id. Если нет, значит это взрыв. Если есть - значит граната полетела.
  11. dsh

    Скриптование

    @vampirnik77, первый дестрой вызывается, когда граната вылетает с руки. Дальше летит уже другая граната, если я правильно помню. Второй дестрой - это уже ее взрыв.
  12. dsh

    Скриптование

    @Romz, у тебя, похоже, OGSE? Тогда вместо той лабуды, лучше используй: function ts_get_weapon_ammo_type(sobj) local data = m_net_utils.get_weapon_data( sobj ) return data.ammo_type end Или вообще, вместо local ammo_type = ts_get_weapon_ammo_type( alife():object(wpn:id()) ) используй local ammo_type = ogse_wpn_utils.get_active_ammo_type( wpn ) Будем надеяться, что не попадется оружия с активированным подствольником. Впрочем, оригинал эту ситуацию тоже не обрабатывает.
  13. dsh

    Скриптование

    @naxac, не, ну в самом деле, ну это уже какой-то совет из серии выстрелю себе в ногу. Ну есть же m_net_utils или xs_netpk. А, впрочем, ты прав. Бесполезно это. Какая разница, какую магию эта лабуда использует, если она так сделана, как сделана.
  14. @НаноБот, у меня вместе с драйвером видео вот такая штука идет: http://www.geforce.com/geforce-experience В ней shadow play есть, которой и записываю.
  15. @AndrewMor, а что возвращает local population = strn.gulag:get_population()
  16. @AndrewMor, попробуй вот так: local strn = alife():object( "pred_flesh_plant" ) if strn then strn:initialize_if_needed() local population = strn.gulag:get_population_comed() end
  17. dsh

    Скриптование

    @HellRatz, @hi_flyer, вот, взято откуда-то отсюда: -- http://www.amk-team.ru/forum/index.php?showtopic=6458&p=937442 --[=[ local lname = level.name() local lvtab = GetLevelVertexes( lname ) local lvx = math.max( unpack( lvtab ) ) local lv = math_random( 1, lvx ) local gvtab = GetGameVertexes( lname ) local gv_min = math.min( unpack( gvtab ) ) local gv_max = math.max( unpack( gvtab ) ) --]=] function GetLevelVertexes( level ) local lvtab ={} local i = 0 while game_graph():valid_vertex_id( i ) do local lv = game_graph():vertex( i ):level_vertex_id() local ln = alife():level_name( game_graph():vertex( i ):level_id() ) if not lvtab[ ln ] then lvtab[ ln ] = {} end table.insert( lvtab[ ln ], lv ) i = i + 1 end return lvtab[ level ] end function GetGameVertexes( level ) local gvtab ={} local i = 0 while game_graph():valid_vertex_id( i ) do local ln = alife():level_name( game_graph():vertex( i ):level_id() ) if not gvtab[ ln ] then gvtab[ ln ] = {} end table.insert( gvtab[ ln ], i ) i = i + 1 end return gvtab[ level ] end
  18. dsh

    Скриптование

    @Zander_driver, речь шла не про хит колбек, а про колбек, который вызывается перед ним и из которого можно поменять свойства хита.
  19. Да, нужны будут разные секции. Т.к. ты не программист, это будет самое лучшее решение. Что бы через нетпакет указать смарт, нужно "врезаться" в se_monster или se_stalker.script, в function se_monster:on_before_register() И там уже либо вызывать что-то свое, либо генерировать сигнал, если используется сигнальная система. На этот этапе еще можно переписать нетпакет и указать там свою custom_data. Оно будет прочитано позже.
  20. @AndrewMor, проще и надежнее всего в секции непися указать файл с custom_data. А в этом файле уже писать все, что нужно. Так, как было показано выше, smart_terrains прописать проблематично. У себя я наблюдал ситуации, когда немедленно после выполнения :create() смарт террейн уже был назначен. А это значит, что последующее переписывание нетпакета уже никакого смысла не имеет.
  21. @AndrewMor, тут уж я не помогу. Все это надо в живую отлаживать, а не по переписке. А это можешь сделать только ты.
  22. Не знаю, что у тебя возвращает xr_gulag.getGulagPopulation, кол-во в гулаге или кол-во в гулаге пришедших к месту работы. Сдается мне, что второе, если принимать во внимание отладочный вывод. Значит по мнению xr_gulag, никто из собак на место работы не дошел. Дошедшими на работу считаются те, кто находится в радиусе job_position_threshold от первой точки пути работы. Если у тебя не переделанный каким-то образом xr_gulag.
  23. @AndrewMor, ну судя по отладке их не только смарт взял, но и гулаг их на работу назначил. А должны-ли они на эту точку идти? Вроде бы, я не уверен, они должны держаться в определенном радиусе от этой точки. Ты их насколько далеко заспаунил от самого смарта и от этой точки?
  24. Да, вот так вот for s = 1, 3 do local sobj = alife():create( "dog_weak", vector():set( 128.0493927002, 16.724941253662, 63.131950378418 ), 1144984,4025 ) sobj:brain():update() log2( "XXX: %s: smart_terrain_id = %s", sobj:name(), sobj:smart_terrain_id() ) end Вместо log2 используй то, чем у тебя в моде можно вывести текст в лог.
  25. @AndrewMor, сделай для проверки так. Вот ты заспаунил их local sobj = alife():create() на всякий случай потом сделай sobj:brain():update() и выведи в лог sobj:smart_terrain_id() Вот и поймешь, взял их смарт или нет. А потом уже с остальным будешь разбираться. Про distance и radius не скажу, не знаю. В smart_terrains.script я никакую обработку этих параметров не встречал. Возможно для смартов оно и не используется.

AMK-Team.ru

×
×
  • Создать...