Merge branch 'master' into shared_mem

This commit is contained in:
KimLS 2013-02-19 13:38:12 -08:00
commit 78b2385785
4 changed files with 33 additions and 30 deletions

6
.gitignore vendored
View File

@ -29,3 +29,9 @@ Build32/
build32/
Build64/
build64/
Build_32/
build_32/
Build_64/
build_64/
log/
logs/

View File

@ -1,5 +1,8 @@
EQEMu Changelog (Started on Sept 24, 2003 15:50)
-------------------------------------------------------
== 02/19/2013 ==
Derision: World should no longer crash if the start_zone query fails at character creation.
== 02/18/2013 ==
Bad_Captain: Moved merc save to merc table, save merc buffs, added cure and rez spells to healer merc.
JJ: Chat garbled for drunk characters.

View File

@ -1458,11 +1458,16 @@ bool Client::OPCharCreate(char *name, CharCreate_Struct *cc)
clog(WORLD__CLIENT_ERR,"Error getting zone id for '%s'", startzone);
}
else // otherwise use normal starting zone logic
{
{
bool ValidStartZone = false;
if(ClientVersionBit & BIT_TitaniumAndEarlier)
database.GetStartZone(&pp, cc);
ValidStartZone = database.GetStartZone(&pp, cc);
else
database.GetStartZoneSoF(&pp, cc);
ValidStartZone = database.GetStartZoneSoF(&pp, cc);
if(!ValidStartZone)
return false;
}
}

View File

@ -293,23 +293,18 @@ bool WorldDatabase::GetStartZone(PlayerProfile_Struct* in_pp, CharCreate_Struct*
in_pp->x = in_pp->y = in_pp->z = in_pp->heading = in_pp->zone_id = 0;
in_pp->binds[0].x = in_pp->binds[0].y = in_pp->binds[0].z = in_pp->binds[0].zoneId = 0;
RunQuery
(
query,
MakeAnyLenString
(
&query,
"SELECT x,y,z,heading,zone_id,bind_id FROM start_zones "
"WHERE player_choice=%i AND player_class=%i "
if(!RunQuery(query, MakeAnyLenString(&query, "SELECT x,y,z,heading,zone_id,bind_id FROM start_zones WHERE player_choice=%i AND player_class=%i "
"AND player_deity=%i AND player_race=%i",
in_cc->start_zone,
in_cc->class_,
in_cc->deity,
in_cc->race
),
errbuf,
&result
);
in_cc->race), errbuf, &result))
{
LogFile->write(EQEMuLog::Error, "Start zone query failed: %s : %s\n", query, errbuf);
safe_delete_array(query);
return false;
}
LogFile->write(EQEMuLog::Status, "Start zone query: %s\n", query);
safe_delete_array(query);
@ -450,25 +445,19 @@ bool WorldDatabase::GetStartZoneSoF(PlayerProfile_Struct* in_pp, CharCreate_Stru
in_pp->x = in_pp->y = in_pp->z = in_pp->heading = in_pp->zone_id = 0;
in_pp->binds[0].x = in_pp->binds[0].y = in_pp->binds[0].z = in_pp->binds[0].zoneId = 0;
RunQuery
(
query,
MakeAnyLenString
(
&query,
"SELECT x,y,z,heading,bind_id FROM start_zones "
"WHERE zone_id=%i AND player_class=%i "
if(!RunQuery(query, MakeAnyLenString(&query, "SELECT x,y,z,heading,bind_id FROM start_zones WHERE zone_id=%i AND player_class=%i "
"AND player_deity=%i AND player_race=%i",
in_cc->start_zone,
in_cc->class_,
in_cc->deity,
in_cc->race
),
errbuf,
&result
);
in_cc->race), errbuf, &result))
{
LogFile->write(EQEMuLog::Status, "SoF Start zone query failed: %s : %s\n", query, errbuf);
safe_delete_array(query);
return false;
}
LogFile->write(EQEMuLog::Status, "SoF Start zone query: %s\n", query);
_log(WORLD__CLIENT_TRACE, "SoF Start zone query: %s\n", query);
safe_delete_array(query);
if((rows = mysql_num_rows(result)) > 0)