Jump to content

Recommended Posts

Maksud    32

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
--/ -----------------------------------------------------------------------------------------------

 

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

Share this post


Link to post
Share on other sites
MJRamon    0

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
UnLoaded    312

@_"ШНУР"_

Для ТЧ\ЧН\ЗП, без разницы как объект был заспавнен в игре, существует единственная ф-ция удаления - release...

Share this post


Link to post
Share on other sites
Dennis_Chikin    3,611

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

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

  • Полезно 1

Share this post


Link to post
Share on other sites
nego    30

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

  • Confused 1

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

Share this post


Link to post
Share on other sites
losiara    13

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

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

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

 

вырезано

 

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

Edited by HellRatz
Добавлено  HellRatz,

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


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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Dennis_Chikin    3,611

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

 

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

 

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

Share this post


Link to post
Share on other sites
Serge!    127

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

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

Edited by Dennis_Chikin
  • Downvote 2
  • Согласен 1
  • Confused 1

Share this post


Link to post
Share on other sites
Kondr48    310

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

 

 

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)

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

Edited by Kondr48

Share this post


Link to post
Share on other sites
Kirgudu    673

@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
Edited by Kirgudu
  • Thanks 1

Share this post


Link to post
Share on other sites
Kondr48    310

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

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

?

---

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

Edited by Kondr48

Share this post


Link to post
Share on other sites
Kirgudu    673

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

 

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

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

  • Полезно 1

Share this post


Link to post
Share on other sites
Kober(BRUC)    97

 

 

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

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

Добавлено Kirgudu,

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

Share this post


Link to post
Share on other sites
losiara    13

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

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

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

Спасибо!!!


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

Share this post


Link to post
Share on other sites
Kober(BRUC)    97

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   1 member

AMK-Team.ru

×
×
  • Create New...