• Страница 1 из 1
  • 1
Архив - только для чтения
Модератор форума: andycrowz  
Перемещение по вайпоинтам
Stormtrooper
Командир
Добрый день форумчане
Подскажите пожалуйста на маленьком примере (хотябы из 3 поинтов) как реализовать перемещение моба по поинтам через Switch() но БЕЗ таймеров (тоесть привязка переключения должна осуществляться не по таймеру а как-то иначе)
Только через
Switch()
Case0:
Case1:
Case2:
Если помог, ставь плюсик в репу :)

Сообщение # 1 написано 17.01.2014 в 13:57
_dm666
<3 Death Metal
GetMotionMaster()->MovePoint. Примеры в ядре. Свитч можно сделать по какой-либо переменной.
Сообщение # 2 написано 17.01.2014 в 15:44
Stormtrooper
Командир
Про GetMotionMaster()->MovePoint я в курсе
Меня как раз интересует реализация Свича - я умею по таймеру а вот по переменной не представляю и реализацию в ядре не могу найти (точнее нашёл но как-то мутно)
Если помог, ставь плюсик в репу :)

Сообщение # 3 написано 17.01.2014 в 15:51
_dm666
<3 Death Metal
WaypointReached посмотри реализацию этой функции в гугле. Используется в npc_escortAI. Может быть, тебе это чем-то поможет.
Сообщение # 4 написано 17.01.2014 в 19:05
_Support_
Сore Developer
Цитата std_Suicide ()
GetMotionMaster()->MovePoint. Примеры в ядре. Свитч можно сделать по какой-либо переменной.


не совсем верно ,

Код

GetMotionMaster()->MoveIdle();
GetMotionMaster()->MovePoint(0,me->GetPositionX(),me->GetPositionY(),me->GetPositionZ());

Цитата Stormtrooper ()
Меня как раз интересует реализация Свича - я умею по таймеру а вот по переменной не представляю и реализацию в ядре не могу найти (точнее нашёл но как-то мутно)


я тебя не понял -_-
upon the look
Сообщение # 5 написано 17.01.2014 в 19:46
_dm666
<3 Death Metal
Цитата _Support_ ()
не совсем верно

Ну да, не совсем верно. Сам же эту функцию и написал, только добавил еще 1, хотя суть осталась та же.
Возможности проверить код нет, проверишь сам.
Код
class trigger_move : public CreatureScript
{
public:
  trigger_move() : CreatureScript("trigger_move") {}

  CreatureAI* GetAI(Creature* creature) const { return new trigger_moveAI(creature); }

  struct trigger_moveAI : public ScriptedAI
  {
   trigger_moveAI(Creature* s) : ScriptedAI(s) {}

   uint32 currentWayPoint;

   void Reset()
   {
    currentWayPoint = 0;
   }

   void UpdateAI(uint32 diff)
   {
    switch(currentWayPoint)
    {
    case 0:
     me->GetMotionMaster()->MovePoint(1, me->GetPositionX(), me->GetPositionY() + 15.0f, me->GetPositionZ());
     currentWayPoint = 1;
     break;
    case 1:
     me->GetMotionMaster()->MovePoint(2, me->GetPositionX(), me->GetPositionY() + 35.0f, me->GetPositionZ());
     currentWayPoint = 2;
     break;
    default:
     break;
    }
   }
  };
};
Сообщение # 6 написано 17.01.2014 в 20:42
Stormtrooper
Командир
Прошу прощения за глупый вопрос но как система узнает когда с case 0 переключиться на case 1 ?
Если помог, ставь плюсик в репу :)

Сообщение # 7 написано 18.01.2014 в 15:08
_dm666
<3 Death Metal
Цитата std_Suicide ()
currentWayPoint = 1;
Сообщение # 8 написано 18.01.2014 в 16:28
Stormtrooper
Командир
а где ++currentWayPoint ?
Если помог, ставь плюсик в репу :)

Сообщение # 9 написано 18.01.2014 в 17:02
_dm666
<3 Death Metal
Ну инкрементируй переменную, я лишь привел пример. Я же не знаю, какие у тебя будут значения для этой переменной.
Если все по порядку, то используй инкремент. А если, например, 1, 2, 40, то выставляй значение.
Сообщение # 10 написано 18.01.2014 в 17:06
Stormtrooper
Командир
Спасибо попробую
Если помог, ставь плюсик в репу :)

Сообщение # 11 написано 19.01.2014 в 14:37
Zverugakrut
Скаут
Не хотел создовать новую тему так что тут напишу.
Если к примеру у меня есть 4 точки и моб должен двигаться по ним как это сделать без таймеров и кейсов.
Сообщение # 12 написано 20.01.2014 в 20:24
_dm666
<3 Death Metal
Zverugakrut, через базу?
Сообщение # 13 написано 20.01.2014 в 21:05
Zverugakrut
Скаут
Дело такое, сумонятся 3 одинаковых моба и они должны идти в разных направлениях.
Сообщение # 14 написано 20.01.2014 в 21:17
admiirall
Центурион
Zverugakrut, и чаво за праблэмэ? легко же все делается, включите логику)
Сообщение # 15 написано 21.01.2014 в 01:23
staford11
^s†af0rd f0rever^
Zverugakrut, если для сумонящихся мобов есть записи в таблице creature_movement(_template), то они сразу после спауна начнут движение по этим точкам.
Победоносная @ Галакронд
Мои сборки под 3.3.5а 12340

Исправительные работы: в наличии.
Сообщение # 16 отредактировано staford11 - Вторник, 21.01.2014, 17:05
  • Страница 1 из 1
  • 1
Поиск: