Expression : fatal error Function : mem_usage_impl File : E:\stalker\patch_1_0004\xrCore\memory_usage.cpp Line : 156 Description : <no expression> Arguments : bad node in heap Это после добавления локации с нуля в игру , как исправить?
повторяю люди занете чё за фигня: Expression : ai().script_engine().functor(start_game_callback,functor) Function : CALifeSimulator::CALifeSimulator File : E:\stalker\patch_1_0004\xr_3da\xrGame\alife_simulator.cpp Line : 64 Description : failed to get start game callback Ничё сделать немогу помогите плиз
Такой вопрос. Сделал однотипный квест для волка на убийство сталкера, а как зашел в игру вылет с логом то-что в 20 старочке g.script ошибка при том что его даже нет. Если кто знает как делать ему квест скинтье инструкцию.
Dark_dey , сделал настройку текстуры так как ты сказал на модель новичка добавил в торговлю Сидоровичу и дал описание с характеристиками вот что выдает Expression : fatal error Function : CModelPool::Instance_Create File : E:\stalker\patch_1_0004\xr_3da\xrRender\ModelPool.cpp Line : 73 Description : <no expression> Arguments : Unknown visual type
Всем мододелам и учащимся привет. Не могли бы вы мне помочь? Вот у меня такая проблемка не могу создать нормально квест на Зов Припяти. Можете пожаалуйста обьяснить внятно как сделать маленький но уже какой нибуть квест с разветвлениями. Буду очень благодарен
<string id="test_dialog_0"> - это то, на что ссылается скелет диалога.
<text>Это тэстовый диалог</text> - собственно текст.
!!!ВНИМАНИЕ!!! Все диалоги начинаются со слов Меченого.
3. Теперь нужно прописать этот диалог НПС. Например Бармену. Открываем файл "character_desc_bar.xml" и находим секцию Бармена. Она идёт самой первой. После всех <actor_dialog>???</actor_dialog> Прописываем свой: <actor_dialog>test_dialog</actor_dialog>
">>>>Диалоги Часть2<<<<"
Сложность:Средне
Как создать диалог посложнее. Как создать диалог с разными вариантами ответов. Как создать диалог который исчезнет после прочтения.
1. Открываем, например файл dialogs_escape.xml (gamedata/config/gameplay) и пишем в конец:
2.Создаём свой скрипт в папке gamedata/script например test.script и пишем в него 3 функции:
Код function dat_dengi(first_speaker, second_speaker) dialogs.relocate_money(second_speaker, 3000, "in") end
Это функция отдачи денег ГГ. На месте 3000 любое число. На месте dat_dengi любое название. ------------------------------------------------------------
Код function dat_item(first_speaker, second_speaker) dialogs.relocate_item_section(second_speaker, "wpn_pm", "in") end
Это функция отдачи предмета ГГ. На месте wpn_pm любой предмет. На месте dat_item любое название. ------------------------------------------------------------
Код function spawn_item_or_monster_or_stalker() alife():create("wpn_pm",vector():set(pos),lvid,gvid) end
Это функция спавна чего либо. На месте wpn_pm любой предмет,монстр или сталкер. На месте (pos),lvid,gvid) любые координаты. На месте spawn_item_or_monster_or_stalker любое название. ------------------------------------------------------------ Так же функция может быть одна, но с несколькими действиями. Например:
Код function all(first_speaker, second_speaker) dialogs.relocate_money(second_speaker, 3000, "in") dialogs.relocate_item_section(second_speaker, "wpn_pm", "in") alife():create("wpn_pm",vector():set(pos),lvid,gvid) end
Значит что одновременно ГГ дадут 3000 рублей, ПМ и по заданным координатам заспавнится ПМ. ------------------------------------------------------------
Код <string id="test_dialog_0"> <text>Тест прекондишонов.</text> </string> <string id="test_dialog_1"> <text>Какой?</text> </string> <string id="test_dialog_2"> <text>Эта фраза появляется если у ГГ есть ??? рублей.</text> </string> <string id="test_dialog_3"> <text>Эта фраза появляется если у ГГ есть ??? предмет.</text> </string>
2.Создаём свой скрипт в папке gamedata/script например test.script и пишем в него 3
функции-прекондишона:
Код function has_money_???() local money = math.floor(200 *
xr_statistic_freeplay.get_freeplay_statistic():get_found_pda_discount()) return db.actor:money()>=money end
Это функция проверки количества денег ГГ. На месте 200 любое число. На месте has_money_??? любое название. ------------------------------------------------------------
Код function has_item(task, objective) if db.actor ~= nil then return db.actor:object("wpn_pm") ~= nil end return false end
Это функция проверки наличия какого либо предмета у ГГ. На месте wpn_pm любой предмет. На месте has_item любое название. ------------------------------------------------------------
Это значит что фраза <text>test_dialog_2</text> появится если у ГГ есть 200рублей Это значит что фраза <text>test_dialog_3</text> появится если у ГГ есть ПМ.
">>>>Как прописать свои файлы текстов в игру<<<<"
Сложность:Легко Допустим вы захотели написать много диалогов, и не хочется их писать в оригинальные файлы. Делаем так: 1. Открываем localization.ltx и прописываем в самый конец:
Код ваш_файл_текстов
2. Создаём ваш_файл_текстов в папке "gamedata/config/text/rus/" и пишем в них диалоги/описания/любые тексты по анологии с другими файлами в папке "rus"
Функции диалогов:
======================================================================= ВЫДАЁМ ПРЕДМЕТ АКТОРУ ======================================================================= function название функции (first_speaker, second_speaker) dialogs.relocate_item_section(second_speaker, "название предмета", "in") end Размещается в файлах скрипт. Выдача поршня вставляется под строку действия. название скрипта.название функции Примечание, что бы выдать два одинаковых предмета пишем function название функции (first_speaker, second_speaker) dialogs.relocate_item_section(second_speaker, "название предмета", "in",2) end Если надо больше меняем цифру 2 на нужную нам. ========================================================================= ОТБИРАЕМ ПРЕДМЕТ У АКТОРА. ========================================================================= function название функции(first_speaker, second_speaker) dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "название предмета") end размещается в файлах скрипт выдача поршня вставляется под строку действия название скрипта.название функции Примечание, что бы отобрать два одинаковых предмета пишем function название функции(first_speaker, second_speaker) dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "название предмета",2) end Если надо больше меняем цифру 2 на нужную нам. ======================================================================= СПАВНИМ ВЕЩЬ В РЮКЗАК гг ======================================================================= function название функции() local obj = alife():create("ВЕЩЬ", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end В диалог название скрипта.название функции =========================================================================== ПРОВЕРКА НАЛИЧИЯ У АКТОРА ПРЕДМЕТА =========================================================================== Вариант первый function Название функции() if db.actor:object("название предмета") then return true end return false end в диалог имя скрипта.название функции <---------как вариант(пользуются ПЫС)------------------> function название функции(first_speaker, second_speaker) return first_speaker:object("название предмета") ~= nil end в диалог имя скрипта.название функции =========================================================================== ПРОВЕРКА ВЕЩЕЙ У ГГ =========================================================================== function Название функции(first_speaker, second_speaker) return first_speaker:object("название предмета") ~= nil or first_speaker:object("название предмета") ~= nil or first_speaker:object("название предмета") ~= nil end в диалог имя скрипта.название функции описание... если есть хотя бы одна вещь, то мы получим фразу, если нет всех нет разговора ============================================================================ ПРОВЕРКА ДЕНЕГ У ГГ ============================================================================ Вариант первый(используют ПЫС) function название функции(first_speaker, second_speaker) return first_speaker:money() >= 2000 end в диалог имя скрипта.название функции <-----------Вариант два--------------> Использовал на ТЧ, но и в ЗП работает function название функции() return db.actor:money()>=10000 end в диалог имя скрипта.название функции ========================================================================= СПАВН ПРЕДМЕТА ========================================================================= function spawn_vintar() alife():create("Название предмета",vector():set(24.725412368774,-3.6072344779968,173.83030700684),993926,210) end В диалог название скрипта.название функции ========================================================================== МГНОВЕННАЯ СМЕРТЬ ГГ ========================================================================== function название функции(npc, actor) npc:kill(actor) end В диалог название скрипта.название функции
=========================================================================== ПРОВЕРКА КОЛ_ВА ОДИНАКОВЫХ ПРЕДМЕТОВ =========================================================================== function название функции(first_speaker, second_speaker) local item_sections = {"Предмет"} local needed = количество одинаковых предметов, ставится цифра без знаков local count = 0 local item_section local function calc(temp, item) if item:section() == item_section then count = count + 1 end end for k,v in pairs(item_sections) do item_section = v get_story_object("actor"):iterate_inventory(calc, actor) end return count >= needed end в диалог имя скрипта.название функции ========================================================================== ЛЕЧЕНИЕ ГГ ========================================================================== Вставим этот актион в диалог dialogs.medic_magic_potion ========================================================================== ВЫДАЧА ДЕНЕГ от НПС ГГ ========================================================================== function название функции(first_speaker, second_speaker) dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2000) end В диалог название скрипта.название функции ========================================================================== Инфопоршни ========================================================================== ПОРШЕНЬ НА ОДНОРАЗОВОЕ ПРОЧТЕНИЕ ДИАЛОГА. ========================================================================== прописываем в файле info_какойто.xml
в конце ветки диалога запишем Название поршня в начале диалога под id квеста запишем название поршня =========================================================================== ПОРШЕНЬ НА СКРЫТИЕ ДИАЛОГА ДО ПРОЧТЕНИЯ ОПРЕДЕЛЁНОГО ДИАЛОГА. =========================================================================== прописываем в файле info_какойто.xml
В конце диалога после которого должна появиться новая ветка название поршня в начале новой ветки под id прописываем название поршня теперь новый диалог недоступен пока мы не прочтём первый ========================================================================================== ПОРШЕНЬ НА ЗАПРЕТ ДИАЛОГА ЕСЛИ В ПРЕДИДУЩЕМ МЫ ПОСТАВИЛИ УСЛОВИЕ ПО КОТОРОМУ ЕГО НЕ БУДЕТ ========================================================================================== прописываем в файле info_какойто.xml
В конце определяющего диалога ставим название поршня под id квеста(диалога) который не должен появиться прописываем название поршня Теперь диалог не появится.
Как удалить gamedata со stalker clear sky,плиз ответьте!Геймдаты просто нет в папке с игрой!Я хотел мод установить,там написано полное удаление геймдаты и становление новой...жду ответа)