View Single Post
  #1  
Old 09-30-2013, 04:24 PM
Vexyl
Hill Giant
 
Join Date: Oct 2009
Location: U.S.A.
Posts: 197
Default Return Home/Tutorial button issues

This bug was already reported here: http://www.peqtgc.com/phpBB3/viewtopic.php?f=17&t=14123


The issue exists in Client::HandleEnterWorldPacket() from world/client.cpp.


So, from what little research I have done, it looks like the return home code is triggered if either button is clicked at the character selection screen.
That is, ew->return_home > 0 even if you click Tutorial and not Return Home which causes this if statement block to execute either way:

@line 712 of world/client.cpp
Code:
	if(!pZoning && ew->return_home)
        {
                ...
        }

I haven't used a packet sniffer or anything, but this is what I've found:

If Tutorial is clicked:
ew->return_home == 256
ew->tutorial == 1

If Return Home is clicked:
ew->return_home == 257
ew->tutorial == 0

If Enter World is clicked:
ew->return_home == 0
ew->tutorial == 0


Temporary fix:
Code:
--- client.cpp	2013-09-30 13:17:34.767489537 -0700
+++ eqemu/projecteqemu-read-only/world/client.cpp	2013-09-30 15:10:22.625739979 -0700
@@ -709,7 +709,7 @@
 		return true;
 	}
 
-	if(!pZoning && ew->return_home)
+	if(!pZoning && ew->return_home == 257)
 	{
 		CharacterSelect_Struct* cs = new CharacterSelect_Struct;
 		memset(cs, 0, sizeof(CharacterSelect_Struct));
@@ -723,7 +723,6 @@
 				if(cs->gohome[x] == 1)
 				{
 					home_enabled = true;
-					return true;
 				}
 			}
 		}
@@ -755,7 +754,6 @@
 				if(cs->tutorial[x] == 1)
 				{
 					tutorial_enabled = true;
-					return true;
 				}
 			}
 		}

To get this to work, I had to remove the two returns since I don't really know why you'd want to return after confirming that the player can enter tutorial/return home.
(Again, I've done little research, so I may be missing something.)


Magic numbers are scary, so if anyone here that is knowledgeable of the zoning system and opcodes could find a more permanent solution, then that would be great.

Last edited by Vexyl; 09-30-2013 at 06:15 PM.. Reason: Added missing code
Reply With Quote