-
Число публикаций
1 659 -
Регистрация
-
Последнее посещение
-
Дней в топе
34 -
AMKoin
18,184 [Подарить AMKoin]
Весь контент пользователя Kirgudu
-
[SoC] Ковыряемся в файлах
Kirgudu ответил на тему форума автора Halford в Скрипты / конфиги / движок
Если по-простому, то в функции drop_manager:create_release_item() добавляем в нужном месте что-то вроде if ranks.get_obj_rank_name(self.npc) == 'novice' then -- 'novice'|'experienced'|'veteran'|'master' -- do something end А если хочется реализовать полноценное решение через конфиг, то необходимо добавить, например, файл "misc\death_items_by_ranks.ltx", заполнить его аналогично конфигу "death_items_by_communities.ltx" значениями вероятностей для каждого ранга [novice] ;Указывается вероятность заспаунить или нет af_medusa = 0.015 ; и т. д. заинклудить новый конфиг в "death_generic.ltx", затем поработать с модулем drop_manafer.script: организовать чтение в новую таблицу множителей вероятности из нового конфига в init_drop_settings(), дополнить drop_manager:create_release_item() учётом значений из новой таблицы. Работа муторная, но при желании сделать можно за вменяемое время. -
Не стоит игнорировать возможность поискать самому ответы на простые вопросы. Например, поиск в скриптах оригинала по слову «friend» даёт массу интересных результатов, в том числе dialogs.is_friend(first_speaker, second_speaker) и dialogs.is_not_friend(first_speaker, second_speaker). Также много полезной информации даст поиск по «enemy» и «relation».
-
@_Sk8_AsTeR_, если отвечать по существу вопроса, и если функция give_message_proposed_items вызывается во фразе НПС, тогда: function give_message_proposed_items(first_speaker, second_speaker) if first_speaker:object("medkit") ~= nil then -- предмет есть else -- предмета нет end end Только тебе вместо "medkit" надо ещё передать в функцию, какой именно предмет ты запрашиваешь, ведь до собственно проверки ты случайным образом берёшь его из таблицы допустимых предметов. Это первое. А второе - по-хорошему, тебе надо генерить фразы диалога так, чтобы они шли списком: либо "мне нужно 1. это; 2. это; 3. это" от имени ГГ, либо "у меня есть 1. это; 2. это; 3. это" от имени НПС, и с дальнейшим выбором нужного пункта игроком. Рекомендую взять здесь в скриптах «Чистого Неба» модуль guiders.script и посмотреть, как там реализовано формирование диалога с доступными для перехода точками и выбор из них нужной. Впрочем, не исключено, что кто-нибудь посоветует что-то попроще.
-
@_Sk8_AsTeR_, потому что советы надо применять с умом, а не тупо копируя. Если у тебя из диалога вызывается функция, например, такого вида: function my_func(fs, ss, dn, pi) -- какие-то действия end где fs и ss - это первый и второй собеседники, а ты внутри функции пишешь, ничего не меняя, npc:object("medkit)", ежу понятно, что переменной npc неоткуда взяться, а искомый персонаж содержится в одной из переменных fs и ss. Если самостоятельно не получается, не надейся на телепатов - покажи диалог, покажи функцию, и тогда кто-нибудь сможет дать более конкретный совет.
-
Шёл сегодня на обед, впервые в жизни своими глазами смог полюбоваться на такой способ парковки: И ведь на своё, инвалидное, место встал, в отличие от окружающих!
-
@AndreySol, например, ряд функций в xr_conditions.script - is_alive, is_alive_one, is_alive_all, actor_alive и др.
-
@Murarius, в Word подсвечивание при замене делается в некий текущий цвет. По идее он должен быть = тому цвету, который выбран на кнопке в окне редактирования. Так? Так. А вот фиг. В окне автозамены этот цвет по умолчанию не выбран. То есть подсвечивание как бы происходит, но прозрачным фоном. Чтобы всё заработало, надо выделить любое слово текста, явным образом подсветить его кнопкой в нужный цвет, сделать Undo и только после этого воспользоваться заменой. Попробуй. У меня получилось именно таким образом.
-
@monk, @Dimus, реализовал, кинул вам в личку для теста.
-
http://rgho.st/7YpWpFHmK
-
@buffy, с чего ты взял? Если там изначально число, отличное от нуля, результат будет равен этому числу плюс 1. А общий результат - кол-ву элементов в self.smart_terrain_conditions.
-
[SoC] Ковыряемся в файлах
Kirgudu ответил на тему форума автора Halford в Скрипты / конфиги / движок
Если адресоваться к пакету m_netpk, следует смотреть в свойстве net_cse_alife_object.st_props.object_flags. Нужный тебе флаг имеет значение 128 и, кстати, при подключении модуля выводится глобально в составе _G.object_flags. @dsh, синхронно. -
Это был призыв «не навредить», а не утверждение «не повредит».
-
@BogDIC, так следующий же элемент в конфиге, list_item, из названия должно быть понятно. Там поковыряй. Менять надо сразу пару - main и fn. Но имей в виду: то, что ты меняешь, не должно негативно сказаться на широких экранах.
-
Тебе уже @WinCap пробовал намекнуть, а я к нему присоединился. Где второй end? У тебя как минимум не закрыта функция, неудивительно, что модуль не грузится. Включай уже, наконец, голову и прекращай флудить.
-
Ишь, какую версию ты откопал. Мультиплатформа отсутствует и, скорее всего, предназначено только для ТЧ. Но вот насколько сие творение работоспособно и лишено ошибок - сказать не могу. У Артоса 2 версии модулей нетпакетов: более старый m_net_utils и более новый m_netpk. Но даже более старый m_net_utils, наличествующий у меня, имеет дату редактирования 27.10.2011 (у тебя же - 22.05.2009, на 2 с половиной года раньше) и предназначен уже для всех трёх платформ игры.
-
Собственно это странно, потому что bind_stalker я не трогал вообще! Т.е файл оригинальный, и до этого все работало без подобного вылета. Да не в bind_stalker ошибка, а в level_tasks. Попробуй перевести на русский: это означает "попытка проиндексировать глобальный объект 'level_tasks' (значение nil)". То есть ты из bind_stalker пытаешься вызвать какую-то функцию в level_tasks, но так как level_tasks имеет значение nil - получаешь ошибку. А быть равным nil какой-то скрипт может в том случае, если внутри имеется какая-то синтаксическая ошибка, и движок просто не может скрипт загрузить. Проверяй, что делал не так в level_tasks.
-
@Dennis_Chikin, в целом @buffy дал правильный совет, емнип. my_script.script: _G['my_script'] = { my_function = function() end my_function_2 = function() end } В любом нужном месте, например в _g.script: local my_scripts_loaded = false if not my_scripts_loaded then dofile(getFS():update_path("$game_scripts$","my_subdir\\my_script.script")) my_scripts_loaded = true end Повторить для каждого скрипта в подпапке(ах), организовать циклы, оптимизации и прочие улучшения. Ну да не мне тебе рассказывать. Как потом вызывать, думаю, понятно.
-
@BFG, Петрович, если правильно помню, звук можно запустить с привязкой к актору, но по нужным тебе координатам - от них он и будет звучать. Пример: local snd = sound_object([[helicopter\death_1]]) snd:play_at_pos(db.actor, vector():set(x, y, z)) Если звук планируется запускать много раз, но не нужно, чтобы он наслаивался друг на друга, кешируй его в переменной и проверяй перед повторным запуском: if not snd:playing() then ... end
-
Не рекомендую в качестве объекта бездумно использовать ГГ. Любой пстор пишется в net-пакет того объекта, к которому пстор относится. А net-пакет имеет, как мы знаем, ограниченный размер, при превышении которого можем запросто получить битое сохранение. Скриптёр по незнанию, неопытности или забывчивости здесь что-то сохранит в пстор ГГ, там запишет, ещё где-то - и опаньки! Почему нет? Записать и прочесть можно больше, чем одну переменную.
-
Если ты имел в виду синтаксическую ошибку, то её там нет. Условие является независимым, а предыдущую строку надо читать целиком, как самостоятельное присвоение: local section = active_slot ~= 3 and active_item:section() or "grenade"
-
Всем, кто никак не может остановиться: ответ на вопрос дан, флуд прекращаем.
- 347 ответов
-
- patch
- unofficial patch
- (и еще 10 )
-
Спасибо! Андрей, присоединяюсь к поздравлению! Всех тебе наивозможных благ!
-
[SoC] Ковыряемся в файлах
Kirgudu ответил на тему форума автора Halford в Скрипты / конфиги / движок
@AndrewMor, лично делал для этого мода, взяв за основу более простой вариант от @Shoker. Это, конечно, ЧН. Но дам наводку: в ТЧ, насколько я знаю, в биндере актора тоже есть коллбэк trade_sell_buy_item (в аргументах - текущий объект торговли, булевый признак покупка/продажа, стоимость), на который по дефолту зацеплено только изменение статистики движения денег. Не слишком сложно прикрутить к этому событию свой обработчик торговли, в котором проверять состояние предмета (а также, по желанию, другие условия) и при необходимости делать возврат во время ближайшего апдейта с выдачей соответствующего сообщения на худ или как-то иначе. Важный нюанс: коллбэк trade_sell_buy_item срабатывает непосредственно перед реальной передачей предметов, то есть у каждого предмета в этот момент ещё старый владелец (obj:parent()). При этом в тот же момент коллбэка деньги за покупку/продажу уже засчитаны актору или торговцу. Это надо учитывать при написании возврата. -
Он самый. Наоборот. Сворачивание всегда работает. А вот разворачивание (если после сворачивания главная страница была обновлена) даёт пустой блок, и чтобы он снова показал своё содержимое, главную страницу опять надо обновить. Это максимум того, что я могу сделать без глубокого вмешательства. Думаю, особых проблем это не доставит, так как большинство пользователей либо свернут блок раз и навсегда, либо не будут сворачивать его вовсе.
-
@Graff46 только я б либо оставил аборт с выводом в лог, как он был в оригинале (а также добавил проверку наличия распарсенной функции, и туда тоже аборт), либо убрал аборт во всей функции pick_section_from_condlist (если ты в принципе от них избавляешься и потому как вылет и без аборта будет на отсутствующих функциях). Ну и ещё в _G[spc][fname](actor, npc, infop.params or nil) "or nil" - лишнее, так как там и без того либо таблица, либо nil. Upd: раз здесь "сборочный цех", будет неплохо представить исправленные функции для всех трёх частей игры, так как они хоть и незначительно, но емнип отличаются.
УЧИМСЯ МОДДИНГУ
ИГРАЕМ В МОДЫ НА ТЧ
ИГРАЕМ В МОДЫ НА ЧН И ЗП
- [ЧН] 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
- ...и другие моды
ПОЛЕЗНОЕ И РАЗНОЕ