传奇人物死亡触发脚本:怪物击杀必掉屠龙,PK死亡按几率掉落

来源: 作者: 点击:
在传奇SKY版本中实现“被怪物杀死时必定收回指定武器(如屠龙),被玩家杀死时按几率收回”,需利用死亡事件标签[@Death]配合死亡类型判断。以下为完整可执行脚本,直击需求,无需多余修饰。

死亡事件入口:使用[@Death]标签

SKY引擎在角色死亡时自动触发[@Death],无需手动绑定。在QFunction-0.txt中编写:

[@Death]
; 判断是否携带屠龙(物品代码40)
IF
CHECKITEM 40 1
ACT
MOV S0 ; 获取击杀者名称
; 若击杀者为空或为系统(即怪物所杀)
IF
EQUAL S0
ACT
TAKE 40 1 ; 立即收回屠龙
SENDMSG 7 您被怪物击杀,屠龙已被系统回收。
BREAK

; 若击杀者为玩家(名称非空且非系统)
IF
NOTEQUAL S0
ACT
; 判断击杀者是否为NPC或系统(部分版本怪物名为空,玩家名不为空即可)
; 进行20%几率判定(random 5 表示0-4,等于0则触发,即1/5=20%)
RANDOM 5
IF
EQUAL D0 0
ACT
TAKE 40 1
SENDMSG 7 您被击杀,屠龙有几率被系统回收。

关键逻辑解析

检测屠龙存在:CHECKITEM 40 1 确保玩家身上有屠龙(代码40),避免无谓操作。
区分死亡类型:
在被怪物杀死时返回空字符串;
被玩家杀死时返回对方角色名;
被自己毒死、掉悬崖等特殊情况也可能为空,但通常归为“非玩家击杀”。
必掉逻辑:怪物击杀时直接TAKE 40 1,立即移除屠龙,不给掉落机会。
几率掉落:RANDOM 5 生成0~4的随机数,EQUAL D0 0 表示1/5概率(20%)。可调整数字改变几率,如RANDOM 10 + EQUAL D0 0 = 10%。

注意事项(SKY版本特性)

SKY引擎支持变量,部分旧版Mir2需用,但SKY已统一为。
TAKE命令仅移除玩家身上的物品,不会发送到地面,符合“系统收回”要求。
若需同时处理多把指定武器(如屠龙+嗜魂),可叠加CHECKITEM和TAKE:
#IF
CHECKITEM 40 1
#ACT
TAKE 40 1
#IF
CHECKITEM 41 1
#ACT
TAKE 41 1

避免使用DELITEM,该命令可能删除背包内物品,而TAKE仅针对穿戴或手持状态。

完整脚本整合(放入QFunction-0.txt)

[@Death]
IF
CHECKITEM 40 1
ACT
MOV S0
IF
EQUAL S0
ACT
TAKE 40 1
SENDMSG 7 您被怪物击杀,屠龙已被系统回收。
BREAK
IF
NOTEQUAL S0
ACT
RANDOM 5
IF
EQUAL D0 0
ACT
TAKE 40 1
SENDMSG 7 您被击杀,屠龙被系统回收。

测试方法

创建角色,使用GM命令GIVE 40 1获得屠龙并佩戴;
找怪物攻击至死亡,观察屠龙是否消失;
用另一角色PK将其杀死,多次测试是否按设定几率掉落;
检查SENDMSG提示是否准确反映死亡原因。

此脚本严格满足需求:怪物杀必收屠龙,玩家杀按几率收,其他装备不受影响,适用于SKY版本服务端。