[CoP] Модострой: вопросница
|
|
|
Overfirst
Воскресенье, 31.12.2017, 13:17 | Сообщение # 1
Статус: |
 |
Бывалый: |
 |
Сообщений: |
1081 |
Награды: |
19 |
Регистрация: |
11.06.2015 |
|
[CoP] Модострой: вопросница

Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском по разделу, ответ на него, вероятно, уже есть.
Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.
Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).
Благодарность выражаем в личке или же ставим плюсик в историю репутации. Подобные посты будут удаляться.
|
|
Воскресенье, 31.12.2017, 13:17
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
11.06.2015 |
|
|
|
|
|
Время Альянса
Статус: |
 |
Ветеран: |
 |
Сообщений: |
4070 |
Награды: |
16 |
Регистрация: |
19.07.2013 |
|
Winsor, Код должен быть типа такого:
Код local items_table = {"medkit", "medkit_army", "medkit_scientic", "antirad"} local two_and_more = false local one_item = false for k,v in pairs (items_table) do if db.actor:object(v) then if one_item then two_and_more = true else one_item = true end end return two_and_more
molodoy_chelovek, Нет ничего проще, например так:
Код local items_table = { ["medkit"] = {время, здоровье, радиация}, ... } ... local iTimer = time_global() + items_table[used_item][1] local iHealth = items_table[used_item][2] local iRad = items_table[used_item][3]
Добавлено (07.07.2020, 15:20) --------------------------------------------- А еще лучше внести соответствующие параметры в секции предметов и читать их напрямую оттуда, а не собирать отдельные таблицы в скрипте.
Сообщение отредактировал denis2000 - Вторник, 07.07.2020, 15:21
|
|
Вторник, 07.07.2020, 14:53
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
19.07.2013 |
|
|
|
|
|
Статус: |
 |
Новичок: |
 |
Сообщений: |
316 |
Награды: |
2 |
Регистрация: |
14.07.2019 |
|
Цитата denis2000 (  ) А еще лучше внести соответствующие параметры в секции предметов Кстати да, тоже об этом думал, но так и не нашел способ как узнать значение параметра из секции.
Сообщение отредактировал molodoy_chelovek - Вторник, 07.07.2020, 15:35
|
|
Вторник, 07.07.2020, 15:34
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
14.07.2019 |
|
|
|
|
|
Статус: |
 |
Зевака: |
 |
Сообщений: |
10 |
Награды: |
0 |
Регистрация: |
02.09.2019 |
|
Подскажите пожалуйста, а как сделать скрипт на смену имени и фото гг?
|
|
Вторник, 07.07.2020, 16:36
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
02.09.2019 |
|
|
|
|
|
Время Альянса
Статус: |
 |
Ветеран: |
 |
Сообщений: |
4070 |
Награды: |
16 |
Регистрация: |
19.07.2013 |
|
molodoy_chelovek, Это несложно
Код local ini = system_ini() if ini and ini:section_exist("section_name") then local parametr_name = ini:r_string("section_name", "parametr_name") -- строковый параметр local parametr_name = ini:r_u32("section_name", "parametr_name") -- числовой параметр local parametr_name = ini:r_bool("section_name", "parametr_name") -- двоичный параметр end
Pavel_Loktev, Или правки движка или костыли, вам какой?
Сообщение отредактировал denis2000 - Вторник, 07.07.2020, 18:49
|
|
Вторник, 07.07.2020, 16:48
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
19.07.2013 |
|
|
|
|
|
Статус: |
 |
Зевака: |
 |
Сообщений: |
10 |
Награды: |
0 |
Регистрация: |
02.09.2019 |
|
Denis2000, желательно,что проще
|
|
Вторник, 07.07.2020, 19:10
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
02.09.2019 |
|
|
|
|
|
Статус: |
 |
Новичок: |
 |
Сообщений: |
290 |
Награды: |
4 |
Регистрация: |
09.01.2017 |
|
Цитата makdm (  ) Начни с биндеров сталкера и монстра. Метод death_callback
Попробовал провести эксперимент.
Исходная функция:
if who:id() == db.actor:id() then xr_statistic.inc_killed_stalkers_counter() xr_statistic.set_best_monster(npc) end
Попробовал написать так:
if (who:id() == db.actor:id() or who:id() == get_story_object("remote_explosive_bomb_1")) then xr_statistic.inc_killed_stalkers_counter() xr_statistic.set_best_monster(npc) end
Не вылетело. Но и не сработало. Как вместо db.actor:id() передать в функцию объект со стори ид remote_explosive_bomb_1? Объект - это бомба.
|
|
Вторник, 07.07.2020, 19:46
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
09.01.2017 |
|
|
|
|
|
Время Альянса
Статус: |
 |
Ветеран: |
 |
Сообщений: |
4070 |
Награды: |
16 |
Регистрация: |
19.07.2013 |
|
sergej5500, Естественно не сработает ведь who:id() - это число, а get_story_object возвращает объект, они никогда идентичны не будут. Для того чтобы получить id объекта по его стори_ид нужна функция get_story_object_id или получать ид объекта полученного при помощи get_story_object. Пробуйте так:
Код if (who:id() == db.actor:id() or who:id() == get_story_object_id("remote_explosive_bomb_1")) then
PS: И я что-то не уверен, что если НПС падет от взрывчатки, то колбек вернет в параметре who именно взрывчатку как объект.
Pavel_Loktev, Например такое реализовано на движке SGM3.0
Возможно аналог есть на других кастомных движках. Поищите.
Сообщение отредактировал denis2000 - Среда, 08.07.2020, 00:40
|
|
Вторник, 07.07.2020, 21:59
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
19.07.2013 |
|
|
|
|
|
Статус: |
 |
Зевака: |
 |
Сообщений: |
10 |
Награды: |
0 |
Регистрация: |
02.09.2019 |
|
Denis2000, спасибо
|
|
Среда, 08.07.2020, 01:07
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
02.09.2019 |
|
|
|
|
|
Статус: |
 |
Новичок: |
 |
Сообщений: |
290 |
Награды: |
4 |
Регистрация: |
09.01.2017 |
|
Цитата denis2000 (  ) if (who:id() == db.actor:id() or who:id() == get_story_object_id("remote_explosive_bomb_1")) then
В таком варианте статистика сработала.
|
|
Среда, 08.07.2020, 08:03
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
09.01.2017 |
|
|
|
|
|
Winsor
Среда, 08.07.2020, 10:02 | Сообщение # 7780
Статус: |
 |
Отмычка: |
 |
Сообщений: |
163 |
Награды: |
0 |
Регистрация: |
22.04.2020 |
|
Цитата denis2000 (  ) Например такое реализовано на движке SGM3.0 Как такое сделать на чистом движке ЗП (смена иконки по вызову)? Какие правки нужны? Есть ли костыль?
|
|
Среда, 08.07.2020, 10:02
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
22.04.2020 |
|
|
|
|
|
Время Альянса
Статус: |
 |
Ветеран: |
 |
Сообщений: |
4070 |
Награды: |
16 |
Регистрация: |
19.07.2013 |
|
Winsor, Костыль заключается в том: 1. Поправить конфиги элементов интерфейсных окон так, чтобы убрать надписи и иконку за пределы экрана (или сделать их нулевого размера). Файлы actor_menu.xml и actor_menu_16.xml. 2. Отслеживать скриптом появление этих интерфейсных окон и вставлять в нужные поля свою информацию. Скрипт биндера актора метод update. 3. Убрать подпись из диалоговых окон не возможно, поэтому нужно вместо имени ГГ в тег st_actor_name (файл st_characters.xml) что-то нейтральное.
Полностью код не приведу, но знаю точно, что в моде "Путь во мгле" в это поле добавлялась динамически иконка ранга ГГ, а это на 90% то что вам и нужно.
Сообщение отредактировал denis2000 - Среда, 08.07.2020, 10:21
|
|
Среда, 08.07.2020, 10:18
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
19.07.2013 |
|
|
|
|
|
Статус: |
 |
Зевака: |
 |
Сообщений: |
10 |
Награды: |
0 |
Регистрация: |
02.09.2019 |
|
denis2000, а есть ли такой костыль на имя и фото, но для чистого зп?
|
|
Среда, 08.07.2020, 12:07
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
02.09.2019 |
|
|
|
|
|
Winsor
Среда, 08.07.2020, 13:05 | Сообщение # 7783
Статус: |
 |
Отмычка: |
 |
Сообщений: |
163 |
Награды: |
0 |
Регистрация: |
22.04.2020 |
|
Я для теста сделал так, чтобы иконка ГГ менялась при юзании консервы. Правил движок. Всё работает, не вылетает. НО: После съедания консервы портрет меняется, и остаётся таким же даже при новой игре. Как это исправить? Короче говоря: после юзания консервы портрет ГГ остаётся навсегда таким же. Pavel_Loktev, Я только что поправил движок, всё очень просто. Взял код из CoC. Могу скинуть в лс, соберёшь движок и будет тебе счастье, с одним минусом. Либо скину уже готовый dll файл, который был собран 1 раз на чистом ЗП.
Сообщение отредактировал Winsor - Среда, 08.07.2020, 13:09
|
|
Среда, 08.07.2020, 13:05
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
22.04.2020 |
|
|
|
|
|
Piper
Среда, 08.07.2020, 15:36 | Сообщение # 7784
Статус: |
 |
Зевака: |
 |
Сообщений: |
17 |
Награды: |
0 |
Регистрация: |
05.04.2019 |
|
Здравствуйте. Как сделать респавн определенного предмета(Секции) на локации по таймеру? Написав в поиске "Респавн предмета" в данной теме, ничего не нашёл. Заранее спасибо.
|
|
Среда, 08.07.2020, 15:36
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
05.04.2019 |
|
|
|
|
|
Neptun
Среда, 08.07.2020, 15:56 | Сообщение # 7785
Связной
Статус: |
 |
Бывалый: |
 |
Сообщений: |
672 |
Награды: |
9 |
Регистрация: |
25.03.2012 |
|
Piper, респавн? То есть даже если предмет уже существует на этой позиции, всё равно дублировать его? Ну, скажем, такой вариант:
Код [logic] active = sr_idle@spawn
[sr_idle@spawn] on_info = %=spawn_object(ид_объекта:позиция_в_way)% sr_idle@time
[sr_idle@time] on_game_timer = 100 | sr_idle@spawn Каждые десять секунд респавнит предмет.
|
|
Среда, 08.07.2020, 15:56
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.03.2012 |
|
|
|
|