Vào DB MUOnline >>> Stored Procedure >> Click WZ_CreateCharacter và thay thế bằng đoạn sau .
PHP Code:
CREATE Procedure [dbo].[WZ_CreateCharacter]
@AccountID varchar(10),
@Name varchar(10),
@Class tinyint
AS
Begin
SET NOCOUNT ON
SET XACT_ABORT ON
DECLARE @Result tinyint
SET @Result = 0x00
If EXISTS ( SELECT Name FROM Character WHERE LOWER(Name) = LOWER(@Name) )
begin
SET @Result = 0x01
GOTO ProcEnd
end
If EXISTS ( SELECT Name FROM BotPet WHERE Name = @Name )
begin
SET @Result = 0x01
GOTO ProcEnd
end
BEGIN TRAN
If NOT EXISTS ( SELECT Id FROM AccountCharacter WHERE Id = @AccountID )
begin
INSERT INTO dbo.AccountCharacter(Id, GameID1, GameID2, GameID3, GameID4, GameID5, GameIDC)
VALUES(@AccountID, @Name, NULL, NULL, NULL, NULL, NULL)
SET @Result = @@Error
end
else
begin
---@TheHeCuaBan : Khai bao
Declare @TheHeCuaBan nvarchar(50),
---@server : Khia bao Server
@server varchar(10)
--- @bangxephang : row ( nghia la cot chua the he cua ban )
--- RowChuaTheHe : thay = row cua ban
select @bangxephang=RowChuaTheHe from memb_info where memb___id=@Accountid
select @server=servername from memb_stat where memb___id=@Accountid
--- So 1 la ten the he cua ban khi dang khi no se ghi vao table
if(@bangxephang='1')
begin
--- TenServerTheHe1 : chinh la ten Server The He thu 1
--- Dai khai cho nay la : Neu la` the he 1 ma vao cac khac Server khac ten TenServerTheHe1 thi se khong lap duoc nhan vat
if(@server!='TenServerTheHe1-1' and @server!='TenServerTheHe1-2' and @server!='TenServerTheHe1-3' and @server!='TenServerTheHe1-4' and @server!='TenServerTheHe1-5')
begin
SET @Result = 0x03
GOTO TranProcEnd
end
end
--- Dai khai cho nay la : Neu ma` khac the he 1 vao Server TenServerTheHe1 thi se khong lap duoc nhan vat
if(@server='TenServerTheHe1-1' or @server='TenServerTheHe1-2' or @server='TenServerTheHe1-3' or @server='TenServerTheHe1-4' or @server='TenServerTheHe1-5')
begin
if(@bangxephang!='1')
begin
SET @Result = 0x03
GOTO TranProcEnd
end
end
if(@bangxephang='2')
begin
--- TenServerTheHe2 : chinh la ten Server The He thu 2
--- Dai khai cho nay la : Neu la` the he 2 ma vao cac Server khac ten TenServerTheHe2 thi se khong lap duoc nhan vat
if(@server!='TenServerTheHe2-1' and @server!='TenServerTheHe2-2' and @server!='TenServerTheHe2-3' and @server!='TenServerTheHe2-4' and @server!='TenServerTheHe2-5')
begin
SET @Result = 0x03
GOTO TranProcEnd
end
end
--- Dai khai cho nay la : Neu ma` khac the he 2 vao Server co ten TenServerTheHe2 thi se khong lap duoc nhan vat
if(@server='TenServerTheHe2-1' or @server='TenServerTheHe2-2' or @server='TenServerTheHe2-3' or @server='TenServerTheHe2-4' or @server='TenServerTheHe2-5')
begin
if(@bangxephang!='1')
begin
SET @Result = 0x03
GOTO TranProcEnd
end
end
if(@bangxephang='3')
begin
--- TenServerTheHe3 : chinh la ten Server The He thu 3
--- Dai khai cho nay la : Neu la` the he 3 ma vao cac Server khac ten TenServerTheHe3 thi se khong lap duoc nhan vat
if(@server!='TenServerTheHe3-1' and @server!='TenServerTheHe3-2' and @server!='TenServerTheHe3-3' and @server!='TenServerTheHe3-4' and @server!='TenServerTheHe3-5')
begin
SET @Result = 0x03
GOTO TranProcEnd
end
end
--- Dai khai cho nay la : Neu ma` khac the he 3 vao Server TenServerTheHe3 thi se khong lap duoc nhan vat
if(@server='TenServerTheHe3-1' or @server='TenServerTheHe3-2' or @server='TenServerTheHe3-3' or @server='TenServerTheHe3-4' or @server='TenServerTheHe3-5')
begin
if(@bangxephang!='1')
begin
SET @Result = 0x03
GOTO TranProcEnd
end
end
Declare @g1 varchar(10), @g2 varchar(10), @g3 varchar(10), @g4 varchar(10), @g5 varchar(10)
SELECT @g1=GameID1, @g2=GameID2, @g3=GameID3, @g4=GameID4, @g5=GameID5 FROM dbo.AccountCharacter Where Id = @AccountID
if( ( @g1 Is NULL) OR (Len(@g1) = 0))
begin
UPDATE AccountCharacter SET GameID1 = @Name
WHERE Id = @AccountID
SET @Result = @@Error
end
else if( @g2 Is NULL OR Len(@g2) = 0)
begin
UPDATE AccountCharacter SET GameID2 = @Name
WHERE Id = @AccountID
SET @Result = @@Error
end
else if( @g3 Is NULL OR Len(@g3) = 0)
begin
UPDATE AccountCharacter SET GameID3 = @Name
WHERE Id = @AccountID
SET @Result = @@Error
end
else if( @g4 Is NULL OR Len(@g4) = 0)
begin
UPDATE AccountCharacter SET GameID4 = @Name
WHERE Id = @AccountID
SET @Result = @@Error
end
else if( @g5 Is NULL OR Len(@g5) = 0)
begin
UPDATE AccountCharacter SET GameID5 = @Name
WHERE Id = @AccountID
SET @Result = @@Error
end
else
begin
SET @Result = 0x03
GOTO TranProcEnd
end
end
if( @Result <> 0 )
begin
GOTO TranProcEnd
end
else
begin
INSERT INTO dbo.Character(AccountID, Name, cLevel, LevelUpPoint, Class, Strength, Dexterity, Vitality, Energy, Inventory,MagicList,
Life, MaxLife, Mana, MaxMana, MapNumber, MapPosX, MapPosY, MDate, LDate, Quest, DbVersion, Leadership,money,reset )
SELECT @AccountID As AccountID, @Name As Name, 300, 2000, @Class As Class,
Strength, Dexterity, Vitality, Energy, Inventory,MagicList, Life, MaxLife, Mana, MaxMana, MapNumber, MapPosX, MapPosY,
getdate() As MDate, getdate() As LDate, Quest, DbVersion, Leadership,20000000,5
FROM DefaultClassType WHERE Class = @Class
SET @Result = @@Error
end
TranProcEnd: -- GOTO
IF ( @Result <> 0 )
ROLLBACK TRAN
ELSE
COMMIT TRAN
ProcEnd:
SET NOCOUNT OFF
SET XACT_ABORT OFF
SELECT
CASE @Result
WHEN 0x00 THEN 0x01
WHEN 0x01 THEN 0x00
WHEN 0x03 THEN 0x03
ELSE 0x02
END AS Result
End
GO
Sau khi thay thế song bạn chỉ cần làm 1 TRIGGER đơn gian đó là Block sai thế hệ ( và không cần phải thêm tên nhân vật gì nữa đâu vì khi đó nó vào nhầm sẽ không lập đc nhân vật đâu
To all : Tôi đã chỉ dẫn chi tiết tại đó còn làm thế nào thì các bạn tự tìm hiểu nếu ko biết ( còn tôi dám cá nếu đã làm Admin thì cái trên chắc ko lạ đâu nhỉ