|
新人角色上线样子的自定义,大都通过角色表的触发器实现,原理就是在tblGameID1表有新的Insert行为时,获取Game ID,然后针对性地进行逻辑实现。触发器语法很简单,但一些错误的语句逻辑,将直接导致角色创建失败,或者客户端看到创建成功了,但是数据事实上没有成功存库,出现一些莫名其妙的效果。
触发器方面一人一个写法,关键看要实现那些功能,包括但不限于上线定级、地图、坐标、初始金钱、初始属性、任务状态。
本贴先介绍一些常见的操作,后续如果有新东西,直接更新到1楼,建议加收藏。
tblGameID1表需要获取最重要的“标识列”就是GameID,推荐以下这种比较明确的写法:
- DECLARE @GAMEID CHAR(14) -- 建议nvarchar nchar类型
- SELECT @GAMEID = GameID FROM inserted
复制代码 当然了,也可以直接用IN短句来操作,例如:
- .....WHERE GameID IN (SELECT GameID FROM inserted)
复制代码 贴个一句话实现修改tblGameID1表信息,大家自行扩展:
- UPDATE TBLGAMEID1 SET
- Map=47,X=15,Y=15
- ,HP=1000
- ,StoryQuestState=131071
- ,SETimer='0:9999999.1:9999999.3:9999999.8:9999999:50.9:9999999.17:9999999:9999999.20:9999999.23:9999999.24:9999999.25:9999999.30:9999999.31:9999999.33:9999999.42:9999999.44:9999999.48:9999999.50:9999999.56:9999999.'
- ,TLETimer='0:99999999.1:99999999.2:99999999.3:99999999.4:99999999.5:99999999.6:99999999.7:99999999.8:99999999.9:99999999.10:99999999.11:99999999.'
- ,Money=66666666
- ,Item=@Item
- ,QuickItem='0:4-34/100.1:4-36/100.2:4-38/10.3:4-41/10.4:5-99/1.'
- WHERE GAMEID IN (SELECT GAMEID FROM INSERTED)
复制代码 这里有必要贴一下tblGameID1表的列解析了。
此外,服务器一些附加功能,例如自定义账户信息(VIP)、转生等功能,需要附加创建一个表,写入GameID信息用于扩展。
通常这样操作:
- --附加GameIDX关联
- INSERT INTO tblGameIDX(GameID,BillID) SELECT GameID,BillID FROM inserted
复制代码 这样就可以在tblGameIDX表中搞更多有趣的东西了。
|
|