Тут Николай Феникс писал несколько станиц назад функцию для начисления очков за попадания. Функция мне понятна но я не могу понять вот эти строчки:
if who and amount > 0.01 and bone_index > 0 then
if who:id() == db.actor:id() then --/ для актора
Можете объяснить зачем это нужно?
Я заспавнил метку такой **5001c54314580bda8be6**xt)
ObjId=obj.id
end
[/code]
И совершенно не получается ее потом убрать.Пробовал несколько способов:
[code]
--Пробовал так:
function delete_spot(ObId)
level.map_remove_object_spot(ObId,"blue_location")
end
И так:
function delete_spot(ObId)
if level.map_has_object_spot(ObId,"blue_location") then
level.map_remove_object_spot(ObId,"blue_location")
end
end
--Есть такая функция, но тоже не удаляет:
function remove_tema_likvidator_metka()
for a=1,65534 do
local obj = alife():object(a)
if obj then
if obj and obj:name() == "pda_merc_killer_glav" then
level.map_remove_object_spot(obj.id,"crlc_big")
break
end
end
end
end
[/code]
Функции не вылетают, а тупо не срабатывают.:obstenu:...Уже почти месяц пробую удалить - без результатов...
Подскажите, пожалста, функцию, которая удалила бы метку, заспавненую этой функцией?:
[code]local ObjId=0
function pda_killer_spawn()
local obj= alife():create("pda_merc_killer_glav",vector():set(-223.700,-7.678,-129.688),17000,281)
local text = "Типа текст"
level.map_add_object_spot_ser(obj.id, "blue_location", text)
ObjId=obj.id
end[/code]
Потому что нужно наконец заняться изучением основ написания скриптов, а не пытаться делать то что работать не будет.
Тебе же вчера популярно объяснили что метка, во первых вешается на айди объекта, а во вторых дабы имелась возможность впоследствии удалить данную метку, необходимо позаботиться о том, чтобы айди объекта записанное в определенную переменную еще было и СОХРАНЕНО (изучай функции и методы сталкера - давно уже составлен подробный фак(справочник) по ним - и на вики и сайте АМК) - так как после перезагрузки все несохраненные значения переменных (динамически полученные в игре) теряются и переменным при старте игры присваиваются их первоначальные значения (если они имелись)
Вот ты передаешь в функцию некую переменную ObjId - а чему равно значение данной переменной?
если эта функция пользуется той версией переменной ObjId в которой ей по дефолту присвоено значение 0, то тогда ясно почему у тебя не вылетает от твоих попыток - 0 все таки не nil.
Однако да будет наконец всем известно что 0 это айди Меченого (а значение 0 в скриптах обычно присваивается числовым переменным при их инициации просто для удобства).
И раз на Меченом нет данной метки, но и удалять нечего. А если бы была - то удалилась бы именно метка на ГГ.
Удалить свою метку заспавненную функцией pda_killer_spawn() по записанному айди ты больше не сможешь - так как значение айди твоего NPC давно потеряно. Остается перебор всех айди.
Теперь по функции перебора всех айди - ты не заметил что метку ты заспавнил одного типа "blue_location", а пытаешься удалить "crlc_big" ?
а во вторых в методе удаления метки достаточно сделать так
level.map_remove_object_spot(a, правильный тип метки )
переменная a в данной функции и равняется всем айди игры поочередно - то есть в процессе перебора айди циклом ей последовательно присваиваются айди(числовые идентификаторы) объектов игры.
И убери дублирующую строчку if obj then - и end в конце.
--------------------------------------------------------------------------------------------------------------------------
PS : а твоего NPC действительно в allspawn зовут "pda_merc_killer_glav" ? Ведь ты же его спавнил скриптом. Тогда откуда имя?
А все понял - ты не тот метод используешь для проверки NPC . :-)
"pda_merc_killer_glav" это имя из профиля я так понимаю?
отредактировал(а) erlik: 22-06-2010 10:40 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
скрипты можно писать в любом файле папки D:\Games\S.T.A.L.K.E.R. - Shadow of Chernobyl\gamedata\scripts... ?
или разница есть. если есть, то как создать свой собственный скриптовый файл для простоты проверки?
И дополню erlik'а, метка НЕ спавнится, а устанавливается на объект, используя его ID.
Stalk15 , не нужно быть косноязычным! То как ты выражаешь свои мысли/вопросы - говорит о том, что и как ты думаешь. Судя по твоим постам, у тебя от долбления головой об стенку (:obstenu:) давно уже каша в голове. И не ужели ты не поймешь сам что от того что ты будешь долбить стенку головой - и мозгов не прибавится и толку будет ноль.
За то время, которое ты уже уделяешь ковырянию со скриптами давно бы потратил немного времи на 'азбуку', чтобы уметь 'читать/писать'. Ты же - пытаешься только тупо применить знакомые начертания знакомых буковок, каждый раз делая ошибки.
musnuk
Странный вопрос. Собственно взглянуть в любой мод, в котором есть скрипты от модмейкеров отличные от разрабовских, и увидеть подтверждение своему предположению - сложно?
Только в имени своего файла используй 'разрешенные' символы и не обзывай уже имеющимся в игре или зарезервированным для иных нужд именем.
Stalk15
Ну тогда перечитай все, что написал erlik и, изменив в твоей функции " remove_tema_likvidator_metka" две строки:
if obj and obj:name() == "pda_merc_killer_glav" then
level.map_remove_object_spot(obj.id,"crlc_big")
на:
if obj and obj:section_name() == "pda_merc_killer_glav" then
level.map_remove_object_spot(obj.id,"blue_location")
может и получишь желаемое.
Если еще и поймешь суть исправлений и свои ошибки - сможешь не наступать на эти грабли в XX-дцатый раз!
Если же ответишь себе (и нам) на вопрос:
"А почему бы не применить вместо 'obj:section_name()' - попроще: 'obj:section()'?"
, то ... твои мозги начинают хоть о чем то думать/вспоминать и есть надежда, что твои (и наши) потуги не напрасны. :-)
Artos, erlik
Спасибо, метка удалилась...И спасибо за пояснение работы функции, хоть немного начал понимать принцип работы функций:-)
--------------------------------------------------------------------------------------
Artos
Да, есть:ye)
--------------------
Эээ....Я не совсем понял вопроса...Мне на свой вопрос ответить?..Или принцип работы функции сказать?
-------------------------------------------------------------------------------------
Ну яж не так уж сильно поннимаю...Но попробую ответтить=)...
...Ну-у....Если написать obj:section_name(), то движок поймет, что это имя секции обьекта...А obj:section() - это просто распознается, как 'секция обькта',...эээ...А правильно будет 'имя секции обьекта'..Ну, как-то так...
отредактировал(а) Stalk15: 22-06-2010 11:54 GMT3 час. Новые фишки для сталкера(см. журнал)
Stalk15
Ну так ответ на заданный выше вопрос у тебя есть?
Тогда мы поймем - начал ты 'читать и понимать' или просто продолжаешь 'долбить стенку'. :-)
P.S. Ну и ...? Озвучь, плз, для нас "сирых"! "А почему бы не применить вместо 'obj:section_name()' - попроще: 'obj:section()'?"
(имеется ввиду: в твоей подправленной функции 'remove_tema_likvidator_metka') P.P.S. Мда-а-а, сколь же еще тебе 'в стенку биться' ... :-(
"Движок ... распознает ..." - бред! Это ты его (движок) сам спрашиваешь (даешь запрос)! И ... как и в топике, мямлишь то, чего ни ты не понимаешь ни движок.
obj:section_name() - метод применим для получения имени секции в случае серверного объекта (server_object), т.е. obj - серверный объект! Именно он у тебя получен в твоей функции через: local obj = alife():object(a)'
obj:section() - все тоже самое, но метод применим к клиентским объектам (game_object), которые могут быть получены типа: local obj = level.object_by_id(a)'
Неправильное применение метода относительно объекта -> фатальные ошибки!
Т.к. ты спавнил свой КПК секцией и спавнил скриптом, то имя объекта ( obj:name() ) НЕ будет эквивалентно твоей секции, т.к. в имени к ней добавляется ID. Именно в этом была твоя первоначальная ошибка.
Печально, что ты продолжаешь ковыряться вслепую. :-( Могу только сказать, что твои вопросы у меня все меньше вызывают желания отвечать ...
Николай ФеНиКс
Диалог должен быть разрешен в схеме "xr_meet.script", а для этого нередко в логике требуется НЕ запрещать диалоги в соответствующих ситуациях.
Если у НПС нет иных раздражителей/занятостей - то диалог дефолтно разрешен.
Для 'появления окна' - нажми 'F', ежели 'забыл' чО нужно делать. ;-)
Stalk15
попробуй вот так спавнить и удаля**5001c54314580bda8be6** type)
-- del_variable("x_marker_type_"..obj_id)
-- del_variable("x_marker_text_"..obj_id)
end
end[/code]
Artos
возможно ты не понял=)
или я криво написал....
Я хочу чтобы НПС подходил к ГГ и появлялось окно с диалогом! т.е. его нельзя закрыть и выйти нельзя пока не сработает функция закрытия. брейк диалог...
добавлено спустя 1 минуту
как сделать вызов этого только один раз:
[code]if db.actor:object("digger_pda") then
db.actor:give_info_portion("find_instr")
news_manager.send_tip(db.actor, "digger_tip", 10, "stalker", 10000)
local snd_obj = xr_sound.get_safe_sound_object([[characters_voice\scenario\military\digger_msg]])
snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
end[/code]
отредактировал(а) Николай ФеНиКс: 22-06-2010 13:38 GMT3 час.
создал файл в папке D:\Games\S.T.A.L.K.E.R. - Shadow of Chernobyl\gamedata\config\text\rus\ stable_dialogs_alternative
в нем написал
10
где 10- текст формата чем вы тут занимаетесь?
айди написан правильно, ошибок не было, но в игре волк все равно говорил айдишками.
после переноса текста в файл stable_dialogs_escape(этой же папки) он заговорил нормально.
внимание, вопрос: как создать файл stable_dialogs_x, чтобы он использовался игрой?
Как поставить метку по Sid'у обьекта? через скрипт))
Просто хочится разобраться в этом, но нихрена не получается.
:roulette
Вот что делал.
function main ()
local ObjId = 0
local SId = alife():story_object()
if SId then
local text= "текст"
ObjId=SId
level.map_add_object_spot_ser(SId, "blue_location", text)
end
end
erlik спасибо. теперь ясно.
отредактировал(а) XrKamp: 22-06-2010 17:21 GMT3 час. Внимание! В подписи запрещены ссылки на любые внешние ресурсы! не смотри журнал
Продолжаю информировать о том, что можно наковырять в сталкере без особого труда - (если знать где ковырять :-) )
все "красивые" кнопки работают. правда у трех не хватает текстур на нажатие.
------------------------------------------------------------------------------------------------------ XrKamp
прочитай все посты (и на пред. страницах )выше адресованные Stalk15 -там подробно эта тема освещена.
---------------------------------------------------------------------------------------
например так:
function set_spot ()
local id = id_by_sid(SId)
if id then
level.map_add_object_spot_ser(id, "blue_location", "твой текст")
end
end
вместо Sid - нужный номер сида объекта.
------------------------------------------------------------------------------------------------------------ АнархОПанк
пока ничего особенного - просто развлекаюсь тестированием неизвестных\малоизвестных интерфейсов которыми завалена геймдата.
отредактировал(а) erlik: 22-06-2010 17:10 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Artos
не поверишь, у всех поменял иммуны, вот дошел до зомбированных.
Подскажи мне ламеру и нубу такой момент: в m_stalker_zombied есть строка immunities_sect = stalker_zombied_immunities, перехожу в эту секцию: [stalker_zombied_immunities]:stalker_immunities здесь тру :stalker_immunities, теперь иммуны, я так понимаю не наследуются, но их изменение не меняет положения, где я ошибаюсь?
И по поводу прописать свои жизни у зомбированных: надо прописать Health и MaxHealthValue в секции [stalker_zombied]:stalker ? пробовал вот так - не действует:
[stalker_zombied]:stalker
$spawn = "stalkers\stalker_zombied" ; option for Level Editor
attachable_items = device_torch,attachable_item
Health = 750
MaxHealthValue = 200
эти ведь параметры преоритетнее тех что в секции [stalker] ? в этом месте где я туплю?
значит есть вопрос по восстановлению... как восстановить вырезаную функцию пда ,,,
видел эту фишку в 1935 билде... охота попытаться "восстановить", вернее воссоздать.
musnuk
Всё, что связанно с ПДА - в движке. Можно разве что отлавливать открытие\закрытие различных разделов, для этого есть нужные поршни в info_portions.xml.
как заставить НПС реагировать положительно или отрицательно на звук исходящий от ГГ(от определенного предмета точнее) (под положительно или отрицательно я имею ввиду: положительно= нпс "засыпает" вас похвалами, отрицательно: нпс чисто посылает вас! (всё это рандомно)
как заставить НПС реагировать положительно или отрицательно на звук исходящий от ГГ(от определенного предмета точнее) (под положительно или отрицательно я имею ввиду: положительно= нпс "засыпает" вас похвалами, отрицательно: нпс чисто посылает вас! (всё это рандомно)
Ну надо сделать функцию которая при каком-то действии рандомно выбирает инфопоршень1 или инфопоршень2. Ну а дальше привязать к поршням поведение.
Мой вопрос:
Я хочу узнать позицию НПС, к примеру волка. Для этого нужно в скрипте начала указать на волка, а потом узнать его позицию. Тоесть это должно выглядеть так:
указываем на волка
local pos=npc:position()
Подскажите какими образами можно указать на НПС (к примеру на Волка)? Заранее извините за нубовский вопрос
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.