• Страница 1 из 1
  • 1
Архив - только для чтения
Модератор форума: andycrowz  
[SmartAI] Спавн объекта при приближении
No_MaTTeR
Старший Маршал
Нид запилить такую фигню, как спавн объекта при приближении к триггеру на определенное расстояние. Использовал опцию 9, но ничерта не работает. Триггеру решил проситавить фракцию 35 (дружелюбен для всех), тоже ничего не помогает.

Код
REPLACE INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES (222221, 0, 1, 0, 9, 0, 100, 1, 500, 1000, 0, 0, 50, ИД_ОБЪЕКТА, 99999999, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Размещение объекта ИД_ОБЪЕКТА, если игрок на расстоянии 500-1000');
Сообщение # 1 написано 12.02.2015 в 01:27
infinium
Маршал
Спавн по таймингам у меня был вот такой:
Код
REPLACE INTO `smart_scripts` VALUES (100009, 0, 8, 0, 0, 0, 100, 1, 18750, 18750, 0, 0, 50, 200004, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Spawn GOb");

т.е. вторая часть у нас с тобой одинаковая и работает 100%.
Помнится в прошлом году писал с нуля квесты ивента хмельного фестиваля, там что то с зазывалами, где нужно было при приближении к тригерам сделать засчитывание условия, так вот через смарт вроде так и не вышло, не могу точно вспомнить как писал, на ноуте этих данных нет, мб дома на компе, гляну позже.
Тут еще такой момент, что взятая тобой дистанция "500, 1000" не имеет смысла, т.е. тригер сработает с расстояния видимости игрока, это бородатая трабла, у нас все скриптованные мобы и прочие активируют свою скриптовку только когда их видит игрок. Врятли что-то изменилось, но как минимум год-полтора назад было так.
Сообщение # 2 отредактировано infinium - Четверг, 12.02.2015, 11:57
No_MaTTeR
Старший Маршал
infinium, ты в предыдущем гайде тоже кидал там скрипт по поводу текста. Я видел, но по времени (хз, что это за тайминги, я просто брал по времени вне боя), то у меня тоже спавнится объект, все норм работет.

Цитата infinium ()
Тут еще такой момент, что взятая тобой дистанция "500, 1000" не имеет смысла, т.е. тригер сработает с расстояния видимости игрока, это бородатая трабла, у нас все скриптованные мобы и прочие активируют свою скриптовку только когда их видит игрок. Врятли что-то изменилось, но как минимум год-полтора назад было так.

Т.е., если я выставлю 10, то он все равно заспавнит объект как только я его увижу, а не подойду почти впритык?

Мне этот вариант не совсем принципиален. Хотел еще попробовать запилить так, чтобы после сказанного текста триггеры спавнили объект (триггеры никак не связаны с тем, кто говорит текст, но, вроде, в скрипте с нужной мне функцией (TEXT_OVER) указывается и груп ид, и айди того, кто говорит текст), но тоже ничего не получилось. Расстояние между триггером и тем, кто говорит текст не такое уже и большое, они находятся в поле видимости друг друга.
Сообщение # 3 написано 12.02.2015 в 12:24
infinium
Маршал
Цитата No_MaTTeR ()
Т.е., если я выставлю 10, то он все равно заспавнит объект как только я его увижу, а не подойду почти впритык?

Не, немного не так, допустим радиус видимости от тригера до игрока 70 ярдов, у тригера задача скастовать спел на себя если в радиусе от 10 до 50 ярдов есть игрок, то тригер скастует спел если игрок попадёт в заданный диапазон.
Пример второй: у тригера задача скастовать спел на себя если в радиусе от 10 до 500 ярдов есть игрок, по нормальному должно быть так, что если игрок топает откуда то из далека и пересекает линию радиуса 500 ярдов до тригера, то тригер должен скастовать спел на себя, но этого не произойдёт, т.к. у нас радиус видимости всех нпс/го и тд равен 70 ярдов, и поэтому наш тригер ничего не будет делать несмотря на то, что в условии стоит maxDIST 500, а выполнит условие только когда игрок пересечёт линию видимости от тригера до игрока.
Расстояние видимости в 70 ярдов я взял случайно, мб чуть больше должно, но смысл один и тот же.
Пример тому, я брал какого то нпс в элвине, у того в вайпоинтах было движение от шторма до какой то деревушке ниже, так вот, если игроку двигаться за этим нпс в поле видимости, то нпс пройдёт весь свой заданный путь, а если нам(игроку) сразу прийти в конечную точку пути этого нпс и ждать его пока он якобы должен дойти, мы его не дождёмся, потому что он будет стоять на месте.
Цитата No_MaTTeR ()
Хотел еще попробовать запилить так, чтобы после сказанного текста триггеры спавнили объект (триггеры никак не связаны с тем, кто говорит текст, но, вроде, в скрипте с нужной мне функцией (TEXT_OVER) указывается и груп ид, и айди того, кто говорит текст), но тоже ничего не получилось.

Не доводилось попробовать SMART_EVENT_TEXT_OVER, так что даже не знаю как она работает.
А вариант, что тот кто говорит текст и будет спавнить объект не подходит?
upd: посмотрел сейчас в базу мира, там есть где используется 52 тип, я обычно так и делал, смотрел примеры уже использующиеся в базе.
Сообщение # 4 отредактировано infinium - Четверг, 12.02.2015, 13:57
No_MaTTeR
Старший Маршал
Цитата infinium ()
Пример второй: у тригера задача скастовать спел на себя если в радиусе от 10 до 500 ярдов есть игрок, по нормальному должно быть так, что если игрок топает откуда то из далека и пересекает линию радиуса 500 ярдов до тригера, то тригер должен скастовать спел на себя, но этого не произойдёт, т.к. у нас радиус видимости всех нпс/го и тд равен 70 ярдов, и поэтому наш тригер ничего не будет делать несмотря на то, что в условии стоит maxDIST 500, а выполнит условие только когда игрок пересечёт линию видимости от тригера до игрока.
Расстояние видимости в 70 ярдов я взял случайно, мб чуть больше должно, но смысл один и тот же.
Пример тому, я брал какого то нпс в элвине, у того в вайпоинтах было движение от шторма до какой то деревушке ниже, так вот, если игроку двигаться за этим нпс в поле видимости, то нпс пройдёт весь свой заданный путь, а если нам(игроку) сразу прийти в конечную точку пути этого нпс и ждать его пока он якобы должен дойти, мы его не дождёмся, потому что он будет стоять на месте.

в принципе, я это знал. Делал когда-то автоивент с вэйпоинтами. Получалась страшная билиберда из-за этой хрени. Вот интересно, это проблема сборок или на офе такая же ересь?

Цитата infinium ()
А вариант, что тот кто говорит текст и будет спавнить объект не подходит?

не, он исполняет другую ф-цию, а триггеры находятся в других местах.

Цитата infinium ()
upd: посмотрел сейчас в базу мира, там есть где используется 52 тип, я обычно так и делал, смотрел примеры уже использующиеся в базе.

да, я что-то протупил вчера с рысканьем в базе, а на работе уже не посмотреть. Ладно, вечерком загляну, может получится чего
Сообщение # 5 написано 12.02.2015 в 14:44
No_MaTTeR
Старший Маршал
Хм, чет опять просматривал вики и наткнулся в таргете на такие строчки:
SMART_TARGET_CREATURE_RANGE (9)
SMART_TARGET_CREATURE_DISTANCE (11)
SMART_TARGET_CLOSEST_CREATURE (19)

Но это только для целей. Может быть есть какой-то вариант сделать подобное в event_type? Мне CREATURE тоже подходит. Игрок, скорее всего, будет в мобе, либо тот госсип, который будет говорить текст, будет подходить к определенной точке и уже там взаимодействовать с триггерами по подобному принципу.

Я понимаю, что нужно смотреть сразу примеры в базе, но возможности сейчас нету, а решение хочется найти уже, чтобы изменять задумку под имеющиеся средства. Поэтому, раз уже рассматриваем различные варианты, то есть еще вариант. Есть такой евент тайп как SMART_EVENT_ACCEPTED_QUEST (19), как он действует? Я имею ввиду, квест должен обязательно выдать тот НПЦ, который исполняет скрипт или же можно, чтобы любой другой рядом стоящий?
Сообщение # 6 написано 12.02.2015 в 14:55
infinium
Маршал
И так добрался домой, сделав пару попыток активации чего либо при SMART_EVENT_RANGE, кричер на отрез отказывается что либо делать, спросил у гугла, гугл сказал что:
Не так как хотелось бы работает данный евент тайп
Судя коммиту его(SMART_EVENT_RANGE) допилили, но я так и не нашел ничего, чтобы срабатывала при инициализации игрока в радиусе.
Впрочем этим вопросом задались уже давно, вот тут
Цитата No_MaTTeR ()
Но это только для целей. Может быть есть какой-то вариант сделать подобное в event_type? Мне CREATURE тоже подходит. Игрок, скорее всего, будет в мобе

Можно попробовать SMART_EVENT_DISTANCE_CREATURE, но у меня сейчас почему то не вышло ничего.
В общем как то всё печально.
Сообщение # 7 написано 12.02.2015 в 22:10
No_MaTTeR
Старший Маршал
Цитата infinium ()
Можно попробовать SMART_EVENT_DISTANCE_CREATURE, но у меня сейчас почему то не вышло ничего.
В общем как то всё печально.

а где ты нашел такой тайп?
Сообщение # 8 написано 12.02.2015 в 22:13
No_MaTTeR
Старший Маршал
Блин, а к ядрышку я на данный момент не подберусь=/
Сообщение # 10 написано 12.02.2015 в 22:22
No_MaTTeR
Старший Маршал
На данный момент решил свою проблемку. У меня есть боевая машина там и я узнал о таргет тайпе 8 SMART_TARGET_POSITION, теперь при посадке в машину он, в нужном мне месте, спавнит объект. А жизнь-то налаживается! smile
Сообщение # 11 написано 12.02.2015 в 22:28
infinium
Маршал
И мы счастливы! hands
Сообщение # 12 написано 12.02.2015 в 22:36
Thermaplugg
Database Developer
можно еще и этим SMART_EVENT_OOC_LOS запустить ивент

Код
DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=12345;
INSERT INTO `smart_scripts` VALUES     
(12345, 0, 0, 0, 10, 0, 100, 0, 1, 100, 5000, 5000, 50, ИД_ОБЪЕКТА, 300, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Размещение объекта ИД_ОБЪЕКТА, если игрок на расстоянии 500-1000');


ну это если нужно чтоб по приближению к триггеру что либо сработало smile

Код
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=12345;
INSERT INTO `conditions` VALUES
(22, 1, 12345, 0, 0, 32, 0, 16, 0, 0, 0, 0, '', NULL);


а это для того что бы срабатывало только от игрока

вообщем как то так smile

з.ы

еще нужно будет добавить если надо кондицию(что бы не спамил скрипт) на уже присутствие уже засумониного объекта
Сообщение # 13 отредактировано MENZ411 - Пятница, 13.02.2015, 00:23
  • Страница 1 из 1
  • 1
Поиск: