/* ============================================
Castle Siege Rewards - Optimized
============================================ */
DECLARE @OwnerGuild VARCHAR(8)
-- Get castle owner guild
SELECT @OwnerGuild = OWNER_GUILD
FROM MuCastle_DATA
/* ============================================
Reward OWNER Guild Members
============================================ */
UPDATE C
SET C.WCoinC = C.WCoinC + 10
FROM CashShopData C
INNER JOIN Character CH ON C.AccountID = CH.AccountID
INNER JOIN GuildMember GM ON CH.Name = GM.Name
WHERE GM.G_Name = @OwnerGuild
/* ============================================
Reward ALLIED Guild Members
============================================ */
UPDATE C
SET C.WCoinC = C.WCoinC + 10
FROM CashShopData C
INNER JOIN Character CH ON C.AccountID = CH.AccountID
INNER JOIN GuildMember GM ON CH.Name = GM.Name
INNER JOIN Guild G ON GM.G_Name = G.G_Name
WHERE G.G_Union =
(
SELECT G_Union
FROM Guild
WHERE G_Name = @OwnerGuild
)
AND GM.G_Name <> @OwnerGuildUPDATE C
SET C.WCoinC = C.WCoinC + 500
FROM CashShopData C
INNER JOIN MEMB_INFO M ON C.AccountID = M.memb___id
INNER JOIN Guild G ON M.memb_name = G.G_Master
WHERE G.G_Name = @OwnerGuild
USE MuOnline
GO
ALTER PROCEDURE dbo.CommandReset
@CharName VARCHAR(10),
@Msg VARCHAR(500) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Level INT
DECLARE @AccountID VARCHAR(10)
DECLARE @LevelUpReward INT = 500
DECLARE @WCoinReward INT = 10
DECLARE @GoblinReward INT = 5
-- Get character info
SELECT
@Level = cLevel,
@AccountID = AccountID
FROM Character
WHERE Name = @CharName
-- Level check
IF (@Level < 400)
BEGIN
SET @Msg = '❌ You need level 400 to reset.'
RETURN
END
-- ==========================
-- RESET CHARACTER
-- ==========================
UPDATE Character
SET
cLevel = 1,
Experience = 0,
ResetCount = ResetCount + 1,
LevelUpPoint = LevelUpPoint + @LevelUpReward,
Money = 0,
MapNumber = 0,
MapPosX = 125,
MapPosY = 125
WHERE Name = @CharName
SET @Msg = '✅ You received ' + CAST(@LevelUpReward AS VARCHAR) + ' LevelUpPoints! '
-- ==========================
-- WCOIN REWARD
-- ==========================
UPDATE CashShopData
SET WCoinC = WCoinC + @WCoinReward
WHERE AccountID = @AccountID
SET @Msg = @Msg + '✅ You received ' + CAST(@WCoinReward AS VARCHAR) + ' WCoinC! '
-- ==========================
-- GOBLIN POINT REWARD
-- ==========================
UPDATE CashShopData
SET GoblinPoint = GoblinPoint + @GoblinReward
WHERE AccountID = @AccountID
SET @Msg = @Msg + '✅ You received ' + CAST(@GoblinReward AS VARCHAR) + ' Goblin Points! '
END
GO
DECLARE @Message VARCHAR(500)
EXEC dbo.CommandReset 'PlayerName', @Message OUTPUT
-- GameServer will display @Message to the playerPage created in 0.050 seconds with 12 queries.