Malandrinus 615 Опубликовано 20 Июля 2011 Поделиться Опубликовано 20 Июля 2011 KD87, работает ли accuracy() из game_object? Kirag, С НПС - не знаю, а db.actor:accuracy() используется, например, при определении, целится ли актор в принципе: Это функция, которая возвращает разброс в радианах при стрельбе из текущего ствола. Работает для сталкеров и актора, но по-разному. Для актора зависит от режима прицеливания, положения тела, скорости перемещения и точности текущего ствола. Для сталкеров зависит от ранга, положения тела, состояния прицеливания и состояния (не скорости) перемещения и НЕ зависит от оружия. P.S.: Это кстати не значит, что точность сталкеров при стрельбе не зависит от точности оружия. Просто эта функция так работает, а где и в комбинации с чем используется - я не знаю. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
STARTS 0 Опубликовано 20 Июля 2011 Поделиться Опубликовано 20 Июля 2011 Добрового времени суток! Хотел спросить можно ли как-нибудь округлить число до десятков? А то когда например пишешь a = a + 0.1 выводит не 1.1, а 1.10000011446(как-то так) Заранее спасибо Ссылка на комментарий
Desertir 202 Опубликовано 20 Июля 2011 Поделиться Опубликовано 20 Июля 2011 (изменено) Если что-то не так напишу, не пинайте STARTS, а что если а округлить до целых а, а потом прибавлять 0.1 или он даже с целым а такое делает? a = math.floor(a) + 0.1 В данном случе будет округлять до ближайшего меньшего целого числа (было 10.999 станет 10) Изменено 20 Июля 2011 пользователем Desertir ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
STARTS 0 Опубликовано 20 Июля 2011 Поделиться Опубликовано 20 Июля 2011 (изменено) Desertir С целом числом тоже самое делает. Мне нужны именно десятые. Я вот обычно работаю в паскале и там можно было бы написать writeln(a:2:1) и он без проблем бы округлил до десятых. В Луа такое возможно сделать?) В целом система вот такая: fm = fm - 0.1 self.caption:SetText(fm.."FM") Тут вот нужно например вывести 30.1FM Изменено 20 Июля 2011 пользователем STARTS Ссылка на комментарий
Charsi 440 Опубликовано 20 Июля 2011 Поделиться Опубликовано 20 Июля 2011 STARTS,напиши self.caption:SetText( string.format("%.1f FM",fm) ) Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий
Plotnick 0 Опубликовано 20 Июля 2011 Поделиться Опубликовано 20 Июля 2011 Добрый день. Хочу реализовать некий класс, который бы хранил определенную информацию. Например, чтобы пользователь в игре мог вести дневник. Соответственно класс должен удовлетворять следующим условиям: 1. Объект класса должен быть в одном экземпляре весь цикл игры. 2. Объект класса должен быть всегда доступен в любой локации. 3. Объект класса должен сохраняться/загружаться при сохранении/загрузке игры. Какие способы могут помочь мне реализовать это? Я посматриваю в сторону создания некоего фейкового гейм-объекта, в котором можно было бы определить дополнительные поля, но доступен ли будет такой объект на всех локациях не знаю? Да и возможные ограничения по объему информации меня смущают. Самое простое было бы сохранять что-либо в файл и при случае читать, но разработчики не предоставили такой возможности. Ссылка на комментарий
Kirag 39 Опубликовано 20 Июля 2011 Поделиться Опубликовано 20 Июля 2011 Plotnick Ну, например такая концепция: Можно, например, сделать game_object - тот же блокнот. Повесить на него биндер, который кроме сейв/лоада ничего не делает. При загрузке все данные с блокнота переписываются в глобальную таблицу. При сейве все данные из глобальной таблицы переписываются в блокнот, где и сохраняются. Все изменения в данных по ходу игры делаются только в таблице, блокнот исключительно для хранения. Кстати, блокнот не обязятельно должен быть единственным, главное не разбивать данные по бессмысленным частям - не писать в один блокнот Х, а во второй = 1 Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
Disord 1 Опубликовано 20 Июля 2011 Поделиться Опубликовано 20 Июля 2011 (изменено) Я, конечно, оффтопю, но что-то блин... На всякий случай ещё раз подробно напишу что и как. дядяСаша, разве кусок кода это совет? Что может быть проще, чем просто вписать в указанное несколькими людьми место этот код? Что именно тебе необходимо? Номер строки после которой вписывать этот код? Что именно ты подразумеваешь под когортой советчиков? Ты просил совет - тебе дали уже готовый код, хотя могли бы именно посоветовать: "Поставь в калбеке на взятие предмета проверку на твой предмет и выдай инфопоршень" -- вот это - совет, а то, что тебе дали - это уже готовый код, который осталось всего лишь скопипастить в указанное место и просто вбить туда название секции предмета, место "вбивания" тоже указали. Чего ещё-то? Вот, надеюсь это ты за совет не сочтешь: Я говорю о скрипте из оригинала, не знаю, как у тебя. Ищешь 181 строчку в скрипте bind_stalker, которая выглядит так: --game_stats.update_take_item (obj, self.object) И после неё пишешь это: if not has_alife_info("ИМЯ_ТВОЕГО_ИНФОПОРШНЯ") and db.actor:object("ИМЯ_СЕКЦИИ_ТВОЕГО_ПРЕДМЕТА") then db.actor:give_info_portion("ИМЯ_ТВОЕГО_ИНФОПОРШНЯ") end Всё, более ничего не нужно. Изменено 20 Июля 2011 пользователем Disord Ссылка на комментарий
Desertir 202 Опубликовано 21 Июля 2011 Поделиться Опубликовано 21 Июля 2011 (изменено) Вопрос, как можно приостановить скрипт или запустить его через какое-то время? Вообще цель приостановить открытие инвентаря, при этом игра должна естественно продолжаться, но даже если это удастся, отслеживается это получением инфопоршня, а он вручается ГГ чуть позже, чем открывается окно инвентаря. Выходит проскок окна (появляется и сразу исчезает). В солянке такое было (типа замок сломался и не открывается рюкзак). Так вот иногда после загрузки игры можно было успеть даже что то выложить или съесть, т.е. очень поздняя выдача инфопоршня была. Больше никак открытие инвентаря не отследить ? PS: ТЧ. Изменено 21 Июля 2011 пользователем Desertir ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Ulman 5 Опубликовано 21 Июля 2011 Поделиться Опубликовано 21 Июля 2011 (изменено) Объясните пожалуйсто, как в xrs_armor.script для ТЧ добавлять новые костюмы. И ещё, как сделать что бы только один раз при получении инфопоршня выполнялось задание? Изменено 21 Июля 2011 пользователем Ulman Ссылка на комментарий
лнкс 0 Опубликовано 21 Июля 2011 Поделиться Опубликовано 21 Июля 2011 Имеется код: local level_name = { ["l01_escape"] = "Кордон", ["l02_garbage"] = "Свалка", ["l03_agroprom"] = "НИИ Агропром", ["l03u_agr_undergroun"] = "Подземелье НИИ Агропром", ["l04_darkvalley"] = "Тёмная долина", ["l04u_labx18"] = "Лаборатория X-18", ["l05_bar"] = "Бар", ["l06_rostok"] = "Дикая территория", ["l07_military"] = "Арм.склады", ["l08_yantar"] = "Янтарь", ["l08u_brainlab"] = "Лаборатория X-16", ["l10u_bunker"] = "Лаборатория X-10", ["l10_radar"] = "Радар", ["l11_pripyat"] = "Припять", ["l12_stancia"] = "ЧАЭС", ["l12_stancia_2"] = "ЧАЭС", ["l12u_sarcofag"] = "Саркофаг", ["l12u_control_monolith"] = "Управление Монолитом" } local community = { ["stalker"] = "Сталкер", ["monolith"] = "Монолит", ["military"] = "Военные", ["bandit"] = "Бандит", ["killer"] = "Наемник", ["ecolog"] = "Эколог", ["dolg"] = "Долг", ["freedom"] = "Свобода", ["zombied"] = "Зомбированный", ["trader"] = "Торговец" } function kill_npc(victim, who) if victim and IsStalker(victim) then local dead_news = "\\n%c[255,160,160,160]Группировка: %c[default]"..community[victim:character_community()].."\\n%c[255,160,160,160]Имя: %c[default]"..victim:character_name().."\\n%c[255,160,160,160]Локация: %c[default]"..level_name[level.name()].."" db.actor:give_game_news(dead_news, "ui\\ui_icons_npc", Frect():set(2,130,124,124), 1, 4000) end end . Далее делаю по иструкции: Далее открываем xr_motivator.script, который находится в gamedata\scripts, ищем функцию: function motivator_binder:death_callback(victim, who) и после пишем: имя_вашего_файла.news_of_npc_kill(victim) в итоге: function motivator_binder:death_callback(victim, who) имя_вашего_файла.kill_npc(victim, who) if who:id() == db.actor:id() then xr_statistic.addKillCount(self.object) end Вот собственно и все! . На основных локациях работает, захожу на "предбанник", валю первого попавшегося npc получаю вылет: * [win32]: free[884348 K], reserved[184740 K], committed[1028000 K] * [ D3D ]: textures[345979 K] * [x-ray]: crt heap[347446 K], process heap[509894 K], game lua[22431 K], engine lua[195 K], render[1255 K] * [x-ray]: economy: strings[4565 K], smem[30037 K] * MEMORY USAGE: 355412 K FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...t.a.l.k.e.r\gamedata\scripts\news_of_npc_kill.script:37: attempt to concatenate field '?' (a nil value) stack trace: . Меняю код: local level_name = { ["l01_escape"] = "Кордон", ["l02_garbage"] = "Свалка", ["l03_agroprom"] = "НИИ Агропром", ["l03u_agr_undergroun"] = "Подземелье НИИ Агропром", ["l04_darkvalley"] = "Тёмная долина", ["l04u_labx18"] = "Лаборатория X-18", ["l05_bar"] = "Бар", ["l06_rostok"] = "Дикая территория", ["l07_military"] = "Арм.склады", ["l08_yantar"] = "Янтарь", ["l08u_brainlab"] = "Лаборатория X-16", ["l10u_bunker"] = "Лаборатория X-10", ["l10_radar"] = "Радар", ["l11_pripyat"] = "Припять", ["l12_stancia"] = "ЧАЭС", ["l12_stancia_2"] = "ЧАЭС", ["l12u_sarcofag"] = "Саркофаг", ["l12u_control_monolith"] = "Управление Монолитом" ["predbannik"] = "predbannik" } local community = { ["stalker"] = "Сталкер", ["monolith"] = "Монолит", ["military"] = "Военные", ["bandit"] = "Бандит", ["killer"] = "Наемник", ["ecolog"] = "Эколог", ["dolg"] = "Долг", ["freedom"] = "Свобода", ["zombied"] = "Зомбированный", ["trader"] = "Торговец" } function kill_npc(victim, who) if victim and IsStalker(victim) then local dead_news = "\\n%c[255,160,160,160]Группировка: %c[default]"..community[victim:character_community()].."\\n%c[255,160,160,160]Имя: %c[default]"..victim:character_name().."\\n%c[255,160,160,160]Локация: %c[default]"..level_name[level.name()].."" db.actor:give_game_news(dead_news, "ui\\ui_icons_npc", Frect():set(2,130,124,124), 1, 4000) end end , начинаю новую игру, валю первого попавшегося на "кордоне", получаю вылет: Intro start 1361 * MEMORY USAGE: 333535 K FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...s\s.t.a.l.k.e.r\gamedata\scripts\xr_motivator.script:162: attempt to index global 'news_of_npc_kill' (a nil value) stack trace: . Вопрос: что я не так сделал? Лучше спросить глупость, чем её совершить. Ссылка на комментарий
Desertir 202 Опубликовано 21 Июля 2011 Поделиться Опубликовано 21 Июля 2011 (изменено) [error]Arguments : LUA error: ...s\s.t.a.l.k.e.r\gamedata\scripts\xr_motivator.script:162: attempt to index global 'news_of_npc_kill' (a nil value) Синтаксическая ошибка в новом скрипте. А вот и она: ["l12u_control_monolith"] = "Управление Монолитом" ["predbannik"] = "predbannik" Запятую в студию Вот так ["l12u_control_monolith"] = "Управление Монолитом", --вот сюда ["predbannik"] = "predbannik" PS: я эту локу не качал, папка с ней точно predbannik называется? Кстати, выведет по-английски (ты сам так написал). Сделай так ["predbannik"] = "Предбанник" Изменено 21 Июля 2011 пользователем Desertir ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
222RAZOR222 1 Опубликовано 22 Июля 2011 Поделиться Опубликовано 22 Июля 2011 (изменено) Люди помогите! Как можно вынести полоску апа ранга в мультиплеерной игре из инвентаря на худ (оставив и в инвентаре и на худе)? Изменено 22 Июля 2011 пользователем 222RAZOR222 Ссылка на комментарий
ZeeK 57 Опубликовано 22 Июля 2011 Поделиться Опубликовано 22 Июля 2011 Я писал свой вопрос, но внятного ответа не получил(или не понял ) Как в такой логике в конце отпустить НПС в симуляцию? [logic] active = remark@start [meet] close_anim = nil close_snd_hello = nil close_snd_bye = nil close_victim = actor far_distance = 10 far_anim = ward far_victim = actor trade_enable = false use = {!actor_enemy} true allow_break = false meet_on_talking = false abuse = false [remark@start] anim = hello_wpn target = story | actor gather_items_enabled = false help_wounded_enabled = false corpse_detection_enabled = false on_info = {+start_dialog_complete} remark@go_away on_info2 = {=dist_to_actor_ge(25)} %+actor_running_out% on_actor_dist_le = 5 | remark@wait meet = no_meet [remark@wait] target = story | actor gather_items_enabled = false help_wounded_enabled = false corpse_detection_enabled = false on_info = {+start_dialog_complete} remark@go_away on_info2 = {=dist_to_actor_ge(30)} %+actor_running_out% meet = meet [remark@go_away] active = nil Не соответствует. N6260 Ссылка на комментарий
_Призрак_ 11 Опубликовано 22 Июля 2011 Поделиться Опубликовано 22 Июля 2011 Попробуй поступить так же как и с рестрикторами - попробуй вместо remark@go_away написать nil, но я не уверен Freedom Ссылка на комментарий
Ulman 5 Опубликовано 23 Июля 2011 Поделиться Опубликовано 23 Июля 2011 Ребята, скажите пожалуйсто, как проверить сидит ли НПС в лагере и не находится ли он в укрытии(АМК)? Ссылка на комментарий
gruber 2 481 Опубликовано 23 Июля 2011 Поделиться Опубликовано 23 Июля 2011 Ulman, Если в одном конкретном лагере ,то можно накрыть всю территорию лагеря рестриктором и укрытие другим и поставить им в логику условие на проверку находится ли в них НПС с конкретным сидом ,а если глобально всех нпс то смотри локику выброса АМК ,там нпс которые не в укрытии вроде получают хит или превращаются в зомби,значит проверка есть в укрытии они или нет,точнее не скажу т.к в скриптах не силен Ссылка на комментарий
Saruman 8 Опубликовано 23 Июля 2011 Поделиться Опубликовано 23 Июля 2011 хочу создать функцию по которой при пересечении актором определенной черты включался бы таймер после которого следовала бы другая функция если бы условие после истечения таймера было бы true и сама эта линия не пересечена повторно в обратном направлении, но совсем незнаю как это сделать S.T.A.L.K.E.R 1.004, Народная..Солянка от 19.04.10, дополнение 14.08.10, патч 3.09.10, DMX 1.3.5, Saruman addon 1.1 Vkontakte Добавление нового транспорта в сталкер Ссылка на комментарий
gruber 2 481 Опубликовано 23 Июля 2011 Поделиться Опубликовано 23 Июля 2011 saruman_ten, А ты не аналог ли пси зоны из НС пытаешься сделать,или подобной в х16 в комнате с рубильниками?Т.е. зашел актер в зону включается таймер и если не вышел до истечения времени или не совершил определенное действие то срабатывает определенный эффект(в том случае смерть ГГ ).Если да то смотри логику соответствующих рестрикторов и даже скрипты могут не понадобится,если только для создания своего эффекта Ссылка на комментарий
Saruman 8 Опубликовано 23 Июля 2011 Поделиться Опубликовано 23 Июля 2011 gruber, несовсем, если актор не выйдет до отключения таймера то его community изменится, а если выйдет то останется прежней Добавлено через 34 мин.: то есть при входе в зону получаем инфопорцию при этом срабатывает таймер после него забираем инфопорцию где и как это записать ? S.T.A.L.K.E.R 1.004, Народная..Солянка от 19.04.10, дополнение 14.08.10, патч 3.09.10, DMX 1.3.5, Saruman addon 1.1 Vkontakte Добавление нового транспорта в сталкер Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти