всё так же как и у стволов! hide= скрывать show = показать idle = условно холостой ход=> ничего не делать.(ипользуется когда стоишь на месте и ни чё не делаешь) playing = ясно всё. throw_begin= закончить начатое throw_idle =выбросить throw_act = условно бросить в действии throw_end = закончить...
бег, но по англ. в этих анимациях значит нет анимак бега. => анимка бега может быть заменена анимкой убирания ствола.
blackraven6
я написал ИМХО, так что без претензий...
отредактировал(а) Николай ФеНиКс: 28-05-2010 14: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
Начало поста Николай ФеНиКс'а в общем правильно, спавнится профиль любого нужного тебе непися. И даже верно, что его нужно убить, чтобы **50316ea8aab1bb10eeba** НЕ следует убирать труп (зачем тогда вообще спавнили?!).
Необходимо установить 'жизни' (healt) в 0.
Сделать это можно нет-пакетами.
XrKamp
'Убить' можно по разному ... Гадалками о чем ты - заниматься нет желания.
Банальный способ для он-лайн неписей:[code]oNPC:kill(oNPC)[/code]
Объект по стори-айди можно получить так:[code]local soObj = alife:story_object(iStoryId)[/code]
Его Id (игровой) уже так:[code]local idObj = soObj.id[/code]
Он-лайн объект (game_objecy):[code]local oObj = level.object_by_id(soObj.id)[/code]
Ну а уборка трупа - можешь использовать и "трупо-удалялку" от Николай ФеНиКс'а, если нужно 'сразу' и ты уверен(!), что объект не связан с другими объектами какими-либо связями ... Иначе - удалить 'сразу' - вероятность вылета, на что и сетует тот же Николай ФеНиКс, не удосужившись за 3 месяца разобраться 'что нужно, чтобы удалять труп'.
P.S. (только в качестве информации для размышлений)
Есть такая функция set_switch_offline(), применимая к гейм-объектам. Отправив непись в оффлайн (если конечно этому не препятстует его логика!), можно виртуально "удалить" непись ...
XrKamp Не отвечу! И хотя для меня это секунда, но взявшись за модинг - потрудитесь изучить 'азбуку'! Пригодится! Тем более на этот вопрос десятки раз уже отвечалось в этом топике и расписано во всех ФАК'ах.
Если я напишу в логике НПС вот это:
[death]
on_info = %+esc_bridge_death_two_sniper%
то при убийстве этого НПС выдастся инфопоршень, я правильно понимаю?
Artos
Спасибо, про оффлайн не доглядел (уже и в хелпе не посмотреть...).
2. А ежели к 'npc' не применим метод 'alive', например тот же Сидорыч иль Бармен? Вылет ...
Насчёт этого не понял... Спокойно сейчас проверил оффлайн бармена и онлайн сидора (без проверки IsStalker) на "живучесть" и без жука (неправильно проверил?).
отредактировал(а) Futura: 29-05-2010 12:55 GMT3 час.
Futura
Is_Stalker -> IsStalker . Писал по памяти, поправил сразу же как уточнил.
Метод 'alive' не применим к неписям 'clsid.script_trader' (торговцам), но помянул их поименно.
На счет Сидорыча не 100% не уверен, может уже путаю с кодами НЕ оригинала, но Бармен ну ни как твою проверку не может пройти, т.к. это точно 'clsid.script_trader'.
P.S. закралось сомнение, а не поддерживается ли 'npc:alive()' для онлайновых (т.е. клиентских, а не серверных) торговцев ... как-нить нужно будет проверить.
Если 'да' - то твой коммент полностью справедлив и как раз ограничивает (хоть и словесно) область применения функции.
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 20:07 GMT3 час.
Futura
Странностей в Сталкере хватает. Кстати от alife():object("name-object") разрабы в ЧН/ЗП отказались ... С чего бы?
Вот по причине подобных офф-он-лайн разночтений и предпочитаю универсальные функции.
Из практики - функция написанная только, например, для клиентских объектов, в последствии модмейкером нередко начинает применяться и для непроверенных объектов, что приводит к ...
Stalk15Стоит ли задавать простейшие вопросы, на ко**50166ea8aab1bb10eeba**l soObj = alife:story_object('story_id)[/code]
Ну а уж секцию берем банальным:[code]local sSection = soObj:section_name()[/code]
2. Позиция спавна, левел- и гейм- вертексы:
Если не знаем - берем от автора и прибавив 'туды-сюды' к координатам позиции - спавним.
Если же тебе нужно заспавнить предмет и ПРИСВОИТЬ ему определенный для него Story_Id, то два варианта:
1. Если этот предмет (с нужным Story_Id) есть в all.spawn'е - спавнить по УЖЕ имеющейся секции из all.spawn'а (ее нужно брать из СВОЕГО all.spawn'а[code]local soObj = alife():create(iNumSection)[/code]
2. Заспавнить предмет с нужной секцией и в его нет-пакете установить требуемый Story_Id.
Рабочий пример куска кода из Симбиона (с разной 'обвязкой') присваювающий нужный стори-айди уже существующему предмету:[code]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
[/code]
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 01:11 GMT3 час. Не стань номинантом премии Дарвина.
Gun12
Ты совершенно прав, это и проверять не требуется. on_death - имя переменной/параметра (таких не одна), которой присваивается имя некоторой секции. Имя может быть каким угодно (с соблюдением правил применимых символов), но обязательно уникальным в данном файле логики. И обязательно эта секция должна быть и в этом же файле.
Уточнение Максим Р. в данном случае полностью корректно, т.к. речь идет уже о конкретном случае и имя секции [death] уже определено и именно оно должно быть упомянуто в корневой секции логики.
(В своем ответе я упустил это, посчитав это само собою разумеющимся, забыв про ... специфику топика).
Форма твоего ответа несколько неоднозначна в отношении процитированного Максим Р. . Получилось некое 'сомнение' - а требовалось ли указывать [death] в [logic], или это необязательно, или вообще иную секцию можно указать?
Потому и немного прояснил ... тоже для 'общего развития'.
Если объединить твой пост в дополнение к первым двум (чуть уточнив слова: "... а вместо death можно использовать любое, ...") - получится полный развернутый ответ.
Люди, как можно отследить момент, когда оружие должно стрелять? И поломать его в этот момент, если не выполняется нужное мне условие?
А потом восстановить, через некоторое время (ограниченное 1 секундой). А так как функция задержки - дело полное багов (мне рассказали, что это так), то как можно еще сделать задержку на восстановление оружия.
Так как надо отслеживать момент выстрела ( в том числе и для NPC).
Из всего этого следует, что надо получить три параметра: что стреляли, кто стрелял и из чего стреляли.
Ну и напоследок: как заставить оружия не перезаряжаться (в той же функции)?
отредактировал(а) vhodnoylogin: 29-05-2010 09:26 GMT3 час. Зачем доказывать кому-то, что ты настоящий мужик? Лучше потратьте это время на добрые дела!
вот...3 месяц бошку ломал и тут вот оно!
просто надо было в офф. вывести НПСа=)
.............................................................
Вопрос:
Почему не выдаётся задание?
вот план моих действий:
создание диалога:
создание инфопоршней:
создание задания в tasks_escape.xml
Найти потерянный Плащ Найти потерянный Плащ ui_iconsTotal_weapons escape_dok_quest_done tex_escape_dok_quest
Найти Плащ new_life.escape_dok_have escape_dok_quest_have
Принести Доку Плащ blue_location dok escape_dok_quest_done
создание описания в storyline_info_escape.xml
ui\ui_icon_equipment tex_escape_dok_quest
+функции...
при разговоре с эти НПСом задания в ПДА не появляется, а спавн искомой вещи происходит, и выдача награды тоже происходит, но что задание получено или выполнено не появляется!
что не так???
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.