增加(__sm_公会战奖励表),用着领取公会战每日奖励用途
This commit is contained in:
parent
1fb4cd7404
commit
591d80a04c
@ -118,7 +118,7 @@ void GuildWarManager::LoadConfiguration()
|
||||
);
|
||||
|
||||
// 加载当前公会战状态
|
||||
QueryResult result = CharacterDatabase.Query("SELECT guild1,guild2,data FROM _工会战记录表 WHERE guid = 1");
|
||||
QueryResult result = CharacterDatabase.Query("SELECT guild1,guild2,data FROM __sm_公会战记录表 WHERE guid = 1");
|
||||
if (result)
|
||||
{
|
||||
Field* fields = result->Fetch();
|
||||
@ -128,7 +128,7 @@ void GuildWarManager::LoadConfiguration()
|
||||
}
|
||||
else
|
||||
{
|
||||
CharacterDatabase.Execute("INSERT INTO _工会战记录表 (guid) VALUES (1)");
|
||||
CharacterDatabase.Execute("INSERT INTO __sm_公会战记录表 (guid) VALUES (1)");
|
||||
}
|
||||
}
|
||||
|
||||
@ -413,7 +413,7 @@ void GuildWarManager::StopWarEvent(uint16 eventId)
|
||||
m_remainingTime = sSwitch->GetValue(GUILD_WAR_OCCUPATION_TIME);
|
||||
|
||||
// 更新数据库
|
||||
CharacterDatabase.Execute("UPDATE _工会战记录表 SET guild1 = {}, guild2 = {}, data = {} WHERE guid = 1",
|
||||
CharacterDatabase.Execute("UPDATE __sm_公会战记录表 SET guild1 = {}, guild2 = {}, data = {} WHERE guid = 1",
|
||||
m_defenderGuildId, m_attackerGuildId, time(nullptr));
|
||||
}
|
||||
|
||||
|
||||
@ -140,8 +140,7 @@ void GuildWarNPC::ShowWarApplicationUI(Player* player, Creature* creature)
|
||||
"|TInterface\\RAIDFRAME\\ReadyCheck-Ready.blp:16|t" :
|
||||
"|TInterface\\RAIDFRAME\\ReadyCheck-NotReady.blp:16|t";
|
||||
|
||||
itemInfo = "|cFF0000CC申请攻城需要物品:|r\n|TInterface\\Icons\\" +
|
||||
iconName + ".blp:30|t" + requiredItem->Name1 + " x1 " + statusIcon;
|
||||
itemInfo = "|cFF0000CC申请攻城需要物品:|r\n|TInterface\\Icons\\" + iconName + ".blp:30|t" + requiredItem->Name1 + " x1 " + statusIcon;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -223,7 +222,7 @@ void GuildWarNPC::HandleWarApplication(Player* player, Creature* creature)
|
||||
sWorldSessionMgr->SendServerMessage(SERVER_MSG_STRING, announcement);
|
||||
|
||||
// 更新数据库
|
||||
CharacterDatabase.Execute("UPDATE _工会战记录表 SET guild1 = {}, guild2 = {}, data = {} WHERE guid = 1",
|
||||
CharacterDatabase.Execute("UPDATE __sm_公会战记录表 SET guild1 = {}, guild2 = {}, data = {} WHERE guid = 1",
|
||||
sGuildWarManager->GetDefenderGuildId(),
|
||||
sGuildWarManager->GetAttackerGuildId(),
|
||||
time(nullptr));
|
||||
@ -259,7 +258,7 @@ void GuildWarNPC::HandleWarApplication(Player* player, Creature* creature)
|
||||
}
|
||||
|
||||
// 更新数据库
|
||||
CharacterDatabase.Execute("UPDATE _工会战记录表 SET guild1 = {}, guild2 = {} WHERE guid = 1",
|
||||
CharacterDatabase.Execute("UPDATE __sm_公会战记录表 SET guild1 = {}, guild2 = {} WHERE guid = 1",
|
||||
sGuildWarManager->GetDefenderGuildId(),
|
||||
sGuildWarManager->GetAttackerGuildId());
|
||||
}
|
||||
@ -300,32 +299,67 @@ void GuildWarNPC::HandleDailyReward(Player* player, Creature* creature)
|
||||
return;
|
||||
}
|
||||
|
||||
// 使用现有的成员变量:inguildtime 和 lqguildtime
|
||||
if (!playerData->inguildtime || playerData->inguildtime >= sGuildWarManager->GetDefenderGuildId())
|
||||
// 检查玩家是否在公会战开始前就已经加入公会
|
||||
QueryResult joinTimeResult = CharacterDatabase.Query(Acore::StringFormat(
|
||||
"SELECT TimeStamp FROM guild_eventlog WHERE guildid = {} AND PlayerGuid1 = {} AND EventType = 2 ORDER BY TimeStamp ASC LIMIT 1",
|
||||
player->GetGuildId(),
|
||||
player->GetGUID().GetCounter()
|
||||
));
|
||||
|
||||
if (!joinTimeResult)
|
||||
{
|
||||
ChatHandler(player->GetSession()).PSendSysMessage("无法获取入会时间信息");
|
||||
ShowDailyRewardUI(player, creature);
|
||||
return;
|
||||
}
|
||||
|
||||
uint32 joinTime = joinTimeResult->Fetch()[0].Get<uint32>();
|
||||
uint32 WarStartTime = sGuildWarManager->GetWarStartTime();
|
||||
if (joinTime >= WarStartTime)
|
||||
{
|
||||
ChatHandler(player->GetSession()).PSendSysMessage("公会战之前加入公会的玩家才可以领取");
|
||||
ShowDailyRewardUI(player, creature);
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查冷却时间
|
||||
// 检查冷却时间 - 查询新的公会奖励记录表
|
||||
time_t now = time(nullptr);
|
||||
int32 remainingTime = playerData->lqguildtime + sSwitch->GetValue(GUILD_WAR_DAILY_REWARD_COOLDOWN) - now;
|
||||
QueryResult rewardResult = CharacterDatabase.Query(Acore::StringFormat(
|
||||
"SELECT 最后领取时间 FROM __sm_公会战奖励表 WHERE 玩家GUID = {} AND 公会ID = {} AND 奖励类型 = 'DAILY_REWARD'",
|
||||
player->GetGUID().GetCounter(),
|
||||
player->GetGuildId()
|
||||
));
|
||||
|
||||
if (remainingTime > 0)
|
||||
if (rewardResult)
|
||||
{
|
||||
std::string timeString = secsToTimeString(remainingTime, true);
|
||||
ChatHandler(player->GetSession()).PSendSysMessage("还需要'{}'才可以领取奖励", timeString.c_str());
|
||||
ShowDailyRewardUI(player, creature);
|
||||
return;
|
||||
uint32 lastRewardTime = rewardResult->Fetch()[0].Get<uint32>();
|
||||
int32 remainingTime = lastRewardTime + sSwitch->GetValue(GUILD_WAR_DAILY_REWARD_COOLDOWN) - now;
|
||||
|
||||
if (remainingTime > 0)
|
||||
{
|
||||
std::string timeString = secsToTimeString(remainingTime, true);
|
||||
ChatHandler(player->GetSession()).PSendSysMessage("还需要'{}'才可以领取奖励", timeString.c_str());
|
||||
ShowDailyRewardUI(player, creature);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 发放奖励
|
||||
// 发放奖励
|
||||
const GuildWarZoneConfig* config = sGuildWarManager->FindZoneConfig(1);
|
||||
if (config && config->rewardItemId)
|
||||
{
|
||||
player->AddItem(config->rewardItemId, 1);
|
||||
playerData->lqguildtime = now; // 使用现有变量
|
||||
|
||||
// 更新或插入奖励记录
|
||||
CharacterDatabase.Execute(Acore::StringFormat(
|
||||
"INSERT INTO __sm_公会战奖励表 (玩家GUID, 公会ID, 奖励类型, 最后领取时间) VALUES ({}, {}, 'DAILY_REWARD', {}) "
|
||||
"ON DUPLICATE KEY UPDATE 最后领取时间 = {}",
|
||||
player->GetGUID().GetCounter(),
|
||||
player->GetGuildId(),
|
||||
now,
|
||||
now
|
||||
));
|
||||
|
||||
ChatHandler(player->GetSession()).PSendSysMessage("成功领取每日奖励!");
|
||||
}
|
||||
|
||||
@ -333,7 +367,7 @@ void GuildWarNPC::HandleDailyReward(Player* player, Creature* creature)
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// GuildWarPlayerScript 实现
|
||||
// GuildWarPlayerScript 实现
|
||||
// ========================================
|
||||
|
||||
void GuildWarPlayerScript::OnPlayerUpdateArea(Player* player, uint32 oldArea, uint32 newArea)
|
||||
@ -518,10 +552,10 @@ void GuildWarEventScript::OnStop(uint16 EventID)
|
||||
void GuildWarWorldScript::OnUpdate(uint32 diff)
|
||||
{
|
||||
updateCounter += diff;
|
||||
if (updateCounter >= 1000) // 1000毫秒 = 1秒
|
||||
if (updateCounter >= 1000) // 1000毫秒
|
||||
{
|
||||
sGuildWarManager->UpdateWarStatus(); // 调用工会战更新逻辑
|
||||
updateCounter = 0; // ✅ 在这里重置
|
||||
updateCounter = 0; // ✅ 重置
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user