новиков сергей поковыряйся в файлах Самострельщика. На Волка можно пределать, но для этого тебе надо в файле config\creatures\spawn_sections
дописать волку или кому угодно custom_data = scripts\nps_suicide.ltx
Написать любой диалог и после написать инфопоршень: info_04
erlik
Вообщето было бы класно сделать закладку нескольких ящиков и потом подрыв их через единый таймер. :-)
Хочешь Петруху грохнуть - найди его логику (она там же где и логика волка) - и впиши туда ремарку суицида - и ту строчку
on_info = {+suicide} remark@suicide -- в какой-нибудь блок его логики
для убийства квестовых неписей можно обойтись кстати и без диалога - тока функция должна быть другая - например такая
--\\функция singapur22
-- нужно задавать непеисю sid или испльзовать те что есть в файле game_story_ids
function make_suicide_2()
local npc = level_object_by_sid(sid) -- здесь пишем число - вместо sid
if npc then
local obj = npc:item_in_slot(npc:active_slot())
local snd = xr_sound.get_safe_sound_object([[weapons\t_desert_eagle_shot]])
if obj then
snd:play_at_pos(obj, obj:position(), 0, sound_object.s3d)
else
snd:play_at_pos(npc, npc:position(), 0, sound_object.s3d)
end
local h = hit ();
h.power = 1000000 --чтоб наверняка грохнуть
h.impulse = 1
if obj then
h.draftsman = obj --от кого(активный слот)
h.direction = vector():sub(npc:position(), obj:position())
else
h.draftsman = npc --от кого(сам нпс)
h.direction = vector():set(0,0,1)
end
h.type = hit.wound --тип хита
h:bone("bip01_head") --дать хит по голове
npc:hit (h)
end
end
все сиды квестовых персов есть в файле game_story_ids
Озвучку для непися можно выбрать любую - зайди в файл script_sound - в папке misc - и выбери любую из тех что там есть.
Вот так там указывается озвучка
[mil_crazy _rnd] -- точнее это имя озвучки
stalker = 0,scenario\military\crazy\mil_crazy
флажок rnd означает что в этой реплике есть варианты, которые буду рандомно проигрываться.
сам звуковой файл ищи по указанному там пути.
добавлено спустя 4 минут
karavan
насчет одновременного подрыва нескольких бомб - я бы тоже хотел, но есть сложности как поймать и затем сохранить все айди бомб, чтобы потом их можно было подорвать по ним. Пока сохраняется только одно айди - той бомбы, которую только что заложил.
Вот думаю как это реализовать...
добавлено спустя 1 минуту
дописывать волку кустом дату не надо - у него логика и так есть - надо в имеющуюся схему логики правильно сунуть свою ремарку.
отредактировал(а) erlik: 18-10-2009 18:22 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Мне то кто нить поможет? И еще проблема научить кто нибудь скриптам может просто когда я челов через скрипт спавню то в игре все люди исчезают но в лагере новичков все есть?
1. функции из логики можно вызвать только если они находятся в файле xr_effects
2. вызывать функцию суицида через экшен неправильно (action кстати - а не - activate) - так как она должна срабатывать только когда отыграется анимка (если именно это вам надо).
3. для этого и нужен поршень suicide , который через строчку on_info = {+suicide} remark@suicide
послужит ключом для перехода непися в нужную схему, а в этой схеме уже прописано:
на конец действия - активация функции make_suicide
on_signal = action_end| %=make_suicide%
если делать вызов функции через экшен в диалоге - непись умрет без проигрыша анимки.
но как я уже писал квестовых неписей ( а также тех, кому задан сид) можно убить без диалога.
Для этого надо использовать функцию убийства по сиду.
Поршень в этом случае можно выдавать где угодно и через что угодно.
хоть через логику рестриктора, хоть через скрипт, хоть через диалог другого непися.
новиков сергей
в логике - в строчке snd пишется имя реплики из файла script_sound
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik
Да уж, спасибо за поправки.
Кстати, где находится секция волка в spawn_section? Просто я незнаю куда вписать кастом дату. Пробовал записать её в гулаг_эскейп в секцию волка, но толку 0.
#Futura :
Кстати, где находится секция волка в spawn_section? Просто я незнаю куда вписать кастом дату. Пробовал записать её в гулаг_эскейп в секцию волка, но толку 0.
Ерлик я через диалог через экшн. Может здесь по порядку кто нить объяснить как спавнить допустим уникального персонажа через диалог?
добавлено спустя 2 часа 1 минуту
Народ кто поможет. Короче у мя есть идея ну значит такая допустим добавить механиков в сталкер тч, значит так короче когда подходишь к механику у того ну как и у всех высвечивался худ диалогов ну и сами диалоги чтобы при нажатии на созданный мною диалог у механика отобразился новый худ с ремонтом и там с кнопками ремонта как это реализовать?
отредактировал(а) [H.O.Y]: 19-10-2009 02:34 GMT3 час.
не советую это делать, да и трудно слишком, лучше сначала через обычный диалог сделай
как ему думаю да а вопще нетак и много делать нужно
1 создаем своего дядю
2 пишем ему диалог
3 логику чтоб стоял на месте
4 качаем мод erlika бомбу там есть меню починки
вот впринцыпе и все
Вопрос:
мне нужно задать таблицу со списком переменных и затем через функцию ipairs проделать ее обход с по порядку индексов с присваиванием каждой переменной нового значения после проверки что значение переменной равно нулю. При этом присваиваться должно значение только одной переменной за один раз активации функции с немедленным выходом из цикла через break.
Проверить пока не успел, поэтому кто знает - в каком месте таблицы break прерывает цикл?
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik В каком смысле? break производит прерывание сразу, как только будет прочитано. Соответственно, устанавливать его нужно сразу после выполнения действия. В твоём случае, после первого изменения значения:
if name == 0 then
name = новое значение
break
end
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22
вот что я имел в виду
мне нужна функция для присваивания пойманных при спавне айди
вот накидал такую
local tab = {a,b,c,d,e}
function name()
for k,v in ipairs(tab) do
if v== 0 then
v= id
break
end
end
end
добавлено спустя 1 минуту
соответственно всем переменным изначально задано значение 0
добавлено спустя 10 минут
и нужно чтобы присваивание было поочередным - тем переменным чье значение на момент активации цикла еще равно нулю.
И и так при каждой активации функции - если значение первой переменной равно 0 - присваиваем новое значение - выходим из цикла. Заходим снова - ищем переменную (по порядку индексов) с нулевым значением - находим - даем новое значение - выходим.
Так оно будет работать как мне нужно?
отредактировал(а) erlik: 19-10-2009 10:21 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik А не проще в таблице сохранять просто id и ещё какой нибудь параметр. Например имя объекта. Типа:
local ids = {}
function name()
if not ids[id] then
ids[id] = alife():object(id):name()
end
end
Тогда и последующее удаление объекта из таблицы будет проще:
ids[id] = nil
добавлено спустя 7 минут
У меня такой вопрос. Может кто с этим сталкивался. Есть несколько способов определения левел вертексов. Существует также способ определения позиции по левел вертексу. Но! Если левел вертекс можно определить на любой локации (активной\не активной), то позицию по левел вертексу только на активной локе. Просмотрев хелповский файл, не нашёл ничего похожего на определение позиции по левел вертексу на не активных локациях. Я не знаю, может быть есть какойто обходной путь, например через графпоинты. Может кто знает, просьба отпишитесь, если не в лом.
--------------------------
Вопрос отпадает. Само нашлось:-)
отредактировал(а) singapur22: 19-10-2009 10:46 GMT3 час. Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik id объектов обычно используются как индексы. Впредь старайся именно так их и использовать. Кроме редких случаев, когда порядок в индексах важнее самих данных.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22
я понял. но вот я сейчас поразмыслил и пришел к выводу что в предложенной тобой схеме есть минус для меня(не считая очевидного плюса - любая длина таблицы)
Когда я начну перебирать все сохраненные айди для того чтобы подорвать объекты с этими айди -подрыв можно сделать только одновременный - то есть все найденные объекты сразу.
А в моем варианте есть возможность сделать паузы между подрывами: сначала подрываем один объект, затем второй, третий, и т.д. до последней переменной, так как есть индивидуальные переменные для каждого объекта\айди
Или я не прав?
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
[H.O.Y]
тебе же пояснили - надо учиться создавать скриптовое меню - в двух словах это не объяснить - я сам учился на примере меню спальника из симбиона.
Можешь посмотреть пример моих меню - я их три штуки сделал - для бомбы, для ремкоплекта(но это так - моя первая проба для теста), для смены группировки - если поймешь алгоритм - то сделать самому будет раз плюнуть.
1. Скрипт интерфейса меню - пишется стандартно - можно брать готовый и изменять его под свои нужды - пишешь свое имя класса, указываешь размер рабочей зоны меню по высоте и ширине, координаты его положения на экранe по векторам x, y (если - 0, 0 то будет в левом верхнем углу) указываешь свой файл с секцией xml , далее расписываешь кол-во кнопок, и вешаешь на них свой скрипты. Здесь вообще ниче сложного нет - я я въехал сразу же как только глянул пример.(кроме размера рабочей зоны - в это только опосля)
2. создание hml секции меню - там создаются кнопки, которым назначается текст кнопки, текстура, координаты положения кнопки в меню, размер рамки меню, текстура подкладки меню и прочая муть, с которой трудно возиться если нет достаточного опыта работы с текстурами в фотошопе (текстурщикам тут проще - они с координатами на раз-два разбираются)
3. Скрипт камрада singapur'а22 для отслеживания использования предмета - именно через него и запускается меню. (Вот без этого скрипта у меня бы ниче не вышло)
Смотри примеры и анализируй.
добавлено спустя 11 минут
Бери пример с Датчика Хабара
он вообще не спрашивал как сделать - просто скачал мое меню для группировок - посмотрел как сделано - и тут же сделал свое.
добавлено спустя 10 минут
да, в твоем случае - если ты хочешь сделать запуск меню через фразу в диалоге - то просто используй метод level.start_stop_menu(имя_файла.имя_класса(), true) --\\запускаем меню
пишешь простой скрипт с этим методом и через экшен в диалоге делаешь его вызов.
меню появится.
скрипт для отслеживания использования вещи тогда получается не нужен. Он необходим только для запуска меню через нажатие "использовать" на предмете - спальнике, ремкомплекте, пульте и т.д.
отредактировал(а) erlik: 19-10-2009 12:25 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.