Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Server Code Submissions

Reply
 
Thread Tools Display Modes
  #1  
Old 06-04-2010, 09:12 AM
joligario's Avatar
joligario
Developer
 
Join Date: Mar 2003
Posts: 1,490
Default COMMITTED: Grid Waypoints

Changes which allow the mob AI to use headings from the grid entries table. Also changes to the #wp and #wpadd commands to save heading data when adding a new grid entry.

zone/command.cpp
Code:
Index: zone/command.cpp
===================================================================
--- zone/command.cpp	(revision 1520)
+++ zone/command.cpp	(working copy)
@@ -2433,7 +2433,7 @@
 	if (strcasecmp("add",sep->arg[1]) == 0) {
 		if (wp == 0) //AndMetal: default to highest if it's left blank, or we enter 0
 			wp = database.GetHighestWaypoint(zone->GetZoneID(), atoi(sep->arg[2])) + 1;
-		database.AddWP(c, atoi(sep->arg[2]),wp, c->GetX(), c->GetY(), c->GetZ(), atoi(sep->arg[3]),zone->GetZoneID());
+		database.AddWP(c, atoi(sep->arg[2]),wp, c->GetX(), c->GetY(), c->GetZ(), atoi(sep->arg[3]),zone->GetZoneID(), c->GetHeading());
 	}
 	else if (strcasecmp("delete",sep->arg[1]) == 0)
 		database.DeleteWaypoint(c, atoi(sep->arg[2]),wp,zone->GetZoneID());
@@ -5955,7 +5955,7 @@
 				return;
 			}
 		}
-		int32 tmp_grid = database.AddWPForSpawn(c, s2info->GetID(), c->GetX(),c->GetY(),c->GetZ(), pause, type1, type2, zone->GetZoneID());
+		int32 tmp_grid = database.AddWPForSpawn(c, s2info->GetID(), c->GetX(),c->GetY(),c->GetZ(), pause, type1, type2, zone->GetZoneID(),c->GetHeading());
 		if (tmp_grid)
 			t->CastToNPC()->SetGrid(tmp_grid);
zone/mob.h
Code:
Index: zone/mob.h
===================================================================
--- zone/mob.h	(revision 1520)
+++ zone/mob.h	(working copy)
@@ -1199,6 +1200,7 @@
 	float cur_wp_y;
 	float cur_wp_z;
 	int cur_wp_pause;
+	float cur_wp_heading;
 
 	int patrol;
 	float fear_walkto_x;
zone/MobAI.cpp
Code:
Index: zone/MobAI.cpp
===================================================================
--- zone/MobAI.cpp	(revision 1520)
+++ zone/MobAI.cpp	(working copy)
@@ -1594,6 +1594,7 @@
 				if (cur_wp_x == GetX() && cur_wp_y == GetY()) 
 				{	// are we there yet? then stop
 					mlog(AI__WAYPOINTS, "We have reached waypoint %d (%.3f,%.3f,%.3f) on grid %d", cur_wp, GetX(), GetY(), GetZ(), GetGrid());
+					SetHeading(cur_wp_heading);
 					SetWaypointPause();
 					SetAppearance(eaStanding, false);
 					SetMoving(false);
Index: zone/waypoints.cpp
Code:
Index: waypoints.cpp
===================================================================
--- waypoints.cpp	(revision 1520)
+++ waypoints.cpp	(working copy)
@@ -202,6 +202,7 @@
 	cur_wp_y = mty;
 	cur_wp_z = mtz;
 	cur_wp_pause = 0;
+	cur_wp_heading = mth;
 }
 
 void NPC::UpdateWaypoint(int wp_index)
@@ -218,7 +219,8 @@
 	cur_wp_y = cur->y;
 	cur_wp_z = cur->z;
 	cur_wp_pause = cur->pause;
-	mlog(AI__WAYPOINTS, "Next waypoint %d: (%.3f, %.3f, %.3f)", wp_index, cur_wp_x, cur_wp_y, cur_wp_z);
+	cur_wp_heading = cur->heading;
+	mlog(AI__WAYPOINTS, "Next waypoint %d: (%.3f, %.3f, %.3f, %.3f)", wp_index, cur_wp_x, cur_wp_y, cur_wp_z, cur_wp_heading);
 		
 	//fix up pathing Z
 	if(zone->HasMap() && RuleB(Map, FixPathingZAtWaypoints))
@@ -847,7 +849,7 @@
 	    adverrorinfo = 7561;
 
 	    // Retrieve all waypoints for this grid
-	    if(database.RunQuery(query,MakeAnyLenString(&query,"SELECT `x`,`y`,`z`,`pause` FROM grid_entries WHERE `gridid`=%i AND `zoneid`=%i ORDER BY `number`",grid,zone->GetZoneID()),errbuf,&result))
+	    if(database.RunQuery(query,MakeAnyLenString(&query,"SELECT `x`,`y`,`z`,`pause`,`heading` FROM grid_entries WHERE `gridid`=%i AND `zoneid`=%i ORDER BY `number`",grid,zone->GetZoneID()),errbuf,&result))
 	    {
 	    	roamer = true;
 			max_wp = -1;	// Initialize it; will increment it for each waypoint successfully added to the list
@@ -878,6 +880,7 @@
 				}
 
 				newwp.pause = atoi(row[3]);
+				newwp.heading = atof(row[4]);
 				Waypoints.push_back(newwp);
 			    }
 			}
@@ -1033,7 +1036,7 @@
 	char errbuff[MYSQL_ERRMSG_SIZE];
 	MYSQL_RES *result;
 	MYSQL_ROW row;
-	if (RunQuery(query, MakeAnyLenString(&query,"SELECT x, y, z, pause from grid_entries where gridid = %i and number = %i and zoneid = %i",grid,num,zoneid),errbuff,&result)) {
+	if (RunQuery(query, MakeAnyLenString(&query,"SELECT x, y, z, pause, heading from grid_entries where gridid = %i and number = %i and zoneid = %i",grid,num,zoneid),errbuff,&result)) {
 		safe_delete_array(query);
 		if (mysql_num_rows(result) == 1) {
 			row = mysql_fetch_row(result);
@@ -1042,6 +1045,7 @@
 				wp->y = atof( row[1] );
 				wp->z = atof( row[2] );
 				wp->pause = atoi( row[3] );
+				wp->heading = atof( row[4] );
 			}
 			mysql_free_result(result);
 			return true;
@@ -1204,12 +1208,12 @@
 * AddWP - Adds a new waypoint to a specific grid for a specific zone.
 */
 
-void ZoneDatabase::AddWP(Client *c, int32 gridid, int32 wpnum, float xpos, float ypos, float zpos, int32 pause, int16 zoneid)
+void ZoneDatabase::AddWP(Client *c, int32 gridid, int32 wpnum, float xpos, float ypos, float zpos, int32 pause, int16 zoneid, float heading)
 {   
 	char *query = 0;
 	char errbuf[MYSQL_ERRMSG_SIZE];
 
-	if(!RunQuery(query,MakeAnyLenString(&query,"INSERT INTO grid_entries (gridid,zoneid,`number`,x,y,z,pause) values (%i,%i,%i,%f,%f,%f,%i)",gridid,zoneid,wpnum,xpos,ypos,zpos,pause), errbuf)) {
+	if(!RunQuery(query,MakeAnyLenString(&query,"INSERT INTO grid_entries (gridid,zoneid,`number`,x,y,z,pause,heading) values (%i,%i,%i,%f,%f,%f,%i,%f)",gridid,zoneid,wpnum,xpos,ypos,zpos,pause,heading), errbuf)) {
 		LogFile->write(EQEMuLog::Error, "Error adding waypoint '%s': '%s'", query, errbuf);
 	} else {
 		if(c) c->LogSQL(query);
@@ -1251,7 +1255,7 @@
 * the created grid is returned.
 */
 
-int32 ZoneDatabase::AddWPForSpawn(Client *c, int32 spawn2id, float xpos, float ypos, float zpos, int32 pause, int type1, int type2, int16 zoneid) {
+int32 ZoneDatabase::AddWPForSpawn(Client *c, int32 spawn2id, float xpos, float ypos, float zpos, int32 pause, int type1, int type2, int16 zoneid, float heading) {
 	char	*query = 0;
     int32	grid_num,	// The grid number the spawn is assigned to (if spawn has no grid, will be the grid number we end up creating)
 		next_wp_num;	// The waypoint number we should be assigning to the new waypoint
@@ -1323,7 +1327,7 @@
 	}
 
 	query = 0;
-	if(!RunQuery(query, MakeAnyLenString(&query,"INSERT INTO grid_entries(gridid,zoneid,`number`,x,y,z,pause) VALUES (%i,%i,%i,%f,%f,%f,%i)",grid_num,zoneid,next_wp_num,xpos,ypos,zpos,pause), errbuf)) {
+	if(!RunQuery(query, MakeAnyLenString(&query,"INSERT INTO grid_entries(gridid,zoneid,`number`,x,y,z,pause,heading) VALUES (%i,%i,%i,%f,%f,%f,%i,%f)",grid_num,zoneid,next_wp_num,xpos,ypos,zpos,pause,heading), errbuf)) {
 		LogFile->write(EQEMuLog::Error, "Error adding grid entry '%s': '%s'", query, errbuf);
 	} else {
 		if(c) c->LogSQL(query);
zone/zonedb.h
Code:
===================================================================
--- zone/zonedb.h	(revision 1520)
+++ zone/zonedb.h	(working copy)
@@ -12,6 +12,7 @@
 	float y;
 	float z;
 	int	  pause;
+	float heading;
 };
 
 #pragma pack(1)
@@ -226,8 +227,8 @@
 	void	DeleteGrid(Client *c, int32 sg2, int32 grid_num, bool grid_too,int16 zoneid);
 	void	DeleteWaypoint(Client *c, int32 grid_num, int32 wp_num,int16 zoneid);
 //	int32	AddWP(Client *c, int32 sg2, int16 grid_num, int8 wp_num, float xpos, float ypos, float zpos, int32 pause, float xpos1, float ypos1, float zpos1, int type1, int type2,int16 zoneid);
-	void	AddWP(Client *c, int32 gridid, int32 wpnum, float xpos, float ypos, float zpos, int32 pause, int16 zoneid);
-	int32	AddWPForSpawn(Client *c, int32 spawn2id, float xpos, float ypos, float zpos, int32 pause, int type1, int type2, int16 zoneid);
+	void	AddWP(Client *c, int32 gridid, int32 wpnum, float xpos, float ypos, float zpos, int32 pause, int16 zoneid, float heading);
+	int32	AddWPForSpawn(Client *c, int32 spawn2id, float xpos, float ypos, float zpos, int32 pause, int type1, int type2, int16 zoneid, float heading);
 	void	ModifyGrid(Client *c, bool remove, int32 id, int8 type = 0, int8 type2 = 0,int16 zoneid = 0);
 	void    ModifyWP(Client *c, int32 grid_id, int32 wp_num, float xpos, float ypos, float zpos, int32 script=0,int16 zoneid =0);
 	int8    GetGridType(int32 grid,int32 zoneid);
Reply With Quote
  #2  
Old 06-04-2010, 12:06 PM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

Hm I'm not sure I'm going to add this as is. In some cases it's nice to not use the heading(for example random wander grids) and it'd be nice to preserve the old behavior too. I'll think of a way they both work and get it in though.
Reply With Quote
  #3  
Old 06-04-2010, 02:47 PM
joligario's Avatar
joligario
Developer
 
Join Date: Mar 2003
Posts: 1,490
Default

Hmm.. maybe an option is if we only do the SetHeading() if the heading is > 0
Reply With Quote
  #4  
Old 06-07-2010, 03:22 AM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

That's what I was thinking, plus an extra option in wp add to set heading or not.
Reply With Quote
  #5  
Old 06-11-2010, 08:48 AM
joligario's Avatar
joligario
Developer
 
Join Date: Mar 2003
Posts: 1,490
Default

Maybe this is a bit better. Overall changes:

1. Adds ability for MobAI to use heading from grid in database.
2. MobAI will continue to use default directional heading (in stride heading) if no heading set in database grid (-1 is default, 0+ will use heading).
3. New -h switch for #wp and #wpadd commands which uses your heading when adding new waypoint to grid. If ommitted, the default -1 will be entered into the grid.

Code:
Index: zone/command.cpp
===================================================================
--- zone/command.cpp	(revision 1535)
+++ zone/command.cpp	(working copy)
@@ -236,8 +236,8 @@
 		command_add("setpass","[accountname] [password] - Set local password for accountname",150,command_setpass) ||
 		command_add("setlsinfo","[email] [password] - Set login server email address and password (if supported by login server)",10,command_setlsinfo) ||
 		command_add("grid","[add/delete] [grid_num] [wandertype] [pausetype] - Create/delete a wandering grid",170,command_grid) ||
-		command_add("wp","[add/delete] [grid_num] [pause] [wp_num] - Add/delete a waypoint to/from a wandering grid",170,command_wp) ||
-		command_add("wpadd","[pause] - Add your current location as a waypoint to your NPC target's AI path",170,command_wpadd) ||
+		command_add("wp","[add/delete] [grid_num] [pause] [wp_num] [-h] - Add/delete a waypoint to/from a wandering grid",170,command_wp) ||
+		command_add("wpadd","[pause] [-h] - Add your current location as a waypoint to your NPC target's AI path",170,command_wpadd) ||
 		command_add("wpinfo","- Show waypoint info about your NPC target",170,command_wpinfo) ||
 		command_add("iplookup","[charname] - Look up IP address of charname",200,command_iplookup) ||
 		command_add("size","[size] - Change size of you or your target",50,command_size) ||
@@ -2434,12 +2434,17 @@
 	if (strcasecmp("add",sep->arg[1]) == 0) {
 		if (wp == 0) //AndMetal: default to highest if it's left blank, or we enter 0
 			wp = database.GetHighestWaypoint(zone->GetZoneID(), atoi(sep->arg[2])) + 1;
-		database.AddWP(c, atoi(sep->arg[2]),wp, c->GetX(), c->GetY(), c->GetZ(), atoi(sep->arg[3]),zone->GetZoneID());
+		if (strcasecmp("-h",sep->arg[5]) == 0) {
+			database.AddWP(c, atoi(sep->arg[2]),wp, c->GetX(), c->GetY(), c->GetZ(), atoi(sep->arg[3]),zone->GetZoneID(), c->GetHeading());
+		}
+		else {
+			database.AddWP(c, atoi(sep->arg[2]),wp, c->GetX(), c->GetY(), c->GetZ(), atoi(sep->arg[3]),zone->GetZoneID(), -1);
+		}
 	}
 	else if (strcasecmp("delete",sep->arg[1]) == 0)
 		database.DeleteWaypoint(c, atoi(sep->arg[2]),wp,zone->GetZoneID());
 	else
-		c->Message(0,"Usage: #wp add/delete grid_num pause wp_num");
+		c->Message(0,"Usage: #wp add/delete grid_num pause wp_num [-h]");
 }
 
 void command_iplookup(Client *c, const Seperator *sep)
@@ -5933,7 +5938,8 @@
 {
 	int	type1=0,
 		type2=0,
-		pause=0;	// Defaults for a new grid
+		pause=0,
+		heading=-1;	// Defaults for a new grid
 
 	Mob *t=c->GetTarget();
 	if (t && t->IsNPC())
@@ -5952,11 +5958,13 @@
 				pause=atoi(sep->arg[1]);
 			else
 			{
-				c->Message(0,"Usage: #wpadd [pause]");
+				c->Message(0,"Usage: #wpadd [pause] [-h]");
 				return;
 			}
 		}
-		int32 tmp_grid = database.AddWPForSpawn(c, s2info->GetID(), c->GetX(),c->GetY(),c->GetZ(), pause, type1, type2, zone->GetZoneID());
+		if (strcmp("-h",sep->arg[2]) == 0)
+			heading = c->GetHeading();
+		int32 tmp_grid = database.AddWPForSpawn(c, s2info->GetID(), c->GetX(),c->GetY(),c->GetZ(), pause, type1, type2, zone->GetZoneID(), heading);
 		if (tmp_grid)
 			t->CastToNPC()->SetGrid(tmp_grid);
Code:
Index: zone/mob.h
===================================================================
--- zone/mob.h	(revision 1535)
+++ zone/mob.h	(working copy)
@@ -1200,6 +1200,7 @@
 	float cur_wp_y;
 	float cur_wp_z;
 	int cur_wp_pause;
+	float cur_wp_heading;
 
 	int patrol;
 	float fear_walkto_x;
Code:
Index: zone/MobAI.cpp
===================================================================
--- zone/MobAI.cpp	(revision 1535)
+++ zone/MobAI.cpp	(working copy)
@@ -1597,6 +1597,9 @@
 					SetWaypointPause();
 					SetAppearance(eaStanding, false);
 					SetMoving(false);
+					if (cur_wp_heading >= 0.0) {
+						SetHeading(cur_wp_heading);
+					}
 					SendPosition();
 					
 					//kick off event_waypoint arrive
Code:
Index: zone/waypoints.cpp
===================================================================
--- zone/waypoints.cpp	(revision 1535)
+++ zone/waypoints.cpp	(working copy)
@@ -74,11 +74,12 @@
 	cur = Waypoints.begin();
 	end = Waypoints.end();
 	for(; cur != end; cur++) {
-		c->Message(0,"Waypoint %d: (%.2f,%.2f,%.2f) pause %d", 
+		c->Message(0,"Waypoint %d: (%.2f,%.2f,%.2f,%.2f) pause %d", 
 				cur->index,
 				cur->x,
 				cur->y,
 				cur->z,
+				cur->heading,
 				cur->pause );
 	}
 }
@@ -202,6 +203,7 @@
 	cur_wp_y = mty;
 	cur_wp_z = mtz;
 	cur_wp_pause = 0;
+	cur_wp_heading = mth;
 }
 
 void NPC::UpdateWaypoint(int wp_index)
@@ -218,7 +220,8 @@
 	cur_wp_y = cur->y;
 	cur_wp_z = cur->z;
 	cur_wp_pause = cur->pause;
-	mlog(AI__WAYPOINTS, "Next waypoint %d: (%.3f, %.3f, %.3f)", wp_index, cur_wp_x, cur_wp_y, cur_wp_z);
+	cur_wp_heading = cur->heading;
+	mlog(AI__WAYPOINTS, "Next waypoint %d: (%.3f, %.3f, %.3f, %.3f)", wp_index, cur_wp_x, cur_wp_y, cur_wp_z, cur_wp_heading);
 		
 	//fix up pathing Z
 	if(zone->HasMap() && RuleB(Map, FixPathingZAtWaypoints))
@@ -853,7 +856,7 @@
 	    adverrorinfo = 7561;
 
 	    // Retrieve all waypoints for this grid
-	    if(database.RunQuery(query,MakeAnyLenString(&query,"SELECT `x`,`y`,`z`,`pause` FROM grid_entries WHERE `gridid`=%i AND `zoneid`=%i ORDER BY `number`",grid,zone->GetZoneID()),errbuf,&result))
+	    if(database.RunQuery(query,MakeAnyLenString(&query,"SELECT `x`,`y`,`z`,`pause`,`heading` FROM grid_entries WHERE `gridid`=%i AND `zoneid`=%i ORDER BY `number`",grid,zone->GetZoneID()),errbuf,&result))
 	    {
 	    	roamer = true;
 			max_wp = -1;	// Initialize it; will increment it for each waypoint successfully added to the list
@@ -884,6 +887,7 @@
 				}
 
 				newwp.pause = atoi(row[3]);
+				newwp.heading = atof(row[4]);
 				Waypoints.push_back(newwp);
 			    }
 			}
@@ -1039,7 +1043,7 @@
 	char errbuff[MYSQL_ERRMSG_SIZE];
 	MYSQL_RES *result;
 	MYSQL_ROW row;
-	if (RunQuery(query, MakeAnyLenString(&query,"SELECT x, y, z, pause from grid_entries where gridid = %i and number = %i and zoneid = %i",grid,num,zoneid),errbuff,&result)) {
+	if (RunQuery(query, MakeAnyLenString(&query,"SELECT x, y, z, pause, heading from grid_entries where gridid = %i and number = %i and zoneid = %i",grid,num,zoneid),errbuff,&result)) {
 		safe_delete_array(query);
 		if (mysql_num_rows(result) == 1) {
 			row = mysql_fetch_row(result);
@@ -1048,6 +1052,7 @@
 				wp->y = atof( row[1] );
 				wp->z = atof( row[2] );
 				wp->pause = atoi( row[3] );
+				wp->heading = atof( row[4] );
 			}
 			mysql_free_result(result);
 			return true;
@@ -1210,12 +1215,12 @@
 * AddWP - Adds a new waypoint to a specific grid for a specific zone.
 */
 
-void ZoneDatabase::AddWP(Client *c, int32 gridid, int32 wpnum, float xpos, float ypos, float zpos, int32 pause, int16 zoneid)
+void ZoneDatabase::AddWP(Client *c, int32 gridid, int32 wpnum, float xpos, float ypos, float zpos, int32 pause, int16 zoneid, float heading)
 {   
 	char *query = 0;
 	char errbuf[MYSQL_ERRMSG_SIZE];
 
-	if(!RunQuery(query,MakeAnyLenString(&query,"INSERT INTO grid_entries (gridid,zoneid,`number`,x,y,z,pause) values (%i,%i,%i,%f,%f,%f,%i)",gridid,zoneid,wpnum,xpos,ypos,zpos,pause), errbuf)) {
+	if(!RunQuery(query,MakeAnyLenString(&query,"INSERT INTO grid_entries (gridid,zoneid,`number`,x,y,z,pause,heading) values (%i,%i,%i,%f,%f,%f,%i,%f)",gridid,zoneid,wpnum,xpos,ypos,zpos,pause,heading), errbuf)) {
 		LogFile->write(EQEMuLog::Error, "Error adding waypoint '%s': '%s'", query, errbuf);
 	} else {
 		if(c) c->LogSQL(query);
@@ -1257,7 +1262,7 @@
 * the created grid is returned.
 */
 
-int32 ZoneDatabase::AddWPForSpawn(Client *c, int32 spawn2id, float xpos, float ypos, float zpos, int32 pause, int type1, int type2, int16 zoneid) {
+int32 ZoneDatabase::AddWPForSpawn(Client *c, int32 spawn2id, float xpos, float ypos, float zpos, int32 pause, int type1, int type2, int16 zoneid, float heading) {
 	char	*query = 0;
     int32	grid_num,	// The grid number the spawn is assigned to (if spawn has no grid, will be the grid number we end up creating)
 		next_wp_num;	// The waypoint number we should be assigning to the new waypoint
@@ -1329,7 +1334,7 @@
 	}
 
 	query = 0;
-	if(!RunQuery(query, MakeAnyLenString(&query,"INSERT INTO grid_entries(gridid,zoneid,`number`,x,y,z,pause) VALUES (%i,%i,%i,%f,%f,%f,%i)",grid_num,zoneid,next_wp_num,xpos,ypos,zpos,pause), errbuf)) {
+	if(!RunQuery(query, MakeAnyLenString(&query,"INSERT INTO grid_entries(gridid,zoneid,`number`,x,y,z,pause,heading) VALUES (%i,%i,%i,%f,%f,%f,%i,%f)",grid_num,zoneid,next_wp_num,xpos,ypos,zpos,pause,heading), errbuf)) {
 		LogFile->write(EQEMuLog::Error, "Error adding grid entry '%s': '%s'", query, errbuf);
 	} else {
 		if(c) c->LogSQL(query);
Code:
Index: zone/zonedb.h
===================================================================
--- zone/zonedb.h	(revision 1535)
+++ zone/zonedb.h	(working copy)
@@ -12,6 +12,7 @@
 	float y;
 	float z;
 	int	  pause;
+	float heading;
 };
 
 #pragma pack(1)
@@ -226,8 +227,8 @@
 	void	DeleteGrid(Client *c, int32 sg2, int32 grid_num, bool grid_too,int16 zoneid);
 	void	DeleteWaypoint(Client *c, int32 grid_num, int32 wp_num,int16 zoneid);
 //	int32	AddWP(Client *c, int32 sg2, int16 grid_num, int8 wp_num, float xpos, float ypos, float zpos, int32 pause, float xpos1, float ypos1, float zpos1, int type1, int type2,int16 zoneid);
-	void	AddWP(Client *c, int32 gridid, int32 wpnum, float xpos, float ypos, float zpos, int32 pause, int16 zoneid);
-	int32	AddWPForSpawn(Client *c, int32 spawn2id, float xpos, float ypos, float zpos, int32 pause, int type1, int type2, int16 zoneid);
+	void	AddWP(Client *c, int32 gridid, int32 wpnum, float xpos, float ypos, float zpos, int32 pause, int16 zoneid, float heading);
+	int32	AddWPForSpawn(Client *c, int32 spawn2id, float xpos, float ypos, float zpos, int32 pause, int type1, int type2, int16 zoneid, float heading);
 	void	ModifyGrid(Client *c, bool remove, int32 id, int8 type = 0, int8 type2 = 0,int16 zoneid = 0);
 	void    ModifyWP(Client *c, int32 grid_id, int32 wp_num, float xpos, float ypos, float zpos, int32 script=0,int16 zoneid =0);
 	int8    GetGridType(int32 grid,int32 zoneid);
Recommended SQL:
Code:
UPDATE grid_entries SET heading = -1;
Reply With Quote
  #6  
Old 07-06-2010, 09:42 AM
joligario's Avatar
joligario
Developer
 
Join Date: Mar 2003
Posts: 1,490
Default

Committed in r1586
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 11:57 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3