всё так же как и у стволов! hide= скрывать show = показать idle = условно холостой ход=> ничего не делать.(ипользуется когда стоишь на месте и ни чё не делаешь) playing = ясно всё. throw_begin= закончить начатое throw_idle =выбросить throw_act = условно бросить в действии throw_end = закончить...
бег, но по англ. в этих анимациях значит нет анимак бега. => анимка бега может быть заменена анимкой убирания ствола.
blackraven6
я написал ИМХО, так что без претензий...
Сообщение было успешно отредактировано Николай ФеНиКс (28-05-2010 17:53 GMT3 часа, назад)
Цитата#БаЛаБоЛ : Fantom2323 Вам нужно чтобы было всё вот так?
Если да, то в ui_icons_npc.DDS (gamedata\textures\ui) просто вырезаете иконки ГГ вставляя иконки комбеза из ui_icon_equipment.DDS, находится equipment там же..
о чем я и говорил.
добавлено спустя 4 минут
Цитата#Николай ФеНиКс :
всё так же как и у стволов! hide= скрывать show = показать idle = условно холостой ход=> ничего не делать.(ипользуется когда стоишь на месте и ни чё не делаешь) playing = ясно всё. throw_begin= закончить начатое throw_idle =выбросить throw_act = условно бросить в действии throw_end = закончить...
не уверен, но ИМХО: throw_act или
hide или show, точно анимки бега... не проще в СДК посмотреть???
ну ну. hide это как он убирает предмет.
show это как он вытаскивает предмет.
throw_begin это начало броска.
А анимки бега у гранат вроде бы отстуствуют.
Анимка бега задается строкой sprint.
так же как и у живого.
просто при спавне этого НПСа, сразу же убиваем его функцией
del_trup()
local sobj = alife():object(obj_id)
if sobj then
alife():release(sobj,true)
end
end
XrKamp
забей!
я эти занимался 3 месяца и постоянно получал вылеты!
,,,,,,,,,,,,,,,,,,,,,,,,,,,
лучше объясните как этот труп телепортировать, а не удалять! так никаких вылетов не должно происходить!= )
Николай ФеНиКс
Удалил бы ты свои последние посты от греха подальше ... а то от 'подзатыльников' может еще долго будет икаться ...
И .. если ты с удалением трупов до сих пор не совладал, то ... заблуждаешься, что с телепортированием будет проще. Stalk15
Начало поста Николай ФеНиКс'а в общем правильно, спавнится профиль любого нужного тебе непися. И даже верно, что его нужно убить, чтобы стал трупом.
Вот только Николай ФеНиКс похоже зациклился на трупо-убиралке и НЕ следует убирать труп (зачем тогда вообще спавнили?!).
Необходимо установить 'жизни' (healt) в 0.
Сделать это можно нет-пакетами.
XrKamp
'Убить' можно по разному ... Гадалками о чем ты - заниматься нет желания.
Банальный способ для он-лайн неписей:
Код:
oNPC:kill(oNPC)
Объект по стори-айди можно получить так:
Код:
local soObj = alife:story_object(iStoryId)
Его Id (игровой) уже так:
Код:
local idObj = soObj.id
Он-лайн объект (game_objecy):
Код:
local oObj = level.object_by_id(soObj.id)
Ну а уборка трупа - можешь использовать и "трупо-удалялку" от Николай ФеНиКс'а, если нужно 'сразу' и ты уверен(!), что объект не связан с другими объектами какими-либо связями ... Иначе - удалить 'сразу' - вероятность вылета, на что и сетует тот же Николай ФеНиКс, не удосужившись за 3 месяца разобраться 'что нужно, чтобы удалять труп'.
P.S. (только в качестве информации для размышлений)
Есть такая функция set_switch_offline(), применимая к гейм-объектам. Отправив непись в оффлайн (если конечно этому не препятстует его логика!), можно виртуально "удалить" непись ...
Сообщение было успешно отредактировано Artos (28-05-2010 21:01 GMT3 часа, назад)
XrKamp Не отвечу! И хотя для меня это секунда, но взявшись за модинг - потрудитесь изучить 'азбуку'! Пригодится! Тем более на этот вопрос десятки раз уже отвечалось в этом топике и расписано во всех ФАК'ах.
function check(npc) -- принимает онлайн НПС.
if npc and not npc:alive() then
return true -- мёртв
elseif npc and npc:alive() then
return false -- жив
end
end
Если я напишу в логике НПС вот это:
[death]
on_info = %+esc_bridge_death_two_sniper%
то при убийстве этого НПС выдастся инфопоршень, я правильно понимаю?
function check(npc) --/ принимает любых(!) НПС.
return ( npc ~= nil and npc.alive ~= nil and npc:alive() ) --/ false|true - мертв/жив
end
или если не интересуют монстры:
Код:
function check(npc) --/ принимает любых(!) сталкеров
return ( IsStalker(npc) ~= nil and npc:alive() ) --/ false|true - мертв/жив
end
В твоем варианте есть недостатки:
1. Комментарий НЕ верен - работает и с офф-лайновыми неписями
2. А ежели к 'npc' не применим метод 'alive', например тот же Сидорыч иль Бармен? Вылет ...
Stalk15
Верно, при условии существования такого инфопоршня в кодах игры.
Сообщение было успешно отредактировано Artos (28-05-2010 22:02 GMT3 часа, назад)
Artos
Спасибо, про оффлайн не доглядел (уже и в хелпе не посмотреть...).
Цитата2. А ежели к 'npc' не применим метод 'alive', например тот же Сидорыч иль Бармен? Вылет ...
Насчёт этого не понял... Спокойно сейчас проверил оффлайн бармена и онлайн сидора (без проверки IsStalker) на "живучесть" и без жука (неправильно проверил?).
Сообщение было успешно отредактировано Futura (29-05-2010 15:55 GMT3 часа, назад)
Futura
Is_Stalker -> IsStalker . Писал по памяти, поправил сразу же как уточнил.
Метод 'alive' не применим к неписям 'clsid.script_trader' (торговцам), но помянул их поименно.
На счет Сидорыча не 100% не уверен, может уже путаю с кодами НЕ оригинала, но Бармен ну ни как твою проверку не может пройти, т.к. это точно 'clsid.script_trader'.
P.S. закралось сомнение, а не поддерживается ли 'npc:alive()' для онлайновых (т.е. клиентских, а не серверных) торговцев ... как-нить нужно будет проверить.
Если 'да' - то твой коммент полностью справедлив и как раз ограничивает (хоть и словесно) область применения функции.
Сообщение было успешно отредактировано Artos (28-05-2010 23:30 GMT3 часа, назад)
Artos
Проверил ещё раз. Бармен вообще не прошёл ни alife():story_object(500) в оффлайне, ни level_object_by_sid(500) в онлайне. Жука небыло, но функция возвращала false.
Для Сидора level_object_by_sid(003)возвращает true в онлайне, alife():story_object(003) - вылет и там и там. alife():object() так же false для обоих.
добавлено спустя 13 минут
Кхм, странно. alife():object("bar_barman") для оффлайн возвратило true.
Сообщение было успешно отредактировано Futura (28-05-2010 23:07 GMT3 часа, назад)
Futura
Странностей в Сталкере хватает. Кстати от alife():object("name-object") разрабы в ЧН/ЗП отказались ... С чего бы?
Вот по причине подобных офф-он-лайн разночтений и предпочитаю универсальные функции.
Из практики - функция написанная только, например, для клиентских объектов, в последствии модмейкером нередко начинает применяться и для непроверенных объектов, что приводит к ...
Сообщение было успешно отредактировано Artos (28-05-2010 23:29 GMT3 часа, назад)
Stalk15Стоит ли задавать простейшие вопросы, на которые сам немного подумав и посмотрев в "справосник" сможешь ответить за 5 минут?
Ведь когда настанет черед более каверзных вопросов - отвечать кому-то может и надоесть ...
Что нужно для "заспавнить"?
1. Секция объекта.
Зная 'story_id' даже в справочник не нужно смотреть, т.к. выше постами видим:
Код:
local soObj = alife:story_object('story_id)
Ну а уж секцию берем банальным:
Код:
local sSection = soObj:section_name()
2. Позиция спавна, левел- и гейм- вертексы:
Если не знаем - берем от автора и прибавив 'туды-сюды' к координатам позиции - спавним.
Если же тебе нужно заспавнить предмет и ПРИСВОИТЬ ему определенный для него Story_Id, то два варианта:
1. Если этот предмет (с нужным Story_Id) есть в all.spawn'е - спавнить по УЖЕ имеющейся секции из all.spawn'а (ее нужно брать из СВОЕГО all.spawn'а
Код:
local soObj = alife():create(iNumSection)
2. Заспавнить предмет с нужной секцией и в его нет-пакете установить требуемый Story_Id.
Рабочий пример куска кода из Симбиона (с разной 'обвязкой') присваювающий нужный стори-айди уже существующему предмету:
Код:
local soNPC = alife():object("esc_blokpost_commander") --/капитан Тарнавский
if soNPC and IsStalker(soNPC) and soNPC.m_story_id ~= 93 and db.wrpk then
local tT = m_net_utils.Get_Data_Stalker(soNPC)
tT.story_id = 93
local bFlg = m_net_utils.Set_Data_Stalker(tT,soNPC)
if not bFlg then
printf("Check_Spawn_Objects:Error_write_for_obj=[%s]:<%s>", soNPC:name(), "Error!")
end
end
Сообщение было успешно отредактировано Artos (29-05-2010 01:12 GMT3 часа, назад)
Futura, статья же есть по переводу npc в offline-online через скрипт: http://stalkerin.gameru.net/wiki/index.php/Переход_нпс_в_offline-online_через_скрипт
Futura
С квестовыми лучше не баловаться. Не зря же я про логику помянул. У Волка вроде бы не прописано "быть всегда в онлайне", но то, что он во многих схемах/условиях учавстует - запросто может являться условием его возврата 'автоматом'. Тут уже приоритет флага 'job_online' и его тем более просто так 'мгновенно' не удалить (будет запорченный сэйв).
Прим: перевод в оффлайн используется, например, в схеме "переодевания неписей" (от xStream'а), так что там можешь посмотреть ...
Цитата#Максим Р. :
и ещё, если в секции [logic] будет строчка:
...
on_death = death
В данном (конкретном) случае нужно прописывать в секции [logic]
именно строку on_death = death
Но есть и другие возможности.
Рассматривая файл xr_death.script и файлы игры я понял (насколько правильно не проверял), что ключевое слово есть - on_death = , а вместо death можно использовать любое уникальное сочетание символов, которыми впоследствии и будет называться секция.
Примеров, подтверждающих это, в игре достаточно.
Когда-то написал несколько скриптов на Lua для разбора различных данных, Среди них и поиск всех возможных секций логики, со всеми возможными записями, использующимися в них.
Благодаря ему и нашлось, что :
Секция [meet] имеет таких клонов :
[scared_meet_hide]
[scared_meet]
Тот же [death] имеет "тёзку"
[dead]
Секция [sr_sound] :
[sr_sound_act]
Секция [mob_trader] :
[mob_trade]
Секция [danger_condition]
[danger_conditions]
Сообщение было успешно отредактировано Gun12 (29-05-2010 04:11 GMT3 часа, назад)
Gun12
Ты совершенно прав, это и проверять не требуется. on_death - имя переменной/параметра (таких не одна), которой присваивается имя некоторой секции. Имя может быть каким угодно (с соблюдением правил применимых символов), но обязательно уникальным в данном файле логики. И обязательно эта секция должна быть и в этом же файле.
Уточнение Максим Р. в данном случае полностью корректно, т.к. речь идет уже о конкретном случае и имя секции [death] уже определено и именно оно должно быть упомянуто в корневой секции логики.
(В своем ответе я упустил это, посчитав это само собою разумеющимся, забыв про ... специфику топика).
Форма твоего ответа несколько неоднозначна в отношении процитированного Максим Р. . Получилось некое 'сомнение' - а требовалось ли указывать [death] в [logic], или это необязательно, или вообще иную секцию можно указать?
Потому и немного прояснил ... тоже для 'общего развития'.
Если объединить твой пост в дополнение к первым двум (чуть уточнив слова: "... а вместо death можно использовать любое, ...") - получится полный развернутый ответ.
Сообщение было успешно отредактировано Artos (29-05-2010 04:12 GMT3 часа, назад)
Люди, как можно отследить момент, когда оружие должно стрелять? И поломать его в этот момент, если не выполняется нужное мне условие?
А потом восстановить, через некоторое время (ограниченное 1 секундой). А так как функция задержки - дело полное багов (мне рассказали, что это так), то как можно еще сделать задержку на восстановление оружия.
Так как надо отслеживать момент выстрела ( в том числе и для NPC).
Из всего этого следует, что надо получить три параметра: что стреляли, кто стрелял и из чего стреляли.
Ну и напоследок: как заставить оружия не перезаряжаться (в той же функции)?
Сообщение было успешно отредактировано vhodnoylogin (29-05-2010 12:26 GMT3 часа, назад)
+функции...
при разговоре с эти НПСом задания в ПДА не появляется, а спавн искомой вещи происходит, и выдача награды тоже происходит, но что задание получено или выполнено не появляется!
что не так???
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.