Чтобы объект не двигался, нужно помимо задания секции [collide] прописать ему следующую строку: fixed_bones = link, где link, это ко
отредактировал(а) ColR_iT: 27-01-2012 17:14 GMT3 час. Те мнения, которые пишутся с ошибками, не воспринимаются как умные…
Лучше иной раз тупить, но умным быть, чем постоянно умничать, но быть тупым.
Все, кто еще говорит «ИХНИЙ», будут гореть в аду!
ColR_iT Свойства защиты костюмов и артов различны. 60% защиты от пуль к примеру раз в 5-7 слабее чем 60% у арта. Но я имел ввиду св-ва кровотечения, голода и т.д.
По аномалии, мне бы функцию определения, или пояснение как использовать соответствующую
AMK функцию, как её вообще применять
--определяем находится ли ГГ в определенной зоне
function check_npc_in_box(npc, p1,p2)
local pos=npc:position()
if is_point_inside_interval(pos.x,p1.x,p2.x) and
is_point_inside_interval(pos.y,p1.y,p2.y) and
is_point_inside_interval(pos.z,p1.z,p2.z) then
return true
else
return false
end
end
function is_point_inside_interval(x,p1,p2)
if p1>p2 then
p1,p2 = p2,p1
end
if x>p1 and x
return true
else
return false
end
end
Я тут подумал, а если два телепата начнут читать мысли друг друга одновременно... Они умрут от переполнения стека?
fan fan
Начнем с того, что функция, которую ты привел не вся, в amk.sripts она выглядит иначе, но и даже так боюсь, что она тебе не подойдет, т.к. она определяет попал ли ГГ в указанную зону, причем сама зона задается здесь же, координатами p1,p2 и p3 (параметры из оригинала).
К сожалению, определить вхождение ГГ непосредственно в саму аномалию так сразу не подскажу, могу скинуть скрипт, который определит, что вокруг ГГ в нужном радиусе находятся аномалии...
отредактировал(а) ColR_iT: 27-01-2012 17:48 GMT3 час. Те мнения, которые пишутся с ошибками, не воспринимаются как умные…
Лучше иной раз тупить, но умным быть, чем постоянно умничать, но быть тупым.
Все, кто еще говорит «ИХНИЙ», будут гореть в аду!
функция возвращает таблицу объектов класса cse_anomalous_zone, т.е. всех ан**50026c9725ff35736f77**79;
const zone_radioactive = 180;
const zone_rusty_hair = 181;[/code]Т.е. по сути, на выходе таблица с объектами аномалиями вокруг ГГ. Дальше можешь делать с ними, что нужно. Кстати задать определенные аномалии также можно, путем ограничением проверяемых сидов.
Что касается amk кода, то я смотрел на 1.4.1 вот он:
[code]--определяем находится ли ГГ в определенной зоне
function check_npc_in_box(npc, p1,p2,p3)
local pos
if npc.name then pos=npc:position() else pos=npc end
if p3==nil then
if is_point_inside_interval(pos.x,p1.x,p2.x) and
is_point_inside_interval(pos.y,p1.y,p2.y) and
is_point_inside_interval(pos.z,p1.z,p2.z) then
return true
else
return false
end
else
local v1,v2,r,proj1,proj2,dv1,dv2
v1=sub(p2,p1)
v2=sub(p3,p2)
v1.y=0
v2.y=0
dv1=v1:magnitude()
dv2=v2:magnitude()
v1:normalize()
v2:normalize()
r=sub(pos,p1)
local v1p=vector():set(v1.z,0,-v1.x)
proj2=v1p:dotproduct(r)/v1p:dotproduct(v2)
proj1=v1:dotproduct(r)-v1:dotproduct(v2)*proj2
if proj1>0 and proj10 and proj2p1.y and pos.y
return true
else
return false
end
end
end
function is_point_inside_interval(x,p1,p2)
if p1>p2 then
p1,p2 = p2,p1
end
if x>p1 and x
return true
else
return false
end
end
function sub(v1,v2)
local newvec = vector()
newvec.x = v1.x-v2.x
newvec.y = v1.y-v2.y
newvec.z = v1.z-v2.z
return newvec
end[/code]
Те мнения, которые пишутся с ошибками, не воспринимаются как умные…
Лучше иной раз тупить, но умным быть, чем постоянно умничать, но быть тупым.
Все, кто еще говорит «ИХНИЙ», будут гореть в аду!
ColR_iT Более-менее понятно. Но если ф-ция будет юзаться постоянно, не будет ли вот это
for i= 1, 65534 do(я так понимаю это перебор всего в симуляции) влиять на производительность,
и если допустим у меня новые аномалии, как определить сид?
Я тут подумал, а если два телепата начнут читать мысли друг друга одновременно... Они умрут от переполнения стека?
fan fan, вообще можно узнать используя функцию clsid(), но так, чтобы регистрированную... к сожалению.
Я вообще для примера показал, можно и по той же секции проверять. Кстати о секциях - твоя новая аномалия на основе старой или же ты для нее свой класс делал? Если первое, то ничего нового добавлять не нужно.
По поводу нагрузки - вообще, то да, каждый апдейт перебирать все онлайновые объекты это не есть гуд, но поскольку, для чего тебе это нужно я не знаю и, соответственно, обыграть ситуацию так же не могу...
Те мнения, которые пишутся с ошибками, не воспринимаются как умные…
Лучше иной раз тупить, но умным быть, чем постоянно умничать, но быть тупым.
Все, кто еще говорит «ИХНИЙ», будут гореть в аду!
ColR_iT
спасибо конечно за разъяснение, но чёт непонятно. Ты пишешь что надо писать - fixed_bones = link
А в примере написано - fixed_bones = wpn_body . Противоречие или ошибка?
И ещё к тебе вопросик (раз ты в логике шпаришь) Как можно задать логику НПС чтоб он как охранник арсенала свободы при приближении ГГ Говорил тож самое и грозил винтовкой (Ну мне лично любые варианты сойдут пусть он тупа даже говорит, чтоб я уходил или тому подобное)
Я делал арсенал долга, заспавнил дверь, охранника рядом, кучу стволов. Поэтому мне нужно сделать неподвижный стеллаж на стене со стволами и охранника зверя а то стоит как лось беспонтовый, да и подключение функции чтоб долговец-охранник уходил после особого диалога (ну там поменять или вообще назначить невыполняемость его логики, чтоб он тупа сам учесал в любом напровлении)
config\misc\gulag_mil_freedom1.ltx
В этом файле есть и охранник.Возьми оттуда озвучку,поставь два walk и два look в way и в диалоге выдай инфопоршень,чтобы он отвалил:
[logic]
active = walker@guard
[walker@guard]
path_walk = walk -- точка,где стоит
path_look = look -- куда смотрит
on_info = {+твой инфопошень} walker@guard_new
danger = danger_condition
meet = meet@1
[meet@1]
meet_dialog = mil_guard_arsenal_dialog
use = true
use_wpn = false
meet_state = 2|backoff@threat_back -- это в секции охранника
meet_sate_wpn = 2|backoff@threat_back -- думаю "Отвянь"
victim = 5|actor
victim_wpn = 5|actor
[danger_condition]
ignore_distance = 0
ignore_types = corpse
[walker@guard_new]
path_walk = guard_walk -- куда встанет
path_look = guard_look -- будет смотреть
Arist
Да нет, в звуках пишет путь а не просто shoot1, да и звуки я по умолчания ставил (я уже добавил и изменил более 60 стволов в игру, но такое вижу в первые)
добавлено спустя 4 минут
Ага чёт в анимациях намутили
Expression : !lst.empty()
Function : CHudItem::animGet
File : E:\stalker\sources\trunk\xr_3da\xrGame\HudItem.cpp
Line : 295
Description : shoot1
отредактировал(а) PoG ne Riba: 28-01-2012 16:44 GMT3 час. гений - нуб ^^'
vitok96
да да ДА !!! А то новый "торгаш" постоянно выкидывает новые стоволы ((
добавлено спустя 1 час 5 минут
Жестокий глюююк !!!!!!!! О_о
я заспавнил рюкзак с параметрами верстака (просто визуал сменил, чтобы рюкзак был неподвижен), и на том же месте сделал нычку- инвентори бокс и в него запихал кучу нужного мне борохла. В начале всё нормально, но потом, когда достаёшь много предметов от туда из под рюкзака начинает выбываться Пыль! а потом он просто и беззаботно ВЗЛЕТАЕТ:grazypilot: На целый метр в высоту и продолжает там висеть даже после перезагрузки игры !!!!! :lol)
что делать !!!!
отредактировал(а) PoG ne Riba: 28-01-2012 21:27 GMT3 час. гений - нуб ^^'
Ещё раз пишу.
Чтобы объект не двигался, нужно помимо задания секции [collide] прописать ему следующую строку: fixed_bones = link, где link, это кость, которая будет закреплена. В приведенном примере с Грозой было: fixed_bones = wpn_body, это означает, что wpn_body это кость в модели Грозы, которая будет закреплена.
По поводу охранника.
Лучшим вариантом, будет прописать ему таковой meet, т.е. своеобразное приветствие.
Кстати можно сделать такую же как и у свободовца, только координаты поменять.
"Летучий" тайник... :-)
Секция тисков подразумевает лишь неподвижность, чтобы не б**50016c9725ff35736f77**/bio>
В конце можно видить какие диалоги присущи торговцу. Делаешь по аналогии.
Те мнения, которые пишутся с ошибками, не воспринимаются как умные…
Лучше иной раз тупить, но умным быть, чем постоянно умничать, но быть тупым.
Все, кто еще говорит «ИХНИЙ», будут гореть в аду!
ColR_iT
Спасибо ещё раз, конечно, но я б не прибегал к таким мерам если бы оно работало так как нужно, мож я опять про игноре забыл ? :-G
REKSID1 - я уже пояснил, что к чему
Лучше скажи что нужно делать чтоб тарговец - новый не выкидывал оружие !!
добавлено спустя 7 минут
Хахах.... да забыл ignore_static но когда его подключил рюкзак действительно перестал дёргаться, но вот полёты этой вольной птице походу не запретишь :lol):lol):lol):lol):lol):lol) (он улетает когда я забираю из нычки патроны для СВД, в остольном всё отлично)
отредактировал(а) PoG ne Riba: 28-01-2012 23:53 GMT3 час. гений - нуб ^^'
Лучше скажи что нужно делать чтоб тарговец - новый не выкидывал оружие !!
Весь инет пестрит:
Чтобы после покупки персонаж не выкидывал купленное оружие(а также чтобы подбирал его с земли), в файле gamedata\config\creatures\m_stalker.ltx строку can_select_items = off меняем на can_select_items = on
и строку use_single_item_rule = on меняем на use_single_item_rule = off .
я короч сделал диалог написал в диалог эскапе и стронг диалог эскапе
и в характер деск эскапе прописал escape_trader_aaa
и у меня при разговоре с сидором вылет МОЖЕТ Я ЧЕ НЕ ТАК СДЕЛАЛ И НЕДОДЕЛАЛ??
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.