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

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


Svoboда

Рекомендуемые сообщения

Пытаюсь заставить работать схему ph_target без мини-игры в Зове Припяти.

1. На тестовом уровне, поставил мишень (spawn element -> dynamic_objects\armory_room\shooting_target_1)
2. Прописал ей Custom Data:

[logic]
active=ph_target
[ph_target]

3. Закинул в скрипты ph_target.script (из ЧН) и modules.script (в нём раскомментил схему).
4. Изменил ph_target.script:
- закомментил 2 строки начинающиеся на minigames_manager

Таким образом на уровне мишень стоит, при попадании проигрывается соответствующий звук, но мишень не опускается.

По подсказке @Charsi, в ph_target.script после:

self.hit_update_time = time

Написал:

self:anim_down()

А после:

-- if animation ended then callback

Написал:

self:anim_up()

Таким образом, на уровне мишень теперь лежит, и зациклен звук того, как она ложиться.
При попадании она поднимается, и немного погодя снова ложиться.

 

Но ведь, она должна стоять "молча", и только при попадании ложиться, и немного погодя вставать. В общем, непонятно куда дальше копать.

Изменено пользователем aka_sektor

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Поделиться этим сообщением


Ссылка на сообщение

Кто шарит в логике, подскажите, как тут дописать правильно, чтобы в сообщении указывалось имя NPC, а не писалось "Сообщение".

[sr_idle@20]
on_game_timer = 10000 | sr_idle@30 %+sad_artefuck_ready =send_tip(sad_artefact_upgr_ready:sad_atr_trader) -sad_atr_trader_go_kitchen%
send_tip - понятно, что это функция в xr_effects.script

 

Есть даже такой комментарий:

 

--[[
send_tip(news_id:sender:sender_id)
		1. news_id
		2. sender*
		3. sender_id*
		* - not necessary
--]]
news_id - это текст сообщения, т.е. string id. В моей логике имя sad_artefact_upgr_ready

sender - это иконка в секции tips_icons news_manager.script. В моей логике имя sad_atr_trader

sender_id - а это заголовок сообщения, story_id NPC.

 

story_id моего персонажа прописан в файле по пути: gamedata\configs\creatures\spawn_sections_sad.ltx

 

И выглядит так:

 

[sad_atr_trader]:stalker
$spawn                     = "respawn\sad_atr_trader"
character_profile     = sad_atr_trader
story_id = sad_atr_trader
Т.е. в логике я указал как:

[sr_idle@20]
on_game_timer = 10000 | sr_idle@30 %+sad_artefuck_ready =send_tip(sad_artefact_upgr_ready:sad_atr_trader:sad_atr_trader) -sad_atr_trader_go_kitchen%
Дело в том, что хоть story_id и указан, заголовок все также остается как "Сообщение".

 

 

UPD:

Я все-таки думаю, что story_id читается, но не отображается. Потому что, если указать другое имя, не являющееся story_id - игра вылетит.

Думаю, дело в функции send_tip в news_manager.script. Там не прописано отображение имени.

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

 

UPD2:

Проблема решена на форуме ap-pro: http://ap-pro.ru/forum/114-90122-1

Изменено пользователем aka_sektor

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Поделиться этим сообщением


Ссылка на сообщение

Написали такую фразу:

Цитата

опасный объект заносится в дэнжер менеджер

Я так понимаю, связано с xr_danger.script ?

 

Как это в игре выглядит? Тут имеется ввиду реакция AI на звук.

 

Предполагаю, что NPC начинает искать врага, пока не убьет. Так ли это?

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Поделиться этим сообщением


Ссылка на сообщение
В 17.09.2017 в 13:19, KERABITE сказал:

как отключить ограничение по переносимому обьему инвентаря

Объём инвентаря это скриптовый мод. В скрипте очевидно будет выключатель вида: true/false

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Поделиться этим сообщением


Ссылка на сообщение
4 минуты назад, BFG сказал:

по поднятию итема

Пишут такое:

Цитата

при загрузке уровня создаются клиентские объекты предметов , лежащих в инвентаре и они в нем регистрируются
в сам факт регистрации в скриптах и отдается колбеком item_take
то значит что этот код будет постоянно вызываться при загрузке уровня или просто сейв\лоад

 

Изменено пользователем aka_sektor
  • Согласен 1

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Поделиться этим сообщением


Ссылка на сообщение
6 минут назад, BFG сказал:

есть методы обхода

Заглушка:

if obj:section() == "имя_предмета" and not has_alife_info("фэйковый_инфопоршень") then 
give_info("фэйковый_инфопоршень")
end

И ещё:

Цитата

При взятии любого предмета (и после загрузки, да) выполняется весь код метода этого коллбека. 

 

Изменено пользователем aka_sektor

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Поделиться этим сообщением


Ссылка на сообщение

Можно ли получить задание после получения инфопорции?

 

Например, в квесте задано:

title = {+info_portion2} step_2, {+info_portion1} step_1

 

Если я получю в игре info_portion1, стартанет ли квест?

Изменено пользователем aka_sektor

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Поделиться этим сообщением


Ссылка на сообщение

@Jurok а только эти 2 способа? Нельзя ли как то выдать при обыске тела NPC?

 

Хотя наверное думаю можно, если прописать в апдейт вызов функции при условии наличия инфопорции. А порцию выдать при обыске.

Изменено пользователем aka_sektor

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Поделиться этим сообщением


Ссылка на сообщение

@Jurok не совсем понял как эта функция работает? Это для всех тел? Или как указывается нужное?

 

Рестриктор мне не надо, шейпы эти.

 

49 минут назад, Jurok сказал:

function функция() task_manager.get_task_manager():give_task("название_квеста") end

Предпочитаю укороченную:

function task_funct_name(first_speaker, second_speaker)
 give_task("task_name")
end

 

Изменено пользователем aka_sektor

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Поделиться этим сообщением


Ссылка на сообщение
2 часа назад, antreg сказал:

Windows 10

 

2 часа назад, antreg сказал:

на семёрке и хр

Может дело в версии игры? Почему ж тогда одни моды сделанные под 4 патч, не работают на 6 или работают неправильно.

 

p.s. @antreg делаю вывод ещё не покинул моддинг, судя по слухам.

Изменено пользователем aka_sektor

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Поделиться этим сообщением


Ссылка на сообщение
1 час назад, AndrewMor сказал:

В теле поршня пишешь тег

Проблема в том, что в ЗП чтение секции закомментировано.

Эт вариант для ТЧ/ЧН.

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Поделиться этим сообщением


Ссылка на сообщение
В 25.10.2017 в 20:37, Jekyll сказал:

Invalid ogg-comment version

 

В 25.10.2017 в 20:37, Jekyll сказал:

отмечается в консоли красным цветом

 

В 25.10.2017 в 20:37, Jekyll сказал:

О чем в таких случаях говорит

Комментарии в *.ogg файле отсутствуют или они неправильные. Как исправлять, смотри тут: https://modfaq.ru/Импорт_звука

Изменено пользователем aka_sektor
  • Спасибо 1

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Поделиться этим сообщением


Ссылка на сообщение

Тут вот писали: http://ap-pro.ru/forum/126-750-459608-16-1369681281 

Цитата

Если лога нет, нужно файл _g.script изменить. Тогда лог будет более чем подробным, но играть постоянно с такой настройкой не очень удобно.


Подскажет кто, что изменить? А то ловлю безлоговый в ТЧ, может удасться определить в чем дело.

 

Сейчас там:

function abort(fmt, ...)
 local reason = string.format(fmt, ...)
 assert("ERROR: " .. reason)
 printf("ERROR: " .. reason)
 dbglog("%s", reason)
 printf("%s")
end

 

Изменено пользователем aka_sektor

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Поделиться этим сообщением


Ссылка на сообщение
1 час назад, Dennis_Chikin сказал:

Более того, передав неправильные параметры, можно получить этот самый вылет без лога

Интересно. Глянул как в оригинале, получается строчка в моде добавлена:

dbglog("%s", reason)

Из-за неё может быть проблема?

 

UPD:

Ещё сравнил вообще файлы, там добавлено такое:

--[[function printf(fmt,...) 
	local con = get_console() 
	con:execute(string.gsub(string.format(fmt,...), " ", "_")) 
	con:execute("flush") 
end]]

function dbglog(fmt,...)
	local msg = string.format(fmt, ...)
	local msg_no_ws = string.gsub(msg, "%s", "_")
	get_console():execute("dbg:" .. msg_no_ws)
end

--function printf(fmt,...)
--  local arg={...}
--  if arg==nil or arg[0]==nil then
--    mylog(fmt)
--  else
--    mylog(string.format(fmt,...))
--  end
--end

--local bufferedmessages={}

--function mylog(msg)
--[[
  if msg==nil then
    return 
  end
  if db and db.actor then
    if bufferedmessages then
      for k,v in ipairs(bufferedmessages) do
        db.actor:give_game_news(v, "ui\\ui_iconsTotal", Frect():set(0,0,200,200), 0, 15000)
      end
      bufferedmessages=nil
    end
  db.actor:give_game_news(msg, "ui\\ui_iconsTotal", Frect():set(0,0,200,200), 0, 15000)
  else
    if bufferedmessages then
      table.insert(bufferedmessages,msg)
    end
  end
  if get_console() then
    get_console():execute("load "..msg)
    get_console():execute("flush")
  end
  ]]
--end

 

Изменено пользователем aka_sektor

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Поделиться этим сообщением


Ссылка на сообщение

Словил тут вылет, когда помер в ЗП:

xr_conditions.script:2196: attempt to index field 'actor' (a nil value)

Точнее при загрузке последнего сохранения.


В кондишнс у меня добавлен код:

function sad_predateli_pda()
if (db.actor:object("sad_mudak_pda") ~= nil) and not (db.actor:has_info("sad_predateli_info")) then
db.actor:give_info_portion("sad_predateli_info")
end
end


2196 это вторая строка, которая if
В чем тут дело?

 

Изначальная функция взята отсюда: http://www.amk-team.ru/forum/topic/8806-cop-kvesty/?page=2&tab=comments#comment-349951

Изменено пользователем aka_sektor

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Поделиться этим сообщением


Ссылка на сообщение

@dsh предложили добавить проверку актора на nil:

function sad_predateli_pda()
if db.actor ~= nil and db.actor:object("sad_mudak_pda") ~= nil and not db.actor:has_info("sad_predateli_info") then
db.actor:give_info_portion("sad_predateli_info")
end
end

Проверил, теперь не вылетает.

Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...