设为首页收藏本站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
广告位招租中
广告位招租中
广告位招租中
广告位招租中
广告位招租中
广告位招租中
查看: 310|回复: 0

一个通区检测同名字并改名脚本

[复制链接]

536

主题

7

回帖

1万

积分

管理员

积分
10082
    发表于 2026-4-9 17:58:15 | 显示全部楼层 |阅读模式
    如果引擎没有使用通用数据库作为账号数据,而是使用DBC2000,这个脚本就可以用。
    如果引擎使用通用数据库,如MSSQL,MYSQL等S/C模式的数据库,可以让其他IP存取数据,就不需要这个脚本。
    这个脚本原本不需要,但是某些引擎在合区时,发现无限制仓库在遇到两个相同名字时,会丢失一个角色的仓库数据,这个脚本可以在玩家登录后检测名字是否与其他区的玩家重复,然后改名,来确保无限制仓库在合区时不出现BUG。如果引擎没这个问题,这个脚本无意义。
    检测内容分两个部分,一个首次登录时名字没有其他人使用,就记录下来名字账号和所有在区服,正常游戏。二是,检测到有相同名字后,且不是相同区服和相同ID时,就要弹出改名NPC,改名后正常游戏。
    [@名称检测]
    #IF
    NOT checknamelist ..\..\..\同名检测\游戏名称表.txt
    #ACT;
    addnamelist ..\..\..\同名检测\游戏名称表.txt
    AddTextListEx ..\..\..\同名检测\游戏ID号.txt <$USERNAME>:<$USERID>:<$SERVERNAME>:X
    BREAK
    #IF
    checknamelist ..\..\..\同名检测\游戏名称表.txt
    #ACT
    MOV S90 <$USERNAME>:<$USERID>:<$SERVERNAME>:X
    #IF
    checknamelist ..\..\..\同名检测\游戏名称表.txt
    NOT CheckTextList ..\..\..\同名检测\游戏ID号.txt <$STR(S90)>
    #ACT
    ;这里加锁定脚本,可以限制玩家移动来强制玩家改名============
    #SAY
    < >\   \
    游戏中名字应该是唯一,你的名字已经有人使用了<!!!!>\  \
    <输入修改名字/@@InPutString6>\\
    [@InPutString6]
    #IF
    NOT CheckTextList  ..\..\..\同名检测\游戏名称表.txt <$STR(S6)>
    #ACT
    ;角色名称<$username>修改为<$str(s6)>
    CHANGEHUMNAME <$username> <$str(s6)>
    addnamelist ..\..\..\同名检测\游戏名称表.txt
    AddTextListEx ..\..\..\同名检测\游戏ID号.txt <$USERNAME>:<$USERID>:<$SERVERNAME>:X
    ;添加解除锁定脚本,玩家正常游戏==============
    BREAK
    #IF
    CheckTextList  ..\..\..\同名检测\游戏名称表.txt <$STR(S6)>
    #SAY
    \  \
    【<$str(s6)>】已经被人使用了!!!!!\  \
    <重新输入新名字/@@InPutString6>\\
    [@ChangeHumNameOK]
    #act
    SENDMSG 0 【名字修改成功】
    CLOSE
    ;CLOSE可以关闭NPC
    [@ChangeHumNameFail]
    #act
    SENDMSG 0 名字修改失败
    ===改为单文件检测==================================
    [@名称检测]
    #IF
    NOT CheckTextList ..\..\..\同名检测\游戏ID号.txt <$USERNAME>
    #ACT
    AddTextListEx ..\..\..\同名检测\游戏ID号.txt <$USERNAME>:<$USERID>:<$SERVERNAME>:X
    BREAK
    #IF
    ;检测到有这个名字,但不是在同个服务区和ID时,要改名。如果有相同ID和区,就正常游戏
    CheckTextList ..\..\..\同名检测\游戏ID号.txt <$USERNAME>
    NOT CheckTextList ..\..\..\同名检测\游戏ID号.txt <$USERNAME>:<$USERID>:<$SERVERNAME>:X
    #ACT
    ;这里加锁定脚本,可以限制玩家移动来强制玩家改名============
    #SAY
    < >\   \
    游戏中名字应该是唯一,你的名字已经有人使用了<!!!!>\  \
    <输入修改名字/@@InPutString6>\\
    [@InPutString6]
    #IF
    NOT CheckTextList  ..\..\..\同名检测\游戏ID号.txt <$STR(S6)>
    #ACT
    ;角色名称<$username>修改为<$str(s6)>
    CHANGEHUMNAME <$username> <$str(s6)>
    AddTextListEx ..\..\..\同名检测\游戏ID号.txt <$USERNAME>:<$USERID>:<$SERVERNAME>:X
    ;添加解除锁定脚本,玩家正常游戏==============
    BREAK
    #IF
    CheckTextList  ..\..\..\同名检测\游戏名称表.txt <$STR(S6)>
    #SAY
    \  \
    【<$str(s6)>】已经被人使用了!!!!!\  \
    <重新输入新名字/@@InPutString6>\\
    [@ChangeHumNameOK]
    #act
    SENDMSG 0 【名字修改成功】
    CLOSE
    ;CLOSE可以关闭NPC
    [@ChangeHumNameFail]
    #act
    SENDMSG 0 名字修改失败
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|烽火版本库 ( 鲁ICP备2020035849号-2 )|网站地图

    GMT+8, 2026-5-24 01:40 , Processed in 0.039201 second(s), 27 queries .

    Powered by Discuz! X3.5

    © 2001-2026 Discuz! Team.

    快速回复 返回顶部 返回列表