Charsi 440 Опубликовано 25 Августа 2011 Поделиться Опубликовано 25 Августа 2011 speczadanie Как можно округлить число до сотен? Например так - вычисляем сотни и к ним прибавляем ещё 100, если остаток не меньше 50, иначе 0. local z=632.565 z=math.floor(z/100)*100 + (math.fmod(z,100)>=50 and 100 or 0) -- теперь z=600 z=2799 z=math.floor(z/100)*100 + (math.fmod(z,100)>=50 and 100 or 0) -- теперь z=2800 Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий
speczadanie 0 Опубликовано 25 Августа 2011 Поделиться Опубликовано 25 Августа 2011 Вылетает при попытке установки указанного состояния для созданного оружия. Лог: Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...k.e.r.-1-1\gamedata\scripts\myj.script:90: attempt to index local 'obj' (a nil value) 90 строка - это "obj:set_condition(0.1)". Делал, как предлагали выше. Ссылка на комментарий
_Призрак_ 11 Опубликовано 25 Августа 2011 Поделиться Опубликовано 25 Августа 2011 speczadanie А чей ответ ты использовал? Freedom Ссылка на комментарий
strelok200 0 Опубликовано 25 Августа 2011 Поделиться Опубликовано 25 Августа 2011 Kak повесить sid при спавне сталкера скриптово? Создаю глобальный мод с новыми локациямЭ Ссылка на комментарий
speczadanie 0 Опубликовано 25 Августа 2011 Поделиться Опубликовано 25 Августа 2011 Твой, Призрак. Ссылка на комментарий
Artos 99 Опубликовано 25 Августа 2011 Поделиться Опубликовано 25 Августа 2011 (изменено) speczadanie Если нет уверенности в безопасном применении упрощенных вариантов - используй полные (избыточные): function spawn() local wpn = amk.spawn_item_in_inv("wpn_ak74") if wpn then --/ предмет заспавнен? level.client_spawn_manager():add( wpn.id, 0, weapon_in_alife) --/ ставим каллбек на выход в онлайн end end function weapon_in_alife(first,id,obj) if level.object_by_id(id) and obj then --/ предмет в игре? obj:set_condition(0) --/ выставляем кондишн end end Почему у тебя исчезает заспавненный предмет(?) - может ограничитель веса рюкзака сработал(удалил), иль описАлся в кодах, иль еще чего ... Гадать предоставляем тебе самому. strelok200, а почитать топик(и) и ФАКи - времени жаль? 'story_id' присваивается при скриптовом спавне использованием скриптов записи нет-пакетов. Изменено 25 Августа 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Spezer 0 Опубликовано 25 Августа 2011 Поделиться Опубликовано 25 Августа 2011 (изменено) Здравствуйте. У меня проблема: я заспавнил 3 бандитов на новой локе с одинаковой логикой(как-бы логика в разных файлах, но по строению одинаковая) и секции в алл спавне у них по структуре тоже одинаковы.Они ходят патрулируют всё нормально.Но например если один бандит начинает по гг стрелять то другие не обращают внимания на выстрелы, или например когда бандит идёт спиной если начать палить во все стороны от него эффекта ноль. Короче они начинают стрелять только тогда, когда увидят врага сами.Как сделать чтобы они нормально реагировали? Типа стреляешь в одного и все в тебя начинают стрелять, а не только этот один. [10339] ; cse_abstract properties section_name = stalker name = baza_mar_band_1 position = 378.577392578125,2.56930565834045,226.345489501953 direction = -0.998166263103485,0,0.0605319775640965 ; cse_alife_trader_abstract properties money = 5000 character_profile = baza_marsh_band_1 ; cse_alife_object properties game_vertex_id = 3544 distance = 3.5 level_vertex_id = 386803 object_flags = 0xffffffbf custom_data = <<END [logic] cfg = scripts\marsh\band1_patrul_logic.ltx ; cse [smart_terrains] none = true END ; cse_visual properties visual_name = actors\bandit\stalker_bandit_1 ; cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 health = 3 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 3 upd:timestamp = 0x6d6d695f upd:creature_flags = 0x75 upd:position = 378.577392578125,2.56930565834045,226.345489501953 upd:o_model = 0 upd:o_torso = -0.000645029998850077,0.0445535257458687,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_alife_human_abstract properties predicate5 = 1,0,0,2,0 predicate4 = 2,2,1,2 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties [smart_terrains] none = true [logic] active = walker@patr_cerk1_ohr3 [walker@patr_cerk1_ohr3] path_walk = patr_cerk1_ohr3_walk path_look = patr_cerk1_ohr3_look danger = danger_condition@patr_cerk1_ohr3 [danger_condition@patr_cerk1_ohr3] ignore_distance = 0 [patr_cerk1_ohr3_look] points = p0,p1 p0:name = wp00 p0:flags = 0x1 p0:position = 241.453994750977,0.504000067710876,-161.621002197266 p0:game_vertex_id = 3510 p0:level_vertex_id = 289010 p1:name = wp01 p1:flags = 0x2 p1:position = 320.196990966797,0.855000019073486,-137.065002441406 p1:game_vertex_id = 3531 p1:level_vertex_id = 343886 [patr_cerk1_ohr3_walk] points = p0,p1 p0:name = wp00 p0:flags = 0x1 p0:position = 252.224334716797,0.172305732965469,-161.015487670898 p0:game_vertex_id = 3510 p0:level_vertex_id = 296269 p0:links = p1(1) p1:name = wp01 p1:flags = 0x2 p1:position = 312.371002197266,0.796000063419342,-132.20100402832 p1:game_vertex_id = 3531 p1:level_vertex_id = 339727 p1:links = p0(1) Изменено 25 Августа 2011 пользователем ColR_iT С каждым днём, всё радостнее жить! Ссылка на комментарий
_Призрак_ 11 Опубликовано 25 Августа 2011 Поделиться Опубликовано 25 Августа 2011 (изменено) Только вот если присвоить SID НПС'у при спавне через нет-пакеты то получить НПС через СИД можно только после сейф-лоада. Я прав или тут есть какой нибудь обходной путь? Artos Ах, забыл про перевод в оффлайн. Спасибо Изменено 25 Августа 2011 пользователем _Призрак_ Freedom Ссылка на комментарий
Artos 99 Опубликовано 25 Августа 2011 Поделиться Опубликовано 25 Августа 2011 (изменено) _Призрак_ Вроде как ты довольно пытливый и читающий ... :-) Если SID присваивается объекту при спавне - то никаких дополнительных манипуляций не требуется и его гейм-объект доступен сразу же по SID'у как только появится в онлайне. Серверный же объект - и вовсе доступен сразу. Если объект уже в игре и требуется присвоить иль сменить SID, то после (пере)присвоения - существует метод с переводом объекта в оффлайн и обратно ... Изменено 25 Августа 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
panzyuza 41 Опубликовано 25 Августа 2011 Поделиться Опубликовано 25 Августа 2011 (изменено) А можно ли с помощью данной функции выставить в диалоге прекондишн на время?Это в ТЧ. -- точное время function set_current_time (hour, min, sec) local current_time_factor = level.get_time_factor () printf ("Need time : %d:%d:%d", hour, min, sec) local current_time = game.time () local c_day = math.floor (current_time / 86400000) local c_time = current_time - c_day * 86400000 local n_time = (sec + min * 60 + hour * 3600) * 1000 if c_time > n_time then c_day = c_day + 1 end n_time = n_time + c_day * 86400000 level.set_time_factor (10000) while game.time () < n_time do wait () end level.set_time_factor (current_time_factor) end И правильный ли пример? <precondition>ogse.need_time_esc</precondition> function need_time_esc() if set_current_time (23, 00, 00) then return true end return false end Если что не так, подскажите, пожалуйста.И я знаю, что еще можно и с помощью другой функции, просто эта функция для чего? function need_time_esc() return level.get_time_hours() >= 23 and level.get_time_hours() <= 24 end Изменено 25 Августа 2011 пользователем ColR_iT AVS_LOCATION_MOD Ссылка на комментарий
Artos 99 Опубликовано 25 Августа 2011 Поделиться Опубликовано 25 Августа 2011 (изменено) panzyuza Приглянувшаяся тебе функция 'set_current_time' НЕ возвращает никакого ответа и предназначена не для проверок, а только для 'ускоренной' установки заданного времени суток (часы, минуты, секунды). Т.о. твоя проверка 'if set_current_time (23, 00, 00) then' бессмысленна и всегда будет иметь результатом 'nil', т.е. заведомо невыполнимой. Второй же вариант с 'need_time_esc' вернет тебе результат проверки: "Текущее время суток в Зоне не менее 23:00?". Второй элемент условия проверки: 'level.get_time_hours() <= 24' по сути бессмысленный рудимент, т.к. время в Зоне (так же как и в реальности) не бывает равным 24:00 и более, а после 23:59:59 => становиться 00:00:00 следующих суток. Изменено 25 Августа 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
panzyuza 41 Опубликовано 25 Августа 2011 Поделиться Опубликовано 25 Августа 2011 Artos, и как же будет выглядеть правильная проверка на точное время?Подскажи, пожалуйста. AVS_LOCATION_MOD Ссылка на комментарий
Artos 99 Опубликовано 25 Августа 2011 Поделиться Опубликовано 25 Августа 2011 (изменено) panzyuza, я все же не Кашпировский и не умею читать чужих мыслей о похотелках. Тобою не сформулировано никаких условий для проверки, как и не ясно что подразумеваешь под определением 'точное' время. Если тебе требуется: "Текущее время суток в Зоне не менее 23:00?" - то и используй второй вариант, выкинув из него рудимент. Изменено 25 Августа 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
panzyuza 41 Опубликовано 25 Августа 2011 Поделиться Опубликовано 25 Августа 2011 Извини, не точно выразилься. Мне бы хотелось проверку на определенную дату и час.Допустим, если 23.12.2012 и время 16.00 AVS_LOCATION_MOD Ссылка на комментарий
ColR_iT 171 Опубликовано 25 Августа 2011 Поделиться Опубликовано 25 Августа 2011 Spezer, чтобы твои НПС реагировали на тебя как на врага при стрельбе по ним, тебе нужно делать для них гулаг или изменить логику вот так: Ссылка на комментарий
Artos 99 Опубликовано 25 Августа 2011 Поделиться Опубликовано 25 Августа 2011 (изменено) panzyuza Уже не первый раз употребляешь 'точно(е)', а выражаешь мысли размыто ... Делать проверку на точное время врядли тебе потребно. Время не стоит на месте и тот миг, когда дата и время в Зоне будет равно в точности 23.12.2012 16:00:00 - длится всего лишь одну дискрету функции времени, ну или один период апдейта в игре. Даже если очень захочешь - врядли ты сможешь в диалоге отловить этот миг и тем более его использовать. Т.о. речь может идти о некоем диапазоне времени. Для диалогов это может вероятно начинаться от минут и более. Я не любитель давать готовые варианты для локальных случаев, поэтому вот тебе универсальная функция, в которой достаточно понятно упомянуты различные методы получения времени: function Get_StringByTimeOrDate(sType) --/ на входе "Y"/"M"/.../"ms" or nil if sType then local tTime = { ["Y"] = game.CTime.DateToYear, --/ 2012 ["M"] = game.CTime.DateToMonth, --/ 01/2012 ["D"] = game.CTime.DateToDay, --/ 01/01/2012 ["h"] = game.CTime.TimeToHours, --/ 23 ["m"] = game.CTime.TimeToMinutes, --/ 23:59 ["s"] = game.CTime.TimeToSeconds, --/ 23:59:59 ["ms"] = game.CTime.TimeToMilisecs --/ 23:59:59:999 } if sType == "D" or sType == "M" or sType == "Y" then --/ запрос строки даты return game.get_game_time():dateToString(tTime[sType] or 0) --/> строка 'дата' end return game.get_game_time():timeToString(tTime[sType] or 0) --/> строка 'время' end return game.get_game_time():timeToString(game.CTime.TimeToSeconds) --/> по дефолту 'время' в формате: 23:59:59 end Выбирай подходящие методы и формируй свои условия/диапазоны ... Думаю вместо стринга получить числовые значения не столь уж трудно. Изменено 25 Августа 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
speczadanie 0 Опубликовано 26 Августа 2011 Поделиться Опубликовано 26 Августа 2011 Попробовал "безопасный вариант". Не работает. Методом логов пришёл к выводу, что всё останавливается на условии во второй функции. Никаких ограничений рюкзака и т.п. нет и в помине... В чём может быть проблема? Ссылка на комментарий
-=Krovosos=- 64 Опубликовано 26 Августа 2011 Поделиться Опубликовано 26 Августа 2011 Ребят, подскажите, как НПСу поставить логику, чтобы он реагировал только на ГГ (ну т.е. если ГГ начнет в него стрелять, то он отстреливался), но забивал на прочие внешние раздражители (типа мутантов и вражеской группировки). Спасибо. Карусель-карусель - это радость для нас, прокатись на нашей ка-ру-се-ли!-=Krovosos Mod=- 4.0 Final для S.T.A.L.K.E.R. SHoC 1.0004 (336 Мб): Мод Финальный патч для -=Krovosos Mod=- (1 Мб): Патч Адаптация -=Krovosos Mod=- под S.T.A.L.K.E.R. SHoC 1.0006 (1 Мб): Адаптация Ссылка на комментарий
*Shoker* 322 Опубликовано 26 Августа 2011 Поделиться Опубликовано 26 Августа 2011 А можно как то получить список level vertex-ов вокруг определённой точки на заданном расстоянии, кроме как делать перебор всех вертексов и сравнивать их расстояние до точки? Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
panzyuza 41 Опубликовано 26 Августа 2011 Поделиться Опубликовано 26 Августа 2011 (изменено) Artos, спасибо за обьяснение.У меня есть еще вопрос.Возможно ли через скрипт заставить в определенной точке(рестриктор, например) нпс проиграть анимацию напрямую из файла stalker_animation.omf.Данная анимация не прописана в state_lib и state_mgr_animation_list.Или же все равно надо в данных скриптах ее прописывать и все циклы, относящиеся к данной анимации?Если есть способ, прошу, подскажите. И что за функция в файле xr_effects и можно ли ее использовать? function monster_berserk(actor, npc) npc:berserk() end А есть ли возможность адаптации системы анипоинтов под ТЧ? Изменено 26 Августа 2011 пользователем panzyuza AVS_LOCATION_MOD Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти