rendered paste bodyvoid Client::CheckSpellFile(Client* client)
{
// Check if spell file is enabled
if(!RuleB(Character, ForceSpellFile))
return;
// Very client isn't null
if(!client)
return;
// Get client's CRC checksums
char errbuf[MYSQL_ERRMSG_SIZE];
char* query = 0;
MYSQL_RES *result;
MYSQL_ROW row;
bool message = false;
if(database.RunQuery(query,MakeAnyLenString(&query,"SELECT `primary` FROM `spell_file` WHERE `crc1` = %d and `crc2` = %d and `enabled` = 1", SpellFileCRC1, SpellFileCRC2), errbuf, &result)) {
safe_delete_array(query);
row = mysql_fetch_row(result);
if(row) {
// Check if spell file is primary, if not send spell file message to client
if(atoi(row[0]) != 1)
message = true;
} else {
// Client has the wrong spell file
// If client is above variable level from rules send ANIM_FREEZE
if((client->GetLevel() > RuleI(Character, SpellLevel)) && (client->Admin() < minStatusToBeGM))
client->SendAppearancePacket(AT_Anim, ANIM_FREEZE);
// Client needs to update spell file, send message to client
message = true;
mysql_free_result(result);
}
// Send message to client
if(message) {
// Get spell file message from variables and send to client
char *message;
message = new char [4096];
if(database.GetVariable("SpellFile", message, 4096)) {
client->Message(13,message);
}
safe_delete_array(message);
}
} else {
LogFile->write(EQEMuLog::Error, "Error in CheckSpellFile query '%s': %s", query, errbuf);
safe_delete_array(query);
}
}