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

[SoC] Ковыряемся в файлах


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

gamedata\scripts\bind_stalker.script

Функция function actor_binder:update(delta)

Сразу ниже неё пиши вызов в формате :

название_файла.название_функции.

Можешь написать эту функцию в любом файле из папки scripts, а можешь создать свой файл и назвать скажем my_script и написать там.

Должно быть так :

function actor_binder:update(delta)
my_script.check_armor()
...

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

Gun12,

Огромное Спасибо

 

А ты не знаеш где прописать (добавить) Сидору музыку

Вроде бы всё облазил не нашол ато одним файлом ogg не интерестно?

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

SCRIPT

мне надо так, чтоб была группа нейтралов полукругом

 

вот тебе группа нейтралов полукругом

Что требуется от тебя:

1.получить координаты точки -которая будет центром

2.задать радиус от центра этой точки - на этой дистанции от точки и будут спавниться NPC

3. задать угол смещения - чтобы NPC спавнились на равномерной дистанции друг от друга и полукругом.

угол считаешь так - если нужен полукруг - 180 градусов делишь на кол-во NPC - получаешь нужный угол.

В примере две функции - обе рабочие - просто второй вариант теоретически более надежен так как исключает спавн под землю.

хотя и первый при правильной дирекции (подобрал методом проб) тоже спавнит нормально.

Кстати дирекцию тебе возможно придется подправить - может и не подойти. (я в ней пока толком не разобрался)

варианты (1,1,1) - не пробовал; (0,0,0) - спавнились вроде в ряд; (1,0,1) - спавнились частично под землю но полукругом

(1,1,0) - не пробовал

(0,1,0) - в ряд

 

local angle = 0 
function spawn_new()
local pos = vector():set(-241.74,-19.54,-127.23)  --  нужные координаты  
local dir = vector():set(0,0,1)
local lv =  14471  --левел вертекс позиции точки
local gv = 8      --гейм вертекс позиции точки
for i=1, 10 do   --кол-во NPC 
if (angle > 360) then
angle = angle - 360
end 
local new_dir = vector_rotate_y (dir, angle)
pos = pos:add(new_dir:mul(5))   -- 5 - это дистанция от центра точки
alife():create("agr_stalker_regular", pos, lv, gv)
angle=angle+20  --диапазон изменения угла
end
end


local angle = 0
function spawn_new_2()
--local pos = vector():set(-241.74,-19.54,-127.23)  -- здесь они не нужны
local dir = vector():set(0,0,1)
local lv =  14471
local gv = 8
for i=1, 10 do
if (angle > 360) then
angle = angle - 360
end 
local new_dir = vector_rotate_y (dir, angle)
local lvid = level.vertex_in_direction(lv,new_dir,5)
local lpos = level.vertex_position(lvid)
alife():create("agr_stalker_regular", lpos, lvid, gv)
angle=angle+20
end
end

чуть не забыл - во второй функции собственно координаты точки вообще не нужны - а нужны только вертексы, так как позиция высчитывается по ним.
то есть строчка local pos   = ... лишняя

 

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

Garry_Galler, Ты ж только что чуть выше писал,что можно получить вертексы по вектору!

То есть в итогу тет минимут - 2 позиция и 1 вертекс!

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

Monnoroch

Не понял о чем ты.

 

в одной функции позиция получается исходя из математического операции по сложению и умножению векторов (ну как так в общем - я в математике не силен).

в другой - определяется ближайший вертекс на заданной дистанции от первого вертекса, а уже по нему - новая позиция (плюс вращение по y )

есть еще третий вариант -банальное смещение по векторам x и z - но он больше подходит для спавна NPC или мобов в очень рандомных позициях от точки - дабы они не кучковались все вместе.

вместо координат точки везде можно использовать позицию и вертексы эктора.

Изменено пользователем Garry_Galler
Ссылка на комментарий
Gun12 У тебя в первом скрипте есть строка: local tmpw = amk.spawn_item_in_inv("wpn_pkm" ) Я так понял что это спавн оружия в рюкзак. Но у тебя в скрипте написанно: (weapon:section()=="wpn_pkm" or weapon:section()=="wpn_m60" or weapon:section()=="wpn_minigun") then тоесть получается при взятии м60 или минигана в рюкзак попадет ПКМ. как этого избежать?

Freedom

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

_Призрак_, после

if (weapon:section()=="wpn_pkm" or weapon:section()=="wpn_m60" or weapon:section()=="wpn_minigun") then

вставляешь

local cur_weap = weapon:section()

далее функция спавна будет выглядеть так:

 

local tmpw = amk.spawn_item_in_inv(cur_weap)

i-igroman.ru - Мой, принципиально новый сайт о компьютерных играх

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

Да, поспешил.

Измени строку :

local tmpw = amk.spawn_item_in_inv("wpn_pkm" )

на

local tmpw = amk.spawn_item_in_inv(weapon:section())

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

Кто знает как игра узнает что NPC ранен?

то бишь на что реагирует эвалюатор wound запускающий анимацию ранености и т.д.?

в xr_wounded не нашел никакой проверки здоровья - там задействована глобальная функция critically_wounded() которая видимо это отслеживает.

Но в скриптах ее нет. Значит движковая?

просто непонятно при каком пороге здоровья NPC считается раненым. пока пытаюсь выяснить это методом проб.

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

Monnoroch

да я сейчас глянул внимательнее - тоже нашел что то похожее на это.

только у меня все равно хрень какая то происходит - делаю принудительное вычитание здоровья

obj.health = - math.random(0.1, 0.6) - получаю что npc просто дохнет если ниже 0.6 (ставил 0.5) то ничего не происходит.

правда у меня это дело осложняется трехсекундным апдейтом - но там сколько тактов успеет пройти - 1-3?

может конечно за это время вычитание здоровья пару раз успевает произойти...

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

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

всем еще раз привет

 

нашел вот в амк моде в папке config\weapons интересный файл - tft.ltx

 

содержание его странное. там буквами нарисовано женское лицо. с чем это связано?

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

Thank you for your honesty.

Now fuck off and die.

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

SCRIPT Это АМК походу прикалолись :D , тем более не женское лицо, а мужика с очками, и чуть усатого вроде.

 

Добавлено через 2 мин.:

:rofl2: Сидорович в молодости.

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

ЯДиск папка с крутым схроном!

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

Starter, SCRIPT, походу никто из вас не читал скриптов 1935-го билда - я даже их отдельно все собрал:

-----------------------------------------------------------------------------------------------------------------------------------
function play_sound (obj, delay, theme, sub_theme, phrase_set, sub_phrase)
--Немного поменял Джон. Просьба не ругаться и не бить(особенно по голове - ей еще думать). Закоментированное
--надо будет стереь. У меня рука не поднялась.
    this.play_sound_rnd(obj, delay, delay + 1, theme, sub_theme, phrase_set, sub_phrase)
end
-----------------------------------------------------------------------------------------------------------------------------------

-- Отбайндивание моих действий от сталкера



-- Если мужик друг и у нас более 50 оборотов здоровья, то идем на помощь
-- Враг. Идем его мочить, если у нас хорошее вооружение и здоровья не менее 90%     
-- не поддается классификации - пошел вон




--Херово построен путь. Читай доку по настройке стрелка




//Тут по идее может вылетать



--Stalker_zombe    - и ежу понятно, что это сталкер зомби




-- Переменные ниже - не настроечные, их менять нельзя :-)



--' Если мы подошли к трупу - поплакать и уйти    



--'4. Если стоим на точке - петь песенки и прочую херню


--printf( "OPAAAAAA!!!!!! Actor is close!!!!!!!!!!!!" )

 

SCRIPT, не ну ты же не тупой (включай мозг) у меня в кофигах вообще голова орущего спартанца - я всегда это понимал, как пасхалку для мододелов

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

i-igroman.ru - Мой, принципиально новый сайт о компьютерных играх

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

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

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

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

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

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

Войти

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

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

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