Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Prapor11 0 Опубликовано 10 Июля 2009 Поделиться Опубликовано 10 Июля 2009 (изменено) TREWKO это для чего функция чтобы излом друг был чтоли??? Добавлено: А понял для того чтобы удалить.Спасибо Добавлено через 7 мин.: Вот когда стреляешь в излома игра вылетает в _g.скрипт всё добавил про излома что и к какой групе. Expression : fatal error Function : CScriptEngine::lua_error File : D:\xray-svn\xr_3da\xrGame\script_engine.cpp Line : 74 Description : <no expression> Arguments : LUA error: c:\games\stalker\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value) Изменено 10 Июля 2009 пользователем Prapor11 Я ДатчикХабара со stalker-portal Ссылка на комментарий
RvP 1 Опубликовано 10 Июля 2009 Поделиться Опубликовано 10 Июля 2009 Prapor11, Вылет при убийстве Это знаменитая ошибка: Arguments : LUA error: e:\stalker\gamedata\scripts\_g.script:20 ........ Самое просто и неправильное решение - закоментировать 20-ю строку скрипта _g.script, вылет исчезнет, но ошибка никуда не денется. Я не могу сказать с уверенностью, к чему игнорирование этого факта может привести, так как исправлял причину, а не следствие. Путем нехитрых логических размышлений решение было найдено. Вернее тупым перебором всего, что относилось к делу, криками на форумах, битьем головой о стенку... Потом пришло озарение, вместе с сакраментальным вопросом "что происходит после смерти?" А происходит добавление в статистику убитого объекта (монстра, нпс-а). Поэтому лезем в скрипт xr_statistic.script. В самом начале видим объявление переменной local killCountProps = {...} в которой кошек нет. Поэтому добавляем их туда (например, в конец), для начисления очков опыта: cat_weak = 1, cat_normal = 2, cat_strong = 3, Хотя мы сделали только cat_weak, но на будущее добавим и остальных. Затем идет перечисление используемых классов монстров: monster_classes = { кошек нет и здесь, добавляем: [clsid.cat_s] = "cat", Смотрим дальше, видим функцию addKillCount(npc), которая определяет сообщество (community) убитого. Функция вызывает getNpcType(npc), которая находится в этом же скрипте. А там идет обращение к функции IsStalker(npc), и возвращает сообщество и ранг убиенного. Но тут про мостров ни слова, а значит идем дальше. Функция IsStalker(npc) обнаруживается в скрипте _g.script. Просматривая его обнаруживаем следующие интересующие нас функции: · is_object_monster(obj) кошек нет, добавляем рядом с собаками: otype == clsid.cat or · IsMonster (object, class_id) кошки есть, ничего не трогаем. Для страховки проверим еще одни файл, class_registrator.script. Находим в нем строку cs_register (object_factory, "CCat", "se_monster.se_monster", "SM_CAT_S", "cat_s") и успокаиваемся на этом. Запускаем, убиваем, подходим, пытаемся обыскать - вылетаем. Потому что случился Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Prapor11 0 Опубликовано 10 Июля 2009 Поделиться Опубликовано 10 Июля 2009 Клас.А ещё вопрос про иконку там написана ui_npc_monster_fracture как правильно нарисовать ему иконку???Точнее как правильно узнать координаты иконок,так как я умею их рисовать Добавлено: RvP спасибо тебе Я ДатчикХабара со stalker-portal Ссылка на комментарий
RvP 1 Опубликовано 10 Июля 2009 Поделиться Опубликовано 10 Июля 2009 Prapor11, только ето не последний вылет, дальше будет вылет при обыске. для иконок http://www.amk-team.ru/forum/index.php?showtopic=1506 а вообще лутше почитай еще статьи на вики и сталкер-портале Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Prapor11 0 Опубликовано 10 Июля 2009 Поделиться Опубликовано 10 Июля 2009 RvP а с отношения так и не получилось в таблице отношений только два параметра для монстра излома хюман-человек актор-эктор меченный Добавлено: Ну излом у меня друг теперь Добавлено через 5 мин.: Всё разобрался тебе спасибо там был файл ui_npc_monster и в него заносяться координаты Я ДатчикХабара со stalker-portal Ссылка на комментарий
RvP 1 Опубликовано 10 Июля 2009 Поделиться Опубликовано 10 Июля 2009 Prapor11, не знаю,но свобода, долг и екологи ето ж вроде как люди, да и еще можно попробовать расширить таблицу Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Prapor11 0 Опубликовано 10 Июля 2009 Поделиться Опубликовано 10 Июля 2009 (изменено) RvP это я знаю.Я имел виду для монстряков.А расширить таблицу это увеличить разрешение? Изменено 10 Июля 2009 пользователем Prapor11 Я ДатчикХабара со stalker-portal Ссылка на комментарий
RvP 1 Опубликовано 10 Июля 2009 Поделиться Опубликовано 10 Июля 2009 Prapor11, нет, попробовать добавить секцию с изломом в таблицу групировок Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Prapor11 0 Опубликовано 10 Июля 2009 Поделиться Опубликовано 10 Июля 2009 RvP я тебе про картинку излома говорил.А насчёт отношений добавить секцию с изломом в таблицу группировок я пробывал ничего не получилось. Я ДатчикХабара со stalker-portal Ссылка на комментарий
Jesh 3 Опубликовано 10 Июля 2009 Поделиться Опубликовано 10 Июля 2009 Prapor11 В моде ABC+ЭЮЯ в последней версии можно было "нанимать" монстров, ознакомься в тамошней реализацией, может пригодится. И сидели бы сейчас вышеозначенные любители больших подписей в маленьких файлах, в байт-коде ковырялись, если не в машинном... Ссылка на комментарий
Monnoroch 6 Опубликовано 10 Июля 2009 Поделиться Опубликовано 10 Июля 2009 (изменено) Нужно вызывать действие примерно раз в 10 секунд. (не 10 раз в секунду) Не подскажете,как это можно сделать? З.Ы, Забыл,я имел ввиду именно через actor_update. Изменено 10 Июля 2009 пользователем Monnoroch Ссылка на комментарий
Министр 3 Опубликовано 10 Июля 2009 Поделиться Опубликовано 10 Июля 2009 Monnoroch, как вариант, это можно реализовать таймером Ссылка на комментарий
Prapor11 0 Опубликовано 10 Июля 2009 Поделиться Опубликовано 10 Июля 2009 (изменено) Получилось сделать излома другом для human и actor,а добавление строчки fracture со своим номером в раздел ;названия группировок communities не помогло.Надо чтобы излом атаковал солдат,бандит,монолит,зомби Изменено 10 Июля 2009 пользователем Prapor11 Я ДатчикХабара со stalker-portal Ссылка на комментарий
Monnoroch 6 Опубликовано 10 Июля 2009 Поделиться Опубликовано 10 Июля 2009 (изменено) local tbl = { "a" = 1, "b" = 2, "c" = 3 } function set() local s for k,v in pairs(tbl) do if db.actor:object(k) then s = v end end return s end Надо: получить 2е значение из таблицы при наличии у ГГ обьекта с секцией = 1му значению из таблицы. Я все правильно сделал? (у меня просто еще нет опыта работы с таблицами,вот и спрашиваю) Изменено 10 Июля 2009 пользователем Monnoroch Ссылка на комментарий
Push85 4 Опубликовано 10 Июля 2009 Поделиться Опубликовано 10 Июля 2009 (изменено) Monnoroch, если тебе надо получить "1" Если у ГГ есть предмет "a", ну и так далее, то все правильно, но кавычки в таблице не нужны, по-моему, у меня без кавычек работает такая фишка: local tbl = { a = 1, b = 2, c = 3 } Изменено 10 Июля 2009 пользователем 8push5 Возможно всё, ну или почти всё. Ссылка на комментарий
Malandrinus 615 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 Нужно вызывать действие примерно раз в 10 секунд. (не 10 раз в секунду) З.Ы, Забыл,я имел ввиду именно через actor_update. как вариант, это можно реализовать таймером Таймер и сделан на апдейте актора, но таймер - это здесь как из пушки по воробьям. Я бы так поступил: last_time = 0 time_delta = 5000 -- пауза в миллисекундах function actor_binder:update(delta) local tg = time_global() --local tg = game.time() -- а это в игровых еденицах if (tg - last_time) > time_delta then last_time = tg -- твоё действие end ... end не помогло.Надо чтобы излом атаковал солдат,бандит,монолит,зомби Одними файлами конфигурации не выйдет. Все монстры к людям одинаково относятся. Вроде как это в движок зашито. В принципе, можно залезть в логику монстра и заставить его игнорировать часть врагов в зависимости от человеческой группировки. Но это надо лезь достаточно глубоко в скрипты. local tbl = { "a" = 1, "b" = 2, "c" = 3 } Надо: получить 2е значение из таблицы при наличии у ГГ обьекта с секцией = 1му значению из таблицы. Допустим, есть у тебя есть имя секции. Это строка, так что с кавычками - это правильно. Пусть имя секции будет "b". Теперь из таблицы можно получить число два для этого имени так: local vvv = tbl["b"] -- в vvv запишется число 2 Таблица - это ассоциативный массив. Первое значение - это ключ (должен быть уникален), второе - любое значение. Если в таблице нет такого ключа (в данном случае имени секции), то получим nil. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Monnoroch 6 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 (изменено) malandrinus, то,что ты написал я знаю.Это я б и не спросил. Мне надо именно мой случай - так,как написал ты, там не подступишься (vvv = tbl["b"] -- вот так). У меня придется делать for...do. И я спрашивал,правильно ли я сделал? Собственно я просто хочу заменить конструкцию: local t = 0 if db.acror:object("a") then t = 1 end if db.acror:object("b") then t = 2 end if db.acror:object("c") then t = 3 end return t На более грамотную.И общую. И еще вопрос:если я все сделал правильно,то как будет вести себя функция,если есть и "a" и "с" у ГГ? Вышеприведенный код вернет наибольшее число(и это правильно), а что будет с обработкой таблицы? Изменено 11 Июля 2009 пользователем Monnoroch Ссылка на комментарий
Push85 4 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 Monnoroch, функция вернет последнее обработанное и удовлетворяющее условиям, то есть если есть "a" и "b" то скорее всего (если "b"=2) вернет 2, но сначала завершиться обработка таблицы. Возможно всё, ну или почти всё. Ссылка на комментарий
IQDDD 5 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 (изменено) Народ, делайте как раньше (и как проще): в массивах с числовыми индексами. Вот и всё. Вместо for k,v in pairs (asd) do используйте обычный цикл for k,v do. Так надёжнее. Monnoroch, local t = 0 if db.acror:object("a") then t = 1 end if db.acror:object("b") then t = 2 end if db.acror:object("c") then t = 3 end return t Вотъ(таблица ТОЛЬКО с числовыми индексами): function what_for_this_function (tbl) if tbl ~= nil then for k,v in pairs (tbl) do if db.actor:object(tbl[k]) then return tbl[2] end end else return false end end Изменено 11 Июля 2009 пользователем IQDDD Ссылка на комментарий
Monnoroch 6 Опубликовано 11 Июля 2009 Поделиться Опубликовано 11 Июля 2009 (изменено) IQDDD, return tbl[2] - это че? Может return tbl[v] ? Ато вдруг у меня так: local t = 0 if db.acror:object("a") then t = 79 end if db.acror:object("b") then t = 90 end if db.acror:object("c") then t = 24 end return t Изменено 11 Июля 2009 пользователем Monnoroch Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти