传奇新手上线赠送装备脚本编写完整教程

来源: 作者: 点击:
脚本位置与触发机制 新手上线送装备功能通过登录触发脚本实现。脚本文件位于Mir200\Envir\MapQuest_def\QManage.txt中,[@Login]段处理玩家登录事件。当玩家首次进入游戏或每次登录时,系统自动执行该段脚本。M2Server无需特殊设置,默认支持登录触发功能。

基础脚本结构 最简单的上线送装备脚本示例:

[@Login]
#ACT
GIVE 木剑 1
GIVE 布衣 1
GIVE 金创药 5
GIVE 魔法药 5
SENDMSG 0 欢迎新玩家[<$USERNAME>]加入游戏!

GIVE命令发放物品,参数为物品名称和数量。SENDMSG 0发送全服公告。此脚本每次登录都会执行,导致重复发放。

首次登录检测 防止重复领取需使用变量标记。常用个人变量P系列记录领取状态:

[@Login]
#IF
EQUAL P0 0
#ACT
GIVE 木剑 1
GIVE 布衣 1
GIVE 金创药 5
GIVE 魔法药 5
MOV P0 1
SENDMSG 0 新玩家[<$USERNAME>]获得新手礼包!

EQUAL P0 0检测变量P0是否为0,表示未领取过。MOV P0 1设置变量为1标记已领取。个人变量随角色数据永久保存。

等级条件限制 仅对低等级玩家发放新手装备:

[@Login]
#IF
CHECKLEVELEX < 10
EQUAL P0 0
#ACT
GIVE 木剑 1
GIVE 布衣 1
GIVE 金创药 10
GIVE 魔法药 10
MOV P0 1
SENDMSG 0 新手玩家[<$USERNAME>]获得成长礼包!

CHECKLEVELEX < 10检测等级小于10级。超过10级玩家不再获得新手装备。

职业区分发放 根据不同职业发放对应装备:

[@Login]
#IF
CHECKLEVELEX < 10
EQUAL P0 0
#ACT
#IF
CHECKJOB Warrior
#ACT
GIVE 青铜剑 1
GIVE 轻型盔甲 1
GIVE 金创药 15
#IF
CHECKJOB Wizard
#ACT
GIVE 海魂 1
GIVE 魔法长袍 1
GIVE 魔法药 15
#IF
CHECKJOB Taoist
#ACT
GIVE 半月 1
GIVE 灵魂战衣 1
GIVE 道符 10
MOV P0 1

CHECKJOB检测职业,Warrior战士、Wizard法师、Taoist道士。不同职业获得对应武器、衣服和消耗品。

时间延迟发放 登录后延迟几秒发放,避免卡顿:

[@Login]
#IF
CHECKLEVELEX < 10
EQUAL P0 0
#ACT
DelayCall 3000 @GiveNewbieItem

[@GiveNewbieItem]
#ACT
GIVE 木剑 1
GIVE 布衣 1
MOV P0 1
SENDMSG 0 新手装备已发放至背包!

DelayCall 3000表示延迟3秒执行@GiveNewbieItem段。避免登录瞬间大量脚本执行导致延迟。

多套装备选择 提供不同档次新手装备供选择:

[@Login]
#IF
CHECKLEVELEX < 10
EQUAL P0 0
#ACT
#SAY
请选择新手装备档次:\ \
<普通装备/@normal> <高级装备/@vip> <豪华装备/@luxury>

[@normal]
#ACT
GIVE 木剑 1
GIVE 布衣 1
GIVE 金创药 10
MOV P0 1
#SAY
普通装备已发放!

[@vip]
#IF
CHECKGAMEGOLD > 99
#ACT
GIVE 铁剑 1
GIVE 轻型盔甲 1
GIVE 金创药 20
MOV P0 1
#SAY
高级装备已发放!

通过#SAY显示选择菜单,玩家点击不同标签进入对应发放段。高级装备需检测元宝数量。

地图位置检测 仅在安全区发放新手装备:

[@Login]
#IF
CHECKLEVELEX < 10
EQUAL P0 0
EQUAL <$MAP> 0
#ACT
GIVE 木剑 1
GIVE 布衣 1
MOV P0 1
SENDMSG 0 新手玩家在安全区获得装备!

EQUAL <$MAP> 0检测地图编号,0为新手村。非安全区登录不发放装备。

背包空间检测 发放前检测背包是否有足够空间:

[@Login]
#IF
CHECKLEVELEX < 10
EQUAL P0 0
CHECKBAGSPACE 4
#ACT
GIVE 木剑 1
GIVE 布衣 1
GIVE 金创药 5
GIVE 魔法药 5
MOV P0 1
SENDMSG 0 新手装备发放成功!
#ELSEACT
SENDMSG 0 背包空间不足,请清理后重新登录领取。

CHECKBAGSPACE 4检测至少4格背包空间。空间不足时提示玩家清理背包。

注册时间判断 仅对近期创建的角色发放:

[@Login]
#IF
CHECKLEVELEX < 10
EQUAL P0 0
CHECK [注册时间] < 7
#ACT
GIVE 木剑 1
GIVE 布衣 1
MOV P0 1

CHECK [注册时间] < 7检测角色创建时间小于7天。需配合注册时间记录脚本。

IP地址限制 同一IP仅限一个角色领取:

[@Login]
#IF
CHECKLEVELEX < 10
EQUAL P0 0
CHECKIPLIST ..\QuestDiary\已领IP.txt
#ACT
GIVE 木剑 1
GIVE 布衣 1
MOV P0 1
AddIPList ..\QuestDiary\已领IP.txt

CHECKIPLIST检测IP是否在已领取列表中,AddIPList将IP加入列表。防止同一玩家多角色重复领取。

游戏时间检测 累计在线时间达标后发放进阶装备:

[@Login]
#IF
CHECKLEVELEX < 30
EQUAL P1 0
CHECK [在线时间] > 3600
#ACT
GIVE 修罗 1
GIVE 战神盔甲 1
MOV P1 1
SENDMSG 0 玩家[<$USERNAME>]累计在线1小时获得进阶装备!

CHECK [在线时间] > 3600检测累计在线时间超过3600秒(1小时)。使用不同变量P1记录进阶装备领取状态。

任务关联发放 完成新手任务后发放装备奖励:

[@Login]
#IF
CHECKLEVELEX < 10
EQUAL P0 0
CHECK [新手任务] 1
#ACT
GIVE 青铜剑 1
GIVE 轻型盔甲 1
MOV P0 1
SENDMSG 0 恭喜完成新手任务获得装备!

CHECK [新手任务] 1检测新手任务完成标记。需配合任务脚本设置标记。

随机装备发放 随机给予不同品质新手装备:

[@Login]
#IF
CHECKLEVELEX < 10
EQUAL P0 0
#ACT
RANDOM 3
#IF
EQUAL <$STR(N0)> 0
#ACT
GIVE 木剑 1
#IF
EQUAL <$STR(N0)> 1
#ACT
GIVE 铁剑 1
#IF
EQUAL <$STR(N0)> 2
#ACT
GIVE 青铜剑 1
MOV P0 1

RANDOM 3生成0-2随机数,根据数值发放不同武器。增加新手体验随机性。

性别区分发放 男女角色获得不同外观装备:

[@Login]
#IF
CHECKLEVELEX < 10
EQUAL P0 0
#ACT
#IF
CHECKGENDER Man
#ACT
GIVE 男布衣 1
#IF
CHECKGENDER Woman
#ACT
GIVE 女布衣 1
MOV P0 1

CHECKGENDER检测性别,Man男性,Woman女性。需在数据库设置对应性别装备。

行会成员福利 加入行会后获得行会专属装备:

[@Login]
#IF
CHECKLEVELEX < 20
EQUAL P2 0
CHECKGUILD
#ACT
GIVE 行会战袍 1
GIVE 行会勋章 1
MOV P2 1
SENDMSG 0 行会成员[<$USERNAME>]获得行会福利装备!

CHECKGUILD检测是否有行会,P2记录行会装备领取状态。激励玩家加入行会。

连续登录奖励 连续登录多天获得累积奖励:

[@Login]
#IF
CHECKLEVELEX < 30
#ACT
GetRandomText ..\QuestDiary\登录记录.txt S10
#IF
EQUAL S10 <$USERNAME>
#ACT
INC P3 1
#IF
LARGE P3 2
#ACT
GIVE 祝福油 1
GIVE 黑铁矿 3
SENDMSG 0 玩家[<$USERNAME>]连续登录3天获得奖励!

通过文件记录登录信息,INC P3增加连续登录天数,LARGE P3 2检测大于2即连续3天。

充值玩家特权 充值玩家获得专属新手装备:

[@Login]
#IF
CHECKLEVELEX < 10
EQUAL P0 0
CHECKGAMEGOLD > 999
#ACT
GIVE 黄金木剑 1
GIVE 黄金布衣 1
MOV P0 1
SENDMSG 0 尊贵玩家[<$USERNAME>]获得黄金新手装备!

CHECKGAMEGOLD > 999检测元宝大于999,即充值玩家。发放外观不同的特权装备。

服务器时间限制 仅在特定时间段开放新手福利:

[@Login]
#IF
CHECKLEVELEX < 10
EQUAL P0 0
HOUR 10
MIN 0
HOUR 22
MIN 0
#ACT
GIVE 木剑 1
GIVE 布衣 1
MOV P0 1
SENDMSG 0 活动时间内登录获得双倍新手装备!

检测小时和分钟,10点至22点之间登录获得奖励。控制发放时间段。

版本更新补偿 版本更新后发放补偿装备:

[@Login]
#IF
CHECKLEVELEX < 40
EQUAL P4 0
CHECKTEXTLIST ..\QuestDiary\更新补偿.txt <$USERNAME>
#ACT
GIVE 补偿武器 1
GIVE 补偿衣服 1
MOV P4 1
SENDMSG 0 玩家[<$USERNAME>]获得版本更新补偿装备!

通过文本列表记录需补偿玩家,发放特定补偿装备。用于版本更新后玩家福利。

防作弊验证 添加多重验证防止脚本滥用:

[@Login]
#IF
CHECKLEVELEX < 10
EQUAL P0 0
CHECKIP
CHECKHWID
#ACT
GIVE 木剑 1
GIVE 布衣 1
MOV P0 1
AddTextList ..\QuestDiary\已领记录.txt <$USERNAME>

CHECKIP检测IP地址,CHECKHWID检测硬件ID。AddTextList记录领取玩家名,便于查询。

装备绑定设置 发放的装备自动绑定给玩家:

[@Login]
#IF
CHECKLEVELEX < 10
EQUAL P0 0
#ACT
GIVE 木剑 1
GIVE 布衣 1
SetIconFlag 1 1
SetIconFlag 2 1
MOV P0 1

SetIconFlag 1 1将物品栏第一格物品绑定,参数1为位置,1为绑定标志。防止装备交易流通。

提示信息优化 添加详细的状态提示信息:

[@Login]
#IF
EQUAL P0 1
#ACT
#SAY
您已领取过新手装备。\ \
<查看装备信息/@checkitem>
#ELSEACT
#IF
CHECKLEVELEX < 10
#ACT
#SAY
欢迎新玩家!\ \
<领取新手装备/@getitem>
<稍后领取/@exit>

已领取玩家显示状态信息,未领取玩家显示领取菜单。提升用户体验。

脚本调试方法 测试上线送装备脚本时使用GM命令。@ReloadManage重载QManage.txt脚本。@ViewP0查看变量P0值。@SetP0 0重置领取状态。创建新角色测试领取流程。观察M2Server控制台输出,确认脚本执行无误。修改脚本后及时重载,避免重启服务端。

最终脚本部署 在QManage.txt的[@Login]段添加送装备脚本,保存文件。重启M2Server或使用@ReloadManage命令重载脚本。创建新角色测试装备发放功能。根据实际需求调整装备种类、数量、条件限制。定期检查领取记录,监控新手玩家体验。优化脚本逻辑,确保稳定运行。