psevdochel
Как делать новые слоты уже не секрет (кто их сделал самым первым - не знаю, но как минимум несколько месяцев назад технология уже была освоена некоторыми модмейкерами ) - в последнее время кто их только не делал.
В скрипте весь процесс подробно откомментирован - делай по аналогии.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
TYOPA
Когда перечитывал этот форум,нашёл такое:
function minus_medkit()
local oItem = db.actor:object("medkit")
if oItem then
alife():release(alife():object(oItem:id()), true)
end
end
TYOPA,
**5001b67681f3126adde4**
Сохраняешь в свой скрипт. При удалении предмета пишешь так: имя_твоего_скрипта.del_item(sect), где sect - это имя секции в инвентаре ГГ. Имя всегда пишется в кавычках, например: qqqqq.del_item("wpn_ak74")
Ma$ter, пробуй еще. Метод этот рабочий.
проигрывается эффект телепорта
Вообще-то этот метод только переносит ГГ на позицию, и никаких эффектов он не производит. СТРАННИК3000, потому что ты не в той теме пишешь.
отредактировал(а) SkyLoader: 14-12-2010 17:02 GMT3 час.
#Artos :
Возникла задачка: "Как передать значение переменной из стартового меню игры в запущенную игру без записи в какой-либо файл?"
Целый день долбался...
Пытался передать через глобальные таблицы, которые (в принципе не должны трогаться), но ... После "Старт:Сервер:" всё равно зачищается.
По ходу на стадии запуска игры ТАКИ создается новый стек Luа.
В момент запуска главного меню (при старте игры) загружается xrGame_spy(я с тела, поэтому точно не помню, но что-то именно "SPY").
А только потом, после выбора в меню - xrGаmе.dll.
Это, по ходу, и есть ключевой момент.
Одна (первая, мною указанная) библиотека загружает стартовый экран. И только!
После неё стек чистый.
Включается хrGаmе.dll.
По ходу она запускает новую копию Luа (уже игровую) со своим стек-ом, который (естественно) не может быть виден из первого, так как в Luа может существовать, единовременно, только один стек.
Я не считаю себя знатоком Luа, но применил все свои навыки и ... результата не получил.
Нужно копать ещё глубже (ну по крайней мере я так считаю).
Если кто знает - растолкуйте пожалуйста. Интерес аж раздирает, как же это так сделано?
А из всего выше сказанного получается, что лучший путь передачи параметров через тот же файл.
УВЫ!?
Р.S. Копать всё равно буду (трудно воспринять собственную несостоятельность). Arist
Когда листаешь страницы , и попадается твой ник, я думаю (да и многие, наверное) что это Artos.
Ты хоть немного смени ник (что ли? Не в обиду.).
отредактировал(а) Gun12: 14-12-2010 22:54 GMT3 час. Не стань номинантом премии Дарвина.
Horrible area modВидео в журнале
--------------------------------------------------------------------
Важнейшая задача цивилизации - научить человека мыслить
Gun12
Спасибо за информацию. И хотя информация собственно не дает пути к решению, но все же ... отрицательный результат и/или его подтверждение - экономия и времени и сил. :-)
Аналогично тебе, не успокаиваюсь пока и не принимаю 'невозможность' ... еще покопаюсь, а может и как и раньше - отложу до лучших времен.
Все же не зря похоже сами разрабы все опции заводят через 'user.ltx'.
Если все же кто-то еще из модмейкеров копает в эту сторону:
С появлением NLC6, точнее LUA-перехватчика (luacap.dll), примененного в нем, есть обходной вариант - передавать значения требуемых переменных через 'внешнюю навеску'.
С точки зрения модмейкерства - вполне реальный вариант и даже имеет плюсы, хотя для игрока - есть пока немало минусов.
P.S. Пропустил как то добавку поста от Sapsan'а, поэтому прокомментрирую тут:
Sapsan: ... читал в туториалах о диалогах, что они после просчета не меняются (не пересчитываются) даже при загрузке сохранений пока опять полностью не перезапустишь игру. Тоесть данные можно сохранять, но только если уже был запущен сервер (или клиент). Так может при запуске игры принудительно стартовать игру (сервер или клиент) и тут же из неё выйти вернуться в главное меню, но так, чтобы это незаметно было...
Все это подразумевает передачу из УЖЕ запущенной игры в другую копию запущенной игры.
Требуется же из еще НЕ запущенной, или даже еще не созданной (НИ), игры передавать в новую и/или сохраненную.
Это может быть востребовано, например, при 'лечении' сэйвов, в которых из-за наличия/отсутствия баговых объектов/инфопоршней требуется удалить/добавить/изменить объект/инфопоршень при инициализации проблемного сэйва, т.е. ДО активизации объектов в тех же биндерах иль подобном.
Это может быть востребовано при инициализации схем/модулей, которые оставляют следы в игре ...
И т.п.
Gun12
Разбавлять 'user.ltx' нештатными параметрами далеко не лучший вариант. И движек ругается в лог при загрузках (хотя и паплевать можно) и в случае ошибки - игрок может впасть в ступор ... (не каждый знает, что достаточно удалить 'битый' файл).
Использовать другие/свои файлы - и 'мусорить' не хотелось бы и ... при опять же сбоях при загрузке - подобные файлы могут быть уже и рудиментами, от которых больше мороки, чем пользы. Делать же излишние файловые перепроверки и пр. - всего все одно не упредить ...
Ну а DLL'ка конечно не быстрее работает имеющихся. Просто она избавляет от ручных операция по чистке (возможного) мусора.
Вот простейший пример, когда нужна бы такая передача 'на лету':
В топике разработки Симбиона у игрока возник в игре объект с некорректной секцией. Может он что подправил некорректно, может еще какая причина, но ... требуется объект удалить из сэйва.
Сейчас вариант: прописать в специальном файле (_removed.ltx) 'битую' секцию и соотнести ей имеющуюся аналогичную, типа: 'mutant_sfork_leg:mutant_snork_leg'.
игра постепенно засоряется такими записями ... Требуется ручками чистить.
А если на старте ввести в окошко едит-бокса 'битую' и взвести флажек удаления иль даже замены - то и сэйв реанимирован и следов не остается ... и от игрока не требуется познаний по структуре файлоа, навыков по форматам записей в файлах и ... от описок застрахован.
batment
А посмотреть в том же all.spawn'е секциях уже имеющихся смарт-терейнов религия не позволяет?
#Artos :...передавать значения требуемых переменных через 'внешнюю навеску'...
А чем это лучше обыденного "user.ltx"?
Разве эта новая DLL быстрее работает?
Если это не так - то какой смысл?
---
=) Artos , да я (с пьяну) решил что Erlik удаляет =). Сорри.
Р.S.S. Что-то и Т9 уже не слушается?!!
#Artos :...Вот только вычислять 10 раз параметры для актора - не оптимально :-)
Вот черт, не зря Т9 не слушается =), я сразу и не обратил внимания.
Конечно же нужно при любых условиях стараться не создавать "лишних" не только глобальных, но и локальных переменных.
А тут 10 обращений к глобальным данным?!?
Естественно нужно сначала сохранить всю эту катавасию локально, а потом и сам черт по ...=)
---
Почитал под спойлером.
Должен согласиться - совершенно замечательная идея.
(как же такие простые вещи в голову не приходят??? Ну...не каждому дано =). Смиримся с судьбой, братья)
отредактировал(а) Gun12: 15-12-2010 00:45 GMT3 час. Не стань номинантом премии Дарвина.
SkyLoader
1. 'Малость' - понятие относительное ... да и зависит от места применения.
Попробуй подобное перед каким нибудь куском кода/схемы, которая 'подчищает' инвентори иль , например, удалить аптечку, предварительно 'съев' ее.
2. Когда такая 'малость' приводит хотя бы и к редким вылетам (безлоговым!) в игре - игрок(и) не считают это малостью.
ИМХО, не стОит экономить на строчках кода, если это конечно не заведомо черновой код.
Ну а если это идет как решение для другого, слабо в скриптах разбирающегося, то ... тем более не стОит тиражировать 'черновые коды'.
почему не стОит грузить сэйвы 'на лету'
Gun12, erlik
Получил еще немного информации для головоломки:
Немного выше (#1397990) комментировал пост Sapsan'а по 'остаткам' драфтов от диалогов при перезапуске сэйвов ... Наткнулся на аналогичное для окна инвентори.
Давненько уже прикрутил доп.слоты к окну инвентори и вроде как все нормально работало. Однако один из игроков-тестеров нарвался на вылет при запуске игры с пустыми слотами (ножа, бинокля ...). Поковырял коды, облегчил малость, отказавшись от статика (подложки) и оставив только кнопки с текстурами. Ошибка (вылет при наведении на пустой доп.слот) вроде как исчезла.
Однако продолжил поиск и оказалось: если в сэйве в слоты разместить предметы и после этого завершить игру (не выходя в ОС) и начать новую или загрузить иной сэйв (на лету) - в пустых слотах оказывается именно то, что было в них при завершении прошлой игры. Причем (у меня это дублируется и на основном экране) предметов в слотах точно нет, но обновлялка окон-слотов перестает работать. При попытке нажать слот-кнопку (выкинуть предмет) - вылет без лога.
Испробовал всевозможные варианты организации доп.окошек в окне инвентори, ошибок в скриптах точно нет, но ... из завершенной игры через выход из игры (disconnect или game_reload) объект окна
инвентори с его приаттаченными кнопками (текстуры/надписи) передается новой игре или запущенному сэйву.
Конечно такая передача скорее вредна, т.к. приводит к фатальным ошибкам (объект получается фейковым), но ... есть над чем подумать и учитывать.
Вероятно движек игры резервирует некие области памяти и, заполнив их однажды, не затрудняет себя очисткой/обновлением ...
erlik, вероятно с твоим рюкзаком должно происходить аналогичное, хотя ... ты запрещаешь инвентори при отсутствии рюкзака. Но проверить не смог. На чистой игре (патчи 1.0004 и 1.0005) с модом вылет с получаемых сохранок:
#Artos :... завершить игру (не выходя в ОС) и начать новую или загрузить иной сэйв (на лету) - в пустых слотах оказывается именно то, что было в них при завершении прошлой игры.
Так-с-с. Значит надежда всё же есть.
Интересно-интересно. Обязательно гляну.
Artos
Я никогда не использовал опцию меню "завершить игру"(а какой в ней смысл?) - всегда сразу выхожу в ОС.
При всех прочих вариантах загрузки сейвов - со слотами все в порядке.
PS:твой вылет [error]Description : e:\games\stalker\shoc\gamedata\config\ связан либо с твоим fsgame, либо все таки что-то несовместимо из-за различий файлов и конкретного патча игры. На моем 4-вом все в порядке. Сам по себе данный вылет не имеет отношения к игровым скриптам, а только к файловой системе и загрузке файлов.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Народ помогите настроить нпс чтобы те допустим (военные увидев гг, который их атаковал и убежал, начали преследование. Допустим от блокпоста до лагеря новичков они бы доходили) У меня было такое настроено, но щас перестало работать)
Horrible area modВидео в журнале
--------------------------------------------------------------------
Важнейшая задача цивилизации - научить человека мыслить
erlik
Тоже предпочитаю закрывать игру полностью, выходя в ОС, но ... дал информацию по "завершить игру" вкупе и с "загрузить сэйв". Немало игроков, при смерти ГГ, тут же грузят ближайшее сохранение или, выйдя в игровое меню (по эни-кею) по сути "завершить игру", вновь грузят сэйв.
А по ошибке/вылету: Тебе решать ... искать/править ... 'fsgame' у меня конечно правленный под меня, но ... и чистые игры всех патчей и все(!) моды, которые пробую/играюсь - не имеют подобной ошибки на каких-либо сохранениях.
И, кстати, значительная нелогичность с выкидываемым рюкзаком и доп.слотами. Нет рюкзака - не возможности начего сделать н с поясом ни с доп.слотами (по сути это кабыра/карманы). А если понадобилось арт с поясв снять иль ножик/детектор выкинуть/поменять? ...
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.