| [CoP] Модострой: вопросница | 
| 
				
			 | 
|  
|  |   
|  
 
 
 Воскресенье, 31.12.2017, 13:17 | Сообщение # 1 Overfirst  
  
 | 
 
 
 
 
 
 
  
  
 | Статус: |  |   
 | Бывалый: |  |   
 | Сообщений: | 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 |  |  |  |  | 
|  
|  |   
|  
 
 
 Среда, 08.07.2020, 10:02 | Сообщение # 7780 Winsor  
  
 | 
 
 
 
 
 
 
  
  
 | Статус: |  |   
 | Отмычка: |  |   
 | Сообщений: | 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 |  |  |  |  | 
|  
|  |   
|  
 
 
 Среда, 08.07.2020, 13:05 | Сообщение # 7783 Winsor  
  
 | 
 
 
 
 
 
 
  
  
 | Статус: |  |   
 | Отмычка: |  |   
 | Сообщений: | 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 |  |  |  |  | 
|  
|  |   
|  
 
 
 Среда, 08.07.2020, 15:36 | Сообщение # 7784 Piper  
  
 | 
 
 
 
 
 
 
  
  
 | Статус: |  |   
 | Зевака: |  |   
 | Сообщений: | 17 |   
 | Награды: | 0 |   
 | Регистрация: | 05.04.2019 |  | Здравствуйте. Как сделать респавн определенного предмета(Секции) на локации по таймеру? Написав в поиске "Респавн предмета" в данной теме, ничего не нашёл. Заранее спасибо. |  |  Среда, 08.07.2020, 15:36   
|  |   
|  
 
  
  
  
 | 
 
  
  
 | Статус: |  |   
 | Сообщений: | 666 |   
 | Регистрация: | 05.04.2019 |  |  |  |  | 
|  
|  |   
|  
 
 
 Среда, 08.07.2020, 15:56 | Сообщение # 7785 Neptun  
  
 | 
 
 
 
 
 
Связной  
  
 | Статус: |  |   
 | Бывалый: |  |   
 | Сообщений: | 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 |  |  |  |  |