singapur22
Можеш поделиться схемой по которой собачка ходит с актором? Выложить так сказать рабочий вариант? И еще, а как у тебя собачка прилепает к ГГ? Ну не через диалог это точно.:-)
singapur22
Что у меня не так с этой конструкцией - чекер все ругается и ругается :obstenu:
local time_delay = 0
local tbl_bomb = {}
local flag = false
function kamik()
local actor = db.actor
local apos = actor:position()
for k,v in pairs (tbl_bomb) do
local obj = level.object_by_id(tbl_bomb[k]) --\ или здесь надо local obj = level.object_by_id(v)
if actor == nil or obj == nil then
return
end
if obj:position():distance_to_sqr(apos) < 225 then
time_delay = time_global()
flag = true
end
if flag and time_global() - time_delay > 5000 then --\ делаем задержку на 5 сек
local h = hit()
h.direction = vector():set(0,0,0)
h.impulse = 15
h.draftsman = obj
h.power = 10
h.type = hit.fire_wound
obj:hit(h) -- \взрываем
table.remove(tbl_bomb, к) --\ удаляем ее айди из таблицы
flag = false
time_delay = time_global()
end
end
end
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Первое. Флаги и таймеры нужно устанавливать для каждого в отдельности. Тобишь, используй двумерную таблицу. Или создай дополнительную двумерную таблицу, в которой будут сохраняться флаги и таймеры под айдишными индексами объектов. Иначе произайдёт то, что приблизится один, а взорвётся первый по списку.
Второе. Выход из функции по условию не существования объекта приведёт только к тому, что скрипт всё время будет сбрасываться если первый по списку моб уйдёт в офф.
добавлено спустя 4 минут
karavan
Первое. Глупо выкладывать не доделанные работы.
Второе. Я же сказал, что это будет новая схема мобов, которая подключается в логике непися.
отредактировал(а) singapur22: 21-10-2009 12:51 GMT3 час. Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22
У меня как идет:
вот сделал я проверку сталкеров на уровне, выбрал пару случайных айди, заспавнил им ВВ, соответственно заполнил таблицу айди ВВ и очистил таблицу сталкеров от выбранных айди.
Теперь смертники ждут так сказать своего часа.
Кого из них подорвать ищу через айди заспавненных смертникам ВВ
то есть делаю проверку на дистанцию объекта от ГГ - и если объект (ВВ и соответственно носитель) ближе 15 метров от ГГ - то его хитую.
Думал что достаточно просто прогнать через pairs таблицу записанных айди ВВ и найти по ней ближайший к ГГ объект, чтобы тут же его и хитнуть.... оказывается нифига....ладно будем еще думать:-)
Выход из функции по условию не существования объекта приведёт только к тому, что скрипт всё время будет сбрасываться если первый по списку моб уйдёт в офф.
А как тогда правильно сделать чтобы функция не читалась если таблица ВВ пустая - то бишь все айди уже удалены(так как объекты взорваны), а по новой она еще не заполнялась?
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
karavan Нет. Схемы мутантов и сталкеров создаются отдельно, и совершенно разными способами.
erlik Если таблица пустая, то и тело оператора for читаться не будет. А чтобы предотвратить вылет, когда один из записанных объектов уходит в офф, нужно просто всю схему заключить в блок:
if obj then
схема
end
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22
понятно... правда насчет двумерной таблицы мозги пока не переварили как ето сделать в моем скрипте
:no)...если с тотализатором было еще понятно для чего она и как она будет работать, то здесь пока нет.
пойду выпью кофию - может пойму...
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22 а можеш паралельно сделать схему для сталкера, которая подключалась бы через логику? Прости конечно за наглость, в то же время попытаюсь обьяснить в чем дело. Дело в том что есть мысль сделать новый тип персонажа - это Кредитор. Человек в зоне который дает в займы за проценты. И все бы нечего только дело в том что в ситуации с нечесным заемщиком ему надо выдать наказание. Как наказание хотел сделать что бы на растоянии с ГГ спанились НПС убийцы, но проблема в том что ГГ может легко от них убежать и здесь кокраз нужна логика для ЭТИХ НПС, чтоб они гонялись за ГГ по всем локациям как в моде НАЕМНИКИ. Из мода наемники выдрать вызов такой логики у меня не получилось. Во первых активация НПС там происходит через диалог, а во вторых у меня слишком низкий уровень знаний на сегодня что бы селать самому такую схему для логики.
singapur22
Вот вот. erlikу тоже надо. Да и вообще эта логика дает неоганиченые возможности.:prankster:
Можно реализовать много идей.
Например вывести раненого сталкера из боя. Провести заблудивщегося и пр. Очень много квестов нового плана можно сделать. 8-(
Дорогие singapur22anderlik
Если вам не трудно скачайте этот скрипт
http://evil-zone-mods.ifolder.ru/14604991
Мне нужно от туда только пси Зоны, но моих навыков в скриптостроении очень мало для понимания Той лабуды что там написана!.
Очень прошу Помогите!
Заранее Благодарен!
отредактировал(а) Николай ФеНиКс: 21-10-2009 18:11 GMT3 час.
singapur22
Да вот именно что на потом....так как эвалюаторы для меня вообще темный лес...
списка эвалюаторов игры с их пояснениями нет, пробую пока ковырять все xr_xxxx.script со схемами AI - может че и пойму.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
маленький вопросец
на это раз по скрипту множественного подрыва бомб: у меня там флаг апдейта функции врубается при активации кнопки "установить таймер", вырубается в конце функции.
Но так как теперь мне надо чтобы скрипт циклично прошелся по всем заложенным бомбам, в конце флаг вырубать нельзя.
Как лучше сделать его отключение? Опять же - как проверить что таблица айди объектов пустая и тогда отключить?
вот это вроде как не годится
function check_boom()
if boom_obj == nil then
start_flag = false
end
end
когда бомба подорвется - ее уже как бы нет и мой апдейт получается тут же прервется...что не годится...надо чтобы таблица на пустоту проверялась.
P: щас понял что надо будет наверно доп. флаг еще делать, а то тогда апдейт будет автоматом врубаться при заполнении таблицы :-)
отредактировал(а) erlik: 21-10-2009 15:49 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
спасибо.
при таком варианте все должно синхронно быть?
function check_boom()
if #ids ~= 0 then
return
else
if start_flag then
start_flag = false
end
end
end
то есть в конце функции подрыва - после отыгрыша последнего партикла пишем
table.remove(ids, 1) и дальше все енды - и когда длина таблицы станет нулевой - флаг апдейта тут же вырубается и функция больше не читается.
function bada_boom()
local boom_obj = level.object_by_id(ids[1])
if not start_flag then
return
else
а дальше блоки со звуками и партиклами
да вот еще - у меня были проблемы переменной pos которой назначалось при взводе таймера = boom_obj:position() а в конце функции она обнулялась - и происходили нерегулярные вылеты по стеку, я перенес ее обнуление в функцию переспавна бомбы из рюкзака на землю. вот теперь думаю - там же это дело оставлять....или еще как то мудрить...
и почему все таки вылетало - получается что партиклы не успевали отыграться , когда позиция для них становилась вдруг нулевой? причем у тех кто тестил мою бомбу по разному было - у кого вообще вылетов не было, у кого сразу был вылет после взрыва...
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik Партиклы тут ни причём. С ними вообще не может быть никаких проблем. Я тут собирал атакующую аномалию. Испльзовал многие методы относящиеся к партиклам. Такие как, (старт в указанной позиции; смена позиции; проверка отыгрывания; остановка отыгрывания). При этом, одновременно производил действия над 50 партиклами. За всё время работы, не наблюдал никаких проблем. Вот уже пятый день занимаюсь другим, а с той аномалией никаких проблем не наблюдается. Разве что постоянно на неё натыкаюсь, после чего приходится от неё убегать чуть ли не через всю локацию, пока не потеряет меня из виду:-)
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
решил так сделать - перенести это дело почти в начало функции
iif not flag_boom then
if time_global() - time0 > 10000 then
if pos ~= 0 or pos == 0 then
pos = boom_obj:position()
добавлено спустя 2 минут
singapur22
а тогда из-за чего у меня (и у других) были вылеты, а когда я перенес обнуление - все прекратилось? ну пока никто о новых вылетах не писал после фикса....
добавлено спустя 1 минуту
правда я еще убрал отыгрыш двух последних партиклов , которые были в общем то лишними...
отредактировал(а) erlik: 21-10-2009 16:44 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik Не знаю. Я же скрипт твой не видел. Может из-за того, что обнуление производилось раньше чем прекращались какие либо действия с его использованием.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22
А ты посмотри :-) я ведь все твои скрипты смотрю...
если конечно время будет.
я сейчас посмотрел старый вариант
вот концовка
elseif flag6 then
if time_global() - time0 > 2000 then
particles_object("anomaly\\marevo"):play_at_pos(pos) --\ и еще один партикл
particles_object("industrial_particles\\exhaust_isparenie_white_down"):play_at_pos(pos) --\ и еще один партикл
flag6 = false
flag_boom = false
flag_snd = false
start_flag = false
pos = 0
end
end
end
end
может тут и из-за порядка выключения флагов и переменных все дело было?
я думал что потому что эти два последние партикла не успевали отыграться...
добавлено спустя 30 секунд
не тот вариант кинул вначале - сейчас тот
отредактировал(а) erlik: 21-10-2009 16:59 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.