Malandrinus
Жители-
Число публикаций
1 930 -
Регистрация
-
Последнее посещение
-
Дней в топе
13 -
AMKoin
160 [Подарить AMKoin]
Весь контент пользователя Malandrinus
-
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Мне всегда казалось, что неписи не тратят патроны. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Нет других способов. Или точнее, нет способов, основанных на ином принципе. Если проследить, что там происходит, то мы увидим сохранение переменной нетпакетом в объекте актора. Делается это через объект-биндер. В принципе, ничто не мешает сохранять не в акторе, а в любом другом объекте. Иногда так и делается: для этого надстраивается биндер соответствующего объекта и при загрузке и сохранении там добавляется в нетпакет дополнительная информация. Но это имеет локальное применение - для дополнительных свойств конкретных объектов. А объект актора доступен всегда, поэтому в нём и удобно сохранять переменные общего характера. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Когда я спавнил стволы, они уже были с патронами. И вроде в сингле так всегда. Насчёт гранат не знаю. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
TREWKO, вставляешь в текст %c[255,238,155,23] для изменения цвета с текущего момента. Цвет в формате RGB. Четвёртый параметр не знаю зачем, возможно прозрачность. Чтобы вернуть цвет по умолчанию вставляешь %c[default] -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Функцию можно и часто нужно передавать как аргумент в другую функцию. Это возможно потому, что функция в Lua - это "first class value", т.е. "равный среди равных" или по-простому такая же переменная, как и все остальные. Функцию можно слепить на ходу, загрузить из файла, передать в функцию, переназначить и пр. В частности, сама конструкция объявления функции, типа: local function fun(arg1, arg2) --некий код end на самом деле эквивалентна следующей конструкции: local fun = function(arg1, arg2) -- некий код end Т.е. просто объявляется переменная fun и ей присваивается значение типа "function" равное созданному чанку (chunk - кусок кода). При желании его можно переназначить: fun = ... Так что в приведённом тобой примере file1.function1(10,15,nil,...,file1.function2) передаётся именно сама функция, которую внутри тела функции можно вызвать. Вот только не понимаю, зачем в функцию передавать как аргумент её же. Если бы надо было передать результат вызова, то надо было бы собственно вызвать функцию. Что-то вроде такого: file1.function1(10,15,nil,...,fun(<список аргументов>)) Насколько я понял, это некая строка, которая передаётся той функции, которая будет вызвана при срабатывании таймера. В сущности - это просто данные (в виде строки), которые сохраняются в PSTOR актора вместе с таймером. Когда срабатывает один из таймеров , эти данные читаются из PSTOR и полученная строка передаётся вместе с именем таймера в функцию __do_timer_action. __do_timer_action(select_string, params_string) где select_string - это имя таймера params_string - как раз и есть тот самый action __do_timer_action Вот здесь и происходит то действие, которое хотелось вызвать по таймеру. Т.е здесь стоит набор if-else, осуществляющий выбор действия. Что-то вроде if select_string == "my_timer" then -- действия по срабатыванию моего таймера elseif select_string == "another_timer" then ... В самом АМК здесь часто вызывается функция mod_call. Примерно так: if select_string=="sleep_nrg" then mod_call("test_for_need_sleep_nrg", params_string) end Видно, что ей передаётся params_string (тот самый action). А иногда и не передаётся. Выглядит всё так, что свой таймер надо собственноручно прописывать в этой функции. Ну и соответственно что делать с params_string тоже. Кстати, на каком-то этапе это значение проверяется, и если не установлено, то ему просто присваивается пустая строка. Так что это значение можно просто игнорировать как при вызове start_timer, так и здесь в __do_timer_action. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Поищи по ключевым словам dunin ammo Но это только уменьшает количество пачек патронов. Кликов поменьше будет, но описанную тобой проблему не решит. Кроме того, когда я интегрировал себе эту фишку у меня начались вылеты. Нечастые, но были. Пришлось переводить перепаковщик в ручной режим т.е. перепаковывать только в нужные мне моменты. К сожалению всё это давно было. Ничего уже не осталось с тех пор. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Все инфопрошены прописаны в разных XML файлах. Список файлов, в которых есть инфопоршены прописан в файле system.ltx, в секции info_portions. Как то так: [info_portions] files = info_portions, info_portions_light, info_portions_test, ... и т.д Кроме того текстовым идентификаторам сопоставлены числовые значения в файле game_story_ids.ltx А на предмет простановки меток мне кажется стоит посмотреть файл game_tasks.xml. Он в себя включает ещё много файлов, и всё это описывает собственно сюжет игры. Среди прочего можно посмотреть, как там метки проставляются. Сам я до конца не разбирался. -
Исправление ошибок. В статусной строке были перепутаны ширина и высота выделения. Исправил. Ссылка в шапке на последнюю версию 0.6.1 обновлена. Внимание! Версию 0.6.0 не обновлял, так что там эта ошибка осталась. Вероятно всем, кто использует 0.6.0 имеет смысл перейти на версию 0.6.1. Она хоть и экспериментальная, но весь функционал предыдущей версии там должен работать без проблем. Вообще, может уже удалить ссылки на старые версии? Место в шапке занимают, а нужны ли кому-то - не понятно.
-
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Можно использовать таймеры. amk.start_timer(name,delay,action) - ставит таймер в реальном времени amk.g_start_timer(name,delay_d,delay_h,delay_m,action) - ставит таймер в игровом времени name - имя таймера. Надо зарегистрировать в функции __do_timer_action -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Там есть какие-то "magic characters" (^$()%.[]*+-?) для поиска по шаблону. Открывающая скобка как раз к ним и относится. Для отключения этого безобразия надо использовать синтаксис string.find(s, pattern , init , plain) где init - начальная позиция поиска (вероятно будет равно 1, раз уж пришлось указывать) -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Вопрос не в том, что это реклама. Вопрос в том, как эта реклама сделана. До недавних пор особенно не напрягало - закрыл окно и ладно. Но недавно там совсем уж по скотски сделали: пытаешься закрыть страницу, а вылазит окно с предложением слать им SMS и не даёт закрыть. Удалось только через диспетчер задач прибить. Я понимаю, что сайту надо на что-то жить и всё такое, но надо же и меру знать. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Это надо? Как вывести сообщение на экран без использования функций АМК Это обсуждалось неоднократно и здесь и на ПЫСовском форуме. С одной стороны есть у класса game_object (т.е. у клиентского объекта) метод best_weapon(), который вызывается движком и как раз и отвечает за выбор оружия неписями. Подробности работы этой функции покрыты мраком, т.е. никто не знает точно, как же именно она работает. Но однако точно известно, что есть файл \gamedata\config\mp\mp_ranks.ltx, в котором перечислены в том числе и стволы, и который совершенно очевидно влияет на работу этой функции. Я менял местами порядок перечисления стволов в этом файле, и неписи выбирали другой ствол. Но это было давно, и так до конца и не разобрался. оффтоп: Господа, мне кажется или именно с сайта АМК постоянно вылазит окно PopUnder рекламы? -
Это не пробовал? RunTime library от Visual Studio 2008 З.Ы.: Информацию о необходимости ставить библиотеки добавил в шапку.
-
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Уф! Пришлось побить в бубен, но вроде удалось настроить и для ЧН. -
-
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Нет такого способа походу. Все через апдейт актора это делают. В АМК так сделана реакция с постэффектом и вышибанием оружия из рук. А иначе походу и нельзя. Попытался было сделать биндер для самого костюма. Тоже не выходит. Биндится, а коллбек не вызывается =( -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Если надо только узнать, что по ГГ кто-то стреляет, то есть колбек amk.npc_shot_actor. Он вызывается из апдейта стрелявшего. Правда это только факт выстрела. Вызывается в любом случае, даже если попадания не было. -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
По идее ничто не мешает навесить на ГГ такой же коллбек, как и на обычного сталкера. Добавить в bind_stalker.script в функцию actor_binder:reinit() строчку типа: self.object:set_callback(callback.hit, self.hit_callback, self) И вот странно, что не получается. Не вызывается колбек при хите. Забавно, что таким образом можно сделать колбек на собственную смерть, что куда менее осмысленно, чем колбек на хит. Если это объект, то его можно будет поймать перебором. Стреляешь, пока ракета летит переключаешься в меню и вызываешь свой скрипт, который перебирает онлайновые объекты и ищет что там есть интересного. В своё время я сделал специальный тестовый полигон, который позволяет менять и вызывать определённый скрипт не выходя из игры. Он мне сэкономил кучу времени. Цитирую своё давнее сообщение с ПЫСовского форума: -
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
ответ перенёс в это сообщение в другом топике. -
Вообще говоря, эти библиотеки чаще всего ставятся вместе с первой же программой, написанной в VS. Так что обычно они просто есть и ничего делать не надо. И я не понял, попробовал товарищ поставить эти библиотеки или нет?
-
Было бы неплохо симптомы приводить. "Не хотеть" можно весьма по разному =) Не запускается? Что при этом говорит? Или что-то конкретное не работает? А так могу только предположить, что требуется RunTime library от Visual Studio 2008. линк здесь
-
Вот что скажу по этому поводу. Я не дизайнер никаким боком, рисовать не умею. В Visual Studio, как выяснилось, нет готового набора иконок 32х32. Я полез за иконками в интернет. Не один раз пытался... №:%%?:*(?(_(+З)_+)_?("%; Я вероятно совсем тупой, но вот не нашёл. Такое ощущение, что хожу по дремучим варезным сайтам. Море шлака, ссылки в никуда. Ни одного приличного набора иконок для программ с банальным набором команд. Короче. Хотите иконок? Их нет у меня! Если ткнёте пальцем в место, где лежит набор иконок 32х32 с набором команд, типичным для графического редактора, мало-мальски нейтральных, одностильных и контрастных, то тогда прикручу его.
-
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Инвентарь по-любому в нетпакет не запихнёшь =) У каждого объекта есть параметр parent_id. Когда он равен id актора - это значит он в инвентаре. -
Я уже некоторое время работаю как раз в этом направлении. Правда начал не с парсинга XML, а с инвентарных иконок. В общем, есть версия, которая умеет читать инвентарные иконки. 0.6.1 Здесь Итак. В меню вид есть новые команды: Загрузить иконки из ТЧ Загрузить иконки из ЧН Отобразить иконки Первые две команды разбирают файл system.ltx со всеми его подчинёнными файлами для соответствующей игры. Находятся все секции, с параметрами inv_grid_хххх. В соответствии с этими параметрами на картинку накладывается сетка, а при движении мыши подсвечивается, иконки из каких секции находятся под курсором. Последняя команда отображает/скрывает эту сетку. Внимание! Версия весьма сырая. В частности: - разбор занимает некоторое время, от 7 до 30 секунд. Никакой индикации прогресса нет. Это будет потом. На время загрузки программа выглядит подвисшей. - Для парсинга секций и параметров использую регулярные выражения. Настраивать их весьма хлопотно, и я пока не уверен, что все секции и параметры стопроцентно определяются. Возможно, некоторые пропускаются. - Сетка имеет вшитый цвет - красный. Чтобы увидеть её меняйте цвет и стиль основной сетки и рамок. На мой взгляд весьма оптимальный вариант цветов примерно такой: Кроме того вернул курсор при выделении и вставке. В общем, посмотрите на новую фишку, потестируйте. Может кому какие идеи придут, что с этим дальше можно сделать.
-
[SoC] Ковыряемся в файлах
Malandrinus ответил на тему форума автора Halford в Скрипты / конфиги / движок
Честно не понимаю проблемы. Вот только что проверил: убрал дрожание и дисперсию при выстреле, прицелился, выстрелил. Расстояние точно знаю, режим ведь есть с показом расстояния. На стене, в которую стреляю, пули ложатся точно в одном и том же месте. Сделал из режима прицеливания скриншот. На скриншоте отлично видно место попадания и на сколько оно смещено от центра. Теперь в этом же месте надо поставить линию на худе прицела. И так для нескольких расстояний. Всё, никаких перезагрузок, никаких неточностей. Или я что-то принципиальное не понимаю? Если непись видно, значит он в онлайне. Если объект дальше дистанции алайфа, значит просто что-то помешало ему перейти в оффлайн.
- [ЧН] OGSM CS 1.8 CE Fixes
- [ЧН] HARDWARMOD 3.2
- [ЗП] The Long Road
- [ЧН] New vision of War
- [ЧН] Old Good Stalker Mod - Clear Sky
- [ЗП] Unofficial Patch
- [ЗП] Смерти вопреки
- [ЗП] Контракт на хорошую жизнь
- [ЗП] Shoker Weapon Mod 2.1
- [ЗП] Hardcore pack for SGM 2.2
- [ЗП] Контракт Синдиката
- [ЗП] Клондайк 2.0
- ...и другие моды