检测内容分两个部分一个新登录时名字没有其他人使用,就记录下来名字账号和所有在区服正常游戏,二是检测到有相同名字后且不是相同区服和相同ID时,就要弹出改名NPC改名后正常游戏
如果引擎没有使用通用数据库作为账号数据而是使用DBC2000这个脚本就可以用。
如果引擎使用通用数据库如MSSQL MYSQL等S/C模式的数据库可以让其他IP存取数据就不需要这个脚本。
这个脚本原本不需要但是某些引擎在合区时发现无限制仓库在遇到两个相同名字时会丢失一个角色的仓库数据
这个脚本可以在玩家登录后检测名字是否与其他区的玩家重复
然后改名来确保无限制仓库在合区时不出现BUG。如果引擎没这个问题这个脚本无意义。
[@名称检测]
{
#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 名字修改失败
}