Контент Nazgool - Страница 24 - AMK Team
Перейти к контенту

Nazgool

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

    618
  • Регистрация

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

  • Дней в топе

    1
  • AMKoin

    37 [Подарить AMKoin]

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

  1. tab_info = {'info_1','info_2','info_3','info_4','info_5'} function rnd_info() math.randomseed(time_global()) math.random() local rnd_pos = math.random(#tab_info) db.actor:give_info_portion(tab_info[rnd_pos]) table.remove(tab_info,rnd_pos) end
  2. Gonarh Всё, я полностью признАю свою неправоту, если вас не затруднит рассказать мне, как(?) неработающий код, вернее отработанный один раз за всю игру, может привести "к вылетам или битию сейвов"
  3. Согласен. Вот поэтому я и написал "неэстетично", но не невозможно.
  4. Эта проверка изначально поставлена туда разрабами, ничего нового, кроме вызова спавна внутри этого блока, не добавляется. Этот блок срабатывает один раз при старте игры, а далее, при следующих апдейтах, он просто игнорируется, т.к. не проходит оригинальная проверка if NOT ... InfoPortion уже оказывается выдан после первого апдейта.
  5. О какой проверке идет речь? Вызов ставить внутри уже упомянутого блока if ... еnd.
  6. malandrinus, понимаю что вспоминать может уже не к месту, но только увидел, и не могу не ответить на ваш пост 3877. Возможно вы хотели сказать что такой способ не эстетичен? Но так делать можно! Не мне же вам объяснять, что апдейт будет "обрезать" секцию if not has_alife_info("storyline_actor_start") ... end после получения вышеупомянутой infoportion. И раз уж такая запись существует, то почему не воспользоваться ею и не поставить тот же одноразовый спавн в начале игры на неё?
  7. Вызов скрипта поставь после строчки _G.g_start_avi = true в функции actor_binder:update(delta) файла bind_stalker.script
  8. По крайней мере я убедился что это не случайность. Сколько раз был на Болотах - ходил только по воде. Ни тебе радиации, ни (самое главное) монстров. Так что нужно сказать Архаре что есть такая недоработка.
  9. Да, поспешил. Измени строку : local tmpw = amk.spawn_item_in_inv("wpn_pkm" ) на local tmpw = amk.spawn_item_in_inv(weapon:section())
  10. gamedata\scripts\bind_stalker.script Функция function actor_binder:update(delta) Сразу ниже неё пиши вызов в формате : название_файла.название_функции. Можешь написать эту функцию в любом файле из папки scripts, а можешь создать свой файл и назвать скажем my_script и написать там. Должно быть так : function actor_binder:update(delta) my_script.check_armor() ...
  11. Friday13 в биндере эктора конечно.
  12. max_max_08 Тогда так : function check_armor() local armor = db.actor:item_in_slot(6) local weapon = db.actor:item_in_slot(2) if db.actor:active_slot()==2 and weapon then local tmp if armor then tmp = armor:section() else tmp = "none" end if (not string.find(tmp, "exo" )) and (weapon:section()=="wpn_pkm" or weapon:section()=="wpn_m60" or weapon:section()=="wpn_minigun") then db.actor:drop_item(weapon) local tmpw = amk.spawn_item_in_inv("wpn_pkm" ) db.actor:transfer_item(weapon,db.actor) alife():release(tmpw) news_manager.send_tip(db.actor,"Невозможно взять пулемёт в руки без экзы",nil,nil,10000) end end Вообще-то этой фунцией я не пользовался. Юзал эту : function check_armor() local wpn,arm local armor = db.actor:item_in_slot(6) local weapon = db.actor:item_in_slot(2) if weapon then wpn = weapon:section() else wpn = "no_weapon" end if armor then arm = armor:section() else arm = "no_armor" end if string:find(wpn,"wpn_название") or string:find(wpn,"wpn_название") or string:find(wpn,"wpn_название") then -- через 'or' пиши сколько нужно стволов if (not string.find(arm, "exo" )) then db.actor:drop_item(weapon) local temp = alife():create("wpn_ak74",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),d b.actor:id()) db.actor:transfer_item(weapon,db.actor) alife():release(temp) news_manager.send_tip(db.actor,"Невозможно взять пулемёт в руки без экзы",nil,nil,10000) end end end
  13. Вот например. Нельзя взять ПКМ, если не надета экза. Изменишь где что нужно : function check_armor() local armor = db.actor:item_in_slot(6) local weapon = db.actor:item_in_slot(2) if db.actor:active_slot()==2 and weapon then local tmp if armor then tmp = armor:section() else tmp = "none" end if (not string.find(tmp, "exo" )) and weapon:section()=="wpn_pkm" then db.actor:drop_item(weapon) local tmpw = amk.spawn_item_in_inv("wpn_pkm" ) db.actor:transfer_item(weapon,db.actor) alife():release(tmpw) end end
  14. Возможно я понял не правильно, но не с подобной ли проблемой сталкивался Red75 в первоначальной версии "Напарников", когда НПС не подчинялись новой схеме? Если да, то причина ведь была в том, что нужно было установить состояние с помощью state_mgr.set_state(). И в этом случае, если сравнить статью на Wiki с окончательным вариантом, где эта проблема была решена, возможно понять как именно это было сделано.
  15. 60449 - level_vertex_id 46 - game_vertex_id 0,0,0 - direction (x,y,z) "L01_Escape" - я думаю понятно
  16. Для начала хотелось бы знать - что именно не получается? Что выдает лог? Что Вы делали? Нужна вся информация. Иначе Ваш вопрос просто проигнорируют.
  17. Nazgool

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

    Можно. Сначала нужно исключить возможность попадания в гулаг. Для этого в логике пишется секция : [smart_terrains] none = true Далее логика пишется таким образом : [logic] active = kamp [kamp] center_point = *** (***-это имя точки, вокруг которой НПС садятся. Располагать её можно где угодно, не только у костра. Название этой точки должно быть уникальным, т.к. она прописывается в way_"уровень".ltх) radius = * (*-радиус в метрах от точки center_point, в пределах которого НПС будут садится. Можно не указывать. По умолчанию 2 метра) path_walk = ***_task (Можно не прописывать, если точка center_point находится не в центре костра. *** - то же название, что и указано в center_point, с добавлением _task. Эта точка тоже прописывается в way_"уровень".ltх, но координаты указываются на некотором расстоянии от center_point. Эта строка нужна для того, чтобы при переходе из оффлайн НПС не попадали в костер и не получали хит, а выходили в этой точке)
  18. Совсем не обязательно создавать гулаг. Например можно сделать так : В файле alife_l"уровень".ltx в секции этого перса написать(или вынести в конфиг) custom_data = <<END [smart_terrains] none = true [logic] active = kamp [kamp] center_point = camp_center_new path_walk = camp_center_task_new В файле way_l"уровень".ltx добавить : [camp_center_new] points = p0 p0:name = wp00 p0:position = "координаты x,y,z костра" p0:game_vertex_id = "гейм_вертекс костра" p0:level_vertex_id = "левел_вертекс костра" [camp_center_task_new] points = p0 p0:name = wp00 p0:position = "координаты x,y,z точки в метре/двух от костра" p0:game_vertex_id = "гейм_вертекс этой точки" p0:level_vertex_id = "левел_вертекс этой точки"
  19. Но ведь вопрос был поставлен так: "определенное расстояние" и устанавливает рестриктор. Может я чего-то не понял из условий поставленной задачи? Тогда хотелось бы узнать подробнее.
  20. gruber, тогда можно попробовать такой вариант(теория): Поставить рестриктор с центром в точке, где сидит непись и радиусом, определяющим зону, при входе в которую он сорвется в бой. В gulag_escape.script найти работу этого НПС и после out_rest = "???" через запятую добавить info_rest = в кавычках название нового рестриктора.
  21. А можно узнать подробнее? НПС под гулагом или сам бродит(может с группой)? Если под гулагом, то стоит ли на месте или ходит? Если бродит, то бой будет рандомный или сюжетный?
  22. Тут ты не совсем прав. Если в all_spawn не удалить стартовые 40 р., то игра возьмет настройки именно из all_spawn, а на изменение money_min/max ей будет глубоко наплевать.
  23. Nazgool

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

    Подскажите, пожалуйста, как работать с подшаблонами LUА. В официальном мануале написано, что они "сохраняются для дальнейшего использования". А сам процесс их использования для меня так и остался не понятен.
  24. В данной функции LUА вида : string.find(s,р) в строке s(определяемой obj:section_name()) ищется вхождение шаблона р("^af_") В шаблоне могут использоваться управляющие символы, исполняемые и читаемые, только самой LUА. К этим символам относится и *циркумфлекс*(^) означающий поиск с начала строки. Он говорит о том, что вхождение "аf_" должно быть исключительно 1-м, 2-м и 3-м символом в строке.
  25. Kirag Спасибо тебе за работу. Ты съэкономил, лично для меня и, я думаю, для многих людей, кучу времени.
×
×
  • Создать...