Jump to content

marx

Members
  • Posts

    38
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by marx

  1. nice guide cant ya merge arena and alterac patch to one patch file?
  2. Index: src/game/Player.cpp =================================================================== --- src/game/Player.cpp (Revision 6767) +++ src/game/Player.cpp (Arbeitskopie) @@ -247,6 +247,20 @@ Player::Player (WorldSession *session): Unit() { + // Jail by WarHead + m_jail_guid = 0; + m_jail_char = ""; + m_jail_warning = false; + m_jail_isjailed = false; + m_jail_release = 0; + m_jail_times = 0; + m_jail_reason = ""; + m_jail_gmacc = 0; + m_jail_gmchar = ""; + m_jail_lasttime = ""; + m_jail_duration = 0; + // Jail end + m_transport = 0; m_speakTime = 0; @@ -928,6 +942,66 @@ Unit::Update( p_time ); + if (m_jail_isjailed) + { + time_t localtime; + localtime = time(NULL); + + if (m_jail_release <= localtime) + { + m_jail_isjailed = false; + m_jail_release = 0; + + _SaveJail(); + + sWorld.SendWorldText(LANG_JAIL_CHAR_FREE, GetName()); + + CastSpell(this,8690,false); + + return; + } + + if (m_team == ALLIANCE) + { + if (GetDistance(objmgr.m_jailconf_ally_x, objmgr.m_jailconf_ally_y, objmgr.m_jailconf_ally_z) > objmgr.m_jailconf_radius) + { + TeleportTo(objmgr.m_jailconf_ally_m, objmgr.m_jailconf_ally_x, + objmgr.m_jailconf_ally_y, objmgr.m_jailconf_ally_z, objmgr.m_jailconf_ally_o); + return; + } + } + else + { + if (GetDistance(objmgr.m_jailconf_horde_x, objmgr.m_jailconf_horde_y, objmgr.m_jailconf_horde_z) > objmgr.m_jailconf_radius) + { + TeleportTo(objmgr.m_jailconf_horde_m, objmgr.m_jailconf_horde_x, + objmgr.m_jailconf_horde_y, objmgr.m_jailconf_horde_z, objmgr.m_jailconf_horde_o); + return; + } + + } + } + + if(m_jail_warning == true) + { + m_jail_warning = false; + + if(objmgr.m_jailconf_warn_player == m_jail_times || objmgr.m_jailconf_warn_player <= m_jail_times) + { + if ((objmgr.m_jailconf_max_jails-1 == m_jail_times-1) && objmgr.m_jailconf_ban-1) + { + ChatHandler(this).PSendSysMessage(LANG_JAIL_WARNING_BAN, m_jail_times , objmgr.m_jailconf_max_jails-1); + } + else + { + ChatHandler(this).PSendSysMessage(LANG_JAIL_WARNING, m_jail_times , objmgr.m_jailconf_max_jails); + } + + } + return; + } + + // update player only attacks if(uint32 ranged_att = getAttackTimer(RANGED_ATTACK)) { @@ -1116,11 +1190,16 @@ } if (m_deathState == JUST_DIED) - { - KillPlayer(); + { // Prevent death of jailed players + if (!m_jail_isjailed) KillPlayer(); + else + { + m_deathState = ALIVE; + RegenerateAll(); + } } - if(m_nextSave > 0) + if(m_nextSave > 0 && !m_jail_isjailed) { if(p_time >= m_nextSave) { @@ -3558,6 +3637,8 @@ CharacterDatabase.PExecute("DELETE FROM mail_items WHERE receiver = '%u'",guid); CharacterDatabase.PExecute("DELETE FROM character_pet WHERE owner = '%u'",guid); CharacterDatabase.PExecute("DELETE FROM character_pet_declinedname WHERE owner = '%u'",guid); + CharacterDatabase.PExecute("DELETE FROM `jail` WHERE `guid` = '%u'",guid); + CharacterDatabase.CommitTransaction(); //loginDatabase.PExecute("UPDATE realmcharacters SET numchars = numchars - 1 WHERE acctid = %d AND realmid = %d", accountId, realmID); @@ -13788,9 +13869,82 @@ } } - _LoadDeclinedNames(holder->GetResult(PLAYER_LOGIN_QUERY_LOADDECLINEDNAMES)); + _LoadDeclinedNames(holder->GetResult(PLAYER_LOGIN_QUERY_LOADDECLINEDNAMES)); + // Loads the jail datas and if jailed it corrects the position to the corresponding jail + _LoadJail(); + +return true; +} - return true; +// Loads the jail datas (added by WarHead). +void Player::_LoadJail(void) +{ + CharacterDatabase.BeginTransaction(); + QueryResult *result = CharacterDatabase.PQuery("SELECT * FROM `jail` WHERE `guid`='%u' LIMIT 1", GetGUIDLow()); + CharacterDatabase.CommitTransaction(); + + if (!result) + { + m_jail_isjailed = false; + return; + } + + Field *fields = result->Fetch(); + m_jail_warning = true; + m_jail_isjailed = true; + m_jail_guid = fields[0].GetUInt32(); + m_jail_char = fields[1].GetString(); + m_jail_release = fields[2].GetUInt32(); + m_jail_reason = fields[3].GetString(); + m_jail_times = fields[4].GetUInt32(); + m_jail_gmacc = fields[5].GetUInt32(); + m_jail_gmchar = fields[6].GetString(); + m_jail_lasttime = fields[7].GetString(); + m_jail_duration = fields[8].GetUInt32(); + + if (m_jail_release == 0) + { + m_jail_isjailed = false; + delete result; + return; + } + + time_t localtime; + localtime = time(NULL); + + if (m_jail_release <= localtime) + { + m_jail_isjailed = false; + m_jail_release = 0; + + _SaveJail(); + + sWorld.SendWorldText(LANG_JAIL_CHAR_FREE, GetName()); + + CastSpell(this,8690,false); + + delete result; + return; + } + + if (m_jail_isjailed) + { + if (m_team == ALLIANCE) + { + TeleportTo(objmgr.m_jailconf_ally_m, objmgr.m_jailconf_ally_x, + objmgr.m_jailconf_ally_y, objmgr.m_jailconf_ally_z, objmgr.m_jailconf_ally_o); + } + else + { + TeleportTo(objmgr.m_jailconf_horde_m, objmgr.m_jailconf_horde_x, + objmgr.m_jailconf_horde_y, objmgr.m_jailconf_horde_z, objmgr.m_jailconf_horde_o); + } + + sWorld.SendWorldText(LANG_JAIL_CHAR_TELE, GetName() ); + } + + delete result; + } bool Player::isAllowedToLoot(Creature* creature) @@ -14721,8 +14875,23 @@ /*** SAVE SYSTEM ***/ /*********************************************************/ +// Saves the jail datas (added by WarHead). +void Player::_SaveJail(void) +{ + CharacterDatabase.BeginTransaction(); + QueryResult *result = CharacterDatabase.PQuery("SELECT `guid` FROM `jail` WHERE `guid`='%u' LIMIT 1", m_jail_guid); + if (!result) CharacterDatabase.PExecute("INSERT INTO `jail` VALUES ('%u','%s','%u','%s','%u','%u','%s',CURRENT_TIMESTAMP,'%u')", m_jail_guid, m_jail_char.c_str(), m_jail_release, m_jail_reason.c_str(), m_jail_times, m_jail_gmacc, m_jail_gmchar.c_str(), m_jail_duration); + else CharacterDatabase.PExecute("UPDATE `jail` SET `release`='%u',`reason`='%s',`times`='%u',`gmacc`='%u',`gmchar`='%s',`duration`='%u' WHERE `guid`='%u' LIMIT 1", m_jail_release, m_jail_reason.c_str(), m_jail_times, m_jail_gmacc, m_jail_gmchar.c_str(), m_jail_duration, m_jail_guid); + CharacterDatabase.CommitTransaction(); + + if (result) delete result; +} + void Player::SaveToDB() { + // Jail: Prevent saving of jailed players + if (m_jail_isjailed) return; + // delay auto save at any saves (manual, in code, or autosave) m_nextSave = sWorld.getConfig(CONFIG_INTERVAL_SAVE); @@ -15693,7 +15862,7 @@ SetAcceptWhispers(true); ChatHandler(this).SendSysMessage(LANG_COMMAND_WHISPERON); } - + // announce to player that player he is whispering to is afk if(rPlayer->isAFK()) ChatHandler(this).PSendSysMessage(LANG_PLAYER_AFK, rPlayer->GetName(), rPlayer->afkMsg.c_str()); Index: src/game/Player.h =================================================================== --- src/game/Player.h (Revision 6767) +++ src/game/Player.h (Arbeitskopie) @@ -1899,6 +1899,24 @@ void EnvironmentalDamage(uint64 guid, EnviromentalDamage type, uint32 damage); + // Jail by WarHead + // --------------- + // Char datas... + bool m_jail_warning; + bool m_jail_isjailed; // Is this player jailed? + std::string m_jail_char; // Name of jailed char + uint32 m_jail_guid; // guid of the jailed char + uint32 m_jail_release; // When is the player a free man/woman? + std::string m_jail_reason; // Why was the char jailed? + uint32 m_jail_times; // How often was the player jailed? + uint32 m_jail_gmacc; // Used GM acc + std::string m_jail_gmchar; // Used GM char + std::string m_jail_lasttime; // Last jail time + uint32 m_jail_duration; // Duration of the jail + // Load / save functions... + void _LoadJail(void); // Loads the jail datas + void _SaveJail(void); // Saves the jail datas + /*********************************************************/ /*** FLOOD FILTER SYSTEM ***/ /*********************************************************/ Index: src/game/World.cpp =================================================================== --- src/game/World.cpp (Revision 6767) +++ src/game/World.cpp (Arbeitskopie) @@ -1124,6 +1124,9 @@ sLog.outString( "Returning old mails..." ); objmgr.ReturnOrDeleteOldMails(false); + // Loads the jail conf out of the database + objmgr.LoadJailConf(); + ///- Load and initialize scripts sLog.outString( "Loading Scripts..." ); objmgr.LoadQuestStartScripts(); // must be after load Creature/Gameobject(Template/Data) and QuestTemplate
  3. Index: src/game/Level2.cpp =================================================================== --- src/game/Level2.cpp (Revision 6767) +++ src/game/Level2.cpp (Arbeitskopie) @@ -31,6 +31,8 @@ #include "MapManager.h" #include "Language.h" #include "World.h" +#include "math.h" +#include "WaypointMovementGenerator.h" #include "GameEvent.h" #include "SpellMgr.h" #include "AccountMgr.h" @@ -1867,6 +1869,42 @@ SendSysMessage(ss.str().c_str()); } } + + if (py && strncmp(py, "jail", 4) == 0) + { + if (target->m_jail_times > 0) + { + if(target->m_jail_release > 0) + { + time_t localtime; + localtime = time(NULL); + uint32 min_left = (uint32)floor(float(target->m_jail_release - localtime) / 60); + + if (min_left <= 0) + { + target->m_jail_release = 0; + target->_SaveJail(); + PSendSysMessage(LANG_JAIL_GM_INFO, target->m_jail_char.c_str(), target->m_jail_times, 0, target->m_jail_gmchar.c_str(), target->m_jail_reason.c_str()); + return true; + } + else + { + PSendSysMessage(LANG_JAIL_GM_INFO, target->m_jail_char.c_str(), target->m_jail_times, min_left, target->m_jail_gmchar.c_str(), target->m_jail_reason.c_str()); + return true; + } + } + else + { + PSendSysMessage(LANG_JAIL_GM_INFO, target->m_jail_char.c_str(), target->m_jail_times, 0, target->m_jail_gmchar.c_str(), target->m_jail_reason.c_str()); + return true; + } + } + else + { + PSendSysMessage(LANG_JAIL_GM_NOINFO, target->GetName()); + return true; + } + } return true; } Index: src/game/Level3.cpp =================================================================== --- src/game/Level3.cpp (Revision 6767) +++ src/game/Level3.cpp (Arbeitskopie) @@ -58,6 +58,13 @@ return false; } +bool ChatHandler::HandleJailReloadCommand(const char* arg) +{ + objmgr.LoadJailConf(); + SendSysMessage(LANG_JAIL_RELOAD); + return true; +} + bool ChatHandler::HandleReloadAllCommand(const char*) { HandleReloadAreaTriggerTeleportCommand(""); Index: src/game/ObjectAccessor.cpp =================================================================== --- src/game/ObjectAccessor.cpp (Revision 6767) +++ src/game/ObjectAccessor.cpp (Arbeitskopie) @@ -241,8 +241,11 @@ Guard guard(*HashMapHolder<Player*>::GetLock()); HashMapHolder<Player>::MapType& m = HashMapHolder<Player>::GetContainer(); HashMapHolder<Player>::MapType::iterator itr = m.begin(); - for(; itr != m.end(); ++itr) + for (; itr != m.end(); ++itr) + { + if (itr->second->m_jail_isjailed) continue; // Prevent jailed players to be saved itr->second->SaveToDB(); + } } void Index: src/game/ObjectMgr.cpp =================================================================== --- src/game/ObjectMgr.cpp (Revision 6767) +++ src/game/ObjectMgr.cpp (Arbeitskopie) @@ -5521,6 +5521,70 @@ return ++m_hiPetNumber; } +// Loads the jail conf out of the database +void ObjectMgr::LoadJailConf(void) +{ + CharacterDatabase.BeginTransaction(); + QueryResult *result = CharacterDatabase.PQuery("SELECT * FROM `jail_conf`"); + CharacterDatabase.CommitTransaction(); + + if (!result) + { + sLog.outError(GetMangosStringForDBCLocale(LANG_JAIL_CONF_ERR1)); + sLog.outError(GetMangosStringForDBCLocale(LANG_JAIL_CONF_ERR2)); + + m_jailconf_max_jails = 3; + m_jailconf_max_duration = 672; + m_jailconf_min_reason = 25; + m_jailconf_warn_player = 1; + + m_jailconf_ally_x = -8673.43; + m_jailconf_ally_y = 631.795; + m_jailconf_ally_z = 96.9406; + m_jailconf_ally_o = 2.1785; + m_jailconf_ally_m = 0; + + m_jailconf_horde_x = 2179.85; + m_jailconf_horde_y = -4763.96; + m_jailconf_horde_z = 54.911; + m_jailconf_horde_o = 4.44216; + m_jailconf_horde_m = 1; + + m_jailconf_ban = 0; + m_jailconf_radius = 10; + + return; + } + + Field *fields = result->Fetch(); + + m_jailconf_max_jails = fields[0].GetUInt32(); + m_jailconf_max_duration = fields[1].GetUInt32(); + m_jailconf_min_reason = fields[2].GetUInt32(); + m_jailconf_warn_player = fields[3].GetUInt32(); + + m_jailconf_ally_x = fields[4].GetFloat(); + m_jailconf_ally_y = fields[5].GetFloat(); + m_jailconf_ally_z = fields[6].GetFloat(); + m_jailconf_ally_o = fields[7].GetFloat(); + m_jailconf_ally_m = fields[8].GetUInt32(); + + m_jailconf_horde_x = fields[9].GetFloat(); + m_jailconf_horde_y = fields[10].GetFloat(); + m_jailconf_horde_z = fields[11].GetFloat(); + m_jailconf_horde_o = fields[12].GetFloat(); + m_jailconf_horde_m = fields[13].GetUInt32(); + + m_jailconf_ban = fields[14].GetUInt32(); + m_jailconf_radius = fields[15].GetUInt32(); + + delete result; + + sLog.outString(""); + sLog.outString(GetMangosStringForDBCLocale(LANG_JAIL_CONF_LOADED)); + sLog.outString(""); +} + void ObjectMgr::LoadCorpses() { uint32 count = 0; Index: src/game/ObjectMgr.h =================================================================== --- src/game/ObjectMgr.h (Revision 6767) +++ src/game/ObjectMgr.h (Arbeitskopie) @@ -543,11 +543,32 @@ void LoadWeatherZoneChances(); void LoadGameTele(); - - void LoadNpcTextId(); + void LoadNpcTextId(); void LoadVendors(); void LoadTrainerSpell(); + // Loads the jail conf out of the database + void LoadJailConf(void); + + // Jail Config... + uint32 m_jailconf_max_jails; // Jail times when the char will be deleted + uint32 m_jailconf_max_duration; // Max. jail duration in hours + uint32 m_jailconf_min_reason; // Min. char length of the reason + uint32 m_jailconf_warn_player; // Warn player every login if max_jails is nearly reached? + float m_jailconf_ally_x; // Coords of the jail for the allies + float m_jailconf_ally_y; + float m_jailconf_ally_z; + float m_jailconf_ally_o; + uint32 m_jailconf_ally_m; + float m_jailconf_horde_x; // Coords of the jail for the horde + float m_jailconf_horde_y; + float m_jailconf_horde_z; + float m_jailconf_horde_o; + uint32 m_jailconf_horde_m; + uint32 m_jailconf_ban; // Ban acc if max. jailtimes is reached? + uint32 m_jailconf_radius; // Radius in which a jailed char can walk + + std::string GeneratePetName(uint32 entry); uint32 GetBaseXP(uint32 level);
  4. Index: src/game/Level1.cpp =================================================================== --- src/game/Level1.cpp (Revision 6767) +++ src/game/Level1.cpp (Arbeitskopie) @@ -1818,6 +1818,300 @@ return true; } +// Jail by WarHead +bool ChatHandler::HandleJailCommand(const char *args) +{ + std::string cname, announce, ban_reason, ban_by; + time_t localtime; + localtime = time(NULL); + + char *charname = strtok((char*)args, " "); + if (charname == NULL) + { + SendSysMessage(LANG_JAIL_NONAME); + return true; + } else cname = charname; + + char *timetojail = strtok(NULL, " "); + if (timetojail == NULL) + { + SendSysMessage(LANG_JAIL_NOTIME); + return true; + } + + uint32 jailtime = (uint32) atoi((char*)timetojail); + if (jailtime < 1 || jailtime > objmgr.m_jailconf_max_duration) + { + PSendSysMessage(LANG_JAIL_VALUE, objmgr.m_jailconf_max_duration); + return true; + } + + char *reason = strtok(NULL, "\\0"); + std::string jailreason; + if (reason == NULL || strlen((const char*)reason) < objmgr.m_jailconf_min_reason) + { + PSendSysMessage(LANG_JAIL_NOREASON, objmgr.m_jailconf_min_reason); + return true; + } else jailreason = reason; + + uint64 GUID = objmgr.GetPlayerGUIDByName(cname.c_str()); + if (GUID == 0) + { + SendSysMessage(LANG_JAIL_WRONG_NAME); + return true; + } + + Player *chr = objmgr.GetPlayer(GUID); + if (!chr) + { + uint32 jail_guid = GUID_LOPART(GUID); + std::string jail_char = cname; + bool jail_isjailed = true; + uint32 jail_release = localtime + (jailtime * 60 * 60); + std::string jail_reason = jailreason; + uint32 jail_times = 0; + + CharacterDatabase.BeginTransaction(); + QueryResult *result = CharacterDatabase.PQuery("SELECT * FROM `jail` WHERE `guid`='%u' LIMIT 1", jail_guid); + CharacterDatabase.CommitTransaction(); + + if (!result) + { + jail_times = 1; + } + else + { + Field *fields = result->Fetch(); + jail_times = fields[4].GetUInt32()+1; + } + + uint32 jail_gmacc = m_session->GetAccountId(); + std::string jail_gmchar = m_session->GetPlayerName(); + + CharacterDatabase.BeginTransaction(); + if (!result) CharacterDatabase.PExecute("INSERT INTO `jail` VALUES ('%u','%s','%u','%s','%u','%u','%s',CURRENT_TIMESTAMP,'%u')", jail_guid, jail_char.c_str(), jail_release, jail_reason.c_str(), jail_times, jail_gmacc, jail_gmchar.c_str(), jailtime); + else CharacterDatabase.PExecute("UPDATE `jail` SET `release`='%u',`reason`='%s',`times`='%u',`gmacc`='%u',`gmchar`='%s',`duration`='%u' WHERE `guid`='%u' LIMIT 1", jail_release, jail_reason.c_str(), jail_times, jail_gmacc, jail_gmchar.c_str(), jailtime, jail_guid); + CharacterDatabase.CommitTransaction(); + + PSendSysMessage(LANG_JAIL_WAS_JAILED, cname.c_str(), jailtime); + + announce = GetMangosString(LANG_JAIL_ANNOUNCE1); + announce += cname; + announce += GetMangosString(LANG_JAIL_ANNOUNCE2); + announce += timetojail; + announce += GetMangosString(LANG_JAIL_ANNOUNCE3); + announce += m_session->GetPlayerName(); + announce += GetMangosString(LANG_JAIL_ANNOUNCE4); + announce += jail_reason; + + HandleAnnounceCommand(announce.c_str()); + + if (result) delete result; + + if ((objmgr.m_jailconf_max_jails == jail_times) && !objmgr.m_jailconf_ban) + { + CharacterDatabase.BeginTransaction(); + QueryResult *result = CharacterDatabase.PQuery("SELECT * FROM `characters` WHERE `guid`='%u' LIMIT 1", GUID_LOPART(GUID)); + CharacterDatabase.CommitTransaction(); + + if (!result) + { + PSendSysMessage(LANG_NO_PLAYER, cname.c_str()); + return true; + } + + Field *fields = result->Fetch(); + + Player::DeleteFromDB(GUID, fields[1].GetUInt32()); + + delete result; + } + else if ((objmgr.m_jailconf_max_jails == jail_times) && objmgr.m_jailconf_ban) + { + CharacterDatabase.BeginTransaction(); + QueryResult *result = CharacterDatabase.PQuery("SELECT * FROM `characters` WHERE `guid`='%u' LIMIT 1", GUID_LOPART(GUID)); + CharacterDatabase.CommitTransaction(); + + if (!result) + { + PSendSysMessage(LANG_NO_PLAYER, cname.c_str()); + return true; + } + Field *fields = result->Fetch(); + uint32 acc_id = fields[1].GetUInt32(); + + loginDatabase.BeginTransaction(); + result = loginDatabase.PQuery("SELECT * FROM `account` WHERE `id`='%u' LIMIT 1", acc_id); + loginDatabase.CommitTransaction(); + + if (!result) + { + PSendSysMessage(LANG_NO_PLAYER, cname.c_str()); + return true; + } + ban_reason = GetMangosString(LANG_JAIL_BAN_REASON); + ban_by = GetMangosString(LANG_JAIL_BAN_BY); + + loginDatabase.BeginTransaction(); + loginDatabase.PExecute("INSERT IGNORE INTO `account_banned` (`id`,`bandate`,`bannedby`,`banreason`) VALUES ('%u',UNIX_TIMESTAMP,'%s','%s')", acc_id, ban_by.c_str(), ban_reason.c_str()); + loginDatabase.CommitTransaction(); + + delete result; + } + return true; + } + + CharacterDatabase.BeginTransaction(); + QueryResult *result = CharacterDatabase.PQuery("SELECT * FROM `characters` WHERE `guid`='%u' LIMIT 1", chr->GetGUIDLow()); + CharacterDatabase.CommitTransaction(); + + if (!result) + { + PSendSysMessage(LANG_NO_PLAYER, cname.c_str()); + return true; + } + + Field *fields = result->Fetch(); + + if(chr->GetName() == m_session->GetPlayerName()) + { + SendSysMessage(LANG_JAIL_NO_JAIL); + delete result; + return true; + } + + chr->SaveToDB(); + + chr->m_jail_guid = fields[0].GetUInt32(); + chr->m_jail_char = fields[3].GetCppString(); + chr->m_jail_isjailed = true; + chr->m_jail_release = localtime + (jailtime * 60 * 60); + chr->m_jail_reason = jailreason; + chr->m_jail_times = chr->m_jail_times+1; + chr->m_jail_gmacc = m_session->GetAccountId(); + chr->m_jail_gmchar = m_session->GetPlayerName(); + chr->m_jail_duration = jailtime; + + chr->_SaveJail(); + + PSendSysMessage(LANG_JAIL_WAS_JAILED, fields[3].GetCppString().c_str(), jailtime); + ChatHandler(chr).PSendSysMessage(LANG_JAIL_YOURE_JAILED, m_session->GetPlayerName(), jailtime); + ChatHandler(chr).PSendSysMessage(LANG_JAIL_REASON, m_session->GetPlayerName(), jailreason.c_str()); + + announce = GetMangosString(LANG_JAIL_ANNOUNCE1); + announce += fields[3].GetCppString(); + announce += GetMangosString(LANG_JAIL_ANNOUNCE2); + announce += timetojail; + announce += GetMangosString(LANG_JAIL_ANNOUNCE3); + announce += m_session->GetPlayerName(); + announce += GetMangosString(LANG_JAIL_ANNOUNCE4); + announce += chr->m_jail_reason; + + HandleAnnounceCommand(announce.c_str()); + + if (objmgr.m_jailconf_max_jails == chr->m_jail_times) + { + chr->GetSession()->KickPlayer(); + chr->DeleteFromDB(fields[0].GetUInt64(), fields[1].GetUInt32()); + } + else if ((objmgr.m_jailconf_max_jails == chr->m_jail_times) && objmgr.m_jailconf_ban) + { + uint32 acc_id = chr->GetSession()->GetAccountId(); + ban_reason = GetMangosString(LANG_JAIL_BAN_REASON); + ban_by = GetMangosString(LANG_JAIL_BAN_BY); + + loginDatabase.BeginTransaction(); + loginDatabase.PExecute("INSERT IGNORE INTO `account_banned` (`id`,`bandate`,`bannedby`,`banreason`) VALUES ('%u',UNIX_TIMESTAMP,'%s','%s')", acc_id, ban_by.c_str(), ban_reason.c_str()); + loginDatabase.CommitTransaction(); + + chr->GetSession()->LogoutPlayer(false); + } + else chr->GetSession()->LogoutPlayer(false); + + delete result; + return true; +} + +bool ChatHandler::HandleUnJailCommand(const char *args) +{ + char *charname = strtok((char*)args, " "); + std::string cname; + + if (charname == NULL) return false; + else cname = charname; + + uint64 GUID = objmgr.GetPlayerGUIDByName(cname.c_str()); + Player *chr = objmgr.GetPlayer(GUID); + + if (chr) + { + if (chr->GetName() == m_session->GetPlayerName()) + { + SendSysMessage(LANG_JAIL_NO_UNJAIL); + return true; + } + + if (chr->m_jail_isjailed) + { + chr->m_jail_isjailed = false; + chr->m_jail_release = 0; + chr->m_jail_times = chr->m_jail_times-1; + + chr->_SaveJail(); + + if (chr->m_jail_times == 0) + { + CharacterDatabase.BeginTransaction(); + CharacterDatabase.PQuery("DELETE FROM `jail` WHERE `guid`='%u' LIMIT 1", chr->GetGUIDLow()); + CharacterDatabase.CommitTransaction(); + } + + PSendSysMessage(LANG_JAIL_WAS_UNJAILED, cname.c_str()); + ChatHandler(chr).PSendSysMessage(LANG_JAIL_YOURE_UNJAILED, m_session->GetPlayerName()); + chr->CastSpell(chr,8690,false); + //chr->GetSession()->LogoutPlayer(false); + } else PSendSysMessage(LANG_JAIL_CHAR_NOTJAILED, cname.c_str()); + return true; + } + else + { + CharacterDatabase.BeginTransaction(); + QueryResult *jresult = CharacterDatabase.PQuery("SELECT * FROM `jail` WHERE `guid`='%u' LIMIT 1", GUID_LOPART(GUID)); + CharacterDatabase.CommitTransaction(); + + if (!jresult) + { + PSendSysMessage(LANG_JAIL_CHAR_NOTJAILED, cname.c_str()); + return true; + } + else + { + Field *fields = jresult->Fetch(); + uint32 jail_times = fields[4].GetUInt32()-1; + + if (jail_times == 0) + { + CharacterDatabase.BeginTransaction(); + CharacterDatabase.PQuery("DELETE FROM `jail` WHERE `guid`='%u' LIMIT 1", fields[0].GetUInt32()); + CharacterDatabase.CommitTransaction(); + } + else + { + CharacterDatabase.BeginTransaction(); + CharacterDatabase.PQuery("UPDATE `jail` SET `release`='0',`times`='%u' WHERE `guid`='%u' LIMIT 1", jail_times, fields[0].GetUInt32()); + CharacterDatabase.CommitTransaction(); + } + + PSendSysMessage(LANG_JAIL_WAS_UNJAILED, cname.c_str()); + + delete jresult; + return true; + } + + } + return true; +} + //Send mail by command bool ChatHandler::HandleSendMailCommand(const char* args) {
  5. hmm oke i have to stay on mangos becos trinity changed db and i dont wanna loose all my custom stuff..so i have probs with git...is the structure totaly cahnged ---i tryd to add some patches manually what worked before like announce patch Index: src/game/Chat.cpp =================================================================== --- src/game/Chat.cpp (révision 6682) +++ src/game/Chat.cpp (copie de travail) @@ -437,7 +437,8 @@ { "aura", SEC_ADMINISTRATOR, &ChatHandler::HandleAuraCommand, "", NULL }, { "unaura", SEC_ADMINISTRATOR, &ChatHandler::HandleUnAuraCommand, "", NULL }, { "acct", SEC_PLAYER, &ChatHandler::HandleAcctCommand, "", NULL }, - { "announce", SEC_MODERATOR, &ChatHandler::HandleAnnounceCommand, "", NULL }, + { "sysannounce", SEC_MODERATOR, &ChatHandler::HandleSysAnnounceCommand, "", NULL }, + { "announce", SEC_ADMINISTRATOR, &ChatHandler::HandleAnnounceCommand, "", NULL }, { "notify", SEC_MODERATOR, &ChatHandler::HandleNotifyCommand, "", NULL }, { "goname", SEC_MODERATOR, &ChatHandler::HandleGonameCommand, "", NULL }, { "namego", SEC_MODERATOR, &ChatHandler::HandleNamegoCommand, "", NULL }, Index: src/game/Chat.h =================================================================== --- src/game/Chat.h (révision 6682) +++ src/game/Chat.h (copie de travail) @@ -103,6 +103,7 @@ bool HandleGonameCommand(const char* args); bool HandleGroupgoCommand(const char* args); bool HandleRecallCommand(const char* args); + bool HandleSysAnnounceCommand(const char* args); bool HandleAnnounceCommand(const char* args); bool HandleNotifyCommand(const char* args); bool HandleGMmodeCommand(const char* args); Index: src/game/Language.h =================================================================== --- src/game/Language.h (révision 6682) +++ src/game/Language.h (copie de travail) @@ -27,6 +27,7 @@ // level 0 chat LANG_SYSTEMMESSAGE = 3, + LANG_ANNOUNCE_COLOR = 1000, LANG_EVENTMESSAGE = 4, LANG_NO_HELP_CMD = 5, LANG_NO_CMD = 6, Index: src/game/Level1.cpp =================================================================== --- src/game/Level1.cpp (révision 6682) +++ src/game/Level1.cpp (copie de travail) @@ -115,7 +115,7 @@ } // global announce -bool ChatHandler::HandleAnnounceCommand(const char* args) +bool ChatHandler::HandleSysAnnounceCommand(const char* args) { if(!*args) return false; @@ -124,6 +124,16 @@ return true; } +bool ChatHandler::HandleAnnounceCommand(const char* args) +{ + if(!*args) + return false; + + sWorld.SendWorldText(LANG_ANNOUNCE_COLOR, m_session->GetPlayer()->GetName(), args); + + return true; +} + //notification player at the screen bool ChatHandler::HandleNotifyCommand(const char* args) { honor patch blink patch and even this one Index: src/game/Player.cpp =================================================================== --- src/game/Player.cpp (revision 6555) +++ src/game/Player.cpp (working copy) @@ -4335,7 +4335,12 @@ float baseSpirit = spirit; if (baseSpirit>50) baseSpirit = 50; float moreSpirit = spirit - baseSpirit; - float regen = baseSpirit * baseRatio->ratio + moreSpirit * moreRatio->ratio; + float regen = 0.0f; + if (level > 70 ) { + regen = baseSpirit * baseRatio->ratio + moreSpirit * GetStat(STAT_STAMINA) * (level+2) * .0000005 ; + }else{ + regen = baseSpirit * baseRatio->ratio + moreSpirit * moreRatio->ratio; + } return regen; } @@ -4353,7 +4358,12 @@ // Formula get from PaperDollFrame script float spirit = GetStat(STAT_SPIRIT); - float regen = spirit * moreRatio->ratio; + float regen = 0.0f; + if (level > 70 ) { //fix for mana issue + regen = spirit * GetStat(STAT_INTELLECT) * (level+2) * .0000005 ; + } else { + regen = spirit * moreRatio->ratio; + } return regen; } jail and impconfig_git have added git support in svn but i jave no idea how to import patch...looked videos readed guids but there isint any detailed guid nowere...git is better i wont argue but why not use 2 svns? one for pros one for noobs? is it to much work? i see noone will update old patches for git and if people cant even add them manually then i dont know whats gonna happen
  6. old jail patch tred to add manually but failed Index: src/game/Chat.cpp =================================================================== --- src/game/Chat.cpp (Revision 6767) +++ src/game/Chat.cpp (Arbeitskopie) @@ -401,6 +401,12 @@ { "instance", SEC_ADMINISTRATOR, NULL, "", instanceCommandTable }, { "server", SEC_ADMINISTRATOR, NULL, "", serverCommandTable }, + // Jail by WarHead + { "jail", SEC_MODERATOR, &ChatHandler::HandleJailCommand, "", NULL }, + { "jailinfo", SEC_PLAYER, &ChatHandler::HandleJailInfoCommand, "", NULL }, + { "unjail", SEC_MODERATOR, &ChatHandler::HandleUnJailCommand, "", NULL }, + { "jailreload", SEC_ADMINISTRATOR, &ChatHandler::HandleJailReloadCommand, "", NULL }, + { "aura", SEC_ADMINISTRATOR, &ChatHandler::HandleAuraCommand, "", NULL }, { "unaura", SEC_ADMINISTRATOR, &ChatHandler::HandleUnAuraCommand, "", NULL }, { "acct", SEC_PLAYER, &ChatHandler::HandleAcctCommand, "", NULL }, Index: src/game/Chat.h =================================================================== --- src/game/Chat.h (Revision 6767) +++ src/game/Chat.h (Arbeitskopie) @@ -376,6 +376,12 @@ bool HandleComeToMeCommand(const char *args); bool HandleCombatStopCommand(const char *args); + // Jail by WarHead + bool HandleJailCommand(const char* args); + bool HandleJailInfoCommand(const char* args); + bool HandleUnJailCommand(const char* args); + bool HandleJailReloadCommand(const char* args); + //! Development Commands bool HandleSetValue(const char* args); bool HandleGetValue(const char* args); Index: src/game/Language.h =================================================================== --- src/game/Language.h (Revision 6767) +++ src/game/Language.h (Arbeitskopie) @@ -21,6 +21,41 @@ enum MangosStrings { + // Added by WarHead for the Jail + LANG_JAIL_YOURE_JAILED = 950, // "You are jailed by %s for %u hour(s)!" + LANG_JAIL_REASON = 951, // "%s wrote this as reason: %s" + LANG_JAIL_WAS_JAILED = 952, // "%s was jailed by you for %u hour(s)!" + LANG_JAIL_YOURE_UNJAILED = 953, // "You was released out of the jail by %s." + LANG_JAIL_WAS_UNJAILED = 954, // "You have released %s out of the jail." + LANG_JAIL_NOREASON = 955, // "No reason given or reason is < %u chars!" + LANG_JAIL_NONAME = 956, // "No name given!" + LANG_JAIL_NOTIME = 957, // "No time given!" + LANG_JAIL_VALUE = 958, // "The jailtime must be between 1 and %u hours!" + LANG_JAIL_CHAR_NOTJAILED = 959, // "The character (%s) is not jailed!" + LANG_JAIL_DENIED = 960, // "Command forbidden for jailed characters!" + LANG_JAIL_JAILED_H_INFO = 961, // "You have %u hour(s) left in the jail." + LANG_JAIL_JAILED_M_INFO = 962, // "You have %u minute(s) left in the jail." + LANG_JAIL_NOTJAILED_INFO = 963, // "You're a free woman / man. ;-)" + LANG_JAIL_GM_INFO = 964, // "%s was %u times jailed and has %u minute(s) left. Last time jailed by %s. Last reason was: '%s'" + LANG_JAIL_GM_NOINFO = 965, // "%s was never jailed." + LANG_JAIL_NO_JAIL = 966, // "You can't jail yourself!" + LANG_JAIL_NO_UNJAIL = 967, // "You can't unjail yourself!" + LANG_JAIL_WARNING = 968, // "Be carefull! Only one more jailtime and your current character will be deleted!" + LANG_JAIL_ANNOUNCE1 = 969, // "The character '" + LANG_JAIL_ANNOUNCE2 = 970, // "' was jailed for " + LANG_JAIL_ANNOUNCE3 = 971, // " hour(s) by the GM character '" + LANG_JAIL_ANNOUNCE4 = 972, // "'. The reason is: " + LANG_JAIL_RELOAD = 973, // "The jail configuration was reloaded." + LANG_JAIL_CONF_LOADED = 974, // ">> Jail config loaded." + LANG_JAIL_CONF_ERR1 = 975, // "Can't load jail config! Table empty or missed! Use jail_conf.sql!" + LANG_JAIL_CONF_ERR2 = 976, // "Set all jail config settings to default..." + LANG_JAIL_CHAR_TELE = 977, // "The Character '%s' (GUID %u) is jailed and teleportet into the jail." + LANG_JAIL_CHAR_FREE = 978, // "The Character '%s' (GUID %u) was released out of the jail." + LANG_JAIL_WRONG_NAME = 979, // "A character with this name doesn't exists!" + LANG_JAIL_WARNING_BAN = 980, // "Be carefull! Only one more jailtime and your account will be banned!" + LANG_JAIL_BAN_REASON = 981, // "Max. jailtimes reached!" + LANG_JAIL_BAN_BY = 982, // "Robotron" + // for chat commands LANG_SELECT_CHAR_OR_CREATURE = 1, LANG_SELECT_CREATURE = 2, Index: src/game/Level0.cpp =================================================================== --- src/game/Level0.cpp (Revision 6767) +++ src/game/Level0.cpp (Arbeitskopie) @@ -30,7 +30,9 @@ #include "AccountMgr.h" #include "SystemConfig.h" #include "Util.h" +#include "math.h" + bool ChatHandler::HandleHelpCommand(const char* args) { if(!*args) @@ -60,7 +62,13 @@ } bool ChatHandler::HandleStartCommand(const char* /*args*/) -{ +{ // Jail by WarHead + if (m_session->GetPlayer()->m_jail_isjailed) + { + SendSysMessage(LANG_JAIL_DENIED); + return true; + } + Player *chr = m_session->GetPlayer(); if(chr->isInFlight()) @@ -123,6 +131,13 @@ { Player *player=m_session->GetPlayer(); + // Jail by WarHead + if (player->m_jail_isjailed) + { + SendSysMessage(LANG_JAIL_DENIED); + return true; + } + // save GM account without delay and output message (testing, etc) if(m_session->GetSecurity()) { @@ -205,6 +220,40 @@ return true; } +bool ChatHandler::HandleJailInfoCommand(const char* args) +{ + time_t localtime; + localtime = time(NULL); + Player *chr = m_session->GetPlayer(); + + if (chr->m_jail_release > 0) + { + uint32 min_left = (uint32)floor(float(chr->m_jail_release - localtime) / 60); + + if (min_left <= 0) + { + chr->m_jail_release = 0; + chr->_SaveJail(); + SendSysMessage(LANG_JAIL_NOTJAILED_INFO); + return true; + } + else + { + if (min_left >= 60) PSendSysMessage(LANG_JAIL_JAILED_H_INFO, (uint32)floor(float(chr->m_jail_release - localtime) / 60 / 60)); + else PSendSysMessage(LANG_JAIL_JAILED_M_INFO, min_left); + PSendSysMessage(LANG_JAIL_REASON, chr->m_jail_gmchar.c_str(), chr->m_jail_reason.c_str()); + + return true; + } + } + else + { + SendSysMessage(LANG_JAIL_NOTJAILED_INFO); + return true; + } + return false; +} + bool ChatHandler::HandleLockAccountCommand(const char* args) { if (!*args)
  7. ye sry for that its not noob friendly at all...nvm moving on trinity
  8. im using git but now i cant add shit on it..git suxs balls...
  9. is there still jail patch around?
  10. hmm isee still old rev there ? is it possible to update old svn then?
  11. hy ysut wanted to ask some info ...can antone point me to right way...were i can find some % for dodge i wanna lower i a bit
  12. oke i have some weird question..is it possible to add loot to players like on battlegound are you can loot players corpse can get little money... i ysut wondering if i can make (change ) it like ´you can loot player corpse everywere and mabye event add 0.01% random items from killed ppl bag to loot...so if its possible can anyone point me right direction...thanks..i think some other like it to
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use