ctgwglzc 发表于 2009-8-13 14:36:50

彻底一号一角色的方法(修改EB)

彻底的取消选择角色功能,实现安全的一号一角色

原始代码0055B6E3   /0F85 C1010000 JNZ   0055B8AA
0055B6E9   . |A1 B8898100   MOV   EAX, DWORD PTR DS:修改为0055B6E3   . /E9 C2010000   JMP   0055B8AA
0055B6E8   |90            NOP
0055B6E9   . |A1 B8898100   MOV   EAX, DWORD PTR DS:

wang9898 发表于 2009-8-13 23:54:10

好东西,不过,通过在数据库那边设置也是一样吧

28085279 发表于 2009-8-14 08:25:43

数据库设置是可以,但是新建角色其实还是存在的,只是不显示

xz7323746 发表于 2009-9-12 13:32:10

数据库那里改了还是可以建的。不信你建好一个角色然后再建一个。。你再申请个号起第二个角色的名字肯定提示已经存在角色名所以说还是可以建的。。

v123 发表于 2009-9-29 23:37:20

在这里的存储CREATE_NEW_CHAR也可以,
/****** Object:Stored Procedure dbo.CREATE_NEW_CHAR    Script Date: 6/6/2006 6:03:33 PM ******/


/****** 개체: 저장 프로시저 dbo.CREATE_NEW_CHAR    스크립트 날짜: 2002-11-14 오전 11:18:03 ******/


-- scripted by samma
-- 2002.01.17
-- 2003.02.06 sungyong

CREATE PROCEDURE CREATE_NEW_CHAR

@nRet                smallint OUTPUT,
@AccountID         char(21),
@index                 tinyint,
@CharID        char(21),
@Race                 tinyint,
@Class         smallint,
@Hair                 tinyint,
@Face                 tinyint,
@Str                 tinyint,
@Sta                 tinyint,
@Dex                 tinyint,
@Intel                 tinyint,
@Cha                 tinyint

AS

DECLARE @Row tinyint, @Nation tinyint, @Zone tinyint, @PosX int, @PosZ int
        SET @Row = 0        SET @Nation = 0SET @Zone = 0SET @PosX = 0 SET @PosZ = 0

        SELECT @Nation = bNation, @Row = bCharNum FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID
       
        IF @Row >= 1        SET @nRet =1
       
        IF @Nation = 1 AND @Race > 10        SET @nRet = 2
        ELSE IF @Nation = 2 AND @Race < 10        SET @nRet = 2
        ELSE IF @Nation <>1 AND @Nation <> 2        SET @nRet = 2

        IF @nRet > 0
                RETURN
       
        SELECT @Row = COUNT(*) FROM USERDATA WHERE strUserId = @CharID
        IF @Row > 0
        BEGIN
                SET @nRet =1
                RETURN
        END

        --SET @Zone = @Nation
        SET @Zone=21
        SELECT @PosX = InitX, @PosZ = InitZFROM ZONE_INFO WHERE ZoneNo = @Zone
       

BEGIN TRAN       
        IF @index = 0
                UPDATE ACCOUNT_CHAR SET strCharID1 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
        ELSE
        BEGIN
        ROLLBACK TRAN
        SET @nRet=4
        RETURN
        END
        --IF @index = 1
                --UPDATE ACCOUNT_CHAR SET strCharID2 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
        --ELSE IF @index = 2
                --UPDATE ACCOUNT_CHAR SET strCharID3 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
        --ELSE IF @index = 3
                --UPDATE ACCOUNT_CHAR SET strCharID4 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
        --ELSE IF @index = 4
                --UPDATE ACCOUNT_CHAR SET strCharID5 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
       

                INSERT INTO USERDATA (strUserId, Nation, Race, Class, HairColor, Face, Strong, Sta, Dex, Intel, Cha, Zone, PX, PZ ,loyalty,gold,exp)
        VALUES       (@CharID, @Nation, @Race, @Class, @Hair, @Face, @Str, @Sta, @Dex, @Intel, @Cha, @Zone, @PosX, @PosZ,100,100000,1200000)        
       
        IF @@ERROR <> 0
        BEGIN       
                ROLLBACK TRAN
                SET @nRet =4
                RETURN
        END
       
COMMIT TRAN
SET @nRet =0
GO

duwanli2000 发表于 2009-11-28 21:00:09

toto说话总是这样,我们新人不明白的呀!!到底要怎么做呀

dxd123456 发表于 2009-12-13 09:55:54

顶!!!!学习!

oncewill 发表于 2010-2-7 16:11:08

收藏收藏。。。继续学习

458047596 发表于 2010-2-8 15:07:08

没什么意思啊 一号一个人物 弄个刷钱的法师号交易期来都困难

parsalian 发表于 2010-2-9 16:46:50

页: [1] 2 3
查看完整版本: 彻底一号一角色的方法(修改EB)