当前位置 : 145z游戏站 | 魔域 | 技术教程 | 

魔域XP脚本编写与调用方法详解

热度:
魔域XP版本中脚本主要用于控制NPC对话、任务触发、物品交互及事件响应,采用类VBScript语法,文件扩展名为.vbs或.xp,存放于ServerScripts目录下。脚本需通过NPC或物品配置文件关联才能生效。

基础结构以Sub Main()开头,End Sub结尾。例如任务交付脚本:
Sub Main()
If GetItemCount(12001) >= 1 Then
RemoveItem 12001,1
GiveExp 5000
Say "任务完成,获得5000经验"
Else
Say "缺少任务物品"
End If
End Sub

GetItemCount用于检测背包指定物品数量,参数为物品ID;RemoveItem扣除物品,GiveExp直接增加经验。Say命令向玩家发送文本提示,所有操作必须在Main子程序内执行。

物品使用脚本需在Items.ini中指定Script字段,如Script=use_heal.vbs。脚本内容可包含回血、传送或状态变更。例如回城卷轴脚本:
Sub Main()
ChangeMap 1000,150,150
Say "已传送至主城"
End Sub
ChangeMap参数依次为地图ID、X坐标、Y坐标,坐标需在该地图有效范围内。

任务NPC脚本通过NPCs.ini绑定,字段Script=npc_quest.vbs。可嵌套多选项对话:
Sub Main()
Select Case GetTaskState(101)
Case 0
Say "接取任务?",1
Case 1
If CheckMonsterKilled(2001,10) = True Then
CompleteTask 101
GiveItem 19001,1
Say "任务完成"
End If
End Select
End Sub
GetTaskState返回任务进度(0未接,1进行中,2已完成),CheckMonsterKilled验证指定怪物击杀数量。

脚本调试需开启日志记录,在Config.ini中设置LogScriptError=1,错误信息将写入LogsScript.log。常见错误包括变量未定义、函数参数缺失或地图坐标越界。所有物品ID、地图ID必须与数据库一致,否则指令无效。

自定义函数可置于同一脚本内,但不可跨文件调用。全局变量不被支持,需通过角色属性临时存储数据,如SetPlayerData "temp_flag",1。部分版本支持CallOther调用内置系统函数,如CallOther("OpenShop", "weapon")弹出武器商店。

脚本文件编码必须为ANSI,UTF-8会导致乱码或解析失败。修改后需重启服务端或执行/reload scripts指令(若版本支持)。测试时建议使用GM账号,避免因权限不足中断流程。
[顶部]