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

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

Совсем обленились...

Ну для начала можно было тут прочитать

Если мало, вот пример...

function Custom_Caption(cap, st, use_icon)
--вызов дополнительного сообщения
    local icon_tip = use_icon or "ui_iconsTotal_esc_blockpost_case_to_trader"
    local task_texture, task_rect = get_texture_info(icon_tip)
    local stl = "iconed_trade_info"
    if st then stl = st end
    db.actor:give_talk_message(cap, task_texture, task_rect, stl)
end

Вот такая функция принимает на входе 3 аргумента.

1) текст, что написать

2) (необязательно) шаблон вывода из XML файла "config\ui\talk.xml" или "config\ui\talk_16.xml". Если не указан, ставит iconed_trade_info по умолчанию.

3) (необязательно) выводимая текстура. Если не указано, то берет текстуру ui_iconsTotal_esc_blockpost_case_to_trader
 

  • Спасибо 1
  • Нравится 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

Как получить текущий параметр итема в слоте в виде числа? Сравнивать этот параметр с числом получается без проблем:

function s1_precondition()
	local item_in_slot_1 = db.actor:item_in_slot(1)
	if item_in_slot_1:condition() < 0.3 then 
		return true
	else 
		return false
	end	
end

А попытка его получить приводить к вылету:

function s1_precondition()
    local item_in_slot_1 = db.actor:item_in_slot(1)
    if item_in_slot_1:condition() ~= nil then
        local item_in_slot_cond = item_in_slot_1:condition
    else
        return false
    end
end
Изменено пользователем dPlayer
Ссылка на комментарий

Добавил спальный мешок в Тень Чернобыля 1.0004 ( добавлял так, как написано в этой статье). но теперь ГГ сам по себе время от времени засыпает. Иногда даже во время боя. Как это исправить, подскажите пожалуйста. 

 

SoC. Спальный мешок.txt

Pir%40t%40s.gif

Ссылка на комментарий
@KURT2013, урок вполне рабочий. Если все сделать по нему, то ГГ в принципе не сможет сам по себе или случайно засыпать, т.к. сон включается только через GUI.
  • Согласен 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

@dPlayer

local item_in_slot_cond = item_in_slot_1:condition 

тут тоже скобки нужны, т.е. так:

local item_in_slot_cond = item_in_slot_1:condition()

Изменено пользователем UnLoaded
  • Спасибо 1
Ссылка на комментарий

Всем привет. Нужна помощь в таком вопросе: -  Есть нпс заспавненный через альспавн, его здоровье равно - (upd:health = 0.100000001490116). Есть ли способ его вылечить, не давая ему аптечку через диалог! Например с помощью какой нибудь функции... Игра тч 04 чистая. За ранее благодарен.

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

Такой вопрос вот назрел, можно ли сэмулировать нажатие клавиши? То есть якобы нажимать клавиатуру без участия игрока.

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

Народ может все таки кто нибудь ответит, на пост выше? Как нпс(у) закинуть в рюкзак аптечку(с дальнейшим его исцелением), именно без диалога и выдачи( <action>dialogs.transfer_medkit</action>).. 

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

@HellRatz, из X-Ray Extensions:

level.send_event_key_press(dik) - нажатие

level.send_event_key_release(dik) - отпускание

level.send_event_key_hold(dik) - удержание

dik - код клавиши из DIK_keys.

 

@Х_и_м_и_к, если надо просто прибавить здоровья, то нужно сначала получить game_object непися, а потом добавить ему хп. Например, по story_id.

local npc = level_object_by_sid(12345)
if npc then npc.health = 1 end
Изменено пользователем naxac
  • Спасибо 2
  • Согласен 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

А если не по СИДу, по профильному имени непися возможно произвести какие то действия с ним??? Или только СИД?

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

Ссылка на комментарий
@losiara, можно по имени в алл.спавне найти. Если по профилю, то перебирать всех онлайновых нпс и проверять у каждого character_name. Изменено пользователем naxac

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

naxacбез all.spawn, с использованием скриптового НПС.

через "spawn_sections.ltx" по типу:

[aes_monolit_1]:stalker
$spawn		=  "respawn\aes_monolit_1"
character_profile	= aes_monolit_1_master ; профиль сделан именно под этого НПС
spec_rank = master
community = monolith
custom_data = scripts\moy_logic\aes_monolit_1.ltx 

aes_monolit_1 - получаем его имя, спавним через него скриптом непися с отдельным профилем "aes_monolit_1_master

Вот как то так можно по имени с ним работать???

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

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

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

Спасайте! Скриптов вообще не знаю, но хочу адаптировать к моду CoC схему дин.аномалий из мода АМК. Вопрос - надо ли мне создавать отдельный скриптовый файл и копировать в него связанную с аномалиями байду из файла amk.scripts(как я понял, отвечающие за спавн аномалий функции)? И есть ли у кого-то в наличии схема из того же АМК, с помощью которой контроллер превращает нормальных сталкеров в зомбированных? Буду очень благодарен, если скинете ее. Ну и напоследок - ходят по всему интернету слухи, будто в АМК научили сталкеров обходить аномалии. Если скинете мне ее и объясните примерно, как с ней ведут себя сталкеры - век не забуду.

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

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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

@losiara, У тебя же написано

character_profile    = aes_monolit_1_master ; профиль сделан именно под этого НПС

 

Значит, можем делать так:

function L(profile_name)
   local a = 1
   while a < 65535 do
      local obj = level.object_by_id(a)
      if obj and IsStalker(obj) and obj:alive() and obj:profile_name() == profile_name then
         --// тут любые действия с найденным объектом
      end
   a = a + 1
   end
end

 

 

Можно вот так, по профилю.

Если надо обязательно по имени, то с этим проблем будет больше. При скриптовом спавне имя объекта - это его секция + его айди, т.е. будет что-то вроде такого "aes_monolit_123685" (после первой единицы любые цифры, какие - заранее неизвестно). Айди заранее неизвестен - его только при спавне можно узнать. Если позаботиться о его сохранении где-то, то в принципе можно, но и то работать будет только до тех пор пока нпс никуда не делся.

 

 

 

Скриптов вообще не знаю, но хочу адаптировать к моду CoC схему дин.аномалий из мода АМК

Оптимистично...

Про контроллера смотреть bind_monster.script, насколько я помню.

  • Спасибо 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

@Zander_driver, я нашел в этом файле что-то, отвечающее за установление неписю группировки зомбированные, но ничего не понял в коде ни до этого, ни после. Можешь вкратце объяснить, за что отвечает код в указанном тобой файле?

 

Стоп, я кажется слегка разобрался. Вот, видимо, функция, которая отвечает за зомбирование.

 

self.chtime=time_global()+2000


if self.object:clsid()==clsid.controller_s and self.object:alive() then
amk.mylog("zombifying")
local npc=self.object:get_enemy()
if npc then
if npc:id()~=db.actor:id() and npc:clsid()==clsid.script_stalker and self.object:see(npc) and
npc:character_community()~="zombied" and self.object:position():distance_to(npc:position())<30 then

local sobj=alife():object( npc:id() )
if sobj and sobj.online then
local zomb=amk.load_table("zombies")
zomb[sobj.id]={master=self.object:id(),comm=npc:character_community(),gw=npc:goodwill(db.actor)}
amk.save_table("zombies",zomb)
npc:set_character_community("zombied",0,0)
local orgtbl=amk.read_stalker_params(sobj)
if (not string.find(orgtbl.profile,"_zombi")) then
orgtbl.profile=orgtbl.profile.."_zombi"
end
amk.mylog("zombied "..npc:name().." profile "..orgtbl.profile)
amk.write_stalker_params(orgtbl,sobj)
end
end
end
end

 

 

Я разобрался с видимостью врага, дистанцией до него и т.д. Но я не понимаю, каким боком к этой функции относится время и куда сохраняется зомбирование непися? Ну и самое главное - что такое amk.mylog?

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

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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

@MegaStalker,

self.chtime=time_global()+2000

это интервал между проверками, чтобы не проверять на каждом апдейте: 2 секунды.

Данные о зомбированных хранятся в таблице "zombies", в псторе актера.

amk.mylog() - это просто вывод в лог для отладки.

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

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

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

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

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

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

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

Войти

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

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

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