Люди, кто-нибудь знает, как отследить момент выстрела? Чтобы у меня были значения: кто стрелял, из чего стрелял, ну и, собственно говоря, сам факт выстрела.
И почему функция задержки - глючная, и ее лучше не использовать? Что тогда использовать для задержки времени выполнения какого-либо метода?
Зачем доказывать кому-то, что ты настоящий мужик? Лучше потратьте это время на добрые дела!
vhodnoylogin
Уже второй раз задаешь вопрос и не можешь его толком задать.
"отследить момент выстрела" - чего/кого? Актора, неписи или 'любой' неписи?
В любом случае ты столкнешься со значительной нагрузкой на ресурсы, т.к. нет в доступных методах возможности получить сигнал/флаг о выстреле 'вообще'.
Придется писать скрипты, вешать их на постоянный апдейт и мониторить. Если тебя интересует вообще 'все кто стрелял' - думается "терафлопный" комп сможет тебя частично избавить от лагов.
"функция задержки" - включив рудиментарные способности к телепатии можно предположить, что ты о "function wait()". Но ... включив разум и логику - не возьмусь объяснять тебе "почему" и вообще глючная ли ... Что-то подсказывает, что вряд ли будет понято даже начало ...
Для отсрочки выполнения какого-либо метода/действия применяют (как и в жизни) самописные или позаимствованные таймеры.
Artos
Во такой вопрос персонально к тебе!
Вот знаю я что в Сетевой есть подсчёт хедов. функция как называется?
и как она работает?
реально ли её прикрепить к геймплею?
и наконец реально сделать подсчет попаданий не только в голову,но и в другие части тел, нога рука,торс...
Николай ФеНиКс вот сколько раз я тебе писал уже что можно, ты видно ждёшь пока за тебя напишут код...:dry:
local headshot = 0
function headshot_counter(obj,amount,local_direction,who,bone_index)
if (bone_index==14
or bone_index==17
or bone_index==18
or bone_index==19
or bone_index==21
or bone_index==22
or bone_index==23
or bone_index==25
or bone_index==26
or bone_index==27
or bone_index==29
or bone_index==30
or bone_index==31) and who:id == db.actor:id then
headshot = headshot+1
end
if headshot>=число then
--твои действия
end
end
Николай ФеНиКс
Я в сетевые варианты не играю и с жаргоном не знаком.
Если ты имеешь ввиду "хед" - выстрел/попадание в голову (хедшот - headshoot), то ...
Почему то многие считают что сложные вещи делаются некоей функцией? В кодах очень сильно все взаимосвязано/завязано и некая конечная функция, выводящая результат, является вершиной айсберга ...
"Прикрутить" врядли получится. Сделать аналогичное, возможно даже используя 'готовые' куски - возможно.
Сделать подсчет попаданий в зависимости от частей тела (точнее по костям) - вполне реально.
В модах с интерактивным (не путать с псевдо-) выпадением частей монстров уже подобное задействовано.
В том же Симбионе (сорри, что поминаю его постоянно) при попадании в монстра учитывается в какие кости (использованы материалы "Smart Monster Parts" by Bak (aka Rulix)) и ... если попасть плоти в глаз, иль собаке в хвост и т.п. - при обыске трупа монстра этой части незадачливый стрелок-охотник не досчитается. Идет учет попадания в кость и считается - "отстрелил/повредил". Struck
Сорри, но стараюсь не отвечать на безграмотно заданные вопросы.
То что ты спрашиваешь является куском некоей схемы/класса. Происходит внутренний (из схемы) вызов функции 'Enable()' из этой же схемы, с аргументом 'boolean'.
Что-либо еще сказать нельзя, можно только гадать.
В дальнейшем вопросы таким образом заданные - не задавай, ответ если и будет ... то не по сути.
Николай ФеНиКс если хочешь чтобы прям как в сети было то просто после проверки выводи кастом статик(так красивее и проще)
добавлено спустя 29 минут
Artos можно как то рационально вычислить какая пушка у актора в руках, то есть узнать секцию как нибудь без кучи проверок методом obj:section(), мне нужно как актор сменил пушку так узнавать какая она у него, вот ищу более рациональный способ нежели кучу проверок, а то пушек то не 2 не 3 а добрый десяток-другой
отредактировал(а) Struck: 29-05-2010 22:20 GMT3 час. Снова в строю.
Struck
То, что актор сменил пушку можно узнать только по Id пушки.
Какая пушка - можно узнать только по секции, т.к. все иные способы ну оч.далеки от оптимальности.
Т.о. без определения и анализа/сравнения этих двух критериев ты НЕ решишь задачи.
И не знаю о какой куче проверок ты гутаришь, нечно подобное может выглядеть так:
local idWeapon = -1 --/ переменная хранящее текущее значение 'пушки' ГГ
function get_actor_active_weapon_section() local oItem = db.actor and db.actor:active_item()--/ предмет в руках ГГ if oItem and isWeapon(oItem) and oItem:id() ~= idWeapon then--/ если предмет - оружие и не прежний idWeapon = oItem:id()--/ запоминаем новое оружие return oItem:section()--/> на выходе секция нового оружия end return nil--/> оружия нет или оно не менялось end
Если поставить на аптейтер (стОит вызывать с периодом ~1 сек), то результатом функции бцдет либо 'nil' при отсутствии оружия или его НЕ смене или же стринг с секцией нового оружия, которое появилось в руках ГГ.
Ремарка: Первое обращение к функции после старта игры даст обязательно секцию оружия в руках ГГ. Этого можно простенько избежать, введя предустановку ..., но ИМХО не стОит заморачиваться.
Дальнейшая "оптимизация" возможна только в ущерб безопасности кода.
Artos гутарю о том что мне надо знать какое именно оружие, а получить то секцию и айди не проблема, мне надо знать что за оружие в руках а не менялось оно или нет
хочу реализовать что-то вроде жизнеобеспечения которое будет выдавать сообщение о попадание в ГГ ну куда, в какую часть тела попали! а как это осуществить я не представляю... и так же чтобы это система работала и на НПС, т.е. выдавались сообщения в какую-нибудь таблицу (допустим отделная страница в новом ПДА...нет в личном ноуте!!!)
вот сама идея... Прошу помощи в реализации! отблагодарю как смогу!
добавлено спустя 4 минут
и ещё вопрос: усыпит ли эта функция мутанта?
if objWho:id() == db.actor:id() then
if db.actor:active_slot() == 2 then
local objActiveItem = db.actor:active_item();
if objActiveItem:section() == "wpn_val" then
xr_logic.mob_capture(objMonster, true);
action(objMonster, anim(anim.sleep, 0), cond(cond.time_end, 1));
end
end
end
отредактировал(а) Николай ФеНиКс: 29-05-2010 23:04 GMT3 час.
Struck
Извини меня бестолкового, но твое "какое именно оружие" - мне тогда непонятно.
Если тебя не интересует ни его секция, ни Id оружия, то что же является 'этим'? Все остальное являетчя производными ...
Artos меня интересует конструкция вида "если в руках оружие и это(к примеру) калаш то" и вот что бы кучу таких проверок на каждое оружие не писать и ищу выход
Struck
Как же сложно научитьс вас формулировать вопросы ... проще на них не отвечать, чем доискиваться до сути.
(не мною сказано) "Правильно заданный вопрос содержит 50% ответа".
Тебе нужно нечто типа(?):
function Check_Actor_Active_Weapon(sWpnSection) --/ на входе секция оружия local oItem = db.actor and db.actor:active_item()--/ предмет в руках ГГ if oItem and isWeapon(oItem) then--/ если предмет - оружие return oItem:section() == sWpnSection--/> соответствует ли запрашиваемому end return false--/> руки ГГ пусты или в них не оружие end
Для оптимизации ресурсов (но НЕ кол-ва кода) стОит закешировать текущую секцию (иль name/Id) оружия, дабы не вычислять секцию каждый раз. Но это уже зависит от кол-ва и периода обращений к данной проверке.
Struck это не огрызок кода это фунция из АМК 2.0. Там отведен отдельный скрипт, и написано в коментарии "Усыпление мутантов!" и... Собсно приложен данный код. А огрызок это или нет, незнаю...
Вот, как бы если есть желание скачать и поглядеть, то вот: _http://ifolder.ru/17934224
Данный скрипт с этим кодом, ии... И еще что-то в этом скрипте
Андрюха "Грозный"
Есть отдельный топик именно по этому моду. СтОит подобные вопросы задавать именно там.
Есть отдельный сайт команды, сделавшей именно этот мод - amk-team.ru. Там есть и многочисленные ФАКи и топики для подобных вопросов.
Добавление собственно текстур никак не затрагивает конфиги/скрипты, но вероятнее всего ты не заметил, что помимо текстур ты 'добавлением' замещаешь и некоторые конфиги ... по крайней мере тот, где прописана секция [amk_artem_kulinar] (профили неписей).
Какие нужно установить числовые значения(белые цифры), чтоб таймер включился например на 30 сек?
Блин, цветом не могу показать цифры - не срабатывает код.Странно.
Stalk15
Кодов с функцией таймера немало и в оригинале и в модах.
Нет простенькой функции универсального таймера. Если интересно - смотри как организован универсальный таймер в АМК иль в Симбионе.
И напоминаю, задавая вопрос - позаботься о всех необходимых данных для возможности ответить на него.
В твоем вопросе даже не указано какие секунды ты имеешь вв виду (игровые или реальные). Только из контекста куска кода можно гадать, что скорее всего игровые.
Опиши желаемое - возможно дам как может выглядеть конкретный таймер.
Stalk15
Для начала тебе нужно понять, - "Что такое таймер?"
Немного подумав можно определиться, что это счетчик, определяющий промежуток времени между начальной и конечной точками отсчета.
Отсюда следует, что необходимо задать эти точки.
Как можно узнать, что время Х пришло?
Поставить на апдейт, и постоянно читать текущее время.
Даже если взять твой вариант (т.е. функция должна стоять на апдейте), в котором начальной и конечной точкой есть одно и тоже время (раз в сутки), то в 05.00 функция конечно вызовется. А что будет в 05.00.01?
А сколько раз за секунду вызывается апдейт?
А сколько раз в минуту (пока не стукнет 05.01) будет вызвана функция?
отредактировал(а) Gun12: 30-05-2010 17:32 GMT3 час. Не стань номинантом премии Дарвина.
Artos, Gun12
Вообщем я хотел запустить таймер, например на 5 минут реального**50316ea8aab1bb10eeba** теле функции таймера:
[code]скрипт.функция()[/code].Ну вот все, что я хотел.
Сначала объясни.
ТЫ (САМ !) хочешь это сделать?
Если так, то пробуй, с уже полученными знаниями.
По ходу будем "понимать" (о том что "понимание" всего того что пишется важно, не раз говорил Artos)
Ну а если не так, то пиши прямо, - "Сделайте для меня готовый код".
отредактировал(а) Gun12: 30-05-2010 18:09 GMT3 час. Не стань номинантом премии Дарвина.
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.