Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/
strelok200 0 Опубликовано 22 Февраля 2012 Поделиться Опубликовано 22 Февраля 2012 ColR_iT, А зачем нужны game vertex и level vertex в лук поинтах? [start_6look] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -1.03979444503784,8.50889873504639,-135.781280517578 p0:game_vertex_id = 3646 p0:level_vertex_id = 356302 А из-за этого не могут быть проблемы с сейвами? Так все нормально нет вылетов, но сейвы бьются постоянно Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-675818
Daniar299 0 Опубликовано 22 Февраля 2012 Поделиться Опубликовано 22 Февраля 2012 Здрасте, у меня вопрос как заспанить Монстра через скрипт? Кол-во не имеет значение, но если можно то лучше через алл. Плиз с примером на кордоне! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-675824
Boofer 0 Опубликовано 22 Февраля 2012 Поделиться Опубликовано 22 Февраля 2012 (изменено) Из за чего может быть такая проблема? Заспавнил мутанта и задал ему логику направится в определённую точку. Но вместо того чтобы двигаться к точке, мутант тупо стоит на месте с анимацией бега. Добавлено через 8 мин.: Вот что я действительно упустил, забыл сказать важную вещь - мутант спавнится на новой локации. Секция спавна собаки(моего мутанта) из all.spawn. ; cse_abstract properties section_name = dog_normal name = dog_normal_1 position = 179.759155273438,20.1181125640869,79.2889633178711 direction = 5.63856360713544e-007,-1.32480001449585,-1.41571035783272e-007 ; cse_alife_object properties game_vertex_id = 0 distance = 40.5999984741211 level_vertex_id = 383716 object_flags = 0xffffffbf custom_data = <<END [logic] active = mob_walker@dog_walk_1 [mob_walker@dog_walk_1] path_walk = dog_walk_1 on_timer = 10 | mob_walker@dog_walk_2 [mob_walker@dog_walk_2] path_walk = dog_walk_2 END ; cse_visual properties visual_name = monsters\dog\dog_red ; cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 health = 1 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 1 upd:timestamp = 0 upd:creature_flags = 0 upd:position = 179.759155273438,20.1181125640869,79.2889633178711 upd:o_model = 0 upd:o_torso = -1.32480001449585,5.63856360713544e-007,0 upd:g_team = 0 upd:g_squad = 0 upd:g_group = 0 ; cse_alife_monster_abstract properties upd:next_game_vertex_id = 65535 upd:prev_game_vertex_id = 65535 upd:distance_from_point = 0 upd:distance_to_point = 0 ; cse_ph_skeleton properties ; cse_alife_monster_base properties ; se_monster properties Точки я думаю писать уже не нужно? Не думаю что они чем-то помогут, но вот если что: [dog_walk_1] points = p0 p0:name = name00 p0:position = 218.416305541992,21.7092933654785,91.9415588378906 p0:game_vertex_id = 0 p0:level_vertex_id = 421092 [dog_walk_2] points = p0 p0:name = name00 p0:position = 88.924103,-10.092127,118.739883 p0:game_vertex_id = 1 p0:level_vertex_id = 301145 Изменено 22 Февраля 2012 пользователем ColR_iT Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-675880
ColR_iT 171 Опубликовано 22 Февраля 2012 Поделиться Опубликовано 22 Февраля 2012 (изменено) strelok200, за тем же зачем и в остальных точках: точках пути, спавна и т.д. и тому подобное. Биться сейвы из-за этого точно не будут. Что это такое можно найти минут за пять воспользовавшись поиском. Daniar299, функция спавн монстра ничем не отличается от спавна того же НПС или же какого-нибудь предмета. Примеры тебе предоставили разработчики в оригинальных файлах. Вооружаешься поиском по словам (выбрать есть из чего) и вперёд на фронт в геймдату. Изменено 22 Февраля 2012 пользователем ColR_iT Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-675930
kratos888 0 Опубликовано 22 Февраля 2012 Поделиться Опубликовано 22 Февраля 2012 (изменено) Нужна помощь! Пытаюсь заспавнить непися на вышке, что на Кордоне у блокпоста военных. Спавн делаю через all.spawn. Прописал ему даже свой гулаг - днём дежурит, ночью спит (или что-то в этом роде). Так вот, прописал, спавнится - но не работает именно его логика. Как только появляется - тут же слезает с вышки и гуляет по блокпосту. Такую же проблему увидел и у командира военных на блокпосте - вместо того, чтобы стоять и наблюдать за происходящим, он тоже гуляет по тому же маршруту. В скрипте gulag_escape смотрел приоритеты - своему неписю поставил аж под 500 ед. (на всякий случай, чтоб не сбивали другие террэйны). И всё равно его что-то сбивает - вместо того, чтобы стоять на вышке, он тупо ходит по территории за блокпостом. Кто может, подскажите пожалуйста, в чём беда? Вот. На скрине проиллюстрированы предположительные точки, куда непись смотрит и откуда он смотрит (только днём). А ночью пока не нужно - если разберусь с днём, разберуюсь и с ночью. По гулагам - слишком много нужно писать, всё не поместится. Но уверяю - что бы я ни делал, даже простую ремарковскую логику прописывал ему - всё равно куда-то убегает. Вот точка, откуда непись смотрит (прописал в all.spawn): [big_soldier_smart_walk1] points = p0 p0:name = name00 p0:flags = 0x400 p0:position = -163.7255859375, -25.435829162598, -350.27590942383 p0:game_vertex_id = 31 p0:level_vertex_id = 85729 А вот точки, куда он смотрит: [big_soldier_smart_look1] points = p0,p1,p2 p0:name = name00|a=guard p0:flags = 0x400 p0:position = -183.30322265625, -30.729475021362, -318.25082397461 p0:game_vertex_id = 36 p0:level_vertex_id = 67308 p0:links = p1(1) p1:name = name01|t=15000|a=guard p1:flags = 0x400 p1:position = -159.03273010254, -30.059520721436, -302.86755371094 p1:game_vertex_id = 34 p1:level_vertex_id = 90503 p1:links = p2(1) p2:name = name02|t=10000|a=guard p2:flags = 0x400 p2:position = -119.28175354004, -30.398241043091, -324.59219360352 p2:game_vertex_id = 100 p2:level_vertex_id = 134793 А это точки, где непись спит: [big_soldier_sleeper_sleep] points = p0, p1 p0:name = wp00 p0:position = -166.57637023926, -24.899848937988, -356.91793823242 p0:game_vertex_id = 31 p0:level_vertex_id = 83083 p0:links = p1(1) p1:name = wp01 p1:position = -166.56726074219, -25.43902015686, -352.73843383789 p1:game_vertex_id = 83092 p1:level_vertex_id = 31 p1:links = p0(1) Из gulag_escape.script: if type == "big_soldier_smart" then t = { section = "logic@big_soldier_smart", idle = 0, prior = 100, state = {0}, in_rest = "", out_rest = "", position_threshold = 100, predicate = function(obj_info) return obj_info.profile_name == "big_soldier_profile" end } table.insert(sj, t) t = { section = "logic@big_soldier_sleeper", idle = 0, prior = 100, state = {1}, position_threshold = 100, online = true, in_rest = "", out_rest = "", predicate = function(obj_info) return obj_info.profile_name == "big_soldier_profile" end } table.insert(sj, t) if type == "big_soldier_smart" then return function(gulag) if level.get_time_hours() >= 6 and level.get_time_hours() <= 20 then return 0 -- день else return 1 -- ночь end end end if gulag_type == "big_soldier_smart" then return se_obj:profile_name() == "big_soldier_profile" end [logic@big_soldier_smart] active = walker@big_soldier_walker [walker@big_soldier_walker] path_walk = walk1 path_look = look1 on_info = {+big_soldier_warning1 -big_soldier_warning1_given} remark@big_soldier_warning [remark@big_soldier_warning] anim = threat snd = big_soldier_1 tips = big_soldier_1_radio tips_sender = soldier_elite1 target = actor on_signal = sound_end | walker@big_soldier_walker %+big_soldier_warning1_given% [logic@big_soldier_sleeper] active = sleeper@big_soldier_sleeper [sleeper@big_soldier_sleeper] path_main = sleep wakeable = true Это всё, что я сделал. Изменено 22 Февраля 2012 пользователем ColR_iT Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-675936
*Shoker* 322 Опубликовано 22 Февраля 2012 Поделиться Опубликовано 22 Февраля 2012 Artos Спасибо за разъяснение ___ Последний вопрос - раз рестрикторы есть и у оффлайн объектов, то можно ли их удалить через серверный без использования нет-пакетов? Или нужно например отлавливать их выход в онлайн? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-675943
Artos 99 Опубликовано 22 Февраля 2012 Поделиться Опубликовано 22 Февраля 2012 (изменено) *Shoker*, ну зачем задавать вопрос, на который можно самому ответить чуток подумав? Для доступа к информации по рестрикторам объекта имеются методы ... Эти методы имеются только для клиентского объекта ... Делаем вывод, что или для изменения такой информации требуется иметь объект в онлайне или работать нештатными методами, т.е. через нет-пакеты. Мне непонятно, ну почему тебе не посмотреть как работа с информацией по рестрикторам сделана в том же Simbion'е или OGSE? В этих модах проблемы со спавном и удалением аномалий решены. Оставался вопрос с некорректной порой записью нет-пакетов по причине некорректных на то время кодов для чтения/записи скелета объекта, что приводило изредка к "рельсам" - так теперь и это решено. Чем тебе вот этот код не подходит? --/#+# чистка рестрикторов function Clear_Restriction(idNPC,soNPC,oNPC) local sim = alife() if not soNPC then soNPC = idNPC and sim:object(idNPC) end if soNPC and IsNPC(soNPC) then --/ для онлайновых объектов if oNPC and level.object_by_id(soNPC.id) then if oNPC.alive and not oNPC:alive() then --/ мертв? oNPC:remove_all_restrictions() --/ чистим все elseif db.iSSVer <= 8 then --/#!# for SHOC|CS: по списку имен рестрикторов local sInRestrictions = oNPC:in_restrictions() --/ читаем список рестрикторов 'in' (входить) if sInRestrictions ~= "" then local tToRemove = {} for sRest in sInRestrictions:gmatch('%s*[^,]+%s*') do --/ разделяем имена по запятым local oRestr = sim:object(sRest) --/#!# only for SHOC|CS if oRestr and Is_ZoneAnom(oRestr) then table.insert(tToRemove,sRest) end end if next(tToRemove) then local sToRemove = table.concat(tToRemove,',') --/ строка 'удаляемых' у объекта рестрикторов oNPC:remove_restrictions("",sToRemove) end end end end --/ для всех (т.е. и оффлайновых) объектов local pk = get_netpk(soNPC,1) --/ запрос нет-пакета ('state') if pk:isOk() then --/ получен доступ к нет-пакету объекта? local data = pk:get() --/ читаем данные из нет-пакета if next(data.dynamic_in_restrictions) then --/ таблица рестрикторов не пуста? local tRestrLeft,idRestr = {},nil --/ массив НЕ удаляемых рестрикторов for idx,idRestr in ipairs(data.dynamic_in_restrictions) do local soRestr = idRestr and sim:object(idRestr) if soRestr then if Is_ZoneAnom(soRestr) then --/ проверка: аномалия? tRestrRemoved[idRestr] = true if tAnomsRemove[idRestr] then tAnomsRemove[idRestr] = false --/#?# end sim:remove_in_restriction(soNPC, idRestr) else --/ не удаляемый рестриктор table.insert(tRestrLeft, idRestr) end end end -- if #data.dynamic_in_restrictions ~= #tRestrLeft then data.dynamic_in_restrictions = tRestrLeft pk:set(data) --/< запись в нет-пакет end end end end end Изменено 22 Февраля 2012 пользователем Artos Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-675950
Daniar299 0 Опубликовано 22 Февраля 2012 Поделиться Опубликовано 22 Февраля 2012 (изменено) Daniar299, функция спавн монстра ничем не отличается от спавна того же НПС или же какого-нибудь предмета. Примеры тебе предоставили разработчики в оригинальных файлах. Вооружаешься поиском по словам (выбрать есть из чего) и вперёд на фронт в геймдату.Да я согласен функции тежи! Но например та же логика, story_id, spawn_sections, character_profile, откуда брать их? точнее что туда писать для монстра без логики, чтоб просто бегал! Изменено 22 Февраля 2012 пользователем ColR_iT Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-675960
_Призрак_ 11 Опубликовано 22 Февраля 2012 Поделиться Опубликовано 22 Февраля 2012 Озадачился я сегодня такой проблемой. Есть текст произвольной длинны. Нужно узнать сколько строк он займет при выводе на статик. У статика задан параметр компекс_мод=1 У меня было несколько идей: 1. Посчитать какой размер текста и сколько в нем символов \n. Но проблема в том что из-за переменоса слов на другую строку этот метод дает погрешность в несколько строк при большом объеме текста. 2. Фактически переписать метод SetText. Идея такая - резать строку по словам и смотреть помещается ли это слово на эту строку. заодно посчитать символы \n. Но при больших текстах такая система будет работать очень долго, а там как у меня и так много чего в этот момент обрабатывается это не есть хорошо. Заранее спасибо Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-675965
ColR_iT 171 Опубликовано 22 Февраля 2012 Поделиться Опубликовано 22 Февраля 2012 Daniar299, если прочитать твои два поста, то становится очень не понятно чего тебе нужно. Ты просишь спавн через скрипт и тут же говоришь, что лучше через "алл". Определись с выбором то. Ещё раз повторюсь: функция спавна монстра ничем не отличается от функции спавна НПС, что там, что там тебе нужно прописать секцию и координаты. Если тебе нужно заспавнить моба через all.spawn, то распаковавши его, скопируй похожую, измени номер секции спавна, поправь имя и координаты, и будет тебе счастье. Туторов тьма-тьмущая. Открой хотя бы тот же Stalkerin и изучай. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-675967
Malandrinus 615 Опубликовано 22 Февраля 2012 Поделиться Опубликовано 22 Февраля 2012 _Призрак_, если надо быстро, то забудь про это. Но в самом то деле, зачем выводить быстро и при этом динамически переносить строки? На худ что ли многострочный текст дампить? Думаю, что при выводе на худ лучше как-то решить вопрос компромиссно - самому распределить строки и отформатировать текст. Если же вывод подразумевается в диалоговое окно, то соображения скорости по большому счету не важны. В этом случае однако нет другого решения, кроме как считать символы и слова и формировать текст с переносами. Дополнительная сложность будет в том, что ширина символов почти всех ходовых шрифтов движка - неодинаковая. Придется делать допущения о среднем размере символа и вводить некий запас, чтобы строка ненароком не вылезла за ширину окна. Ну или сформировать таблицу размеров символов и при суммировании брать размеры из этой таблицы по коду. Еще раз, для диалога самое чудовищное решение в плане скорости скорее всего никаких проблем не вызовет. На худ так естественно выводить нельзя. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-675971
strelok200 0 Опубликовано 22 Февраля 2012 Поделиться Опубликовано 22 Февраля 2012 Получается вертексы надо использовать те же, что и при спавне? Добавлено через 29 мин.: Посмотрел на Инсайде, там об этом только вкратце Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-675973
Boofer 0 Опубликовано 23 Февраля 2012 Поделиться Опубликовано 23 Февраля 2012 А на мой вопрос так и не ответили... Неужели никто не знает решения? Не поверю... Если это поможет, то у меня были следующие подозрения: У сталкеров есть секции такого типа: [stalker_terrain] 255,000,255,255 008,001,255,255 ;Разрешено ходить по опасным местам на баре 012,001,255,255 ;Разрешено ходить по опасным местам на Милитари У собак же она одна, но может быть она не подходит для моей новой локации или что-то типа этого? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-676266
Artos 99 Опубликовано 23 Февраля 2012 Поделиться Опубликовано 23 Февраля 2012 Boofer, не стОит всех оптом подозревать в незнании ... Большей частью, и не хочется многим заниматься очередными погадалками, тем более в таком частном вопросе, который многим по-барабану. Кому-то лень, у кого-то более важные дела, чтобы тратить на мелочовку время ... Параметр смарт-терейна в твоем случае не имеет никакого значения. ... мутант тупо стоит на месте с анимацией бега - признак того, что потеряно управление над объектом. Т.е. монстр был взят под скриптовое управление и алайф тут уже не рулит. Ну а почему у тебя схема прекратила управлять монстром - гадай сам. Тут без собственно кодов схемы, параметров локации, путей, и прочего и тем более без строк лога из схемы - только пустыми предполагалками можно заниматься. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-676281
Boofer 0 Опубликовано 23 Февраля 2012 Поделиться Опубликовано 23 Февраля 2012 Artos, ну тогда меня может смущать только сама логика мутанта. Рабочая ли вообще схема mob_walker? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-676298
Artos 99 Опубликовано 23 Февраля 2012 Поделиться Опубликовано 23 Февраля 2012 (изменено) Boofer, давайте все же задумываться прежде чем писать вопрос в топик! Если бы схема не была рабочей - то в кодах оригинальной игры мы бы не встречали сплошь и рядом упоминания этой схемы и конфигов логики этой схемы. Ну возьми ты ту же "учебную" плоть с Кордона (esc_suicidal_flesh), которая гибнет в аномалии. Ей и схема прописана и она в соответствии с этой схемой бежит туда, куда ей заказано и "героически" гибнет, не суча на месте ногами ... ;-) Смотри в чем разница ... если не считать собственно кординат на локации, хотя и в них вполне может быть загвоздка. Поставь очень желательный параметр path_look, который ты напрочь у себя проигнорировал. Добавь в коды схемы тестовые выводы в лог и смотри ... будет ли твоя непись под управлением схемы или зависнет между "небом и землей", т.е. и схема ее "потеряет" и под управление алайфа она не вернется. Не гадать и смущаться нужно, а делать что-то и смотреть. Делать желательно осмысленно, а не абы чО писать в схему/логику. Добавлено через 19 мин.: P.S. И что тебе мешает определить виновата ли логика/схема или нет? Чтобы не заниматься перекомпиляцией алл.спавна - прописываем путь к конфигу логики, где и можно экспериментировать ... Пробуем с "пустой" логикой, пробуем с иной схемой, пробуем с иными параметрами своей схемы ... Ведь все это и не так сложно и ответ и порцию знаний/опыта на будущее. Изменено 23 Февраля 2012 пользователем Artos Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-676311
botik 0 Опубликовано 23 Февраля 2012 Поделиться Опубликовано 23 Февраля 2012 привет,народ столкнулся с такой проблемой,пропала фраза у всех сталкеров "До встречи!" уже все перерыл немогу понять куда делась,подскажите плиз как исправить это чтобы фраза была Во-первых, ошибся темой. Во-вторых, откуда кто знает, что ты там наворотил? В-третьих, тебе уже было замечание по грамотности, если не хочешь последствий - пиши грамотно. Cyclone Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-676323
Boofer 0 Опубликовано 24 Февраля 2012 Поделиться Опубликовано 24 Февраля 2012 (изменено) Artos, выяснил что виновата именно логика. Когда мутант находится под действием логики, то зависает в истерическом бегу на месте, но стоит ему заметить врага, он выходит из под действия логики и нападает на врага (передвигается). Но стоит врагу пропасть, он снова продолжает выполнять незаконченную логику и зависает... Менял и координаты точек и координаты спавна самого мутанта. Даже прописывал новую локацию в скрипте xr_gulag. Безрезультатно. Уже даже не представляю что ещё можно сделать... Пробовал без логики. Всё нормально. Изменено 24 Февраля 2012 пользователем Boofer Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-676471
Artos 99 Опубликовано 24 Февраля 2012 Поделиться Опубликовано 24 Февраля 2012 Boofer, ну и ... констатация факта того, что тобою написана ошибочная логика и не более. Теперь, если еще не отпало желание, смотри свою логику и приводи ее к рабочему варианту. Та же "учебная" плоть тебе в качестве примера, как сделана рабочая логика для схемы. strelok200, в твоем вопросе "голый" сэйв бесполезен. Без всех твоих модмфицированных кодов и пр. изменений от оригинальной игры, версию которой ты также не упоминаешь - бессмыслено даже о чем-то говорить. Битые сэйвы могут возникать по самым разным причинам, коих неперечислишь даже. Ну а раз ковыряешь алл.спавн и получаешь битье - смотри свои ошибки при правках ищи что и где не так делаешь. Используй вывод в лог при загрузке игры технологических сообщений, смотри какой объект виноват и т.д. Если выложишь где-нибуль весь свой мод с парой битых сэйвов - попробую на выходных глянуть ... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-676624
Tris 9 Опубликовано 25 Февраля 2012 Поделиться Опубликовано 25 Февраля 2012 Здравствуйте! Пожалуйста, помогите разобраться с вылетом: function object_eat(obj) local sect = obj:section() if db.actor:has_info("wpn_porshein") then db.actor:disable_info_portion("wpn_porshein") iTimer = nil db.actor:restore_weapon() end if sect == "medkit" or sect == "medkit_army" or sect == "medkit_scientic" then db.actor:hide_weapon() random_time() end end function random_time() local random_table_function = math.random(1,5) if random_table_function == 1 then function_start_1() end if random_table_function == 2 then function_start_2() end if random_table_function == 3 then function_start_3() end if random_table_function == 4 then function_start_4() end if random_table_function == 5 then function_start_5() end function function_start_1() iTimer = time_global() + 5*1000 db.actor:give_info_portion("wpn_porshein") end function function_start_2() iTimer = time_global() + 7*1000 db.actor:give_info_portion("wpn_porshein") end function function_start_3() iTimer = time_global() + 9*1000 db.actor:give_info_portion("wpn_porshein") end function function_start_4() iTimer = time_global() + 11*1000 db.actor:give_info_portion("wpn_porshein") end function function_start_5() iTimer = time_global() + 13*1000 db.actor:give_info_portion("wpn_porshein") end end function Timer_N_minutes() if iTimer and iTimer < time_global() then iTimer = nil db.actor:disable_info_portion("wpn_porshein") db.actor:restore_weapon() end end FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : d:\stalker cop\gamedata\scripts\builds_activ.script:34: attempt to call global 'function_start_5' (a nil value) stack trace: Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/194/#findComment-676828
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти