Nazgool 250 Опубликовано 9 Июня 2009 Kirag Спасибо тебе за работу. Ты съэкономил, лично для меня и, я думаю, для многих людей, кучу времени. Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 1 Июля 2009 Цитата из amk_offline_alife : elseif string.find(obj:section_name(),"^af_") then Может надо: elseif string.find(obj:section_name(),"af_") then В данной функции LUА вида : string.find(s,р) в строке s(определяемой obj:section_name()) ищется вхождение шаблона р("^af_") В шаблоне могут использоваться управляющие символы, исполняемые и читаемые, только самой LUА. К этим символам относится и *циркумфлекс*(^) означающий поиск с начала строки. Он говорит о том, что вхождение "аf_" должно быть исключительно 1-м, 2-м и 3-м символом в строке. Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 5 Июля 2009 ...Для того чтобы изменить стартовое количество денег, многие советуют править all.spawn или сделать это скриптом. Но есть способ намного легче - в файл character_desc_general.xml в секцию actor после строки <reputation>0</reputation> добавить - <money min="1000"max="1000" infinitive="0"/>. min минимальное значения, max нное, Тут ты не совсем прав. Если в all_spawn не удалить стартовые 40 р., то игра возьмет настройки именно из all_spawn, а на изменение money_min/max ей будет глубоко наплевать. Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 28 Июля 2009 ...как проставить в логике игнор,чтоб...нпс во время боя не учавствует в нем а ждет в установленном месте до момента когда к нему приблизятся на определенное расстояние А можно узнать подробнее? НПС под гулагом или сам бродит(может с группой)? Если под гулагом, то стоит ли на месте или ходит? Если бродит, то бой будет рандомный или сюжетный? Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 28 Июля 2009 gruber, тогда можно попробовать такой вариант(теория): Поставить рестриктор с центром в точке, где сидит непись и радиусом, определяющим зону, при входе в которую он сорвется в бой. В gulag_escape.script найти работу этого НПС и после out_rest = "???" через запятую добавить info_rest = в кавычках название нового рестриктора. Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 28 Июля 2009 Gun12, я замечаю врага раньше чем он задумает воевать... Но ведь вопрос был поставлен так:...не учавствует в нем а ждет в установленном месте до момента когда к нему приблизятся на определенное расстояние... "определенное расстояние" и устанавливает рестриктор. Может я чего-то не понял из условий поставленной задачи? Тогда хотелось бы узнать подробнее. Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 13 Августа 2009 Здраствуйте! Я заселяю локацию, и мне нужно прописать костры вокруг которых будут неписи.Костры на локации уже существуют.Интересует как их сделать видными для НПС. Обьясните пожалуйста, как это сделать. Совсем не обязательно создавать гулаг. Например можно сделать так : В файле 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 = "левел_вертекс этой точки" Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 28 Августа 2009 ...как заспавнить мутанта через скрипт? А то человека получается а мутанта нет... Для начала хотелось бы знать - что именно не получается? Что выдает лог? Что Вы делали? Нужна вся информация. Иначе Ваш вопрос просто проигнорируют. Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 2 Сентября 2009 Вот первые три цифры - координаты X, Y, Z. А остальные? 60449 - level_vertex_id 46 - game_vertex_id 0,0,0 - direction (x,y,z) "L01_Escape" - я думаю понятно Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 25 Сентября 2009 ...Единственно, все реальные действия закопаны глубоко внутри state_mgr. Однако так и не понятно, что же мешает выполнить свои команды со стороны... Возможно я понял не правильно, но не с подобной ли проблемой сталкивался Red75 в первоначальной версии "Напарников", когда НПС не подчинялись новой схеме? Если да, то причина ведь была в том, что нужно было установить состояние с помощью state_mgr.set_state(). И в этом случае, если сравнить статью на Wiki с окончательным вариантом, где эта проблема была решена, возможно понять как именно это было сделано. Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 2 Февраля 2010 не подскажите как сделать так чтобы с "данного" оружия можно было стрелять только в "Экоскелете"?... Вот например. Нельзя взять ПКМ, если не надета экза. Изменишь где что нужно : 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 Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 2 Февраля 2010 (изменено) 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 Изменено 2 Февраля 2010 пользователем Gun12 Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 2 Февраля 2010 Friday13 в биндере эктора конечно. Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 2 Февраля 2010 (изменено) gamedata\scripts\bind_stalker.script Функция function actor_binder:update(delta) Сразу ниже неё пиши вызов в формате : название_файла.название_функции. Можешь написать эту функцию в любом файле из папки scripts, а можешь создать свой файл и назвать скажем my_script и написать там. Должно быть так : function actor_binder:update(delta) my_script.check_armor() ... Изменено 2 Февраля 2010 пользователем Gun12 Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 2 Февраля 2010 (изменено) Да, поспешил. Измени строку : local tmpw = amk.spawn_item_in_inv("wpn_pkm" ) на local tmpw = amk.spawn_item_in_inv(weapon:section()) Изменено 2 Февраля 2010 пользователем Gun12 Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 9 Февраля 2010 Тут в теме солянки шум,что НПС и монстры в воду почемуто не залазят - никто не знает - они и правда ее определять умеют или все таки это случайность? По крайней мере я убедился что это не случайность. Сколько раз был на Болотах - ходил только по воде. Ни тебе радиации, ни (самое главное) монстров. Так что нужно сказать Архаре что есть такая недоработка. Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 24 Февраля 2010 как написать скрипт чтобы нпс и авто спавнились 1 раз в начале игры? Вызов скрипта поставь после строчки _G.g_start_avi = true в функции actor_binder:update(delta) файла bind_stalker.script Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 26 Февраля 2010 malandrinus, понимаю что вспоминать может уже не к месту, но только увидел, и не могу не ответить на ваш пост 3877. Возможно вы хотели сказать что такой способ не эстетичен? Но так делать можно! Не мне же вам объяснять, что апдейт будет "обрезать" секцию if not has_alife_info("storyline_actor_start") ... end после получения вышеупомянутой infoportion. И раз уж такая запись существует, то почему не воспользоваться ею и не поставить тот же одноразовый спавн в начале игры на неё? Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 26 Февраля 2010 О какой проверке идет речь? Вызов ставить внутри уже упомянутого блока if ... еnd. Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 26 Февраля 2010 а он не является проверкой? Эта проверка изначально поставлена туда разрабами, ничего нового, кроме вызова спавна внутри этого блока, не добавляется. Этот блок срабатывает один раз при старте игры, а далее, при следующих апдейтах, он просто игнорируется, т.к. не проходит оригинальная проверка if NOT ... InfoPortion уже оказывается выдан после первого апдейта. Поделиться этим сообщением Ссылка на сообщение