Случайная подборка модов
Золотой обоз. Часть первая
3.5
Ф.О.Т.О.Г.Р.А.Ф
4.2
Начало. Пролог Проекта Отступник
3.2
Последняя надежда
2.4
Игра Душ: Начало
3.6
Call of Misery
4.1
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
[CoP] Модострой: вопросница
Российская Федерация  Overfirst
Воскресенье, 31.12.2017, 13:17 | Сообщение # 1
Статус:
Бывалый:
Сообщений: 1081
Награды: 19
Регистрация: 11.06.2015

[CoP] Модострой: вопросница

Тема посвящена моддингу на платформе Зов Припяти.

Соседние темы: Тень Чернобыля / Чистое небо.


  • Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском по разделу, ответ на него, вероятно, уже есть.

  • Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.

  • Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).

  • Благодарность выражаем в личке или же ставим плюсик в историю репутации. Подобные посты будут удаляться.
  •   Злобная реклама
    Воскресенье, 31.12.2017, 13:17
    Статус:
    Сообщений: 666
    Регистрация: 11.06.2015
    Российская Федерация  denis2000
    Вторник, 07.07.2020, 14:53 | Сообщение # 7771
    Время Альянса
    Статус:
    Ветеран:
    Сообщений: 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
    Украина  molodoy_chelovek
    Вторник, 07.07.2020, 15:34 | Сообщение # 7772
    Статус:
    Новичок:
    Сообщений: 316
    Награды: 2
    Регистрация: 14.07.2019

    Цитата denis2000 ()
    А еще лучше внести соответствующие параметры в секции предметов

    Кстати да, тоже об этом думал, но так и не нашел способ как узнать значение параметра из секции.
    Сообщение отредактировал molodoy_chelovek - Вторник, 07.07.2020, 15:35
      Злобная реклама
    Вторник, 07.07.2020, 15:34
    Статус:
    Сообщений: 666
    Регистрация: 14.07.2019
    Российская Федерация  Pavel_Loktev
    Вторник, 07.07.2020, 16:36 | Сообщение # 7773
    Статус:
    Зевака:
    Сообщений: 10
    Награды: 0
    Регистрация: 02.09.2019

    Подскажите пожалуйста, а как сделать скрипт на смену имени и фото гг?
      Злобная реклама
    Вторник, 07.07.2020, 16:36
    Статус:
    Сообщений: 666
    Регистрация: 02.09.2019
    Российская Федерация  denis2000
    Вторник, 07.07.2020, 16:48 | Сообщение # 7774
    Время Альянса
    Статус:
    Ветеран:
    Сообщений: 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
    Российская Федерация  Pavel_Loktev
    Вторник, 07.07.2020, 19:10 | Сообщение # 7775
    Статус:
    Зевака:
    Сообщений: 10
    Награды: 0
    Регистрация: 02.09.2019

    Denis2000, желательно,что проще
      Злобная реклама
    Вторник, 07.07.2020, 19:10
    Статус:
    Сообщений: 666
    Регистрация: 02.09.2019
    Российская Федерация  sergej5500
    Вторник, 07.07.2020, 19:46 | Сообщение # 7776
    Статус:
    Новичок:
    Сообщений: 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
    Российская Федерация  denis2000
    Вторник, 07.07.2020, 21:59 | Сообщение # 7777
    Время Альянса
    Статус:
    Ветеран:
    Сообщений: 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
    Российская Федерация  Pavel_Loktev
    Среда, 08.07.2020, 01:07 | Сообщение # 7778
    Статус:
    Зевака:
    Сообщений: 10
    Награды: 0
    Регистрация: 02.09.2019

    Denis2000, спасибо
      Злобная реклама
    Среда, 08.07.2020, 01:07
    Статус:
    Сообщений: 666
    Регистрация: 02.09.2019
    Российская Федерация  sergej5500
    Среда, 08.07.2020, 08:03 | Сообщение # 7779
    Статус:
    Новичок:
    Сообщений: 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
    Российская Федерация  denis2000
    Среда, 08.07.2020, 10:18 | Сообщение # 7781
    Время Альянса
    Статус:
    Ветеран:
    Сообщений: 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
    Российская Федерация  Pavel_Loktev
    Среда, 08.07.2020, 12:07 | Сообщение # 7782
    Статус:
    Зевака:
    Сообщений: 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
    Поиск: