Pastebin
API
tools
faq
paste
Login
Sign up
Please fix the following errors:
New Paste
Syntax Highlighting
From 8b4613f987dcbe3e6299911b5c6035190567df14 Mon Sep 17 00:00:00 2001 From: SignFinder <Pandemonium709@mail.ru> Date: Tue, 24 Jun 2014 07:19:16 -0400 Subject: [PATCH] GuildLevelSystem --- .../GuildLevelSystem/auth_guild_level_system.sql | 7 + .../characters_guild_level_system.sql | 55 ++++++++ .../GuildLevelSystem/world_guild_level_system.sql | 6 + src/server/game/Accounts/RBAC.h | 4 + src/server/game/Conditions/ConditionMgr.cpp | 22 +++ src/server/game/Conditions/ConditionMgr.h | 3 +- src/server/game/Entities/Player/Player.cpp | 41 ++++++ src/server/game/Entities/Unit/Unit.cpp | 22 ++- src/server/game/Guilds/Guild.cpp | 144 ++++++++++++++++++++ src/server/game/Guilds/Guild.h | 37 +++++ src/server/game/Handlers/LootHandler.cpp | 11 ++ src/server/game/Miscellaneous/Formulas.h | 11 ++ src/server/game/Miscellaneous/Language.h | 6 +- src/server/game/Reputation/ReputationMgr.cpp | 10 ++ src/server/game/World/World.cpp | 87 ++++++++++++ src/server/game/World/World.h | 20 +++ src/server/scripts/Commands/cs_guild.cpp | 133 +++++++++++++++++- .../Database/Implementation/CharacterDatabase.cpp | 10 ++ .../Database/Implementation/CharacterDatabase.h | 7 + 19 files changed, 626 insertions(+), 10 deletions(-) create mode 100644 sql/TrinityCore-Patches/GuildLevelSystem/auth_guild_level_system.sql create mode 100644 sql/TrinityCore-Patches/GuildLevelSystem/characters_guild_level_system.sql create mode 100644 sql/TrinityCore-Patches/GuildLevelSystem/world_guild_level_system.sql diff --git a/sql/TrinityCore-Patches/GuildLevelSystem/auth_guild_level_system.sql b/sql/TrinityCore-Patches/GuildLevelSystem/auth_guild_level_system.sql new file mode 100644 index 0000000..598b496 --- /dev/null +++ b/sql/TrinityCore-Patches/GuildLevelSystem/auth_guild_level_system.sql @@ -0,0 +1,7 @@ +INSERT INTO `rbac_permissions` VALUES ('1000', 'Command: guild info'); +INSERT INTO `rbac_permissions` VALUES ('1001', 'Command: guild setlevel'); +INSERT INTO `rbac_permissions` VALUES ('1002', 'Command: guild givexp'); + +INSERT INTO `rbac_linked_permissions` VALUES ('195', '1000'); +INSERT INTO `rbac_linked_permissions` VALUES ('192', '1001'); +INSERT INTO `rbac_linked_permissions` VALUES ('192', '1002'); diff --git a/sql/TrinityCore-Patches/GuildLevelSystem/characters_guild_level_system.sql b/sql/TrinityCore-Patches/GuildLevelSystem/characters_guild_level_system.sql new file mode 100644 index 0000000..ae05ff6 --- /dev/null +++ b/sql/TrinityCore-Patches/GuildLevelSystem/characters_guild_level_system.sql @@ -0,0 +1,55 @@ +ALTER TABLE `guild` ADD `xp` INT(10) DEFAULT 0 NOT NULL AFTER `BankMoney`; +ALTER TABLE `guild` ADD `level` TINYINT(3) DEFAULT 0 NOT NULL AFTER `xp`; + +SET FOREIGN_KEY_CHECKS=0; + +-- ---------------------------- +-- Table structure for `guild_bonus_config` +-- ---------------------------- +DROP TABLE IF EXISTS `guild_bonus_config`; +CREATE TABLE `guild_bonus_config` ( + `BonusId` smallint(5) NOT NULL DEFAULT '0', + `RequiredGuildLevel` tinyint(3) NOT NULL DEFAULT '0', + `comment` longtext CHARACTER SET utf8 +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- ---------------------------- +-- Records of guild_bonus_config +-- ---------------------------- +INSERT INTO `guild_bonus_config` VALUES ('1', '1', 'Goldbonus | 5% Bonus gold for the guild bank'); +INSERT INTO `guild_bonus_config` VALUES ('2', '1', 'XP-Bonus | +5% XP at the end of quest or kill monsters'); +INSERT INTO `guild_bonus_config` VALUES ('3', '2', 'Faster Spirit | Double movement speed as spirit'); +INSERT INTO `guild_bonus_config` VALUES ('4', '2', 'Cheap repair | -25% Repair costs'); +INSERT INTO `guild_bonus_config` VALUES ('5', '3', 'Goldbonus-2 | 10% Bonus gold for the guild bank'); +INSERT INTO `guild_bonus_config` VALUES ('6', '4', 'Riding Pace | +5% Riding pace (Except Battlegrounds and Arenas)'); +INSERT INTO `guild_bonus_config` VALUES ('7', '4', 'Good Relationships | +5% Reputation gain'); +INSERT INTO `guild_bonus_config` VALUES ('8', '5', 'XP-Bonus-2 | +10% XP at the end of quest or kill monsters'); +INSERT INTO `guild_bonus_config` VALUES ('9', '6', 'Cheap Repair-2 | -50% Repair costs'); +INSERT INTO `guild_bonus_config` VALUES ('10', '6', 'Riding Pace-2 | +10% Riding pace (Except Battlegrounds and Arenas)'); +INSERT INTO `guild_bonus_config` VALUES ('11', '7', 'Good Relationships-2 | +10% Reputation gain'); +INSERT INTO `guild_bonus_config` VALUES ('12', '5', 'Bonus Honor | +5% Honor'); +INSERT INTO `guild_bonus_config` VALUES ('13', '8', 'Bonus Honor-2 | +10% Honor'); + +SET FOREIGN_KEY_CHECKS=0; + +-- ---------------------------- +-- Table structure for `guild_xp_for_next_level` +-- ---------------------------- +DROP TABLE IF EXISTS `guild_xp_for_next_level`; +CREATE TABLE `guild_xp_for_next_level` ( + `level` tinyint(3) NOT NULL DEFAULT '0', + `xp_for_next_level` int(10) NOT NULL DEFAULT '0', + PRIMARY KEY (`level`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- ---------------------------- +-- Records of guild_xp_for_next_level +-- ---------------------------- +INSERT INTO `guild_xp_for_next_level` VALUES ('0', '8000000'); +INSERT INTO `guild_xp_for_next_level` VALUES ('1', '12000000'); +INSERT INTO `guild_xp_for_next_level` VALUES ('2', '18000000'); +INSERT INTO `guild_xp_for_next_level` VALUES ('3', '27000000'); +INSERT INTO `guild_xp_for_next_level` VALUES ('4', '40500000'); +INSERT INTO `guild_xp_for_next_level` VALUES ('5', '60750000'); +INSERT INTO `guild_xp_for_next_level` VALUES ('6', '91125000'); +INSERT INTO `guild_xp_for_next_level` VALUES ('7', '136687500'); \ No newline at end of file diff --git a/sql/TrinityCore-Patches/GuildLevelSystem/world_guild_level_system.sql b/sql/TrinityCore-Patches/GuildLevelSystem/world_guild_level_system.sql new file mode 100644 index 0000000..2c72414 --- /dev/null +++ b/sql/TrinityCore-Patches/GuildLevelSystem/world_guild_level_system.sql @@ -0,0 +1,6 @@ +INSERT INTO `trinity_string` VALUES ('13000', 'Guild Level: %u.', null, null, null, null, null, null, null, null); +INSERT INTO `trinity_string` VALUES ('13001', 'Guild Experience: %u/%u.', null, null, null, null, null, null, null, null); + +INSERT INTO `command` VALUES ('guild info', '1000', 'Syntax: .guild info'); +INSERT INTO `command` VALUES ('guild setlevel', '1001', 'Syntax: .guild setlevel $GuildName $Level'); +INSERT INTO `command` VALUES ('guild givexp', '1002', 'Syntax: .guild givexp $GuildName $Xp'); \ No newline at end of file diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index 9ce1f9b..668d717 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -683,6 +683,10 @@ enum RBACPermissions RBAC_PERM_COMMAND_MAILBOX = 777, // custom permissions 1000+ + + RBAC_PERM_COMMAND_GUILD_INFO = 1000, + RBAC_PERM_COMMAND_GUILD_SET_LEVEL = 1001, + RBAC_PERM_COMMAND_GUILD_GIVE_XP = 1002, RBAC_PERM_MAX }; diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index bb1a722..13800b6 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -28,6 +28,7 @@ #include "SpellAuras.h" #include "SpellMgr.h" #include "Spell.h" +#include "Guild.h" // Checks if object meets the condition // Can have CONDITION_SOURCE_TYPE_NONE && !mReferenceId if called from a special event (ie: eventAI) @@ -323,6 +324,13 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) condMeets = creature->GetCreatureTemplate()->type == ConditionValue1; break; } + case CONDITION_GUILD_LEVEL: + { + if (Player* player = object->ToPlayer()) + if (Guild* guild = player->GetGuild()) + condMeets = CompareValues(static_cast<ComparisionType>(ConditionValue2), static_cast<uint32>(guild->GetLevel()), ConditionValue1); + break; + } default: condMeets = false; break; @@ -487,6 +495,9 @@ uint32 Condition::GetSearcherTypeMaskForCondition() case CONDITION_CREATURE_TYPE: mask |= GRID_MAP_TYPE_MASK_CREATURE; break; + case CONDITION_GUILD_LEVEL: + mask |= GRID_MAP_TYPE_MASK_PLAYER; + break; default: ASSERT(false && "Condition::GetSearcherTypeMaskForCondition - missing condition handling!"); break; @@ -2009,6 +2020,17 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) } break; } + case CONDITION_GUILD_LEVEL: + { + if (cond->ConditionValue2 >= COMP_TYPE_MAX) + { + TC_LOG_ERROR("sql.sql", "Guildlevel condition has invalid option (%u), skipped", cond->ConditionValue2); + return false; + } + if (cond->ConditionValue3) + TC_LOG_ERROR("sql.sql", "Guildlevel condition has useless data in value3 (%u)!", cond->ConditionValue3); + break; + } default: break; } diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index 876b922..993f892 100644 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -72,7 +72,8 @@ enum ConditionTypes CONDITION_ALIVE = 36, // 0 0 0 true if unit is alive CONDITION_HP_VAL = 37, // hpVal ComparisonType 0 true if unit's hp matches given value CONDITION_HP_PCT = 38, // hpPct ComparisonType 0 true if unit's hp matches given pct - CONDITION_MAX = 39 // MAX + CONDITION_GUILD_LEVEL = 39, // Gildenlevel Level Vergleichstyp + CONDITION_MAX = 40 // MAX }; /*! Documentation on implementing a new ConditionSourceType: diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 9733c0f..a9f450d 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -5107,6 +5107,12 @@ void Player::BuildPlayerRepop() // convert player body to ghost SetHealth(1); + //Guild-Level-System (Bonus: Faster spirit) + if (!GetMap()->IsBattlegroundOrArena()) + if (Guild* guild = GetGuild()) + if (guild->HasLevelForBonus(GUILD_BONUS_SCHNELLER_GEIST)) + SetSpeed(MOVE_RUN, 2.0f, true); + SetMovement(MOVE_WATER_WALK); if (!GetSession()->isLogingOut()) SetMovement(MOVE_UNROOT); @@ -5154,6 +5160,9 @@ void Player::ResurrectPlayer(float restore_percent, bool applySickness) SetMovement(MOVE_LAND_WALK); SetMovement(MOVE_UNROOT); + //Guild-Level-System (Bonus: Faster spirit) + SetSpeed(MOVE_RUN, 1.0f, true); + m_deathTimer = 0; // set health/powers (0- will be set in caller) @@ -5479,6 +5488,15 @@ uint32 Player::DurabilityRepair(uint16 pos, bool cost, float discountMod, bool g costs = uint32(costs * discountMod * sWorld->getRate(RATE_REPAIRCOST)); + //Guild-Level-System (Bonus: Guenstige Reperatur) + if (Guild* guild = GetGuild()) + { + if (guild->HasLevelForBonus(GUILD_BONUS_REPERATUR_1)) + costs -= uint32(costs*0.25f); + if (guild->HasLevelForBonus(GUILD_BONUS_REPERATUR_2)) + costs -= uint32(costs*0.5f); + } + if (costs == 0) //fix for ITEM_QUALITY_ARTIFACT costs = 1; @@ -7249,6 +7267,16 @@ bool Player::RewardHonor(Unit* victim, uint32 groupsize, int32 honor, bool pvpto } honor_f *= sWorld->getRate(RATE_HONOR); + + //Guild-Level-System (Bonus: Ehre) + if (Guild* guild = GetGuild()) + { + if (guild->HasLevelForBonus(GUILD_BONUS_EHRE_1)) + honor_f *= 0.05f; + if (guild->HasLevelForBonus(GUILD_BONUS_EHRE_2)) + honor_f *= 0.1f; + } + // Back to int now honor = int32(honor_f); // honor - for show honor points in log @@ -15333,6 +15361,19 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver, for (Unit::AuraEffectList::const_iterator i = ModXPPctAuras.begin(); i != ModXPPctAuras.end(); ++i) AddPct(XP, (*i)->GetAmount()); + //Guild-Level-System (Bonus: QuestXP) + if (Guild* guild = GetGuild()) + { + //QuestXP for the Guild + guild->GiveXp(50000); + + //GuildXP-Bonus + if (guild->HasLevelForBonus(GUILD_BONUS_XP_1)) + XP += uint32(XP*0.05f); + if (guild->HasLevelForBonus(GUILD_BONUS_XP_2)) + XP += uint32(XP*0.1f); + } + int32 moneyRew = 0; if (getLevel() < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)) GiveXP(XP, NULL); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 492197d..89a955e 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -60,6 +60,7 @@ #include "World.h" #include "WorldPacket.h" #include "WorldSession.h" +#include "Guild.h" #include <math.h> @@ -12195,6 +12196,23 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced) float stack_bonus = 1.0f; float non_stack_bonus = 1.0f; + //Guild-Level-System (Bonus: Reittempo) + uint8 bonusSpeed = 0; + if (GetTypeId() == TYPEID_PLAYER) + { + Player* player = ToPlayer(); + if (Guild* guild = player->GetGuild()) + { + if (!player->GetMap()->IsBattlegroundOrArena()) + { + if (guild->HasLevelForBonus(GUILD_BONUS_REITTEMPO_1)) + bonusSpeed = 5; + if (guild->HasLevelForBonus(GUILD_BONUS_REITTEMPO_2)) + bonusSpeed = 10; + } + } + } + switch (mtype) { // Only apply debuffs @@ -12208,7 +12226,7 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced) { if (IsMounted()) // Use on mount auras { - main_speed_mod = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_INCREASE_MOUNTED_SPEED); + main_speed_mod = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_INCREASE_MOUNTED_SPEED) + bonusSpeed; stack_bonus = GetTotalAuraMultiplier(SPELL_AURA_MOD_MOUNTED_SPEED_ALWAYS); non_stack_bonus += GetMaxPositiveAuraModifier(SPELL_AURA_MOD_MOUNTED_SPEED_NOT_STACK) / 100.0f; } @@ -12242,7 +12260,7 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced) } else if (IsMounted()) { - main_speed_mod = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED); + main_speed_mod = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED) + bonusSpeed; stack_bonus = GetTotalAuraMultiplier(SPELL_AURA_MOD_MOUNTED_FLIGHT_SPEED_ALWAYS); } else // Use not mount (shapeshift for example) auras (should stack) diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index db0a196..cdb4ecf 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -1206,6 +1206,9 @@ bool Guild::Create(Player* pLeader, std::string const& name) if (ret) sScriptMgr->OnGuildCreate(this, pLeader, name); + //Guild-Level-System + LoadLevelInfo(); + return ret; } @@ -1957,6 +1960,10 @@ bool Guild::LoadFromDB(Field* fields) m_bankTabs[i] = new BankTab(m_id, i); _CreateLogHolders(); + + //Guild-Level-System + LoadLevelInfo(); + return true; } @@ -2924,3 +2931,140 @@ void Guild::ResetTimes() _BroadcastEvent(GE_BANK_TAB_AND_MONEY_UPDATED, 0); } + +//Guild-Level-System [Start] +void Guild::LoadLevelInfo() +{ + PreparedStatement* stmt; + stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_LEVEL_INFO); + stmt->setUInt32(0, m_id); + PreparedQueryResult result = CharacterDatabase.Query(stmt); + + if (result) + { + m_current_guildXp = (*result)[0].GetUInt32(); + m_guild_level = (*result)[1].GetUInt8(); + } + else + { + m_current_guildXp = 0; + m_guild_level = 0; + } + + if (m_guild_level < GUILD_MAX_LEVEL) + { + stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_XP_FOR_NEXT_LEVEL); + stmt->setUInt32(0, m_guild_level); + PreparedQueryResult result = CharacterDatabase.Query(stmt); + + if (result) + m_xp_for_next_level = (*result)[0].GetUInt32(); + else + m_xp_for_next_level = 0; + } +} + +bool Guild::HasLevelForBonus(uint8 guildBonus) +{ + switch (guildBonus) + { + case GUILD_BONUS_GOLD_1: + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_GOLD_1); + break; + case GUILD_BONUS_XP_1: + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_XP_1); + break; + case GUILD_BONUS_SCHNELLER_GEIST: + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_SCHNELLER_GEIST); + break; + case GUILD_BONUS_REPERATUR_1: + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_REPERATUR_1); + break; + case GUILD_BONUS_GOLD_2: + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_GOLD_2); + break; + case GUILD_BONUS_REITTEMPO_1: + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_REITTEMPO_1); + break; + case GUILD_BONUS_RUF_1: + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_RUF_1); + break; + case GUILD_BONUS_XP_2: + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_XP_2); + break; + case GUILD_BONUS_REPERATUR_2: + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_REPERATUR_2); + break; + case GUILD_BONUS_REITTEMPO_2: + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_REITTEMPO_2); + break; + case GUILD_BONUS_RUF_2: + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_RUF_2); + break; + case GUILD_BONUS_EHRE_1: + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_EHRE_1); + break; + case GUILD_BONUS_EHRE_2: + return m_guild_level >= sWorld->GetReqGuildLevelForBonus(GUILD_BONUS_EHRE_2); + break; + default: + return false; + break; + } +} + +void Guild::GiveXp(uint32 value) +{ + if (m_guild_level > GUILD_MAX_LEVEL) + return; + + if ((m_current_guildXp + value) >= m_xp_for_next_level) + { + m_current_guildXp = ((m_current_guildXp + value) - m_xp_for_next_level); + SetLevel(m_guild_level + 1, false); + } + else + m_current_guildXp += value; + + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_XP); + stmt->setUInt32(0, value); + stmt->setUInt32(1, m_id); + CharacterDatabase.Execute(stmt); +} + +void Guild::SetLevel(uint8 level, bool byCommand) +{ + if (level > GUILD_MAX_LEVEL) + return; + + m_guild_level = level; + + if (byCommand) + { + m_current_guildXp = 0; + + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_XP); + stmt->setUInt8(0, m_current_guildXp); + stmt->setUInt32(1, m_id); + CharacterDatabase.Execute(stmt); + } + + char worldMsg[250]; + sprintf(worldMsg, "Die Gilde %s hat das Gildenlevel %d erreicht.", m_name.c_str(), level); + sWorld->SendWorldText(SERVER_MSG_STRING, worldMsg); + + //Save to DB + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_LEVEL); + stmt->setUInt8(0, level); + stmt->setUInt32(1, m_id); + CharacterDatabase.Execute(stmt); + + //reqXp fuers naechste Level laden + stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_XP_FOR_NEXT_LEVEL); + stmt->setUInt32(0, level); + PreparedQueryResult result = CharacterDatabase.Query(stmt); + + if (result) + m_xp_for_next_level = (*result)[0].GetUInt32(); +} +//Guild-Level-System [End] diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h index ea0b2e4..ef71bb6 100644 --- a/src/server/game/Guilds/Guild.h +++ b/src/server/game/Guilds/Guild.h @@ -222,6 +222,29 @@ enum GuildMemberFlags GUILDMEMBER_STATUS_MOBILE = 0x0008, // remote chat from mobile app }; +//Guild-Level-System [Start] +enum GuildBonus +{ + GUILD_BONUS_GOLD_1 = 1, + GUILD_BONUS_XP_1 = 2, + GUILD_BONUS_SCHNELLER_GEIST = 3, + GUILD_BONUS_REPERATUR_1 = 4, + GUILD_BONUS_GOLD_2 = 5, + GUILD_BONUS_REITTEMPO_1 = 6, + GUILD_BONUS_RUF_1 = 7, + GUILD_BONUS_XP_2 = 8, + GUILD_BONUS_REPERATUR_2 = 9, + GUILD_BONUS_REITTEMPO_2 = 10, + GUILD_BONUS_RUF_2 = 11, + GUILD_BONUS_EHRE_1 = 12, + GUILD_BONUS_EHRE_2 = 13, + + GUILD_BONUS_MAX = 14 +}; + +#define GUILD_MAX_LEVEL 8 +//Guild-Level-System [End] + // Emblem info class EmblemInfo { @@ -740,6 +763,15 @@ public: void ResetTimes(); + //Guild-Level-System + void LoadLevelInfo(); + bool HasLevelForBonus(uint8 guildBonus); + void GiveXp(uint32 value); + void SetLevel(uint8 level, bool byCommand); + uint8 GetLevel() const { return m_guild_level; }; + uint32 GetCurrentXP() const { return m_current_guildXp; }; + uint32 GetXpForNextLevel() const { return m_xp_for_next_level; }; + protected: uint32 m_id; std::string m_name; @@ -760,6 +792,11 @@ protected: LogHolder* m_eventLog; LogHolder* m_bankEventLog[GUILD_BANK_MAX_TABS + 1]; + //Guild-Level-System + uint8 m_guild_level; + uint32 m_current_guildXp; + uint32 m_xp_for_next_level; + private: inline uint8 _GetRanksSize() const { return uint8(m_ranks.size()); } inline const RankInfo* GetRankInfo(uint8 rankId) const { return rankId < _GetRanksSize() ? &m_ranks[rankId] : NULL; } diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp index 61f0b9a..ab9bc11 100644 --- a/src/server/game/Handlers/LootHandler.cpp +++ b/src/server/game/Handlers/LootHandler.cpp @@ -30,6 +30,7 @@ #include "World.h" #include "WorldPacket.h" #include "WorldSession.h" +#include "Guild.h" void WorldSession::HandleAutostoreLootItemOpcode(WorldPacket& recvData) { @@ -203,6 +204,16 @@ void WorldSession::HandleLootMoneyOpcode(WorldPacket& /*recvData*/) SendPacket(&data); } + //Guild-Level-System (Bonus: Gold) + if (Guild* guild = player->GetGuild()) + { + //Extra Gold fuer die Gildenbank + if (guild->HasLevelForBonus(GUILD_BONUS_GOLD_1)) + guild->HandleMemberDepositMoney(this, uint32(loot->gold*0.05f)); + if (guild->HasLevelForBonus(GUILD_BONUS_GOLD_2)) + guild->HandleMemberDepositMoney(this, uint32(loot->gold*0.1f)); + } + loot->gold = 0; // Delete the money loot record from the DB diff --git a/src/server/game/Miscellaneous/Formulas.h b/src/server/game/Miscellaneous/Formulas.h index 8d0e97d..185c073 100644 --- a/src/server/game/Miscellaneous/Formulas.h +++ b/src/server/game/Miscellaneous/Formulas.h @@ -23,6 +23,7 @@ #include "SharedDefines.h" #include "ScriptMgr.h" #include "Player.h" +#include "Guild.h" namespace Trinity { @@ -181,6 +182,16 @@ namespace Trinity } gain = uint32(gain * sWorld->getRate(RATE_XP_KILL)); + + //Guild-Level-System (Bonus: MonsterKillXp) + if (Guild* guild = player->GetGuild()) + { + //GildenXP-Bonus + if (guild->HasLevelForBonus(GUILD_BONUS_XP_1)) + gain += uint32(gain*0.05f); + if (guild->HasLevelForBonus(GUILD_BONUS_XP_2)) + gain += uint32(gain*0.1f); + } } sScriptMgr->OnGainCalculation(gain, player, u); diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 3a680e3..f144aff 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -1225,7 +1225,11 @@ enum TrinityStrings LANG_BAN_ACCOUNT_YOUPERMBANNEDMESSAGE_WORLD = 11007, LANG_NPCINFO_INHABIT_TYPE = 11008, - LANG_NPCINFO_FLAGS_EXTRA = 11009 + LANG_NPCINFO_FLAGS_EXTRA = 11009, + + //Guild-Level-System + LANG_GUILDINFO_LEVEL = 13000, + LANG_GUILDINFO_XP_INFO = 13001, // NOT RESERVED IDS 12000-1999999999 // `db_script_string` table index 2000000000-2000009999 (MIN_DB_SCRIPT_STRING_ID-MAX_DB_SCRIPT_STRING_ID) diff --git a/src/server/game/Reputation/ReputationMgr.cpp b/src/server/game/Reputation/ReputationMgr.cpp index 46b73e7..a6f2437 100644 --- a/src/server/game/Reputation/ReputationMgr.cpp +++ b/src/server/game/Reputation/ReputationMgr.cpp @@ -25,6 +25,7 @@ #include "ObjectMgr.h" #include "ScriptMgr.h" #include "WorldSession.h" +#include "Guild.h" const int32 ReputationMgr::PointsInRank[MAX_REPUTATION_RANK] = {36000, 3000, 3000, 3000, 6000, 12000, 21000, 1000}; @@ -367,6 +368,15 @@ bool ReputationMgr::SetOneFactionReputation(FactionEntry const* factionEntry, in standing += itr->second.Standing + BaseRep; } + //Guild-Level-System (Bonus: Ruf) + if (Guild* guild = _player->GetGuild()) + { + if (guild->HasLevelForBonus(GUILD_BONUS_RUF_1)) + standing += uint32(standing*0.05f); + if (guild->HasLevelForBonus(GUILD_BONUS_RUF_2)) + standing += uint32(standing*0.1f); + } + if (standing > Reputation_Cap) standing = Reputation_Cap; else if (standing < Reputation_Bottom) diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index b643d12..9b1652f 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1257,6 +1257,9 @@ void World::LoadConfigSettings(bool reload) m_bool_configs[CONFIG_IP_BASED_LOGIN_LOGGING] = sConfigMgr->GetBoolDefault("Wrong.Password.Login.Logging", false); + //Guild-Level-System + LoadGuildBonusInfo(); + // call ScriptMgr if we're reloading the configuration if (reload) sScriptMgr->OnConfigLoad(reload); @@ -3204,3 +3207,87 @@ void World::ReloadRBAC() if (WorldSession* session = itr->second) session->InvalidateRBACData(); } + +//Guild-Level-System [Start] +void World::LoadGuildBonusInfo() +{ + //Moechte keinen riesigen Abschnitt in die Worldconf hinzufuegen, deswegen + //soll das ganze ueber eine Tabelle in der CharDB geregelt werden. + //Hier werden die benoetigten Daten geladen. + m_req_guildLevel_gold_1 = SelectReqGuildLevelForBonus(GUILD_BONUS_GOLD_1); + m_req_guildLevel_xp_1 = SelectReqGuildLevelForBonus(GUILD_BONUS_XP_1); + m_req_guildLevel_schneller_geist = SelectReqGuildLevelForBonus(GUILD_BONUS_SCHNELLER_GEIST); + m_req_guildLevel_reperatur_1 = SelectReqGuildLevelForBonus(GUILD_BONUS_REPERATUR_1); + m_req_guildLevel_gold_2 = SelectReqGuildLevelForBonus(GUILD_BONUS_GOLD_2); + m_req_guildLevel_reittempo_1 = SelectReqGuildLevelForBonus(GUILD_BONUS_REITTEMPO_1); + m_req_guildLevel_reputation_1 = SelectReqGuildLevelForBonus(GUILD_BONUS_RUF_1); + m_req_guildLevel_xp_2 = SelectReqGuildLevelForBonus(GUILD_BONUS_XP_2); + m_req_guildLevel_reperatur_2 = SelectReqGuildLevelForBonus(GUILD_BONUS_REPERATUR_2); + m_req_guildLevel_reittempo_2 = SelectReqGuildLevelForBonus(GUILD_BONUS_REITTEMPO_2); + m_req_guildLevel_reputation_2 = SelectReqGuildLevelForBonus(GUILD_BONUS_RUF_2); + m_req_guildLevel_honor_1 = SelectReqGuildLevelForBonus(GUILD_BONUS_EHRE_1); + m_req_guildLevel_honor_2 = SelectReqGuildLevelForBonus(GUILD_BONUS_EHRE_2); +} + +uint8 World::SelectReqGuildLevelForBonus(uint8 guildBonus) +{ + PreparedStatement* stmt; + stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_BONUS_INFO); + stmt->setUInt8(0, guildBonus); + PreparedQueryResult result = CharacterDatabase.Query(stmt); + + if (result) + return (*result)[0].GetUInt8(); + else + return 0; +} + +uint8 World::GetReqGuildLevelForBonus(uint8 guildBonus) +{ + switch (guildBonus) + { + case GUILD_BONUS_GOLD_1: + return m_req_guildLevel_gold_1; + break; + case GUILD_BONUS_GOLD_2: + return m_req_guildLevel_gold_2; + break; + case GUILD_BONUS_EHRE_1: + return m_req_guildLevel_honor_1; + break; + case GUILD_BONUS_EHRE_2: + return m_req_guildLevel_honor_2; + break; + case GUILD_BONUS_REITTEMPO_1: + return m_req_guildLevel_reittempo_1; + break; + case GUILD_BONUS_REITTEMPO_2: + return m_req_guildLevel_reittempo_2; + break; + case GUILD_BONUS_REPERATUR_1: + return m_req_guildLevel_reperatur_1; + break; + case GUILD_BONUS_REPERATUR_2: + return m_req_guildLevel_reperatur_2; + break; + case GUILD_BONUS_RUF_1: + return m_req_guildLevel_reputation_1; + break; + case GUILD_BONUS_RUF_2: + return m_req_guildLevel_reputation_2; + break; + case GUILD_BONUS_SCHNELLER_GEIST: + return m_req_guildLevel_schneller_geist; + break; + case GUILD_BONUS_XP_1: + return m_req_guildLevel_xp_1; + break; + case GUILD_BONUS_XP_2: + return m_req_guildLevel_xp_2; + break; + default: + return 0; + break; + } +} +//Guild-Level-System [End] diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index efd7570..29508f9 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -741,6 +741,11 @@ class World void ReloadRBAC(); + //Guild-Level-System + void LoadGuildBonusInfo(); + uint8 GetReqGuildLevelForBonus(uint8 guildBonus); + uint8 SelectReqGuildLevelForBonus(uint8 guildBonus); + protected: void _UpdateGameTime(); // callback for UpdateRealmCharacters @@ -840,6 +845,21 @@ class World void ProcessQueryCallbacks(); ACE_Future_Set<PreparedQueryResult> m_realmCharCallbacks; + + //Guild-Level-System + uint8 m_req_guildLevel_gold_1; + uint8 m_req_guildLevel_xp_1; + uint8 m_req_guildLevel_schneller_geist; + uint8 m_req_guildLevel_reperatur_1; + uint8 m_req_guildLevel_gold_2; + uint8 m_req_guildLevel_reittempo_1; + uint8 m_req_guildLevel_reputation_1; + uint8 m_req_guildLevel_xp_2; + uint8 m_req_guildLevel_reperatur_2; + uint8 m_req_guildLevel_reittempo_2; + uint8 m_req_guildLevel_reputation_2; + uint8 m_req_guildLevel_honor_1; + uint8 m_req_guildLevel_honor_2; }; extern uint32 realmID; diff --git a/src/server/scripts/Commands/cs_guild.cpp b/src/server/scripts/Commands/cs_guild.cpp index 4627f6b..50645fd 100644 --- a/src/server/scripts/Commands/cs_guild.cpp +++ b/src/server/scripts/Commands/cs_guild.cpp @@ -38,12 +38,15 @@ public: { static ChatCommand guildCommandTable[] = { - { "create", rbac::RBAC_PERM_COMMAND_GUILD_CREATE, true, &HandleGuildCreateCommand, "", NULL }, - { "delete", rbac::RBAC_PERM_COMMAND_GUILD_DELETE, true, &HandleGuildDeleteCommand, "", NULL }, - { "invite", rbac::RBAC_PERM_COMMAND_GUILD_INVITE, true, &HandleGuildInviteCommand, "", NULL }, - { "uninvite", rbac::RBAC_PERM_COMMAND_GUILD_UNINVITE, true, &HandleGuildUninviteCommand, "", NULL }, - { "rank", rbac::RBAC_PERM_COMMAND_GUILD_RANK, true, &HandleGuildRankCommand, "", NULL }, - { "rename", rbac::RBAC_PERM_COMMAND_GUILD_RENAME, true, &HandleGuildRenameCommand, "", NULL }, + { "create", rbac::RBAC_PERM_COMMAND_GUILD_CREATE, true, &HandleGuildCreateCommand, "", NULL }, + { "delete", rbac::RBAC_PERM_COMMAND_GUILD_DELETE, true, &HandleGuildDeleteCommand, "", NULL }, + { "invite", rbac::RBAC_PERM_COMMAND_GUILD_INVITE, true, &HandleGuildInviteCommand, "", NULL }, + { "uninvite", rbac::RBAC_PERM_COMMAND_GUILD_UNINVITE, true, &HandleGuildUninviteCommand, "", NULL }, + { "rank", rbac::RBAC_PERM_COMMAND_GUILD_RANK, true, &HandleGuildRankCommand, "", NULL }, + { "rename", rbac::RBAC_PERM_COMMAND_GUILD_RENAME, true, &HandleGuildRenameCommand, "", NULL }, + { "info", rbac::RBAC_PERM_COMMAND_GUILD_INFO, true, &HandleGuildInfoCommand, "", NULL }, + { "setlevel", rbac::RBAC_PERM_COMMAND_GUILD_SET_LEVEL, true, &HandleGuildSetLevelCommand, "", NULL }, + { "givexp", rbac::RBAC_PERM_COMMAND_GUILD_GIVE_XP, true, &HandleGuildGiveXpCommand, "", NULL }, { NULL, 0, false, NULL, "", NULL } }; static ChatCommand commandTable[] = @@ -243,6 +246,124 @@ public: handler->PSendSysMessage(LANG_GUILD_RENAME_DONE, oldGuildStr, newGuildStr); return true; } + + //Guild-Level-System + static bool HandleGuildInfoCommand(ChatHandler* handler, char const* /*args*/) + { + Guild* guild = handler->GetSession()->GetPlayer()->GetGuild(); + + if (guild) + { + handler->PSendSysMessage(LANG_GUILDINFO_LEVEL, guild->GetLevel()); + + if (guild->GetLevel() >= GUILD_MAX_LEVEL) + handler->PSendSysMessage(LANG_GUILDINFO_XP_INFO, 0, 0); + else + handler->PSendSysMessage(LANG_GUILDINFO_XP_INFO, guild->GetCurrentXP(), guild->GetXpForNextLevel()); + + handler->PSendSysMessage("Aktive Gildenboni:"); + + if (guild->GetLevel() > 0) + { + if (guild->HasLevelForBonus(GUILD_BONUS_GOLD_1)) + handler->PSendSysMessage("Goldbonus [Rang 1]"); + if (guild->HasLevelForBonus(GUILD_BONUS_XP_1)) + handler->PSendSysMessage("Erfahrungszuwachs [Rang 1]"); + if (guild->HasLevelForBonus(GUILD_BONUS_SCHNELLER_GEIST)) + handler->PSendSysMessage("Schneller Geist"); + if (guild->HasLevelForBonus(GUILD_BONUS_REPERATUR_1)) + handler->PSendSysMessage("G\303\274nstige Reperatur [Rang 1]"); + if (guild->HasLevelForBonus(GUILD_BONUS_GOLD_2)) + handler->PSendSysMessage("Goldbonus [Rang 2]"); + if (guild->HasLevelForBonus(GUILD_BONUS_REITTEMPO_1)) + handler->PSendSysMessage("Reittempo [Rang 1]"); + if (guild->HasLevelForBonus(GUILD_BONUS_RUF_1)) + handler->PSendSysMessage("Rufzuwachs [Rang 1]"); + if (guild->HasLevelForBonus(GUILD_BONUS_XP_2)) + handler->PSendSysMessage("Erfahrungszuwachs [Rang 2]"); + if (guild->HasLevelForBonus(GUILD_BONUS_REPERATUR_2)) + handler->PSendSysMessage("G\303\274nstige Reperatur [Rang 2]"); + if (guild->HasLevelForBonus(GUILD_BONUS_REITTEMPO_2)) + handler->PSendSysMessage("Reittempo [Rang 2]"); + if (guild->HasLevelForBonus(GUILD_BONUS_REPERATUR_2)) + handler->PSendSysMessage("Rufzuwachs [Rang 2]"); + if (guild->HasLevelForBonus(GUILD_BONUS_EHRE_1)) + handler->PSendSysMessage("Ehrezuwachs [Rang 1]"); + if (guild->HasLevelForBonus(GUILD_BONUS_EHRE_2)) + handler->PSendSysMessage("Ehrezuwachs [Rang 2]"); + } + else + handler->PSendSysMessage("Keine"); + + return true; + } + else + { + handler->PSendSysMessage("Du bist in keiner Gilde."); + return false; + } + } + + static bool HandleGuildSetLevelCommand(ChatHandler* handler, char const* args) + { + if (!*args) + return false; + + char* guildNameStr; + char* levelStr; + handler->extractOptFirstArg((char*)args, &guildNameStr, &levelStr); + + if (!levelStr) + return false; + + uint8 newLevel = uint8(atoi(levelStr)); + Guild* guild = sGuildMgr->GetGuildByName(guildNameStr); + + if (guild) + { + if (newLevel > GUILD_MAX_LEVEL) + { + handler->PSendSysMessage("Das angegebene Level ist zu hoch."); + return false; + } + else + guild->SetLevel(newLevel, true); + } + else + { + handler->PSendSysMessage("Es konnte keine Gilde mit den Namen [%s] gefunden werden.", guildNameStr); + return false; + } + + return true; + } + + static bool HandleGuildGiveXpCommand(ChatHandler* handler, char const* args) + { + if (!*args) + return false; + + char* guildNameStr; + char* xpStr; + handler->extractOptFirstArg((char*)args, &guildNameStr, &xpStr); + + if (!xpStr) + return false; + + uint32 value = uint32(atoi(xpStr)); + + Guild* guild = sGuildMgr->GetGuildByName(guildNameStr); + + if (guild) + guild->GiveXp(value); + else + { + handler->PSendSysMessage("There was no guild with the name [%s] be found.", guildNameStr); + return false; + } + + return true; + } }; void AddSC_guild_commandscript() diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp index 24e61e7..8f50914 100644 --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp @@ -600,4 +600,14 @@ void CharacterDatabaseConnection::DoPrepareStatements() PrepareStatement(CHAR_UPD_CHAR_PET_SLOT_BY_ID, "UPDATE character_pet SET slot = ? WHERE owner = ? AND id = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_CHAR_PET_BY_ID, "DELETE FROM character_pet WHERE id = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_CHAR_PET_BY_SLOT, "DELETE FROM character_pet WHERE owner = ? AND (slot = ? OR slot > ?)", CONNECTION_ASYNC); + + //Guild-Level-System + //Load + PrepareStatement(CHAR_SEL_GUILD_BONUS_INFO, "SELECT RequiredGuildLevel FROM guild_bonus_config WHERE BonusId = ?", CONNECTION_SYNCH); + PrepareStatement(CHAR_SEL_GUILD_LEVEL_INFO, "SELECT xp, level FROM guild WHERE guildid = ?", CONNECTION_SYNCH); + PrepareStatement(CHAR_SEL_GUILD_XP_FOR_NEXT_LEVEL, "SELECT xp_for_next_level FROM guild_xp_for_next_level WHERE level = ?", CONNECTION_SYNCH); + + //Save + PrepareStatement(CHAR_UPD_GUILD_LEVEL, "UPDATE guild SET level = ? WHERE guildid = ?", CONNECTION_ASYNC); + PrepareStatement(CHAR_UPD_GUILD_XP, "UPDATE guild SET xp = (xp + ?) WHERE guildid = ?", CONNECTION_ASYNC); } diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h index 98d7fe2..816fe14 100644 --- a/src/server/shared/Database/Implementation/CharacterDatabase.h +++ b/src/server/shared/Database/Implementation/CharacterDatabase.h @@ -534,6 +534,13 @@ enum CharacterDatabaseStatements CHAR_DEL_ITEMCONTAINER_MONEY, CHAR_INS_ITEMCONTAINER_MONEY, + //Guild-Level-System + CHAR_SEL_GUILD_BONUS_INFO, + CHAR_SEL_GUILD_LEVEL_INFO, + CHAR_SEL_GUILD_XP_FOR_NEXT_LEVEL, + CHAR_UPD_GUILD_LEVEL, + CHAR_UPD_GUILD_XP, + MAX_CHARACTERDATABASE_STATEMENTS }; -- 1.7.10.4
Optional Paste Settings
Category:
None
Cryptocurrency
Cybersecurity
Fixit
Food
Gaming
Haiku
Help
History
Housing
Jokes
Legal
Money
Movies
Music
Pets
Photo
Science
Software
Source Code
Spirit
Sports
Travel
TV
Writing
Tags:
Syntax Highlighting:
None
Bash
C
C#
C++
CSS
HTML
JSON
Java
JavaScript
Lua
Markdown (PRO members only)
Objective C
PHP
Perl
Python
Ruby
Swift
4CS
6502 ACME Cross Assembler
6502 Kick Assembler
6502 TASM/64TASS
ABAP
AIMMS
ALGOL 68
APT Sources
ARM
ASM (NASM)
ASP
ActionScript
ActionScript 3
Ada
Apache Log
AppleScript
Arduino
Asymptote
AutoIt
Autohotkey
Avisynth
Awk
BASCOM AVR
BNF
BOO
Bash
Basic4GL
Batch
BibTeX
Blitz Basic
Blitz3D
BlitzMax
BrainFuck
C
C (WinAPI)
C Intermediate Language
C for Macs
C#
C++
C++ (WinAPI)
C++ (with Qt extensions)
C: Loadrunner
CAD DCL
CAD Lisp
CFDG
CMake
COBOL
CSS
Ceylon
ChaiScript
Chapel
Clojure
Clone C
Clone C++
CoffeeScript
ColdFusion
Cuesheet
D
DCL
DCPU-16
DCS
DIV
DOT
Dart
Delphi
Delphi Prism (Oxygene)
Diff
E
ECMAScript
EPC
Easytrieve
Eiffel
Email
Erlang
Euphoria
F#
FO Language
Falcon
Filemaker
Formula One
Fortran
FreeBasic
FreeSWITCH
GAMBAS
GDB
GDScript
Game Maker
Genero
Genie
GetText
Go
Godot GLSL
Groovy
GwBasic
HQ9 Plus
HTML
HTML 5
Haskell
Haxe
HicEst
IDL
INI file
INTERCAL
IO
ISPF Panel Definition
Icon
Inno Script
J
JCL
JSON
Java
Java 5
JavaScript
Julia
KSP (Kontakt Script)
KiXtart
Kotlin
LDIF
LLVM
LOL Code
LScript
Latex
Liberty BASIC
Linden Scripting
Lisp
Loco Basic
Logtalk
Lotus Formulas
Lotus Script
Lua
M68000 Assembler
MIX Assembler
MK-61/52
MPASM
MXML
MagikSF
Make
MapBasic
Markdown (PRO members only)
MatLab
Mercury
MetaPost
Modula 2
Modula 3
Motorola 68000 HiSoft Dev
MySQL
Nagios
NetRexx
Nginx
Nim
NullSoft Installer
OCaml
OCaml Brief
Oberon 2
Objeck Programming Langua
Objective C
Octave
Open Object Rexx
OpenBSD PACKET FILTER
OpenGL Shading
Openoffice BASIC
Oracle 11
Oracle 8
Oz
PARI/GP
PCRE
PHP
PHP Brief
PL/I
PL/SQL
POV-Ray
ParaSail
Pascal
Pawn
Per
Perl
Perl 6
Phix
Pic 16
Pike
Pixel Bender
PostScript
PostgreSQL
PowerBuilder
PowerShell
ProFTPd
Progress
Prolog
Properties
ProvideX
Puppet
PureBasic
PyCon
Python
Python for S60
QBasic
QML
R
RBScript
REBOL
REG
RPM Spec
Racket
Rails
Rexx
Robots
Roff Manpage
Ruby
Ruby Gnuplot
Rust
SAS
SCL
SPARK
SPARQL
SQF
SQL
SSH Config
Scala
Scheme
Scilab
SdlBasic
Smalltalk
Smarty
StandardML
StoneScript
SuperCollider
Swift
SystemVerilog
T-SQL
TCL
TeXgraph
Tera Term
TypeScript
TypoScript
UPC
Unicon
UnrealScript
Urbi
VB.NET
VBScript
VHDL
VIM
Vala
Vedit
VeriLog
Visual Pro Log
VisualBasic
VisualFoxPro
WHOIS
WhiteSpace
Winbatch
XBasic
XML
XPP
Xojo
Xorg Config
YAML
YARA
Z80 Assembler
ZXBasic
autoconf
jQuery
mIRC
newLISP
q/kdb+
thinBasic
Paste Expiration:
Never
Burn after read
10 Minutes
1 Hour
1 Day
1 Week
2 Weeks
1 Month
6 Months
1 Year
Paste Exposure:
Public
Unlisted
Private
Folder:
(members only)
Password
NEW
Enabled
Disabled
Burn after read
NEW
Paste Name / Title:
Create New Paste
Hello
Guest
Sign Up
or
Login
Sign in with Facebook
Sign in with Twitter
Sign in with Google
You are currently not logged in, this means you can not edit or delete anything you paste.
Sign Up
or
Login
Public Pastes
Untitled
1 day ago | 0.68 KB
The Road Not Taken
2 days ago | 0.79 KB
OG OLDHAM CODE
4 days ago | 27.75 KB
remove current bid and bid now button from au...
PHP | 4 days ago | 0.80 KB
AppUseUA
JSON | 4 days ago | 0.27 KB
Notices blood
5 days ago | 0.81 KB
discord chat view
Python | 5 days ago | 9.23 KB
systemd-socket-test (AI + Human)
Python | 6 days ago | 9.34 KB
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the
Cookies Policy
.
OK, I Understand
Not a member of Pastebin yet?
Sign Up
, it unlocks many cool features!