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

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

naxac в xr_motivator нет совсем никаких callback. Скрипты ЛА очень сильно отличаются

--[[ ----------------------------------------------------------------------------------------------


File : xr_motivator.script
Description: Motivator binding
Copyright : 2004 © GSC Game World
Author : Didenko Ruslan (Stohe)
Editors : ...
Last edit : 15.06.2013 [...]
--]] ----------------------------------------------------------------------------------------------

--/ -----------------------------------------------------------------
--/ VARIABLEs
--/ -----------------------------------------------------------------
local sModule = script_name()
--/ -----------------------------------------------------------------
local log = function(fmt,...) _G.log(sModule..":"..tostring(fmt),...) end
--/ -----------------------------------------------------------------
--/ Conditions array (evaluators), which have highest priority, and, accordinly, interrupt other scripts/schemes.
--/ -------------------------
tMainProperties = {
[1] = { stalker_ids.property_alive, true }, --/ NPC alive
[2] = { stalker_ids.property_enemy, false}, --/ no enemies
[3] = { stalker_ids.property_danger, false}, --/ no danger
[4] = { stalker_ids.property_anomaly, false} --/ no anomalies
}
tCommonProperties = {
[1] = { xr_evaluators_id.sidor_wounded_base, false }, --/ not wounded
[2] = { xr_evaluators_id.chugai_heli_hunter_base, false }, --/ don't see helicopters
[3] = { xr_evaluators_id.abuse_base, false }, --/ not offended
[4] = { xr_evaluators_id.stohe_meet_base +1, false } --/ no talk
}
tDynamicProperties = {} --/#+#
--/------------------------------------------------------------------------------------------------
--/ Process
--/------------------------------------------------------------------------------------------------
function addCommonProperty( tProperty )
if type(tProperty) == 'table' then
table.insert( tCommonProperties, tProperty )
end
end

function addDynamicProperty( tProperty )
if type(tProperty) == 'table' then
table.insert( tDynamicProperties, tProperty )
end
end

--/ -----------------------------------
function addMainPrecondition( oAction )
for _,v in ipairs (tMainProperties) do
oAction:add_precondition( world_property(v[1],v[2]) )
end
end

function addCommonPrecondition( oAction )
for _,v in ipairs (tCommonProperties) do
oAction:add_precondition( world_property(v[1],v[2]) )
end
end

function addGeneralPrecondition( oAction )
addMainPrecondition( oAction )
addCommonPrecondition( oAction )
end

--/#+#
function addDynamicPrecondition( oAction )
for _,v in ipairs (tDynamicProperties) do
-- log("addDynamicPrecondition: %s idEv=[%s], flg=[%s]", oAction.object and oAction.object:name(), v[1], v[2], "") --/#~#
oAction:add_precondition( world_property(v[1],v[2]) )
end
end

function addAllPrecondition( oAction )
addMainPrecondition( oAction )
addCommonPrecondition( oAction )
addDynamicPrecondition( oAction )
end
--/ -----------------------------------------------------------------------------------------------

 

Мысль твоя мне понятна попробую отследить где еще можно сделать вызов функции

Ссылка на комментарий

Каким образом можно извне передать в игру команду на выполнение скрипта?

Как пример - команда в чате на стриме.

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

Ссылка на комментарий

Добрый день. Прошу помощи. Мне нужна функция для ЗП, чтобы удалить объект через ID скриптом. Только этот объект не находится в рюкзаке актора. Он просто заспавнен через скрипт на локации. Спасибо заранее. Жду вашего ответа)

Ссылка на комментарий

При этом еще убедиться, что alife():object( ID ) что-то вернуло.

В противном случае - "нехватка памяти" или еще что-нибудь в этом роде через неопределенное время после "удаления".

  • Полезно 1
Ссылка на комментарий

здравствуйте ВАМ. Подскажите, как файл скрипа АМК правильно сочленить с файлом скрипта бинд_сталкер чистой ТЧ? Заранее спасибо.

  • Сомнительно 1

Одна голова хорошо, а две лучше. А вот три, это уже змей Горыныч.

Ссылка на комментарий

Добрый вечер!

есть такой мини-мод называемый "лечение раненых врагов", он несложен, но суть в том, что после получения аптечки враждебный непись становится всегда "одиночкой", как возможно изменить скрипт так, что бы раненый оставался в своей группировке и соот. дружественным к ГГ.

Вот сам скрипт:

 

вырезано

 

Скопировал весь скрипт, если правильно понял ответственным за то что мне нужно является последняя функция: "function help_wounded"

Изменено пользователем HellRatz
Добавлено  HellRatz,

Опять двадцать пять. Ну что за мания пихать в пост целиком скрипты и логи на сотни строк? :)
Ведь проще же залить документ на тот же яндекс диск, где его можно не качая посмотреть. И тема не нагружается, и для просмотра удобно, нежели крутить страницу. На будущее. А пока все удалил под спойлером.

Жизнь следует измерять поступками, а не временем...

Ссылка на комментарий

@losiara, так закомментируй set_character_community() и будет он у тебя оставаться в своей группировке

  • Спасибо 1
Ссылка на комментарий

Cпасибо за ответы. В прошлый раз всё помогло! Новый вопрос: какая логика должна быть у тайника, чтобы его нельзя было открыть без ключа? Обычный рюкзак, с вещами внутри, но без ключа он закрыт. Спасибо. Платформа ЗП

Ссылка на комментарий

Хм... А у нас вообще есть операция обратная add_precondition() и add_effect() ?

 

Ибо, очень интересно получается, когда данные непися удаляют по случаю deactivate(), а эвалюатор продолжает пытается с ними что-то делать...

 

или это из npc:motivation_action_manager():add_evaluator() уши торчат ?

Ссылка на комментарий

Вроде как и не «noob», а вопросы?... на вопросы наталкивают...

Благодарю Вас за чрезвычайно содержательное сообщение. Несомненно, оно принесет огромную пользу всем, кто его прочитает. dc

Изменено пользователем Dennis_Chikin
  • Не нравится 2
  • Согласен 1
  • Сомнительно 1
Ссылка на комментарий

Интересует способ по-человечески переписать эту функцию (и несколько подобных):

 

 

function gui_mechanic_wnd:play_repair_sound()
 local rnd = math.random(1, 7)
 if rnd == 1 then 
	gz_utils.s_play_no_feedback([[scripts\remkit\ui_repairweapon_01]])
 elseif rnd == 2 then 
	gz_utils.s_play_no_feedback([[scripts\remkit\ui_repairweapon_02]])
 elseif rnd == 3 then 
	gz_utils.s_play_no_feedback([[scripts\remkit\ui_repairweapon_03]])
 elseif rnd == 4 then 
	gz_utils.s_play_no_feedback([[scripts\remkit\ui_repairweapon_04]])
 elseif rnd == 5 then 
	gz_utils.s_play_no_feedback([[scripts\remkit\ui_repairweapon_05]])
 elseif rnd == 6 then 
	gz_utils.s_play_no_feedback([[scripts\remkit\ui_repairweapon_06]])
 elseif rnd == 7 then 
	gz_utils.s_play_no_feedback([[scripts\remkit\ui_repairweapon_07]])
 end
end 

 

 

Интересует, собственно как приписать номер на конец строки, ну что-то вроде:

local snd = string.format("scripts\remkit\ui_repairweapon_%02d", rnd)

только, чтобы при этом воспроизводился звук  :)

Изменено пользователем Kondr48
Ссылка на комментарий

@Kondr48,

function gui_mechanic_wnd:play_repair_sound()
  math.randomseed(device():time_global())
  local snd_obj = sound_object("scripts\\remkit\\ui_repairweapon_0"..math.random(1, 7))
  gz_utils.s_play_no_feedback(snd_obj)
end
Изменено пользователем Kirgudu
  • Спасибо 1
Ссылка на комментарий

Kirgudu, а для чего используется:

math.randomseed(device():time_global())

?

---

Кстати, таким образом звук воспроизводится не хочет.

Изменено пользователем Kondr48
Ссылка на комментарий

@Kondr48, для более-менее случайной инициализации генератора псевдо-случайных чисел. :) Использовать по желанию.

 

звук воспроизводится не хочет

Причины навскидку: плохой (тихий) звук, по указанному (сгенерированному) пути звука нет вообще (путь должен быть указан относительно папки gamedata\sounds), ошибочное содержимое функции gz_utils.s_play_no_feedback - выбирай на вкус. Получать звуковой объект указанием пути к нему строкой вполне валидно.

  • Полезно 1
Ссылка на комментарий

 

 

для более-менее случайной инициализации генератора псевдо-случайных чисел

@Kirgudu, у меня вообще без этого не работает, всегда одно число получается.  :crazy:

Добавлено Kirgudu,

Бывает и так. А всё потому, что он "псевдо".

Ссылка на комментарий

Добрый вечер!!!

Интересует возможность задавать исполнение функций например спавна по таймеру игрового времени!

Получил задание днем, а выполнение его будет происходить ночью допустим в 22.00 (игровое время). Возможно подобное уже реализовано в каком нибудь моде, если да, то киньте ссылку по возможности!!!

Спасибо!!!

Жизнь следует измерять поступками, а не временем...

Ссылка на комментарий

@losiara, что приходит на ум:

• На апдейте проверять время и вызывать метод, если проверка выполнена успешно. (бред)

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

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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

AMK-Team.ru

×
×
  • Создать...