ArcEmu: Waypoints Vio C++ - ArcEmu

Jump to content

Toggle shoutbox Lastest Announcements

dfighter  : (07 December 2014 - 12:06 PM) Arcemu is in hibernation mode, please read http://arcemu.org/fo...showtopic=26903
dfighter  : (01 January 2013 - 05:56 PM) Arcemu wishes you all a happy new year!
Hasbro  : (12 September 2012 - 10:01 AM) Please excuse our outage from the web! Our web host had a major malfunction!
dfighter  : (01 September 2012 - 04:05 PM) Since the spam bots just don't want to stop, I've enabled admin verification when registering.
dfighter  : (23 January 2012 - 09:56 PM) Please note that from now on you will need to confirm your email on the wiki in order to edit it!
Hasbro  : (31 December 2011 - 12:50 PM) Happy New Years all!
Navid  : (26 December 2011 - 04:09 AM) Merry Christmas !!!!!! Happy holidays all :)
WAmadeus  : (24 December 2011 - 03:54 PM) Merry Christmas to all!
dfighter  : (24 December 2011 - 11:05 AM) The Arcemu team wishes y'all a Merry Christmukkah!
Hasbro  : (05 October 2011 - 12:53 PM) Looking for web designers for upcoming web related project. If you're interested in designing user interfaces contact me
dfighter  : (02 September 2011 - 03:47 PM) So who here wants vehicles in Arcemu? :P http://arcemu.org/fo...showtopic=25440
Hasbro  : (14 August 2011 - 03:25 PM) Join us on irc, grab an irc client and connect to irc.freenode.net join channel #arcemu /server irc.freenode.net:6667 /join #arcemu
jackpoz  : (03 August 2011 - 05:33 AM) to all Lua Engine (old one) users: please check http://arcemu.org/fo...showtopic=25274
Hasbro  : (20 May 2011 - 05:27 PM) Looking for people experienced with CMake configuration and setup! Contact me asap
Hasbro  : (15 May 2011 - 05:03 PM) ArcEmu is recruiting C++ programmers, contact Hasbro if interested.
paroxysm  : (03 May 2011 - 06:26 PM) Updated luabridge gossip example to describe the whole gossip creation process rather than just how to create menu. Gossip tutorial
paroxysm  : (23 April 2011 - 11:35 AM) Lua writers can refer to the Luabridge Tutorials section in the Wiki to learn how to write gossip code correctly.
Hasbro  : (20 April 2011 - 05:22 PM) Thank you for your continuous contribution of bug reports, we are working on them.
Hasbro  : (17 April 2011 - 03:20 AM) Please consider donating to support our bills. Donations can be sent using PayPal to donations@arcemu.org - Thank you for your support.
paroxysm  : (10 April 2011 - 12:43 AM) Refer to the Luabridge Tutorials section in the Wiki to learn the new syntax of luabridge.
Resize Shouts Area

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Waypoints Vio C++

#1 User is offline   Tulba 

  • Member
  • Pip
  • Group: Members
  • Posts: 29
  • Joined: 21-November 11
  • Gender:Male
  • Location:Switzerland
  • Server OS:Windows

Posted 31 August 2014 - 07:17 AM

Hi @ all

I try to add waypoints via MoonScriptCreatureAI, but nothing happens.

I test some similar script (Black Temple) but no creature would walk, maybe it is a general problem?

I'am grateful for a code suggestion, or a link to a working waypoint script in ArcEmu branch (Perhaps there is one script which works in it).

#define SINCLARI_SAY_1 "Prison guards, we are oleaving! These adventurers are taking over! Go go go!"
#define SINCLARY_SAY_2 "I'm locking the door. Good luck, and thank you for doing this."

#define SINCLARI_MAX_WP 4

static LocationExtra SinclariWP[] = // Sinclari WPS
{
	{ },                                                      // 0
	{ 1829.10f, 798.63f, 44.36345f, 3.97056f, Flag_Walk },    // 1 walkt to crystal activation
	{ 1828.521f, 803.797f, 44.3641f, 0.00f, Flag_Walk },      // 2 sayevent
	{ 1818.361328f, 803.875f, 44.36453f, 3.134f, Flag_Walk }, // 3 walk outside
	{ 1820.027f, 803.97162f, 44.3635f, 0.00f, Flag_Walk }     // 4 walk behind door and locking it
};

///////////////////////////////////////////////////////
//Lieutnant Sinclari StartEvent
class SinclariAI : public MoonScriptCreatureAI
{
public:
	MOONSCRIPT_FACTORY_FUNCTION(SinclariAI, MoonScriptCreatureAI);
	SinclariAI(Creature* pCreature) : MoonScriptCreatureAI(pCreature)
	{
		SetMoveType(Move_DontMoveWP);
		for (int i = 1; i < 4; ++i)
		{
			AddWaypoint(CreateWaypoint(i, 0, SinclariWP[i].addition, SinclariWP[i]));
		}

		phase = 0;
	}

	void OnReachWP(uint32 iWaypointId, bool bForwards)
	{
		switch (iWaypointId)
		{
			case 0:
			{
				phase++;
				sEventMgr.AddEvent(_unit, &Creature::CallScriptUpdate, EVENT_SCRIPT_UPDATE_EVENT, 1000, 1, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT);
				LOG_DEBUG("SINCLARI OnReachWP:  Case 0!");
			}
			break;
			case 1:
			{
				SetMoveType(Move_WantedWP);
				SetWaypointToMove(2);
				LOG_DEBUG("SINCLARI OnReachWP:  Case 1!");
			}
			break;
			case 2:
			{
				phase++;
				LOG_DEBUG("SINCLARI OnReachWP:  Case 2!");
			}
			break;
			case 3:
			{
				_unit->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, SINCLARI_SAY_1);
				LOG_DEBUG("SINCLARI OnReachWP:  Case 3!");
			}
			break;
			case 4:
			{
				LOG_DEBUG("SINCLARI OnReachWP:  Case 4!");
			}
			break;
			case 5:
			{
				_unit->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, SINCLARY_SAY_2);

				LOG_DEBUG("SINCLARI OnReachWP:  Case 5!");
			}
			break;
		}
	}

	void AIUpdate()
	{
		switch (phase)
		{
			case 0:
			{
				LOG_DEBUG("SINCLARI AIUpdate:  Case 0!");
			}
			break;
			case 1:
			{
				SetWaypointToMove(1);
				LOG_DEBUG("SINCLARI AIUpdate:  Case 1!");
			}
			break;
			case 2:
			{
				//After closing the door, instance is in progress
				TheVioletHoldScript* pInstance = (TheVioletHoldScript*)_unit->GetMapMgr()->GetScript();
				pInstance->SetInstanceData(Data_EncounterState, MAP_VIOLET_HOLD, State_InProgress);
				LOG_DEBUG("SINCLARI AIUpdate:  Case 2!");
			}
			break;
		}
	}

	protected:
		uint32 phase;
};

enum SinclariGossipTexts
{
	SINCLARI_ON_HELLO = 13853,
	SINCLARI_ON_FINISH = 13854,
	SINCLARI_OUTSIDE = 14271
};

#define SINCLARI_MENU_1 "Activate the crystals when we get in trouble, right"
#define SINCLARI_MENU_2 "Get your people to safety, we'll keep the Blue Dragonflight's forces at bay."
#define SINCLARI_MENU_3 "I'm not fighting, so send me in now!"

///////////////////////////////////////////////////////
//Lieutnant Sinclari Gossip and init events
//Sinclari Gossip
class SinclariGossip : public GossipScript
{
public:
	void GossipHello(Object* pObject, Player* pPlayer)
	{
		TheVioletHoldScript* pInstance = (TheVioletHoldScript*)pPlayer->GetMapMgr()->GetScript();
		if (!pInstance)
			return;

		GossipMenu* menu;

		//Page 1: Textid and first menu item
		if (pInstance->GetInstanceData(Data_EncounterState, MAP_VIOLET_HOLD) == State_NotStarted);
		{
			objmgr.CreateGossipMenuForPlayer(&menu, pObject->GetGUID(), SINCLARI_ON_HELLO, pPlayer);
			menu->AddItem(Arcemu::Gossip::ICON_CHAT, SINCLARI_MENU_1, 1);

			menu->SendTo(pPlayer);
		}

		//If VioletHold is started, Sinclari has this item for people who aould join.
		if (pInstance->GetInstanceData(Data_EncounterState, MAP_VIOLET_HOLD) == State_InProgress)
		{
			objmgr.CreateGossipMenuForPlayer(&menu, pObject->GetGUID(), SINCLARI_OUTSIDE, pPlayer);
			menu->AddItem(Arcemu::Gossip::ICON_CHAT, SINCLARI_MENU_3, 3);

			menu->SendTo(pPlayer);
		}
	};

	void GossipSelectOption(Object* pObject, Player*  pPlayer, uint32 Id, uint32 IntId, const char* Code)
	{

		TheVioletHoldScript* pInstance = (TheVioletHoldScript*)pPlayer->GetMapMgr()->GetScript();

		if (!pInstance)
			return;

		switch (IntId)
		{
			case 0:
				GossipHello(pObject, pPlayer);
				break;

			case 1:
			{
				  GossipMenu* menu;
				  objmgr.CreateGossipMenuForPlayer(&menu, pObject->GetGUID(), SINCLARI_ON_FINISH, pPlayer);
				  menu->AddItem(Arcemu::Gossip::ICON_CHAT, SINCLARI_MENU_2, 2);
				  menu->SendTo(pPlayer);

				  // New Encounter State included
				  pInstance->SetInstanceData(Data_EncounterState, MAP_VIOLET_HOLD, State_PreProgress);

			}break;

			case 2:
			{
				  TO_CREATURE(pObject)->SetUInt32Value(UNIT_NPC_FLAGS, 0);
				  TO_CREATURE(pObject)->GetScript()->OnReachWP(0, 0);

			}break;

			case 3:
			{
				  Arcemu::Gossip::Menu::Complete(pPlayer);
				  pPlayer->SafeTeleport(pPlayer->GetInstanceID(), MAP_VIOLET_HOLD, 1830.531006f, 803.939758f, 44.340508f, 6.281611f);
			}break;
		}
	}
};


It switch to AIUpdate Case 1, but "SetWaypointToMove(1);" didn't work...
0

#2 User is offline   Tulba 

  • Member
  • Pip
  • Group: Members
  • Posts: 29
  • Joined: 21-November 11
  • Gender:Male
  • Location:Switzerland
  • Server OS:Windows

Posted 27 September 2014 - 09:07 AM

Done ;-)
I disable pathfinding, now everything is fine.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users