singapur22
пытался убрать метку с рестриктора - сделал как ты советовал - запомнил айди, сохранил его, затем передал в функцию.
вписал вот это
local id = nil над функцией function create_restr. Создал функции сохр. и загрузки айди. Вписал их bind_stalker
затем в файле xr_effects создал функцию для убирания метки - (вызов из логики рестриктора)
function remove_metka()
local id = test_restrictor.create_restr(sid, pos, lv, gv, ltx, radius, x, y, z)
level.map_remove_object_spot(id, "alife_presentation_smart_target")
end
Что я упустил?
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik Не верно. Ты спавнишь новый рестриктор и пытаешься у него убрать не существующий спот.
Во первых, нужно как то установить запись айди рестриктора в файловую переменную. Для этого при спавне рестриктора, в файле с функцией , в которой производится установка спота на рестриктор нужно прописать:
local id = 0 --\\чтобы предотвратить вылет, при упущенном состоянии. Где 0 = айди актора.
function Tvaj_funkciya()
id = --спавн рестриктора
--установка спота
end
В этом же файле создаём функции сохранения\загрузки.
И здесь же создаём функцию удаления спота:
function remove_metka()
if level.map_has_object_spot(id, "alife_presentation_smart_target") then
level.map_remove_object_spot(id, "alife_presentation_smart_target")
end
end
Я не проверял действие метода map_has_object_spot, но судя по названию, это проверочный метод наличия выведенного спота.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
БаЛаБоЛ Знак ; в файлах формата ltx означает комментарий. Тоесть, после данного знака в соответствующей строке считывание данных не производится. Так что, делай выводы.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
народ плиз кто знат , подскажите можно ли в сталкере чн изменить параметр времени игры на гитаре сталкера у костра. просто хочу напихать песен под гитару в игру . но не уверен что если просто напихаю в папку геймдата то они будут проигрываться полностью. и если все таки такое можно сделать то подскажите путь к файлу
singapur22
ну с айди я все понял, кроме того почему nil нельзя ставить...
Тока получается что надо создавать доп. функцию в xr_effects для вызова функции убирания метки
типа так :
function remove_metka() -- эта вызывается из логики и лежит в xr_effects
test_restrictor.remove_metka_1() -- эта уже убирает саму метку и находится в файле с функцией рестр.
end
как то немножко громоздко выходит. Или я чего то не понимаю?
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
БаЛаБоЛ Ну во первых, это не мелочи. А во вторых, получается, что у тебя wpn_hpsa не приписан к рангу пистолетов. Если он у тебя не приписан к автоматам, то фактически он остался без ранга.
добавлено спустя 5 минут
erlik Зачем дополнительную функцию? Прописывай всё в фале xr_effects, и будет тебе счастье. А с нил, та проблема, которую допускают многие. Нил, означает "ничего", тобиш нет такой переменной. Если при использовании данной переменной, значение её будет равно нил, то соответственно произайдёт вылет. Поэтому, чтобы его предотвратить при не предусмотреном состоянии, например удаление спота, до его создания, и устанавливается айди актора.
отредактировал(а) singapur22: 24-09-2009 16:35 GMT3 час. Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik и singapur22
Прочитал посты и немогу понять как будет убираться метка через диалог или после самоуничтожения?
Простите что вторгаюсь в беседе и еще простите за возможно глупы вопрос.
Сей час играю в SRP с фиксами, но игра вылетает, когда подходишь к бару:
Expression : fatal error
Function : CRender::texture_load
File : E:\stalker\patch_1_0004\xr_3da\xrRender\Texture.cpp
Line : 295
Description :
Arguments : Can't find texture 'wpn\wpn_crosshair_an94'
Сложные проблемы всегда имеют простые, легкие для понимания неправильные решения.
Смерти одого человека - трагедия, смерть тысячи - статистика
CH@$ER
у тебя игра не может найти текстуру прицела - wpn_crosshair_an94.
я посмотрел в геймдате мода - там ее действительно нет.
И что странно - в моде нет новых прицелов: используются тока стандартные +новые сетки прицелов - но у этих текстур другие имена. К чему приписана эта текста - непонятно, но если судить по имени - к прицелу абакана. Попробуй сделать копию любой текстуры прицела (там их штук 6 есть - например wpn_crosshair_d_N) - переименуй ее в wpn_crosshair_an94 и сунь туда же где и все остальные текстуры оружия.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik так и сделал: нашел файл wpn_crosshair и просто дописал к нему an94, теперь другая проблема, там же:
Expression : ai().level_graph().valid_vertex_id(vertex->data().level_vertex_id())
Function : CPatrolPathManager::select_point
File : E:\stalker\patch_1_0004\xr_3da\xrGame\patrol_path_manager.cpp
Line : 164
Description : patrol path[agr_nii_east_gate_walk2], point on path [wp01],object [esc_dark_stalker_223940]
Сложные проблемы всегда имеют простые, легкие для понимания неправильные решения.
Смерти одого человека - трагедия, смерть тысячи - статистика
Нил, означает "ничего", тобиш нет такой переменной.
Если при использовании данной переменной, значение её будет равно нил, то соответственно произайдёт вылет.
Поправлю: Это НЕ означает, что "ничего". Нередко это означает, что переменная есть, т.е. ОБЪЯВЛЕНА, но ее значение или не определено (дефолтно приравнено к nil) или обнИлино (приравнено к nil принудительно).
Обработка перменных со значением NIL тоже допускается и нередко применяется. Только естественно как и в стандартных случаях "деления на ноль", результат может быть фатальным.
Проверка nil == true - и т.п. допустима и вполне применима, а вот nil == 0 - , к примеру, приведет к вылету ("ничего" сравнивается с числом).
Т.о. не следует бояться NIL'а, но следует внимательно его контролировать и недопускать операций не допускающих обработку значений имеющихся переменных (или результатов выполнения функций) == "ничего".
manunj
столкнулся со странной проблемой - мои диалоги приписанные сидору (те что для моего тотализатора) становятся недоступны после того как взять спецзадание.
Поискал у сидора в логике строчку meet_dialog и actors_dialogs или meet_enables (как то так) куда обычно вписываются доступные для персонажа диалоги, но у него этого нет.
И теперь думаю как же быть, чтобы мои диалоги со ставками не пропадали...
Artos
Приветствую вас в этом топике:-) ваши советы очень бы нам (изучающим lua) пригодились, если бы вы здесь появлялись, чего, увы, к сожалению (понимаю, конечно, почему - симбион) не приходиться наблюдать.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
manunj
не а никаких дефолтных прекондишенов не использовал - так как нафиг .
щас вписал сидору в логику секцию actor_dialogs и там айди всех мои диалогов через запятую - посмотрим может прокатит.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Не буду ничего обещать, т.к. не столь Симбион "виноват" в том, что 'не очень то появляюсь' в подобных топиках, сколь то, что и "наелся уже азов LUA и его толкований" и ... многократные повторы вопросов типа: "Сколько будет 2х2?" у меня уже вызывают желание ... послать к RTFM, чем в "сотый" раз разжевывать. Не педагог, в общем ...
Но иногда заглядываю и ... если завязывается действительно 'изучение/поиск решений/...', то порой несмотря на усталость и недостаток времени, хочется подсказать/подправить.
А по диалогам ... (не особенно вник в суть,сорри), помимо прекондишенов, немаловажен синтаксис xml'ек (порой ошибки нет, а диалог пропадает) и ... скрипт, в котором прописан диалог должен быть инициирован 'до' обращения к нему из диалога (это если используется 'свой' скрипт, а не 'родительский').
Все сделал - с этой секцией - actor_dialogs - диалоги никуда у Сидора не исчезают :-)
Artos
существует ли мануал по работе с эвалюаторами, кроме един. статьи red75 на вики?
Просто пытаюсь написать новую схему поведения для неписей - вышибал долгов, а кроме изучения скриптов игры и схем типа компаньон больше и некуда ткнуться..
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik
Мануалов не встречал, но ... в кодах игры немало готовых схем, во многих модах есть схемы (xStream'овский пак, например) - логика и метод проб и ошибок позволяет понять суть работы и способы управления.
Поверь на слово, не все так уж и сложно даже без мануалов (о собственно скриптах тела эвалюаторов не говорю). Поняв общность несложно далее использовать. В последнем минификсе к Симбиону (ТЧ, 090923) я даже написал динамический авто-менеджер подключения и управления эвалюаторами, остается только собственно корректный эвалюатор внести в список используемых.
Artos
среди скриптов игры есть скрипт xr_robbers (нападение и ограбление ГГ), который в игре не задействован. Причина? Он глючный или просто не доделан разрабами? И почему никто из модмейкеров не попытался реализовать схему грабительства ГГ?
Я вот хочу этот скрипт переделать для своих целей (для своего минимода тотализатор), но... пока не хватает опыта и начальных знаний.
минификс к Симбиону обязательно скачаю:-)
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
manunj
надо было скачать последний вариант - по обновленной ссылке. Там исправлено - это из-за глючного нет_пакета 24 - я его заменил на 32. Вылет при переходе на другую локу - так?
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik
Все же ты не по адресу задаешь вопрос. 'Почему не использовали разрабы' - только они могут знать ... и то не все.
Могу только гадать ... Судя по скриптам - он 'из ранних' и скорее всего не доведен был 'до ума'. Позднее возможно уже и по формату 'устарел'.
Почему модмейкеры не используют? Хм, до всего руки не всегда доходят. Кому-то это не интересно, кто-то в игре не видит места для этой схемы ... Да и вообщем-то не так много модмейкеров работают со схемами AI. Возможно опыта/напорства нехватает для 'задействовать'.
Одна из 'опастностей' схем поведения - при некорректных эвалюаторах выловить ошибку не так и просто (как правило безлоговые вылеты) и сжирать могут ресурсы игры под чистую. Пример: схема мордобоя - переполнение стека нередкость (пару дней потратил на поиск причины и то, пока использую эту схему 'вчерне').
P.S. Если пользуешься скайпом - могу пояснить/подсказать/помочь ...
Artos
Адресно к сожалению не задашь :-) вряд ли ответят...вот и спрашиваю у знающего человека.
Кстати, а действительно не стоит использовать для функций сохранения и загрузки значений переменных p:w_u24 ? мне его посоветовали использовать так как он не нагружен в игре, в отличие от 32-го , однако оказалось что зря посоветовали....с ним вылетает с логом что типа нельзя считать данные.
добавлено спустя 52 секунд
скайпа к сожалению нет.
отредактировал(а) erlik: 25-09-2009 00:11 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik
А для чего использовать малоупотребимый вариант (возможно даже имеющий баг в реализации для движка), когда есть 'проверенные' варианты p:w_u8, p:w_u16 или p:w_s32? Попытка c'экономить "пару бит" - сомнительна, лучше сэкономить сотни, оптимизировав кол-во и значения пакетов.
Насколько помню (давно возился), p:w_u24 вполне работоспособен, но ... имеет (движковые) проблемы при сохранении/считывании знака. Там, где он не важен - можно использовать, но ... (см. начало ответа).
А насчет "нагружен" - не совсем понял. Какакя разница сколько раз в программе использовать число 100, или стринг "variable" или функцию printf("Привет!")? Они не имеют "износа" или ограничений по применению.
P.S. Скорее всего 'твои проблемы' при использовании u24 в том, что это всего лишь FFF, а в игре нередко числа имеют значения поболее (до FFFF, точнее 8FFF + знак), вот и теряешь/искажаешь значение при записи ...
Artos
теперь буду знать какие стоит использовать. просто я ведь в этих пакетах мало понимаю - не программист все-таки, lua только месяца полтора назад стал изучать. Спасибо за пояснение.
Странная проблема у меня с таймерами:
поставил на счетчик 35 игровых минут (чтобы убирался поршень через это время), однако поршень убирается когда как - сообщение о выигрыше\прогрыше настроено на приход через 2 минуты реального времени, и диалог тотализатора (после disable поршня -доступности\недоступности диалога) должен появляться чуть позже.. однако в реале - то раньше, то позже...то одновременно с сообщением.
в чем тут дело? апдейт таймера как обычно в actor_binder:update(delta) стоит ....
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik
Не видя кодов - невозможно судить об ошибках/неоптимальностях в них.
Я не знаю какой тайймер ты используешь, на каких кодах, с какими условиями апдейтишь/проверяешь.
Если АМК'шный, то ... не пересекаются ли имена таймеров/переменных? Да и обработчик факта срабатывания таймера может 'чудить'.
А порой - меняй алгоритм.
Обязательно ли запускать оба сразу и ждать срабатывания 2-го после 1-го? Если допустимо - срабатыванем 1-го -> запускай 2-ой отсчет и ... всегда получишь '2-ой после 1-го'. Заодно и сэкономишь на 'параллельной' переменной (вот тебе и экономия в пакетах!).
Artos
да нет - таймер самый элеменарный. до амкашного g_таймера или как там его - я еще не дорос:-)
а сообщения у меня без таймера - там ведь в самом методе прописывается время задержки.
--\ таймер для выключения инфпоршня недоступности диалога со ставками
local timer_info = level.get_time_minutes()
local s = 0
function timer_infoportion()
if timer_info ~= level.get_time_minutes() then
if s == 35 then --\ делаем доступным диалог со ставками через 35 игровых минут
this.name()
s = 0
else
s = s + 1
end
timer_info = level.get_time_minutes()
end
end
function name()
if has_alife_info("totalizator") then --\ в тестовых целях поршень выключаем через 35 игровых минут
db.actor:disable_info_portion("totalizator")
end
end
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.