erlik Зачем дропать? :lok5) Напиши ему скрипт чтоб когда он его съел включался. А чтобы не елось (не исчезало) надо поставить eat_partition = -1 чтобы порций еды стало бесконечное кол-во.
добавлено спустя 4 минут
erlik насчет пояса: я могу это придумать, я могу это написать. Но не на LUA. :-(
добавлено спустя 12 минут
Где расписана работа предмета "ПДА Меченый"? Именно такое Название а не обычный ПДА из items.ltx
отредактировал(а) blackraven6: 17-09-2009 17:23 GMT3 час.
Журнал
- модель M79
- модель HK SL-8
- модель Milkor m32 WIP
blackraven6
так это он для примера еду (консерву) привел. Ему надо просто чтоб при использовании опред. вещи активировался скрипт. А проверка на это делается через функцию дроп, либо надо делать для предмета интерактивное меню и на новые кнопки вешать активацию скрипта - это сложнее.
Других вариантов я не знаю.
eat_partition = -1 это конечно интересное предложение, но обычно все делается через обратный спавн использованной вещи.
А чем lua сложнее других языков программирования ? Я вот месяц назад вообще никакого даже близко не знал...:-)
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik Прописываешь эту НЕ консерву как аптечку без лечения и других эффектов. Деаешь ее бесконечно используемой через eat_partition = -1. И вуаля! Там будет писаться не съесть а использовать!
PS а с чего ты начал луа изучать? Ну там написал простой скриптик, книгу прочитал или еще чего?
добавлено спустя 5 минут
Где расписана работа предмета "ПДА Меченый"? Именно такое Название а не обычный ПДА из items.ltx
отредактировал(а) blackraven6: 17-09-2009 18:30 GMT3 час.
Журнал
- модель M79
- модель HK SL-8
- модель Milkor m32 WIP
blackraven6
Можно и так - не спорю, тока почему то все модмейкеры для спальника и рем. набора используют другой вариант.
Руководство по lua - без него никак - оно, кстати, в инете единственное. То есть полная версия страниц на 50 вордовского текста.
Есть еще недопереведенная книга создателя lua Роберта Иерусалимского - но в инете всего лишь одна четверть книги. Остальное на инглиш. Ну еще есть статьи - трактующие те или иные аспекты языка.
Руководство написано для профи - то есть как раз для тебя - тех , кто уже знаком с другими языками. Мне его очень тяжело читать и осмысливать из-за формального стиля написания, поэтому для меня лучший способ понять как работает тот или иной оператор или функция - че-нить написать и посмотреть, а как это в деле выходит - и сразу приходит понимание.
Либо спросить у singapur22 :-)
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik, blackraven6 спасибо за подсказку)
Парни, у меня ещё один вопрос возник: я поковырялся в inventory_new.xml и нашёл там вот такой кусочек кода:
ui_button_main02 ui_inv_exit
Это кнопка на выход. Мне в рюкзаке надо сделать ещё одну кнопку, но чтобы при нажатии срабатывал мой скрипт, т.е. был не выход из инвентаря, а активация моего сценария. Но вот в выше приведённом коде я никакой связи со скриптами не нашёл :-( Может я чего не понимаю?..
white_wind93
Одного hml файла с координатами текстур и текстом надписи - мало. Кстати лучше использовать свой отдельный файл, в котором надо создать секции с новыми кнопками: где пишутся имена текстур, координаты, размер рамки и текст надписи.
В качестве образца глянь файл ui_sleep.hml - если такой есть в АМК.
Связь надписи, которую ты привел и действия такая: этот кусочек кода - связан со скриптом, который активируется при нажатии на кнопку "выход" и производит действие убрать "инвентарный худ."
Для создания новых интерактивных элементов - то бишь тех же кнопочек-надписей типа "использовать" - тока своих, нужен специальный скрипт. Именно в него и ставится указание, на файл hml с секцяими новых интерактивных элементов.
Он у меня есть, но я пока разбираюсь как он работает. Можешь сам посмотреть в амкашном модуле спальника. Я его из симбиона взял - там коды тоже из АМК. В принципе его можно переделать под свои нужды, но не совсем ясна одна вещь - как этот скрипт привязывается к конкретному итемсу.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
white_wind93 Не скрипты привязываются к кнопкам, а кнопки к скриптам. Этот файл всего лишь создает картинку кнопки. А в файлек скрипта задается кнопка.
Люди а где настраивается как будут отображаться точки стакеров на радаре и будут ли отображатся красные точки. Как их отключить?
Журнал
- модель M79
- модель HK SL-8
- модель Milkor m32 WIP
erlik, я наверно чет не понял. В bind_stalker.script я вот это:
function actor_binder:on_item_drop (obj)
level_tasks.proceed(self.object)
game_stats.update_drop_item (obj, self.object)
end
заменил вот на это:
function actor_binder:on_item_drop (obj)
local section = obj:section()
if section == "matras" then
ui_cheat.spawn_item_in_inv()
end
А вот сам ui_cheat.script:
function spawn_item_in_inv(section,npc)
alife():create("af_medusa", db.actor():position(), 1, db.actor:game_vertex(), db.actor:id())
end
По идеи, должна заспавниться медуза у актора в рюкзаке, а у меня игра виснет при старте так, что даже через диспечер не получается вырубить сталкер &P Я наверно что-то не так опять сделал :-( ...
white_wind93
не надо ничего Заменять. Надо добавить.
Чтобы было так :
function actor_binder:on_item_drop (obj)
local section = obj:section()
if section == "matras" then
ui_cheat.spawn_item_in_inv()
end
level_tasks.proceed(self.object) --\ это все остается, так как нужно для игры.
--game_stats.update_drop_item (obj, self.object)
end
короче я щас сделал все нужные операции для новых кнопочек: добавил новый итемс - рем.набор, прописал его сидору, сделал скрипт ремонта, в хмл вписал секции новых кнопочек, переделал скрипт для инициации новых интерактивных элементов меню - привязал к кнопочкам скрипты на ремонт...но зараза вылетает из-за апдейта функции проверки наличия рем. набора у эктора.
Может кто знает как с этим чертовым интерфейсом надо работать? И как к итемсу привязывается новое меню?
В общем исправил пару ошибок - теперь ниче не вылетает, но новое меню так и не появилось. Обидно, однако...так что вопрос как привязать это меню к конкретному итемсу в инвентаре эктора остается в силе.
отредактировал(а) erlik: 18-09-2009 00:12 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Привет
Ребята нужно сделать функцию для ТЧ что бы при взятии квестового предмета спавнились НПС противники.
И еще нужна функция что бы при убийстве квестового НПС происходил спавн НПС.
Подскажите пожалуйста какой вид могут иметь эти функции.
karavan
function name()
local actor = db.actor
if actor and actor:object("имя_вещи") == nil then
return
else
for i = 1, 10 do
alife():create("имя_чувака",vector():set(х,y,z),level_vertex_id, game_vertex_id) --\ тут пишешь координаты и вертексы, где должен заспавниться чувак. Для кол-ва - ставишь нужное число вместо 10
end
end
end
функцию ставишь на апдейт в файл bind_stalker
в функцию function actor_binder:update(delta)
типа так
имя_файла.name()
поправил чуть-чуть функцию
function name_2()
local npc1
npc1 = level_object_by_sid(sid) --\ пишем в скобочках сид квестового непися
if npc1 and npc1:alive() then
return
else
for i = 1, 10 do
alife():create("имя_чувака",vector():set(х,y,z),level_vertex_id, game_vertex_id)
end
end
end
число sid можно узнать в файле game_story_ids
эту функцию также надо ставить на апдейт
за правильность последней функции не уверен, но вроде так делается проверка на живость или мертвость :-)
добавлено спустя 2 минут
manunj
я все это видел - скрипт такой же переделал для себя :-) но все равно спасибо - завтра еще раз все проверю.
заметил небольшое упущение у себя - может быть из-за него и не появляется меню.
Так что не зря выложил тот скрипт :-) Спасибо.
отредактировал(а) erlik: 18-09-2009 10:25 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Блин, помогите пожалуйста кто-нибудь. Сегодня решил заняться удалением заданий, сначала у Волка. Все сделал, вместо стартавого диалога типа "Отвали, я занят" сделал другой (просто текс изменил), решил сделать, чтобы показывался только один раз, т.е. говоришь "Хорошо" и больше этот диалог не увидиш, сделал вот так:
Но игра даже в главное меню отказывается заходить, объясните пожалуйста почему.
Expression: false
Function: CXml::Init
File: E:\stalker\patch_1_0004\xrXMLParser\xrXMLParser.cpp
Line: 87
Description: XML file:gameplay\dialogs_escape.xml value: errDescr:Error reading end tag.
FaithGTX
ты где то в диалоге тэг неправильно написал. Проверь.
лог читается как "ошибка чтения конца тэга". То есть скорей всего где то в тэге не поставил такой знак / При такой ошибке hml парсер игры как раз и не дает даже в меню войти для загрузки. Так что в следующи раз знай, что если также вылетать будет - значит где то с тэгом в диалоге или тексте напортачил :-)
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Вопрос. Как менять сюжетные задания?
Наприер, встретить петруху. В каких файлах и скриптах надо ковырятся, чтоб задание изменилось на принести придмет петрухе, а за это он тебе про АТП раскажет?
erlik, сделал всё как ты сказал, а игра слетает при попытке использовать объект, вот код ошибки:
Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: No such operator defined
Может в самом ui_cheat.script ошибка со спавном?
function spawn_item_in_inv(section,npc)
alife():create("af_medusa", db.actor():position(), 1, db.actor:game_vertex(), db.actor:id())
end
Alex Rodriguez, заменить не начиная новую игру нельзя, если это уникальные неписи, а если обычные, т.е. генерируемые, то смотри здесь - death_items_by_communities.ltx
white_wind93
вместо этого - откуда такая запись ?!
function spawn_item_in_inv(section,npc)
alife():create("af_medusa", db.actor():position(), 1, db.actor:game_vertex(), db.actor:id())
end
Ладно еще 1 вместо левел вертекса, так в написании гейм_вертекса ошибка. Надо просто писать вертексы эктора и его id и все - для спавна рюказк.
лучше пиши так
function spawn_item_in_inv()
alife():create("af_medusa", db.actor():position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
в скобочках ниче писать не надо,так как ты не используешь мой вариант с передачей данных в основную функцию, а сразу пишешь функцию с данными.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
white_wind93
Блин ты внимательнее следи за написанием имен глобальных переменных - а то я думаю что у тебя с этим все верно и сам ошибку не вижу.
Исправь db.actor():position() на
db.actor:position()
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
так,чё-то я окончательно запутался!допустим,чуваки,стреляющиеся по сюжету с вояками,дабы спасти Крота-это уникальные персы?Я циферки кое-где поменял,загрузил-всё так же.Чтобы у всех персов было то что я подправлю,надо начать новую игру?ладно я всё равно хотел сначала начать...
А ещё где-нидь чё-нидь надо менять?
SALER ПОМОГИ скачас с нета програму для редактирования параметров оружия. брони, медикаментов и прочее Я ни как немогу найти где находится файлы с бронькой в папке с игрой облазил всё не нашёл...
Кто не любит ходить за хабаром - тот застреленый ИЗЛОМ!!!
Expression: xml_doc.NavigateToNode(path,index)
Function: CUIXmlInit::InitWindow
File: E:\stalker\patch_1_0004\xr_3da\xrGame\ui\UIXmlInit.cpp
Line: 87
Description: XML node not found
Arguments: global_wnd
За что отвечает строка position_threshold в настройках гулага (желательно по подробнее)?
erlik
Затестил твою фунцию
function name()
local actor = db.actor
if actor and actor:object("wpn_pm") == nil then
return
else
for i = 1, 10 do
local obj = alife():create("agr_soldier_regular",vector():set(-243,-20,-129),13586,8)
end
end
end
Все работает, но только военные спавнятся каждую секунду наличия у ГГ ПМ-а.
Подскажи как сделать что бы спавн происходил один раз?
Спасибо.
karavan
надо в этой функции поставить условие в виде отсутствия инфопоршня, а затем его выдать.
Тогда цикл спавна будет сделан тока один раз.
function name()
local actor = db.actor
local item = db.actor:object("wpn_pm")
if actor and item == nil then
return
elseif item and actor:dont_has_info("info") then
for i = 1, 10 do
local obj = alife():create("agr_soldier_regular",vector():set(-243,-20,-129),13586,8)
actor:give_info_portion("info")
end
end
end
пишешь поршень с любым именем в файл info_portion. Как - знаешь думаю.
выдачу поршня actor:give_info_portion("info") возможно надо будет поставить перед последним end если первый вариант не заспавнит нужное кол-во неписей.
и для второй функции тоже надо доп. условие в виде поршня прописать.
добавлено спустя 2 минут
FaithGTX
файлы XML трогал?
тэг wnd где-то трогал? там и ищи...
отредактировал(а) erlik: 18-09-2009 23:13 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik
Написал по твоему примеру.
function name_2()
local npc1
npc1 = level_object_by_sid(889)
if npc1 and npc1:alive() then
return
else
for i = 1, 10 do
alife():create("yan_zombied_respawn_1",vector():set(-34,-10,-71),244091,111)
end
end
end
Игра вылетает при загрузке. Где нужно прописать (889) в АллСпавне или game_story_ids, а главное как правельно?
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.