All pastes #2053341 Raw Edit

Unnamed

public text v1 · immutable
#2053341 ·published 2011-05-03 04:18 UTC
rendered paste body
void 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);
	}
}