QFunctionNPC
91M2说明书 > 引擎脚本功能 > 系统固定NPC >

Unit QFunctionNpc;

Interface
Uses Classes, SysUtils, DefiniensConst, Math;
 
//人物杀怪
Procedure Killmonster(Npc: TNormNpc; Player: TPlayObject; Monster: TActor);
//宝宝杀怪触发
Procedure Slavekillmonster(Npc: TNormNpc; Player: TPlayObject; Slave, Monster: TActor);
//杀人触发
Procedure Killplayer(Npc: TNormNpc; Killer, Player: TPlayObject);
//宝宝杀人触发
Procedure Slavekillplayer(Npc: TNormNpc; Master: TPlayObject; Slave: TActor; Player: TPlayObject);
//人物死亡触发
Procedure Playerdie(Npc: TNormNpc; Player: TPlayObject; Killer: TActor);
//人物复活触发
Procedure Playerrealive(Npc: TNormNpc; Player: TPlayObject);
//人物升级触发
Procedure Playerlevelup(Npc: TNormNpc; Player: TPlayObject; Const Level: Integer);
//BB升级触发 Master:BB属于谁(可能是人形怪) Slave:当前升级的BB NewLevel:将要升到的级数 Accept:是否允许升级,默认为True,如果设置为False则BB不可升级
Procedure Slavelevelup(Npc: TNormNpc; Master, Slave: TActor; NewLevel: Integer; Var Accept: Boolean);
//人物修习技能触发
Procedure Playaddskill(Npc: TNormNpc; Player: TPlayObject; Magic: TUserMagic; Var Accpet: Boolean);
//人物改变PK模式时触发,OldMode为改变前的模式,NewMode为新模式
Procedure Changeattatckmode(Npc: TNormNpc; Player: TPlayObject; OldMode: TAttatckMode; Var NewMode: TAttatckMode);
//人物攻击时触发: UserMagic为当前技能,可能为nil;Target为当前攻击的目标,可能为nil;Accept是否允许本次攻击,默认为是
Procedure Playerattack(Npc: TNormNpc; Player: TPlayObject; UserMagic: TUserMagic; Target: TActor; Var Accept: Boolean);
//人物获得经验值时触发
Procedure Ongetexp(Npc: TNormNpc; Player: TPlayObject; Var Exp: Integer);
//决斗结束
Procedure Duelend(Npc: TNormNpc; Winner, Loser: TPlayObject);

//OnBagItemEvent:背包物品事件
//Item:和当前事件相关的物品
//EventType: 事件类型
// 0:增加到背包
// 1:从背包中移出
//EventID:事件ID
{
EventType:0,
EventID:
0:捡取
1:怪物身上挖出
2:挖矿挖出 
3:解包 
4:从身上取下
5:商店购买
6:元宝商城购买
7:礼金商城购买
8:玩家交易获得
9:交易市场购买
10:交易市场下架 
11:命令制造获得
12:取仓库
13:其他

EventType:1,
EventID: 
0:丢弃
1:死亡爆出
2:出售
3:正常使用 
4:穿戴到身上
5:交易给其他玩家
6:到期销毁
7:破损销毁
8:上架到交易市场
9:用脚本执行销毁或拿走
10:存 
11:其他
}
Procedure Onbagitemevent(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; EventType, EventID: Byte);
//人物掉落物品(扔物)触发(针对监视物品):Player:玩家,Item: 物品,ISUseItem:是否为身上穿戴的物品,Accept:是否允许掉落(当物品规则中指定死亡必掉物品此参数无效)
Procedure Playerdropitem(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; Const MapX, MapY: Integer; ISUseItem: Boolean; Var Accept: Boolean);
//人物扔物品触发(针对监视物品):Player:玩家,Item: 物品,Accept:是否允许扔出
Procedure Playerthrowitem(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; Const MapX, MapY: Integer; Var Accept: Boolean);
//怪物掉落物品触发(针对监视物品):Owner:物品所属玩家,Monster:掉落怪物,item:物品,Accept:是否允许掉落
Procedure Mondropitem(Npc: TNormNpc; Owner: TPlayObject; Monster: TActor; Item: TUserItem; Map: TEnvirnoment; Const X, Y: Integer; Var Accept: Boolean);
//根据怪物名称爆出物品触发(针对监视物品):Owner:物品所属玩家,Monster:怪物名称,item:物品,Accept:是否允许掉落
Procedure Dropitembymonname(Npc: TNormNpc; Owner: TPlayObject; Const Monster: String; Item: TUserItem; Var Accept: Boolean);
//玩家从地上捡物品触发
Procedure Pickupitem(Npc: TNormNpc; Player: TPlayObject; Envir: TEnvirnoment; UserItem: TUserItem; Var Accept: Boolean);
//挖矿时挖出物品触发: Player挖矿人 UserItem挖出的物品 Envir当前挖矿地图 Accept是否允许将该物品给玩家,默认为是
Procedure Minedropitem(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; Envir: TEnvirnoment; Const X, Y: Integer; Var Accept: Boolean);
//当玩家点击采集物时执行 Player:当前进行采集的玩家 Monster:被采集的资源对象 Accept:是否允许执行采集
Procedure Onbeforecollect(Npc: TNormNpc; Player: TPlayObject; Monster: TActor; Var Accept: Boolean);
//当玩家采集完成 Player:当前进行采集的玩家 Monster:被采集的资源对象 Accept:是否允许采集到物品
Procedure Oncollect(Npc: TNormNpc; Player: TPlayObject; Monster: TActor; Var Accept: Boolean);
//从怪物升上挖掘道具触发:Accept表示该物品允许玩家拥有,默认为True
Procedure Butchitem(Npc: TNormNpc; Player: TPlayObject; Monster: TActor; UserItem: TUserItem; Var Accept: Boolean);
//购买商铺物品触发
Procedure Buyshopitem(Npc: TNormNpc; Player: TPlayObject; UserItem: TUserItem; Const Kind, ShopType, Count, Price: Integer);
//商铺购买完成时触发
Procedure Buyshopitemend(Npc: TNormNpc; Player: TPlayObject; Const ItemName: String; Const Kind, ShopType, Count, ActualCount, Price: Integer);
//使用物品时触发: StdMode=31,Accept:执行之后是否删除物品,默认为True,如果设置为False,则执行函数的同时不删除物品
Procedure Stdmodefunc(Npc: TNormNpc; Player: TPlayObject; UserItem: TUserItem; Var Accept: Boolean);
//脱装备触发,Accept是否允许脱下,默认为True
Procedure Ontakeoffitem(Npc: TNormNpc; Player: TPlayObject; UserItem: TUserItem; Const ItemWhere: TItemWhere; Var Accept: Boolean);
//脱下装备且属性属性变化后触发
Procedure Onaftertakeonitem (Player : TPlayObject; TakeOffItem : TUserItem; AItemWhere: TItemWhere);
//穿装备触发,Accept是否允许穿戴,默认为True
Procedure Ontakeonitem(Npc: TNormNpc; Player: TPlayObject; UserItem: TUserItem; Const ItemWhere: TItemWhere; Var Accept: Boolean);
//穿戴装备且属性变化后触发,与OnTakeOnItem不同是 OnTakeOnItem 触发执行的时候装备附加的属性没有加到人身上。OnAfterTakeOnItem是属性已经附加到人物身上了。
//注意当穿戴位置 原先没有装备的时候 TakeOffItem 是为nil 的 请先判断 再做操作。
Procedure Onaftertakeonitem(Player : TPlayObject; TakeOnItem: TUserItem; TakeOffItem : TUserItem; AItemWhere: TItemWhere); 
//玩家使用物品点击目标物品触发, 使用物品的StdMode=33,Accept:执行后是否删除使用物品,默认为是
Procedure Itemclickitem(Npc: TNormNpc; Player: TPlayObject; Source, Dest: TUserItem; Var Accept: Boolean);
//玩家使用物品点击身上穿戴的物品触发, 使用物品的StdMode=33,Accept:执行后是否删除使用物品,默认为是
Procedure Itemclickuseitem(Npc: TNormNpc; Player: TPlayObject; ItemWhere: TItemWhere; Source, Dest: TUserItem; Var Accept: Boolean);
//释放魔法触发,Accpet:是否允许释放,默认为True
Procedure Magicspell(Npc: TNormNpc; Player: TPlayObject; UserMagic: TUserMagic; nTargetX, nTargetY: Integer; Target: TActor; Var Accpet: Boolean);
//点击了背包中淬炼装备按钮 Handled设置为True后客户端将不弹出默认的淬炼窗口,Handled默认为False;如果需要在点击淬炼按钮的时候执行其他处理则在此事件中执行,同时将Handled设置为True
Procedure Onrefinebuttonclick(Npc: TNormNpc; Player: TPlayObject; Var Handled: Boolean);
//淬炼装备
Procedure Refineitem(Npc: TNormNpc; Player: TPlayObject; Item1, Item2, Item3: TUserItem; Var Handled: Boolean);
//加入行会前触发
Procedure Beforeguildaddmember(Npc: TNormNpc; Guild: TGuild; Player: TPlayObject; Var Accept: Boolean);
//加入行会后触发
Procedure Guildaddedmember(Npc: TNormNpc; Guild: TGuild; Player: TPlayObject);
//退出行会前触发
Procedure Beforeguildremovemember(Npc: TNormNpc; Guild: TGuild; Const Player: String; Var Accept: Boolean);
//退出行会后触发
Procedure Guildremovedmember(Npc: TNormNpc; Guild: TGuild; Const Player: String);
//队伍有角色加入时触发
Procedure Groupaddedmember(Npc: TNormNpc; Owner, Member: TPlayObject);
//队伍有角色退出触发
Procedure Groupremovedmember(Npc: TNormNpc; Owner, Member: TPlayObject);
//获取宝箱物品触发
Procedure Getboxitem(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; BoxID: Integer);
//用户执行进度条事件触发,只有脚本调用ShowProgress函数且最终执行其事件才会触发本函数
Procedure Progressevent(Npc: TNormNpc; Player: TPlayObject; EventID: Integer);
//用户角度条执行失败触发
Procedure Progressfaild(Npc: TNormNpc; Player: TPlayObject; EventID: Integer);
//装备的魂炼等级提升时触发:
Procedure Itemsoullevelup(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem);
//角色称号系统当前称号发生变化后触发
Procedure Onactivetitlechanged(Npc: TNormNpc; Player: TPlayObject);

//历史更新原因,自由市场和个人摊位都命名为Stall,勿喷
//自由市场
Procedure Stallputon(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; GoldPrice: Integer; GameGoldPrice: Integer; GamePoint: Integer; Var Accpet: Boolean);//上架之前
Procedure Stallputoff(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; GoldPrice: Integer; GameGoldPrice: Integer; GamePoint: Integer; Var Accpet: Boolean);//下架之前
Procedure Stallbuyitem(Npc: TNormNpc; Player: TPlayObject; Const StallName: String; Item: TUserItem; Gold: Integer; GameGold: Integer; GamePoint: Integer; Var Accpet: Boolean);//购买
Procedure Stallupdateitem(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; OldGold: Integer; OldGameGold: Integer; OldGamePoint: Integer; Gold: Integer; GameGold: Integer; GamePoint: Integer; Var Accpet: Boolean);//修改物品价格
Procedure Stallextractgold(Npc: TNormNpc; Player: TPlayObject; Gold: Integer; GameGold: Integer; GamePoint: Integer; Var Accpet: Boolean);//提取货款
//个人摊位
Procedure Onbeforeopenstall(Npc: TNormNpc; Player: TPlayObject; Var Accpet: Boolean); //玩家打开摊位前触发,如果Accpet设置为false则不允许打开摊位界面
Procedure Onbeforestartstall(Npc: TNormNpc; Player: TPlayObject; Var Accpet: Boolean); //玩家在摊位界面点击开始摆摊时触发,如果Accpet设置为false则不允许摆摊
Procedure Onafterstopstall(Npc: TNormNpc; Player: TPlayObject); //玩家在摊位界面点击停止摆摊后触发
//邮件系统
Procedure Mailbeforesend(Npc: TNormNpc; Player: TPlayObject; Const SendTo: String; Item: TUserItem; Var Accept: Boolean);
Procedure Mailaftersend(Npc: TNormNpc; Player: TPlayObject; Const SendTo: String);
//坐骑 RideOn是骑马还是下马,True表示骑马;Accept表示是否允许本次骑马操作
Procedure Rideonhorse(Npc: TNormNpc; Player: TPlayObject; RideOn: Boolean; Var Accept: Boolean);
//客户端点击感叹号图标
Procedure Clicksighicon(Npc: TNormNpc; Player: TPlayObject; MethodID: Integer);
//Ctrl+左键点击背包物品触发,Item为被点击的物品
Procedure Altandlbuttonclickbagitem(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem);
//Ctrl+左键点击穿戴物品触发,Item为被点击的物品,AItemWhere为穿戴位置
Procedure Altandlbuttonclickuseitem(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; AItemWhere: TItemWhere);
//客户端骰子动画播放完毕触发处理事件 ATag:骰子标志 APoint: 骰子点数
Procedure Ondiceevent(Npc: TNormNpc; Player: TPlayObject; ATag, APoint1, APoint2, APoint3: Integer);
//自定义UI中通过脚本发送的命令
Procedure Oncustommessage(Npc: TNormNpc; Player: TPlayObject; AMessageToken, AParam1, AParam2, AParam3: Integer; Const AData: String);

//变身开始触发函数
Procedure Onchangetomonsterstart(Actor:TActor; sMonName:String; nSec:Integer); //变身的Actor,变成目标的怪物名称 ,变身的时长(单位秒)
//变身结束触发函数
Procedure Onchangetomonsterend(Actor:TActor; sMonName:String); //变身的Actor,变成目标的怪物名称

//PickSender 拾取者, Item 拾取的物品. Gold . 金币数量(如果物品是金币 那么 此变量 不等于 0 否则 此变量等于0.可根据此变量是否为 0 判断拾取的是物品还是金币) WhoPicker .最终拾取者(通过改变此值 可实现 A拾取 到B背包的功能)
//ItemState 0: 可以继续拾取 1.不允许继续拾取物品还在地图上 2.不允许继续拾取直接从地图删除物品
Procedure Onpickupitemchangepicker(PickSender:TPlayObject;Item:TUserItem; Var Gold : Integer ; Var WhoPicker:TPlayObject; Var ItemState:Byte); 

//是否允许引擎对人物进行升级。通过操作Allow 进行 True 表示允许升级 False 表示不允许升级
Procedure Onqueryallowlevelup(Player:TPlayObject;Var Allow:Boolean);

// 用于获取每个等级的经验配置数据。此函数由引擎在人物需要改变人物升级经验时引擎触发。
Procedure Ongetlevelexp(Level:Integer;Var Exp:Int64);
//自定义热键触发(Akey的值代表按下的按键字符值,KeyCtrl,KeyAlt 代表 Ctrl,Alt按键的状态 False为没有按下 True为按下。ATargetActor代表客户端鼠标指向的TActor,X,Y代表TActor所在位置坐标,如果TActor为nil,则X,Y代表客户端鼠标指向的坐标。)
Procedure Onsendhotkey(Npc: TNormNpc; Player: TPlayObject; Akey:Byte; KeyCtrl,KeyAlt: Boolean; ATargetActor:TActor; X,Y:Integer); 
//PlayerAction函数,可以用来脚本封挂。Accept值为True 则执行动作,反之则不执行。默认为True。Action值代表不同的动作:
{
1 攻击
2 魔法
3 骑马跑动
4 跑动
5 走路
6 转向
7 挖肉 
8 点击脚本 
}
Procedure Playeraction(Npc: TNormNpc; Player: TPlayObject; Action :Byte; Var Accept: Boolean);
//时装界面勾选是否显示时装触发
Procedure Onshowfashionclick(Npc: TNormNpc; Player: TPlayObject);
//点击点击弹出任务侧边栏按钮时触发,默认Accept为True,当Accept为True的时候将弹出默认的任务侧边栏。
Procedure Onshowmissionclick(Npc: TNormNpc; Player: TPlayObject; Var Accept: Boolean );

Implementation
Uses G_HelpService, ReAlive_Service, G_RefineItem, g_Nation, uLvlup, Q38, QCustomMessage;

Procedure Killmonster(Npc: TNormNpc; Player: TPlayObject; Monster: TActor);
Begin
Checkkillmontask(Player, Monster);
Checknationmonnpcdie(Monster, Player); 
End;

Procedure Slavekillmonster(Npc: TNormNpc; Player: TPlayObject; Slave, Monster: TActor);
Begin
Checkkillmontask(Player, Monster); 
Checknationmonnpcdie(Monster, Player);
End;

Procedure Playerdie(Npc: TNormNpc; Player: TPlayObject; Killer: TActor);
Begin
Checknationplayerdie(Player, Killer); //调用“国家相关”单元处理和国家有关的玩家死亡事件
Showrealivedialog(Npc, Player); //显示复活界面
End;

Procedure Playerrealive(Npc: TNormNpc; Player: TPlayObject);
Begin

End;

Procedure Playerlevelup(Npc: TNormNpc; Player: TPlayObject; Const Level: Integer);
Begin
Case Level Of
10:Begin //升级到10级
 If Not Player.AllowSendMessage Then
 Begin
 Player.AllowSendMessage := True;
 Player.Sendmessage('你已被解除禁言!!!', 0);
 End;
End; 
20:Begin //升级到20级
 Npc.Give(Player, '乌木剑'); 
End;
End;
End;



Procedure Slavelevelup(Npc: TNormNpc; Master, Slave: TActor; NewLevel: Integer; Var Accept: Boolean);
Begin
If Master.ISPlayer Then
Tplayobject(Master).Sendmessage(Format('你的下属[%s]升级了!!!', [Slave.Name]));
End;

Procedure Playaddskill(Npc: TNormNpc; Player: TPlayObject; Magic: TUserMagic; Var Accpet: Boolean);
Begin

End;

Procedure Changeattatckmode(Npc: TNormNpc; Player: TPlayObject; OldMode: TAttatckMode; Var NewMode: TAttatckMode);
Begin

End;

Procedure Killplayer(Npc: TNormNpc; Killer, Player: TPlayObject);
Begin

End;

Procedure Slavekillplayer(Npc: TNormNpc; Master: TPlayObject; Slave: TActor; Player: TPlayObject);
Begin

End;

Procedure Playerattack(Npc: TNormNpc; Player: TPlayObject; UserMagic: TUserMagic; Target: TActor; Var Accept: Boolean);
Begin
End;

Procedure Ongetexp(Npc: TNormNpc; Player: TPlayObject; Var Exp: Integer);
Begin

End;

Procedure Duelend(Npc: TNormNpc; Winner, Loser: TPlayObject);
Begin

End;

Procedure Onbagitemevent(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; EventType, EventID: Byte);
Begin

End;

Procedure Playerdropitem(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; Const MapX, MapY: Integer; ISUseItem: Boolean; Var Accept: Boolean);
Begin

End;

Procedure Playerthrowitem(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; Const MapX, MapY: Integer; Var Accept: Boolean);
Begin
End;

Procedure Mondropitem(Npc: TNormNpc; Owner: TPlayObject; Monster: TActor; Item: TUserItem; Map: TEnvirnoment; Const X, Y: Integer; Var Accept: Boolean);
Begin
Gamelib.Broadcast(Format('%s在地图%s(%d,%d)掉落了[{U=%s;C=250}]', [Monster.Name, Map.Name, X, Y, Item.MakeString]));
End;

Procedure Dropitembymonname(Npc: TNormNpc; Owner: TPlayObject; Const Monster: String; Item: TUserItem; Var Accept: Boolean);
Begin

End;

Procedure Minedropitem(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; Envir: TEnvirnoment; Const X, Y: Integer; Var Accept: Boolean);
Begin

End;

Procedure Onbeforecollect(Npc: TNormNpc; Player: TPlayObject; Monster: TActor; Var Accept: Boolean);
Begin
End;

Procedure Oncollect(Npc: TNormNpc; Player: TPlayObject; Monster: TActor; Var Accept: Boolean);
Begin

End;

Procedure Butchitem(Npc: TNormNpc; Player: TPlayObject; Monster: TActor; UserItem: TUserItem; Var Accept: Boolean);
Begin
Player.Sendmessage(Format('恭喜你从%s身上挖到了一个{U=%s}', [Monster.Name, UserItem.MakeString]));
End;

Procedure Buyshopitem(Npc: TNormNpc; Player: TPlayObject; UserItem: TUserItem; Const Kind, ShopType, Count, Price: Integer);
Begin

End; 

Procedure Buyshopitemend(Npc: TNormNpc; Player: TPlayObject; Const ItemName: String; Const Kind, ShopType, Count, ActualCount, Price: Integer);
Begin

End;

Procedure Ontakeoffitem(Npc: TNormNpc; Player: TPlayObject; UserItem: TUserItem; Const ItemWhere: TItemWhere; Var Accept: Boolean);
Begin
End;

Procedure Ontakeonitem(Npc: TNormNpc; Player: TPlayObject; UserItem: TUserItem; Const ItemWhere: TItemWhere; Var Accept: Boolean);
Begin
End;

Procedure Memberservice(Npc: TNormNpc; Player: TPlayObject);
Begin
G_HelpService.Showhelp(Npc, Player);
End;

Procedure Stdmodefunc(Npc: TNormNpc; Player: TPlayObject; UserItem: TUserItem; Var Accept: Boolean);
Var
Actor : TActor;
Begin
Case UserItem.StdMode Of
31:
Begin 
 If UserItem.Name = '金条' Then
 Begin 
 Actor := Player.TargetActor;
 If Actor <> Nil Then
 Begin
 Player.Magicattack(Actor,225); 
 End Else
 Begin 
 Accept := False;
 Exit; 
 End;
 
 Npc.Give(Player, '金币', 998000);
 Exit;
 End;
 Case UserItem.AniCount Of
100:
 Begin
Memberservice(Npc, Player);
 Accept := False; 
 End;
 End;
End;
End;
End;

Procedure Pickupitem(Npc: TNormNpc; Player: TPlayObject; Envir: TEnvirnoment; UserItem: TUserItem; Var Accept: Boolean);
Begin
If UserItem.NeverDrop Then
Begin
Accept := False;
Player.Sendmessage('该物品不可拾取', 1);
Exit;
End;

Player.Sendmessage(Format('你在%s拾取了一个%s', [Envir.Name, UserItem.Name]), 0);
End;

Procedure Itemclickitem(Npc: TNormNpc; Player: TPlayObject; Source, Dest: TUserItem; Var Accept: Boolean);
Begin
Case Source.Shape Of
1:
Begin
 Gamelib.Randomupgrade(Dest); 
 Player.Updateitem(Dest); 
 Player.RecalcAbilitys;
End; 
Else
Begin
 Accept := False;
End;
End;
End;

Procedure Itemclickuseitem(Npc: TNormNpc; Player: TPlayObject; ItemWhere: TItemWhere; Source, Dest: TUserItem; Var Accept: Boolean);
Begin

End;

Procedure Magicspell(Npc: TNormNpc; Player: TPlayObject; UserMagic: TUserMagic; nTargetX, nTargetY: Integer; Target: TActor; Var Accpet: Boolean);
Begin
End;

Procedure Onrefinebuttonclick(Npc: TNormNpc; Player: TPlayObject; Var Handled: Boolean);
Begin
//if Random(3) = 0 then
//begin
// Handled := True;
// Player.Messagebox('屏蔽了淬炼!!!');
//end;
End;

Procedure Refineitem(Npc: TNormNpc; Player: TPlayObject; Item1, Item2, Item3: TUserItem; Var Handled: Boolean);
Begin
Clientrefineitem(Npc, Player, Item1, Item2, Item3, Handled);
End;

Procedure Beforeguildaddmember(Npc: TNormNpc; Guild: TGuild; Player: TPlayObject; Var Accept: Boolean);
Begin

End;

Procedure Guildaddedmember(Npc: TNormNpc; Guild: TGuild; Player: TPlayObject);
Begin

End;

Procedure Beforeguildremovemember(Npc: TNormNpc; Guild: TGuild; Const Player: String; Var Accept: Boolean);
Begin

End;

Procedure Guildremovedmember(Npc: TNormNpc; Guild: TGuild; Const Player: String);
Begin

End;

Procedure Groupaddedmember(Npc: TNormNpc; Owner, Member: TPlayObject);
Begin

End;

Procedure Groupremovedmember(Npc: TNormNpc; Owner, Member: TPlayObject);
Begin

End;

Procedure Getboxitem(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; BoxID: Integer);
Begin

End;

Procedure Progressevent(Npc: TNormNpc; Player: TPlayObject; EventID: Integer);
Begin 
Player.Messagebox('执行进度条事件,事件ID:' + Inttostr(EventID));
End;

Procedure Progressfaild(Npc: TNormNpc; Player: TPlayObject; EventID: Integer);
Begin
Player.Messagebox('执行进度条事件失败,事件ID:' + Inttostr(EventID));
End;

Procedure Itemsoullevelup(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem);
Begin
//Item.SoulLevel:当前等级
//Item.SoulExp:当前经验值
//Item.SoulMaxExp:当前等级的最大经验值
End;

Procedure Onactivetitlechanged(Npc: TNormNpc; Player: TPlayObject);
Begin
End;

Procedure Stallputon(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; GoldPrice: Integer; GameGoldPrice: Integer; GamePoint: Integer; Var Accpet: Boolean);
Begin

End;

Procedure Stallputoff(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; GoldPrice: Integer; GameGoldPrice: Integer; GamePoint: Integer; Var Accpet: Boolean);
Begin

End;

Procedure Stallbuyitem(Npc: TNormNpc; Player: TPlayObject; Const StallName: String; Item: TUserItem; Gold: Integer; GameGold: Integer; GamePoint: Integer; Var Accpet: Boolean);
Begin

End;

Procedure Stallupdateitem(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; OldGold: Integer; OldGameGold: Integer; OldGamePoint: Integer; Gold: Integer; GameGold: Integer; GamePoint: Integer; Var Accpet: Boolean);
Begin

End;

Procedure Stallextractgold(Npc: TNormNpc; Player: TPlayObject; Gold: Integer; GameGold: Integer; GamePoint: Integer; Var Accpet: Boolean);
Begin

End;

Procedure Onbeforeopenstall(Npc: TNormNpc; Player: TPlayObject; Var Accpet: Boolean);
Begin
If (Player.ReNewLevel = 0) And (Player.Level < 30) Then
Begin
Accpet := False;
Player.Messagebox('30级后才可以使用此功能!!!');
End; 
End;

Procedure Onbeforestartstall(Npc: TNormNpc; Player: TPlayObject; Var Accpet: Boolean);
Begin
Accpet := True; 
End;

Procedure Onafterstopstall(Npc: TNormNpc; Player: TPlayObject);
Begin

End;

Procedure Mailbeforesend(Npc: TNormNpc; Player: TPlayObject; Const SendTo: String; Item: TUserItem; Var Accept: Boolean);
Begin

End;

Procedure Mailaftersend(Npc: TNormNpc; Player: TPlayObject; Const SendTo: String);
Begin

End;

Procedure Rideonhorse(Npc: TNormNpc; Player: TPlayObject; RideOn: Boolean; Var Accept: Boolean);
Begin
If RideOn And Player.Map.Duplicate Then
Begin
Accept := False;
Player.Sendmessage('在副本里是不允许骑马的!');
End;
End;

Procedure Clicksighicon(Npc: TNormNpc; Player: TPlayObject; MethodID: Integer);
Begin
Case MethodID Of
ICON_Award:
Begin 
 Getonlinereward(Player); 
End;
End;
End;

Procedure Altandlbuttonclickbagitem(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem);
Begin

End;

Procedure Altandlbuttonclickuseitem(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem; AItemWhere: TItemWhere);
Begin

End;

Procedure Ondiceevent(Npc: TNormNpc; Player: TPlayObject; ATag, APoint1, APoint2, APoint3: Integer);
Begin
Player.Messagebox(Format('骰子事件:标志%d, 点数1%d,点数2%d,点数3%d', [ATag, APoint1, APoint2, APoint3]));
End;

Procedure Oncustommessage(Npc: TNormNpc; Player: TPlayObject; AMessageToken, AParam1, AParam2, AParam3: Integer; Const AData: String);
Begin
Try
QCustomMessage.Handlecustommessage(Npc, Player, AMessageToken, AParam1, AParam2, AParam3, AData); 
Except
End;
End;

//变身开始触发函数
Procedure Onchangetomonsterstart(Actor:TActor; sMonName:String; nSec:Integer);
Begin

End;
//变身结束触发函数
Procedure Onchangetomonsterend(Actor:TActor; sMonName:String);
Begin

End;

Procedure Onpickupitemchangepicker(PickSender:TPlayObject;Item:TUserItem; Var Gold : Integer ; Var WhoPicker:TPlayObject; Var ItemState:Byte); 
Begin

End;

Procedure Onclickgameshop(Npc: TNormNpc; Player: TPlayObject; Var OpenDefalut:Boolean);
Begin

End;

Procedure Onqueryallowlevelup(Player:TPlayObject;Var Allow:Boolean);
Begin

End;


Procedure Ongetlevelexp(Level:Integer; Var Exp:Int64);
Begin
//如 以下示例 将所有等级的升级经验 设置为引擎配置的120%
 //Exp := Trunc(Exp * 1.2); 
 //再如:以下1000级以前的经验 以引擎配置配置 1000级以上的经验 采用 等级 * 10000的公式进行计算
 //if Level >= 1000 then
 //begin
 // Exp := Level * 10000;
 //end; 
End;
//自定义热键触发
Procedure Onsendhotkey(Npc: TNormNpc; Player: TPlayObject; Akey:Byte; KeyCtrl,KeyAlt: Boolean; ATargetActor:TActor; X,Y:Integer);
Begin

End;
//人物动作触发
Procedure Playeraction(Npc: TNormNpc; Player: TPlayObject; Action :Byte; Var Accept: Boolean);
Begin

End;

Procedure Onshowfashionclick(Npc: TNormNpc; Player: TPlayObject);
Begin

End;

Procedure Onshowmissionclick(Npc: TNormNpc; Player: TPlayObject; Var Accept: Boolean );
Begin

End;
End.

引擎官网:www.91M2.com   交流群:5555999   此引擎仅供测试,切勿用于商业用途。如有侵权请立即联系我们,我们将在第一时间删除。