浏览代码

- Optimised party x/y timer processing by excluding parties with no members online

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15045 54d463be-8e91-2dee-dedb-b68131a5f0ec
epoque11 13 年之前
父节点
当前提交
aa2686893c
共有 1 个文件被更改,包括 7 次插入2 次删除
  1. 7 2
      src/map/party.c

+ 7 - 2
src/map/party.c

@@ -873,11 +873,16 @@ int party_send_xy_timer(int tid, unsigned int tick, int id, intptr_t data)
 	for( p = (struct party_data*)iter->first(iter,NULL); iter->exists(iter); p = (struct party_data*)iter->next(iter,NULL) )
 	{
 		int i;
+
+		if( !p->party.count )
+		{// no online party members so do not iterate
+			continue;
+		}
+
 		// for each member of this party,
 		for( i = 0; i < MAX_PARTY; i++ )
 		{
-			//struct map_session_data* sd = p->data[i].sd;
-			struct map_session_data* sd = map_charid2sd(p->party.member[i].char_id); //temporary crashfix
+			struct map_session_data* sd = p->data[i].sd;
 			if( !sd ) continue;
 
 			if( p->data[i].x != sd->bl.x || p->data[i].y != sd->bl.y )