Malandrinus 615 Опубликовано 16 Августа 2009 Monnoroch писал(а): get_hud()::AddCustomStatic("mon_radiation", true) очепятка? должно быть только одно двоеточие Кстати, кто знает, зачем здесь второй булевский аргумент? Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 16 Августа 2009 Monnoroch, Total Commander используешь? У меня в подписи есть к нему системный плагин для распаковки. Найти любой файл и распаковать занимает секунды. Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 16 Августа 2009 Monnoroch, в своё время на офф. форуме IG-2007 сказал вот такую вещь: Цитата Встречались мне ошибки (server reject), которые происходили на сервере при реальном выполнении команд, тогда как на клиенте вызов этой команды не привёл к вылету, а был успешно отработан. Это было при попытке выполнить последовательно два действия над одним предметом: переместить и удалить. Я так понимаю, что до завершения одного процесса нельзя делать следующее действие. Поскольку некоторые действия происходит асинхронно, т.е. вызов функции только инициирует начало этого действия, а заканчивается оно только некоторое время спустя, то нельзя делать что-то с этим предметом сразу после вызова функции. Надо дождаться окончания. Я также думаю, что это такие действия, которые требуют синхронизации серверной и клиентской стороны. Поскольку синхронизация происходит по сети (или как бы по сети при сингловой игре), то этот процесс занимает изрядное время. Чтобы уменьшить время работы скриптового вызова такие действия делают асинхронными. всё это только мои предположения. Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 20 Августа 2009 wolkolak писал(а): self.npc.health = self.npc.health + 1 это добавляем НПС здоровья ... а как точно также вылечить рану ? неправильно лечишь. На запись свойство health - это не само здоровье, а его приращение, так что если хотел добавить единицу, то написать надо было так: self.npc.health = 1 раненость (неписей) лечить - для этого есть вроде функция wounded(true/false) степень кровотечения можно получить функцией get_bleeding() на лечение кровотечения функции нет, но я поэкспериментировал и выяснил, что можно наносить отрицательный хит. Вот вам и лечение. По моему, эквивалент бинта будет с типом урона wound. Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 24 Августа 2009 Writer писал(а): Вопрос: Как пользоваться "Скрипт, выводящий на экран данные о положении ГГ."...как сохранить вычисленные координаты на комп или их списывать прийдется? 8push5 писал(а): есть такая программа ... она гораздо удобнее для снятия координат Народ, меня всегда удивляло, что вам для этого программа нужна. Неужели так сложно написать и выполнить вот такой скрипт? local pos = db.actor:position() local gvid = db.actor:game_vertex_id() local lvid = db.actor:level_vertex_id() get_console():execute(string.format("x=%d_y=%d_z=%d_lvid=%d_gvid=%d", pos.x, pos.y, pos.z, lvid, gvid)) get_console():execute("flush")local pos = db.actor:position() local gvid = db.actor:game_vertex_id() local lvid = db.actor:level_vertex_id() get_console():execute(string.format("x=%d_y=%d_z=%d_lvid=%d_gvid=%d", pos.x, pos.y, pos.z, lvid, gvid)) get_console():execute("flush") И у вас в логе есть вся информация. Даже из игры выходить не надо. Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 24 Августа 2009 Saler писал(а): Так вот хочу спросить, это сложно или нет? Если есть готовая лока для сингла, как ее можно прицепить, как в АМК? Есть отдельная тема Сообщество Мапперов. Там и карт куча и рекомендации имеются, как их подключать. Добавлено через 4 мин.: n6260 писал(а): 4. Что бы локу из сингла вставить в игру надо достаточно долго заморачиватся. Не сказать что сильно сложно, но достаточно заморочено. И комп нужен чем мощнее, тем лучше. Насчёт заморачиваться - это да, а вот насчёт компа помощней - не уверен. Если локация уже скомпилена, то зачем там исключительные мощности? Сообщение от администратора _And_ Так я в смысле компиляции и писал. Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 25 Августа 2009 Ковыряю физику объектов. Есть большая непонятка. Код такой: local pshell = cobj:get_physics_shell() -- получаю для онлайнового объекта его физическое тело if pshell then local jn = pshell:get_joints_number() -- получаю количество костей endlocal pshell = cobj:get_physics_shell() -- получаю для онлайнового объекта его физическое тело if pshell then local jn = pshell:get_joints_number() -- получаю количество костей end И вот странность. Для дохлых сталкеров полученное число костей выходит 11, при том, что их 45. Для некоторых моделей и вовсе число костей нулевое, при том, что как минимум одна-то кость точно есть. Соответственно и получить кость не выходит, т.е. вызов pshell:get_joint_by_bone_name(<имя_кости>) приводит к вылету. Кости точно имеются в наличии все, какие прописаны в модели. В этом можно убедиться, получив положение произвольной кости с помощью метода cobj:bone_position(<имя_кости>) Знает кто-нибудь, в чём дело? Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 27 Августа 2009 =WareZ= писал(а): Хм... тут ночью в скриптах копался, и наткнулся на один интересный скрипт ... А Xr_game.dll можно ли декомпилить. Если да, то чем? Можно ли? Да. Чем? Дизассемблером, чем же ещё. К этому надо знать кучу разных и непростых вещей и иметь _очень_ много свободного времени и аццкого терпенья. 8push5 писал(а): это лишь регистрация классов прописанных в движке, все настройки классов хранятся тоже в движке Классы, прописанные в движке, регистрировать не надо. Они и так прекрасно работают. Это регистрация скриптовых серверных классов - создание связки "серверный класс / клиентский класс" и привязка этой пары к определённому clsid. Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 27 Августа 2009 =WareZ= писал(а): то есть при использовании клиентского класса можно теоретически создать новый класс наподобие бинокля(имеется в виду зум и активные рамки), но чтоб NPS воспринимали его как оружие Не так уж много там можно сделать. Нельзя заменить класс на другой и комбинировать клиентский и серверный в произвольном сочетании. Они должны друг другу строго соответствовать. Поэтому это работает только для тех объектов, для которых есть свой персональный класс, унаследованный от CGameObject. А их не так уж и много, и большинство уже и так там использованы. Кроме того, свой серверный класс надо создавать на основе существующего. при этом ты его не заменяешь, а как бы дополняешь. Там опять же возможности весьма ограничены. Можно дополнительные данные сохранить и ещё кое-что по мелочи. Принципиально изменить поведение объектов невозможно. Stalker Hartman писал(а): Другого способа показать лог не было А он разве не в буфере обмена? Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 28 Августа 2009 Министр писал(а): Кстати, в оригинальной геймдате он у меня есть... Stalker Hartman писал(а): Заново распаковал Data Unpacker'ом.Нет файла... На самом деле нет. Кстати, рекомендую использовать для распаковки плагины для Total Commandera (см. мою подпись). Отдельно взятый файл искать существенно удобнее. Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 29 Августа 2009 Writer писал(а): Arguments : LUA error: d:\games\s.t.a.l.k.e.r\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)[/code] Вообще не пойму причем здесь _g.script _g.script содержит много общих функций, на которые ссылаются из других файлов. Примерно в районе 20-й строки должна быть функция вывода в лог. Видимо она у тебя где-то вызывается и её передаются неправильные аргументы. Хоть бы привёл кусок своего _g.script, а то гадай, что у тебя там в 20-й строке. andrewrap писал(а): Товарищи кто может помогите посмотрите мои файлы-пытался заспавнить зомбей в лагере новичков-они не появляются! ссылка выше Как минимум, неправильно задаются координаты спавна. Для спавна надо указывать координаты и соответствующие этим координатам gvid и lvid. Облёт камерой тебе в этом не поможет. Надо побегать самому и в точках спавна снять эти параметры. Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 29 Августа 2009 andrewrap писал(а): а куда вписывать левел вертекс и гейм вертекс? в уроке про них ничего не сказано Какую статью ты имеешь в виду? Об этом везде пишут в первую очередь. alife():create(section, pos, lvid, gvid) Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 29 Августа 2009 Gonarh писал(а): группировка всего лишь одна - woman Gonarh писал(а): народ, могет ли быть такой вылет изза битого сейва Может быть всё, что угодно. Что такое битый сейв? Это когда в нетпакет при сохранении (а больше ничего не сохраняется) попадает мусор. Это может случиться по нескольким причинам: - неверный алгоритм. Пишется не то, что читается. Таких ситуаций может быть море и как-то их классифицировать сложно. - переполнение буфера. Записал слишком много, вышел за пределы нетпакета и наехал на чужие структуры данных. Хотя это обычно вызывает немедленные вылеты, но может вызвать и отложенный вылет. - более тонкие причины могут быть связаны с асинхронными операциями. Движок, который работает в несколько потоков, при некорректной их синхронизации может одновременно что-то записывать и оттуда же что-то читать. Вполне возможно, что квиксейвы портятся по этой причине. Если выходишь в меню, то все процессы останавливаются. При этом сохранение происходит корректно. А если сохраняешься на ходу, то в процессе сохранения ещё что-то работает и меняет какие-то данные. В итоге выходит некое противоречие в данных, которое потом и сказывается в виде ошибок и вылетов. Это всё разумеется из области предположений. andrewrap писал(а): я про статью на официальном мод портале-она называется "спавн через скрипт" Читай внимательней. Там про левел и гейм вертексы в самых первых строках говорится. Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 30 Августа 2009 Writer писал(а): вот немного _g.script в районе 20-й строки было бы достаточно. Вот этот фрагмент: function printf(fmt,...) log(string.format(fmt,...)) -- это 20-я строка endfunction printf(fmt,...) log(string.format(fmt,...)) -- это 20-я строка end Видим, что ошибка происходит в функции format. У неё должны быть дополнительные аргументы. Но сказать какие, можно только узнав строку fmt. Попробуй вставить туда дополнительную строчку: function printf(fmt,...) get_console():execute(string.gsub(fmt, " ", "_")) log(string.format(fmt,...)) -- это 20-я строка endfunction printf(fmt,...) get_console():execute(string.gsub(fmt, " ", "_")) log(string.format(fmt,...)) -- это 20-я строка end Когда будет вылет по крайней мере узнаешь, что выводилось. Может сможешь понять, откуда была вызвана функция. Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 31 Августа 2009 Writer писал(а): Вот что выдает выше лога ! Unknown command: %s Это означает, что где-то стоит вызов: printf("%s", <второй аргумент - строка>) и этот второй аргумент либо равен nil либо просто отсутствует. Вот где этот вызов стоит, там и надо копать. Выяснять, почему там не передаётся строка. Мест таких наверняка не одно, но это уже зацепка. Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 31 Августа 2009 (изменено) DimOriN писал(а): Народ. Кто нибудь пробовал пользоваться фукуцией file_rename ? local f1 = getFS():update_path("$game_data$","ai\\test\\a.txt") local f2 = getFS():update_path("$game_data$","ai\\test\\a1.txt") local overwrite_existing_files = true local res = getFS():file_rename(f1, f2, overwrite_existing_files) local f1 = getFS():update_path("$game_data$","ai\\test\\a.txt") local f2 = getFS():update_path("$game_data$","ai\\test\\a1.txt") local overwrite_existing_files = true local res = getFS():file_rename(f1, f2, overwrite_existing_files) Работает. Файл gamedata\ai\test\a.txt. Кроме $game_data$ есть и ещё пути. Их список можно посмотреть в fs.ltx, хотя вроде как работают не все. "Левые" файлы и каталоги мне удалось сделать и переименовать только в пределах папки gamedata. Дополнение: Файл должен существовать до запуска игры (до запуска программы, а не загрузки уровня). После уже игра отслеживает изменение имени, но если файл появится во время игры, то игра его проигнорирует. Изменено 31 Августа 2009 пользователем malandrinus Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 31 Августа 2009 DimOriN писал(а): ясно, спасиба пыс хотябы за геймдату... я просто пытался переименовывать сейвы... как то не особо получилось =) Вношу поправку. В папке сейвов тоже работает. Надо использовать корень $game_saves$ Да может и в остальных папках тоже работает. Просто если не работает, то нифига не говорит, поэтому сложно ошибки определять. Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 31 Августа 2009 DimOriN писал(а): есть ли в луа какой нибудь таймер-тормоз на подобие sleep в делфи? В смысле? Поставь цикл длинный, вот и тормоз будет. Если имеешь в виду поток в суспенд отправить, то этого нет. Функции луа вызываются как подпрограммы движка. Тормозишь функцию луа - тормозишь по любому всю игру. Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 31 Августа 2009 DimOriN писал(а): нужно наоборот разгрузить машину от сильной нагрузки... погуглил, действительно в луа это проблемный момент (( Спецификой Lua является то, что сам по себе он не предоставляет почти ничего, только даёт доступ к функциям хост-приложения. Были бы экспортированы, к примеру, функции для создания и синхронизации потоков - были бы потоки. А в самом Lua искать их бессмысленно =) Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 31 Августа 2009 DimOriN писал(а): Переименовывает сейвы из абра-кадабра-типа-сейв в Имя_Локации__Время По окончании операции - вылет на раб стол (помогайте ламеру) вылетает, если делать переименование до загрузки игры. Если загрузиться и сделать переименование, то вылета нет. Почему так, без понятия. Полезный утиль (Показать) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение