blackraven6 Спасибо, я там нашел про иконку вируса, но как сделать для моих сигарет?
В скриптах я полный нуб! Я понял что и где писать, а вот как быть с этим:
Теперь придумываем, где будет выдываться (включаться) инфопоршен вируса, реализовываем и любуемся результатом.
Леня_Агитатор Почитай статьи по модификации Интерфейса. Были у кого то в журнале помоему. Да и по интернету полно.
Artos
Ну видишь ли в этой теме постоянно сидит не так много опытных. Если разговаривать только про сложные вещи - тема быстро превратиться в чат для 5-6 человек. Не надо кидаться в крайности. Во всем должен быть балланс. К тому же каждая игра строится на логике автора. То что очевидно для одного человека не очевидно для другого.
blackraven6
Не переворачиай слова и смысл. Никто не говорит о том, что в топике место только сложным вопросам.
Говорится о том, что в топике НЕ место банальным вопросам, которые десятки-сотни раз разжеваны и в топике и в различных ФАК'ах, статьях.
И ты слишком заблуждаешься насчет чата по сложным вопросам. Именно по банальностям происходит чат, а по более интересным/сложным вопросам - пишут отвечают единицы, читают десятки!
И, уже повторюсь, чем больше 'тупых банальностей' - тем меньше тут 'опытных', т.е. тех, кто действительно может дать качественный ответ.
-- Функция проверки если кто-то рядом возле ГГ
function Check_Distanse()
if not Dictanse then Dictanse = 3 end
local PositionActor = db.actor:position()
local function Compare(id)
local obj = level.object_by_id(id) if obj and IsStalker(obj) and obj:alive() and obj.health > 0.1 then
if obj:position():distance_to(PositionActor) <= Dictanse then
news_manager.send_tip(db.actor, "Кабан близко от ГГ", 0, "default", 8000)
end
end
end
if obj_id then --/ если задан id конкретного сталкера
Compare(obj_id)
else --/ иначе перебираем всех на локации
for id=1,65534 do
Compare(id)
end
end
end
Создав проверку если рядом с ГГ находится Кабан (boar_weak) то выдавать сообщение.
Прощу прощения за неоформатированный текст. Похоже отформатировать неполучается из-за Internet Explorer`а...
опять же перед тем как задать вопрос я ищу в яндексе ответ. Из 10 вопросов 7 решаются через пару минут (или тестов), два находят ответ в интернете а один я задаю тут. А между единицами это не чат? Когда мастера по-настоящему начинают спорить - это на долго.
karavan
Ну во-первых, собственно коды приведенные тобою уже являются и созданной проверкой и 'выдавалкой' сообщения.
Тобою недопонять только то, что в приведеннм куске использованы 'внешние' необязательные переменные (obj_id и Dictanse), которые (если нужны) следует использовать в качестке входящих аргументов для функции:
Код:
function Check_Distanse(obj_id,Dictanse)
где obj_id - идентификатор проверяемого кабана, Dictanse - проверяемая дистания до кабана.
Если использовать без этих аргументов, то и лаги обеспечены, если вызывать относительно часто и дистанция жестко задана 3-мя метрами.
P.S. сорри, упустил смысл вопроса, сейчас исправлюсь.
В исходном варианте происходит проверка на "Сталкер ли проверяемый объект" ( IsStalker(obj) )?
Тебе нужно по сути заменить это на проверку "Кабан ли это"?
Вспоминаем/смотрим как можно сформулировать эту проверку! если не помнишь см.тут
get_clsid(obj) == clsid.boar_s
blackraven6
Пора прекращать этот оффтопик. Для себя я сделал выводы:
- отвечать на твои вопросы - необязательно, они больше вызваны ленью.
- следует ли вообще читать/отвечать в этом топике, если и ответы будут 'похоронены' подобными сиюминутными банальностями? Да собственно от чтения толку - nil.
Конечно ты (и подобные тебе участники) в этом топике не 'все', но чем таких больше - тем таких как 'я' меньше. Делай сам выводы ...
Сообщение было успешно отредактировано Artos (05-06-2010 19:14 GMT3 часа, назад)
karavan
Я бы делал все же несколько иначе, т.к. высока неоптимальность данной функции/проверки относительно ресурсов. Преребирать все идентификаторы объектов игры - далеко не самое хорошее решение.
Ну а ежели "хочется видеть", то вот вариант 'без привязки к контексту' с очищеннми излишками:
Код:
--/ Функция проверки если кто-то рядом возле ГГ
function Check_Distanse_to_Boars()
local PositionActor = db.actor:position()
for id=1,65534 do
local obj = level.object_by_id(id)
if obj and get_clsid(obj) == clsid.boar_s and obj.alive and obj:alive() then
if obj:position():distance_to(PositionActor) <= 3 then
news_manager.send_tip(db.actor, "Кабан близко от ГГ", 0, "default", 8000)
end
end
end
end
Возможно более подходящим будет этот вариант, где проверяются только онлайновые объекты:
Код:
function Check_Distanse_to_Boars()
local PositionActor = db.actor:position()
for id,o in pairs(db.storage) do
local obj = level.object_by_id(id)
if obj and get_clsid(obj) == clsid.boar_s and obj.alive and obj:alive() then
if obj:position():distance_to(PositionActor) <= 3 then
news_manager.send_tip(db.actor, "Кабан близко от ГГ", 0, "default", 8000)
end
end
end
end
Или с твоим "странноватым" условием:
Код:
function Check_Distanse_to_Boars()
local PositionActor = db.actor:position()
for id=1,65534 do
local obj = level.object_by_id(id)
if obj and obj:section() == "boar_weak" and obj:alive() then
if obj:position():distance_to(PositionActor) <= 3 then
news_manager.send_tip(db.actor, "Кабан близко от ГГ", 0, "default", 8000)
end
end
end
end
Вероятно следует вспомнить, что кабаны даже в оригинальной игре бывают не только "boar_weak", а еще и "_normal" и "_strong" (не говоря о модах)!
Сообщение было успешно отредактировано Artos (05-06-2010 19:59 GMT3 часа, назад)
FLIKER
Не нужно именно мне задавать вопрос(ы). Вряд ли мне это интересно и буду отвечать.
"weather_default_dynamic.ltx" - это только конфиг и, если даже в нем не только туман, то за смену возможных вариантов отвечает не (только) этот конфиг.
Тому, кто захочет/сможет ответить по твоей ошибке потребуется все, что ты менял. А возможно и не только, т.к. в топике в основном вопросы по оригинальным кодам игры, а ты залез в динамическую погоду "АМК-мода".
В функции
function generic_object_binder:hit_callback(obj, amount, local_direction, who, bone_index)
Есть секция Электо-Химеры, в которой описан её хит по ГГ.
if obj:section()=="electro_chimera" and time_global()>(self.charge_time or 0)+3000 then
amk_particle.amk_particle({particle="anomaly2\\electra2_blast",pos=obj:bone_position("bip01_spine"),sound="anomaly\\electra_blast1"})
local dist = db.actor:position():distance_to(obj:bone_position("bip01_spine"))
if dist < 20 then
local h = hit()
h.impulse = 0
h.draftsman = db.actor
h.direction = vector():set(0,0,0)
h:bone("bip01_spine")
h.power = 1/dist
h.type = hit.strike
db.actor:hit(h)
h.power = 15/dist
h.type = hit.shock
db.actor:hit(h)
end
self.charge_time=time_global()
end
Сдесь насколько я понимаю наносится хит в радиусе 20 метров в зависимости от растояния, т.е. чем дальше находишся тем безопасней.
Вопрос вот в чем возможно ли нанести хит по ГГ и/или НПС только в направлении взгляда монстра? Т.е. куда монст смотрит туда и хитует. Это первое.
Второе, Электро-химера при атаке проигрывает партикл аномалии Электра и этот партикл проирывается во все стороны. Возможно ли задать направление проигрывания партикла в зависимости от взгляда Монстра (Например партикл аномалии Жарка). Т.е. Куда монстр смотит в ту сторону и направлен партикл аномалии Жарка.
Итого что нужно: 1)Нужно что бы хит по ГГ или НПС наносился в направлении взгляда монстра?
2)Нужно что бы партикл аномалии Жарка проигрывался в направлении взгляда монстра?
Спрашиваю у тебя поскольку наверное спросить больше не у кого.
Возможно ты в знаеш ответ.
karavan
Во-первых, не только я могу дать ответ. Не отнимай возможности дать ответ и другим!
Во-вторых, "нужно" и ли нет - решать тебе. Это уже из области мнений/предпочтений, а не технической возможности/реализации. Мой ответ на подобное: "НЕ нужно, но возможно."
Хит наносится в направлении (т.е. хит имеет вектор, "направление удара/повреждения"), а вот партиклы отыгрываются только по позиции (относительно точки).
Можно конечно сделать так, чтобы нужные партиклы отыгрывались на объекте "куда смотрит", но ... (ИМХО) странновато для электро-объекта поражать векторно, а не по радиусу/окружности. В АМК-моде заложена не электро-пушка, стреляющая в направлении, а электро-химера, которая поражает объекты в радиусе от нее.
Получить же "эффект пушки" несложно, добавив в условия проверку на "в векторе взгляда?" нужный объект.
Ну и конечно векторно отыграть патрикл не выйдет, если только не прибегнуть к варианту "перемещаемой позиции" для отыгрывания. А вот, определив объект в направлении взгляда и именно на нем отыграть партиклы, вполне можно.
Повторю, ИМХО электро-химера остается химерой и поражает ударом/разрывом. Электро-разряды у нее - фоновое поражение по затухающему радиусу.
Artos Я не против если и кто-то другой ответит на мой вопрос.
Переделывать электро-химеру я не собираюсь, я хочу сделать другого монстра с атакой (хитом) по направлению взгляда и с партиклом аномалии Жарка.
Я спрашиваю про электро-химеру потому, что это рабочий пример, а вот как создать проигрывание партикла и хит по направлению взгляда монстра (т.е. если монстр увидил НПС или ГГ и НПС или ГГ находится в радиусе 20 метров от монстра, то проиграть партикл в направлении НПС или ГГ которого атакует Монстр и нанести хит в том же направлении) я не знаю и хотелось бы узнать от знающего человека.
Другими словами получить рабочий пример.
P.S.: Вся загвоздка в том что я не знаю прописать направление по взгляду Монстра.
karavan получи айди монстра и узнавай его дирекцию(направление взгляда), а жарку по моему горизонтально развернуть не удастся...хотя нет, в х16 вроде бы и горизонтальная есть
Тогда не задавай адресных вопросов
и, имея ввиду 'нечто' иное, не формулируй так: "У меня вопрос по поводу Электро Химеры"
Рабочих примеров того, что ты один имеешь ввиду и никто другой не знает - вероятно или нет или невозможно подсказать.
Косвенно могу предпроложить, что рабочими примерами могут быть ... только например грави-пушка, принцип которой именно на "направлении взгляда".
Чуть позже попробую дать тебе что-то применительное к "электро-химере". Но попробуй сам хоть что-то "накопать".
Разворачивать же "жарку" - увольте ребята. Проще или заспавнить какой-нить объект и, включив на нем отыгрыш партиклов, "кинуть" куда нужно. Или, как уже писал выше, использовать перемещаемую "от и до" позицию отыгрыша партиклов.
Иначе какой-то огнемет/змей-горыныч получается ... Struck
Ты не совсем прав, одного направления взгляда недостаточно. Направление взгляда - вектор, т.е. луч! Не факт, что в векторе 'direction' будет объект, а не в метре (паре-тройке метров) от этого вектора.
Тут требуется сравнение с некоторой погрешностью векторов 'направления взгляда' с 'направлением до объекта'. Если еще учесть зависимость от расстояния до объекта (а если он не один?!) - не очень тривиальная задачка для многих 'начинающих' модмейкеров.
вопросик созрел...
верна ли эта функция или напортачил, определение по стори ай ди НПСа
local soObj = alife():story_object(006)
local bFlag = false --/ флаг-триггер, для однократности выполнения условия/функции
function Check_Distanse()
if bFlag then return end --/ на выход. т.к. уже отработано
if not Dictanse then Dictanse = 6 end
local PositionActor = db.actor:position()
local function Compare(id)
local obj = level.object_by_id(id)
if obj and IsStalker(obj) and obj:alive() and obj.health > 0.1 then
if obj:position():distance_to(PositionActor) <= Dictanse then
bFlag = true
news_manager.send_tip(db.actor, "рядом кто-то есть", 0, "default", 8000)
end
end
end
if obj_id then --/ если задан id конкретного сталкера
Compare(obj_id)
else --/ иначе перебираем всех на локации
for id=1,65534 do
Compare(id)
end
end
end
Николай ФеНиКс
Уже неоднократно говорилось в топике:
"Оформляйте вопросы/ответы должным образом,
с использованием различных тегов форума!"
В простейшем случае, чтобы удобно было читать, следует применять для кодов соответствующий им тег: [cоde]...[cоde] (символ 'о' - тут заменен на транслит, дабы было видно). Используйте доступную опцию в окне написания/редактирования поста!
В более сложных, когда хочется расцветить и т.п. - применяйте неразрывные пробелы ( [ _ ]) или иные средства.
Читать/понимать коды сплошняком - самим же неудобно!!!
По сути вопроса:
Ответь сам на вопрос: "Каким образом 'эта функция' у тебя связана с 'определение по стори ай ди НПСа'?"
И никогда не выполняй каких-либо определений для переменных, связанных с объектами игры, ДО момента их гарантированного появления в игре.
Коды модулей/скриптов считываются, как правило, в самом начале игры (точнее при первом же к ним обращении, обычно до спавна объектов!), т.о. твое определение (в корне скрипта!) для переменной:
Код:
local soObj = alife():story_object(006)
или заведомо будет равно 'nil' или же вообще приведет к "нестарту игры", т.к. alife() также в момент старта игры еще не существует.
Сообщение было успешно отредактировано Artos (05-06-2010 23:27 GMT3 часа, назад)
- ничего не напоминают? Николай ФеНиКс Если ты объяснишь ЧТО ты хочешь написать, то возможно кто-то сможет/захочет ответить КАК написать ...
P.S. Я же пояснил, что твой вопрос не имеет смысла, т.к. следов какой-либо зависимости тобою написанного и функции - не обнаруживается. Плз, подчищайте 'пустые', никому не нужные посты (если конечно не преследуется цель 'набивания' постов).
Сообщение было успешно отредактировано Artos (06-06-2010 05:58 GMT3 часа, назад)
local soObj = alife():story_object(006)
local Obj_Id = soObj.id --/ искомый id (айди) объекта
local bFlag = false --/ флаг-триггер, для однократности выполнения условия/функции
function Check_Distanse(Obj_Id)
if bFlag then return end --/ на выход. т.к. уже отработано
if not Dictanse then Dictanse = 6 end
local PositionActor = db.actor:position()
local function Compare(id)
local obj = level.object_by_id(id)
if obj and IsStalker(obj) and obj:alive() and obj.health > 0.1 then
if obj:position():distance_to(PositionActor) <= Dictanse then
bFlag = true
news_manager.send_tip(db.actor, "рядом кто-то есть", 0, "default", 8000)
end
end
end
if obj_id then --/ если задан id конкретного сталкера
Compare(obj_id)
else --/ иначе перебираем всех на локации
for id=1,65534 do
Compare(id)
end
end
end
Николай ФеНиКс
М-да-а-а, хочется крепко выругаться и игнорировать дальнейшее ...
может на примере дойдет ....
local soObj = alife():story_object(006) --/ недопустимо в 99% случаев
local Obj_Id = soObj.id --/ искомый id (айди) объекта --/ см. выше
local bFlag = false --/ флаг-триггер, для однократности выполнения условия/функции
Код:
function Check_Distanse(Obj_Id)
if bFlag then return end --/ на выход. т.к. уже отработано
if not Dictanse then Dictanse = 6 end
local PositionActor = db.actor:position()
local function Compare(id)
local obj = level.object_by_id(id)
if obj and IsStalker(obj) and obj:alive() and obj.health > 0.1 then
if obj:position():distance_to(PositionActor) <= Dictanse then
bFlag = true
news_manager.send_tip(db.actor, "рядом кто-то есть", 0, "default", 8000)
end
end
end
if obj_id then --/ если задан id конкретного сталкера
Compare(obj_id)
else --/ иначе перебираем всех на локации
for id=1,65534 do
Compare(id)
end
end
end
Какая-либо взаимосвязь soObj, Obj_Id и функции Check_Distanse(Obj_Id) , кроме бессмысленного аргумента на входе, который никак не обрабатывается этой функцией(!), отсутствует.
Автор кода пытается методом "тыка" что-то получить от скриптов ... Удачи 'дотыкать'! ->
Ма-а-аленькая подсказка: Регистр в именах переменных/функций/... имеет большОе значение. Но выделенное оранжевым все равно все подобные потуги сведет на нет.
(убери хотя бы в спойлер ...)
karavan
Так ведь:
Код:
h.direction = oNPC:direction()
- это и есть установка направления хита в направлении 'взгляда'. Замени 'oNPC' -> oMonster иль oElectroChimera (а для конкретно твоего случая - obj), если тебе удобнее для понимания.
Просто в твоем исходном варианте:
Код:
h.direction = vector():set(0,0,0)
- хит направлен в 'никуда' (стоИт вектор-заглушка), т.к. 'удар током' не имеет направления.
Сообщение было успешно отредактировано Artos (06-06-2010 00:34 GMT3 часа, назад)
Artos хотел спросить у вас (но если кто-то другой знает ответ отписывайтесь), правда он немного не по теме, но я обещаю что когда получу ответ потрусь. Вообщем я хотел перенести модель бронежелета из ТЧ в ЗП. Я открыл модель, добавил туда 2 кости (рут_сталкер и бип_01) через милку, открыл модель в сдк, добавил несколько пунктов в Motion reference (поставил галки напротив critical_hit_grup_1 - 7, stalker_animation, stalker_scenario_animation, stalker_scripts_animation, stalker_smart_cover_animation) и вставил модель в игру. Но у меня появилась проблема - когда по актору стреляют, актор не получает хит! Пули тупо проходят сквозь актора! Вообщем подскажите что я делал не так? (Кстати благодаря этой ошибке я придумал новый бронежилет!)
Ma$ter
В твоих словах "когда по актору стреляют, актор не получает хит!" похоже есть некорректность, т.к. не может НЕ быть хита (если конечно не палить мимо актера). Иное дело когда хит все же есть, но ... 'голого' актера можно убить и 'слабым' хитом, а можно и обессмертить, одев в 'бессмертный' костюм. Прим: Хит - величина повреждения/удара, которая должна быть применена к объекту (нанести повреждение/удар). Хит по актору/неписю может быть поглощен костюмом, в этом случае хит наносит повреждение объекту 'костюм'.
Может я не прав, т.к. предполагаю вопрос НЕ по бронику/костюму для актора, а по визуалу для сталкеров (неписей).
Возможно твоя ошибка (как впрочем и многих других) в том, что путается модель бронежилета актера с визуалом для сталкеров. Это совершенно разные объекты/вещи. То, что может быть надето актером никоем образом не может быть надето на сталкеров, как и наоборот. Т.о. на актора ты одеваешь не 'сделанный' тобою бронежилет, а что-то иное.
Если предположение с визуалом ошибочно, то возможна другая причина: твой костюм получился с 'бессмертными' resistance и/или damage , т.е. некорректные секции параметров иммунитетов/стойкости к повреждениям в параметрах модели костюма/броника (особенно смущает "critical_hit_grup_1 - 7"?).
Сорри, по вопросам обработки модели в милках/СДК - это не ко мне, тут я ... пока еще дилетант чтобы давать правильные ответы (мелкие правки делаю HEX'ом).
Ну а фраза "Пули тупо проходят сквозь актора!" - как-то навевает мысли о твоей фантазии, даже если ты пользуешься замедлением времени и видом 'сбоку'. Подтирать посты не стОит, если они несут информативный характер и могут быть полезны другим.
Сообщение было успешно отредактировано Artos (06-06-2010 05:51 GMT3 часа, назад)
ЦитатаНу а фраза "Пули тупо проходят сквозь актора!" - как-то навевает мысли о твоей фантазии, даже если ты пользуешься замедлением времени и видом 'сбоку'
дело в том что я подходил вплотную к новичку с обрезом, и когда он в меня пальнул на экране не повились красные отметки о том что по мне стреляют. Даже в бронежилете со 100% защитой от пуль, когда в тебя стреляют, появляются красные отметки с какой стороны по тебе стреляют. Поэтому предположение что
Цитата
Если предположение с визуалом ошибочно, то возможна другая причина: твой костюм получился с 'бессмертными' resistance и/или damage , т.е. некорректные секции параметров иммунитетов/стойкости к повреждениям в параметрах модели
я считаю ошибочнм, но вот это
ЦитатаМожет я не прав, т.к. предполагаю вопрос НЕ по бронику/костюму для актора, а по визуалу для сталкеров (неписей).
Возможно твоя ошибка (как впрочем и многих других) в том, что путается модель бронежилета актера с визуалом для сталкеров. Это совершенно разные объекты/вещи. То, что может быть надето актером никоем образом не может быть надето на сталкеров, как и наоборот. Т.о. на актора ты одеваешь не 'сделанный' тобою бронежилет, а что-то иное.
я считаю вполне возможнным т.к. бронежилет перносил не я, а мне просто дали модель. вполне возможно что что-то тут напортачили. Вообщем Артос спасибо тебе
добавлено спустя 26 минут
оказываеся тот кто занимался переносом все-таки смог умереть в этом костюме. правда умер он только тогда когда подорвался на гранате
[error]Expression : assertion failed
[error]Function : CPHActivationShape::Create
[error]File : D:\prog_repository\sources\trunk\xrPhysics\PHActivationShape.cpp
[error]Line : 177
[error]Description : _valid( start_pos )
Что то совсем ничерта не понимаю. Сейчас портул костюм монолитовца, он у меня работает нормально. А вот костюм новичка глючит
АП:
Оказалось надо было просто настроить кости. Как настраивать кости можно узнать на сталкер вики. Всем спасибо
Сообщение было успешно отредактировано Ma$ter (06-06-2010 19:13 GMT3 часа, назад)
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.