Перейти к контенту

Kirgudu

Жители
  • Число публикаций

    1 659
  • Регистрация

  • Последнее посещение

  • Дней в топе

    34
  • AMKoin

    18,184 [Подарить AMKoin]

Весь контент пользователя Kirgudu

  1. Если по-простому, то в функции 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() учётом значений из новой таблицы. Работа муторная, но при желании сделать можно за вменяемое время.
  2. Kirgudu

    Скриптование

    Не стоит игнорировать возможность поискать самому ответы на простые вопросы. Например, поиск в скриптах оригинала по слову «friend» даёт массу интересных результатов, в том числе dialogs.is_friend(first_speaker, second_speaker) и dialogs.is_not_friend(first_speaker, second_speaker). Также много полезной информации даст поиск по «enemy» и «relation».
  3. Kirgudu

    Скриптование

    @_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 и посмотреть, как там реализовано формирование диалога с доступными для перехода точками и выбор из них нужной. Впрочем, не исключено, что кто-нибудь посоветует что-то попроще.
  4. Kirgudu

    Скриптование

    @_Sk8_AsTeR_, потому что советы надо применять с умом, а не тупо копируя. Если у тебя из диалога вызывается функция, например, такого вида: function my_func(fs, ss, dn, pi) -- какие-то действия end где fs и ss - это первый и второй собеседники, а ты внутри функции пишешь, ничего не меняя, npc:object("medkit)", ежу понятно, что переменной npc неоткуда взяться, а искомый персонаж содержится в одной из переменных fs и ss. Если самостоятельно не получается, не надейся на телепатов - покажи диалог, покажи функцию, и тогда кто-нибудь сможет дать более конкретный совет.
  5. Kirgudu

    У Костра XVI

    Шёл сегодня на обед, впервые в жизни своими глазами смог полюбоваться на такой способ парковки: И ведь на своё, инвалидное, место встал, в отличие от окружающих!
  6. Kirgudu

    Скриптование

    @AndreySol, например, ряд функций в xr_conditions.script - is_alive, is_alive_one, is_alive_all, actor_alive и др.
  7. Kirgudu

    Разговоры на компьютерную тему

    @Murarius, в Word подсвечивание при замене делается в некий текущий цвет. По идее он должен быть = тому цвету, который выбран на кнопке в окне редактирования. Так? Так. А вот фиг. В окне автозамены этот цвет по умолчанию не выбран. То есть подсвечивание как бы происходит, но прозрачным фоном. Чтобы всё заработало, надо выделить любое слово текста, явным образом подсветить его кнопкой в нужный цвет, сделать Undo и только после этого воспользоваться заменой. Попробуй. У меня получилось именно таким образом.
  8. Kirgudu

    STALKER CS: Final stroke 0.9

    @monk, @Dimus, реализовал, кинул вам в личку для теста.
  9. Kirgudu

    HARDWARMOD 3.2 "Трудная война" (CS)

    http://rgho.st/7YpWpFHmK
  10. Kirgudu

    Скриптование

    @buffy, с чего ты взял? Если там изначально число, отличное от нуля, результат будет равен этому числу плюс 1. А общий результат - кол-ву элементов в self.smart_terrain_conditions.
  11. Если адресоваться к пакету m_netpk, следует смотреть в свойстве net_cse_alife_object.st_props.object_flags. Нужный тебе флаг имеет значение 128 и, кстати, при подключении модуля выводится глобально в составе _G.object_flags. @dsh, синхронно.
  12. Kirgudu

    STALKER CS: Final stroke 0.9

    Это был призыв «не навредить», а не утверждение «не повредит».
  13. Kirgudu

    STALKER CS: Final stroke 0.9

    @BogDIC, так следующий же элемент в конфиге, list_item, из названия должно быть понятно. Там поковыряй. Менять надо сразу пару - main и fn. Но имей в виду: то, что ты меняешь, не должно негативно сказаться на широких экранах.
  14. Kirgudu

    Скриптование

    Тебе уже @WinCap пробовал намекнуть, а я к нему присоединился. Где второй end? У тебя как минимум не закрыта функция, неудивительно, что модуль не грузится. Включай уже, наконец, голову и прекращай флудить.
  15. Ишь, какую версию ты откопал. Мультиплатформа отсутствует и, скорее всего, предназначено только для ТЧ. Но вот насколько сие творение работоспособно и лишено ошибок - сказать не могу. У Артоса 2 версии модулей нетпакетов: более старый m_net_utils и более новый m_netpk. Но даже более старый m_net_utils, наличествующий у меня, имеет дату редактирования 27.10.2011 (у тебя же - 22.05.2009, на 2 с половиной года раньше) и предназначен уже для всех трёх платформ игры.
  16. Kirgudu

    Скриптование

    Собственно это странно, потому что bind_stalker я не трогал вообще! Т.е файл оригинальный, и до этого все работало без подобного вылета. Да не в bind_stalker ошибка, а в level_tasks. Попробуй перевести на русский: это означает "попытка проиндексировать глобальный объект 'level_tasks' (значение nil)". То есть ты из bind_stalker пытаешься вызвать какую-то функцию в level_tasks, но так как level_tasks имеет значение nil - получаешь ошибку. А быть равным nil какой-то скрипт может в том случае, если внутри имеется какая-то синтаксическая ошибка, и движок просто не может скрипт загрузить. Проверяй, что делал не так в level_tasks.
  17. Kirgudu

    Скриптование

    @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 Повторить для каждого скрипта в подпапке(ах), организовать циклы, оптимизации и прочие улучшения. Ну да не мне тебе рассказывать. Как потом вызывать, думаю, понятно.
  18. Kirgudu

    Скриптование

    @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
  19. Kirgudu

    Скриптование

    Не рекомендую в качестве объекта бездумно использовать ГГ. Любой пстор пишется в net-пакет того объекта, к которому пстор относится. А net-пакет имеет, как мы знаем, ограниченный размер, при превышении которого можем запросто получить битое сохранение. Скриптёр по незнанию, неопытности или забывчивости здесь что-то сохранит в пстор ГГ, там запишет, ещё где-то - и опаньки! Почему нет? Записать и прочесть можно больше, чем одну переменную.
  20. Kirgudu

    Скриптование

    Если ты имел в виду синтаксическую ошибку, то её там нет. Условие является независимым, а предыдущую строку надо читать целиком, как самостоятельное присвоение: local section = active_slot ~= 3 and active_item:section() or "grenade"
  21. Kirgudu

    Поздравления

    Спасибо! Андрей, присоединяюсь к поздравлению! Всех тебе наивозможных благ!
  22. @AndrewMor, лично делал для этого мода, взяв за основу более простой вариант от @Shoker. Это, конечно, ЧН. Но дам наводку: в ТЧ, насколько я знаю, в биндере актора тоже есть коллбэк trade_sell_buy_item (в аргументах - текущий объект торговли, булевый признак покупка/продажа, стоимость), на который по дефолту зацеплено только изменение статистики движения денег. Не слишком сложно прикрутить к этому событию свой обработчик торговли, в котором проверять состояние предмета (а также, по желанию, другие условия) и при необходимости делать возврат во время ближайшего апдейта с выдачей соответствующего сообщения на худ или как-то иначе. Важный нюанс: коллбэк trade_sell_buy_item срабатывает непосредственно перед реальной передачей предметов, то есть у каждого предмета в этот момент ещё старый владелец (obj:parent()). При этом в тот же момент коллбэка деньги за покупку/продажу уже засчитаны актору или торговцу. Это надо учитывать при написании возврата.
  23. Kirgudu

    Форум: вопросы и предложения

    Он самый. Наоборот. Сворачивание всегда работает. А вот разворачивание (если после сворачивания главная страница была обновлена) даёт пустой блок, и чтобы он снова показал своё содержимое, главную страницу опять надо обновить. Это максимум того, что я могу сделать без глубокого вмешательства. Думаю, особых проблем это не доставит, так как большинство пользователей либо свернут блок раз и навсегда, либо не будут сворачивать его вовсе.
  24. @Graff46 только я б либо оставил аборт с выводом в лог, как он был в оригинале (а также добавил проверку наличия распарсенной функции, и туда тоже аборт), либо убрал аборт во всей функции pick_section_from_condlist (если ты в принципе от них избавляешься и потому как вылет и без аборта будет на отсутствующих функциях). Ну и ещё в _G[spc][fname](actor, npc, infop.params or nil) "or nil" - лишнее, так как там и без того либо таблица, либо nil. Upd: раз здесь "сборочный цех", будет неплохо представить исправленные функции для всех трёх частей игры, так как они хоть и незначительно, но емнип отличаются.
×
×
  • Создать...