```
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 Onaftertakeoffitem (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);
//Alt+左键点击背包物品触发,Item为被点击的物品
Procedure Altandlbuttonclickbagitem(Npc: TNormNpc; Player: TPlayObject; Item: TUserItem);
//Alt+左键点击穿戴物品触发,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 );
//玩家聊天触发,可进行消息过滤和特殊指令实现
Procedure OnChatMessage(PlayObject:TPlayObject;const Message:String;var Accept:Boolean);
//添加Buff时触发,通过修改 Accept := False 可以禁止此Buff添加到怪物或者玩家身上
procedure OnAddBuff(Actor:TActor;Buff:TBuff;var Accept:Boolean);
//移除Buff时触发
procedure OnRemoveBuff(Actor:TActor;Buff:TBuff);
//自定义间隔作用类Buff触发(当添加自定义间隔作用类Buff之后 在间隔设定时间后)
procedure OnCustomBuffAffect(Actor:TActor;Buff:TBuff);
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;
//玩家聊天触发,可进行消息过滤和特殊指令实现
Procedure OnChatMessage(PlayObject:TPlayObject;const Message:String;var Accept:Boolean);
Begin
End;
//添加Buff时触发,通过修改 Accept := False 可以禁止此Buff添加到怪物或者玩家身上
procedure OnAddBuff(Actor:TActor;Buff:TBuff;var Accept:Boolean);
Begin
End;
//移除Buff时触发
procedure OnRemoveBuff(Actor:TActor;Buff:TBuff);
Begin
End;
//自定义间隔作用类Buff触发(当添加自定义间隔作用类Buff之后 在间隔设定时间后)
procedure OnCustomBuffAffect(Actor:TActor;Buff:TBuff);
Begin
End;
End.
```
- 更新日志
- 2021年更新日志
- 2020年更新日志
- 2019年更新日志
- 2017年更新日志
- 2016年更新日志
- 2015年更新日志
- 2014年更新日志
- 2013年更新日志
- 游戏对象
- GameLib
- TActor
- TActorList
- TAddedAbility
- TAddLevelItem
- TAddPointItem
- TArgs
- TAttatckMode
- TDBEngine
- TEnvirnoment
- TFunctionFlag
- TGuild
- TItemState
- TItemWhere
- TMissionItem
- TMissionLinkItem
- TMissions
- TNormNpc
- TPlayMonster
- TPlayMonsterNPC
- TPlayObject
- TStdItem
- TStoreItemList
- TToptenz
- TUserCastle
- TUserItem
- TUserMagic
- TVarValue
- Tbuff
- TBuffCategory
- TBuffAbilityType
- TBuffStatusType
- TBuffIntervalType
- 固定NPC
- AINpc
- ExternalNPC
- MagicNpc
- ManagerNPC
- MapEventNPC
- MissionsNpc
- QFunctionNPC
- RobotManagerNPC
- TimeManagerNPC
- 自定义功能
- 自定义客户端UI
- Buffer效果自定义设计
- UI管理界面预览
- 如何实现物品放入或取下时的函数触发
- 自定义窗口
- 自定义界面中编辑框参数发送方式
- 自定义客户端装备提示效果
- 自定义特效
- 自定义装备提示样式
- Buff系统说明
- 自定义技能编辑器
- 技能扩展自定义
- 自定义技能初识
- 被动技能属性定义
- 技能模式定义
- 客户端效果定义
- 主动技能动作定义
- 新自定义技能编辑器
- 初始编辑器
- 自定义编辑器使用说明
- 如何实现自定义怪物
- 脚本实例
- NPC对话编辑
- 宝宝叛变的启动和停止
- 创建脚本单元
- 创建一个藏匿于地图上的攻击事件
- 地图传送
- 获取服务器名称
- 获取玩家任务信息
- 检测是否为沙城成员
- 角色称号、头顶花翎、头顶特效设置
- 判断PK值
- 判断队伍信息
- 判断角色对面是一个什么对象
- 判断角色金币、元宝及礼金等数量
- 判断角色所在的地图信息
- 判断角色性别
- 判断角色职业
- 判断两个角色之间的距离
- 判断是否为队长
- 判断是否为行会掌门
- 判断是否为沙巴克城主
- 判断有某一物品的数量
- 判断转生等级及等级
- 让目标移动到指定的坐标
- 让玩家回城
- 如何播放一个声音文件
- 如何操作Check状态检查
- 如何操作数据库
- 如何查看玩家IP来源
- 如何查看装备是否可被穿戴或取下
- 如何查找一个行会
- 如何充值角色的属性点
- 如何初始化全局变量
- 如何穿戴或取下一件装备
- 如何创建一个副本地图
- 如何创建一个行会
- 如何打开一个宝箱
- 如何打开指定的URL
- 如何弹出对话框让玩家选择执行
- 如何读写个人变量、行会变量及全局变量
- 如何读写文本文件
- 如何发送各种文字信息
- 如何访问其他角色
- 如何复活
- 如何给客户端发送一个标题栏闪动
- 如何给玩家发放物品
- 如何更新自定义窗口上的内容
- 如何关闭进度条
- 如何关闭一个打开的自定义窗口
- 如何过滤字符串中的文字
- 如何获得地图上全部玩家的信息
- 如何获得地图上指定范围内的怪物数量
- 如何获取丢在地上物品对象
- 如何获取角色当前使用的称号
- 如何获取角色负重
- 如何获取角色在线时长
- 如何获取排行榜信息
- 如何获取人物当前获得的称号信息
- 如何获取坐标上指定范围内的全部怪物
- 如何加入或离开队伍
- 如何加入一个指定的行会
- 如何加载和保存自定义的配置文件(INI文件读写
- 如何监控攻击模式的更改
- 如何监控玩家扔物品
- 如何检查目标是否处于某种状态
- 如何将NPC设置为当前玩家的雕像
- 如何将地图上的角色全部随机传送到另外一个地图上
- 如何将指定玩家传送到身边
- 如何将装备显示在NPC对话框上
- 如何脚本封速
- 如何脚本刷怪
- 如何脚本增加和删除一个NPC
- 如何脚本增加和删除一个怪物NPC
- 如何禁止玩家聊天
- 如何开启及停止自动增加经验值
- 如何克隆玩家为人形怪
- 如何判断当前等级的经验值上限
- 如何判断队伍中是否为不同职业的角色
- 如何判断角色是否为新人
- 如何判断玩家曾经是否接过某任务
- 如何清除地图上的怪物
- 如何请求一个URL
- 如何取得地图上的怪物数量
- 如何取得行会全部称号及全部成员信息
- 如何取得全部在线用户信息
- 如何取得玩当前机器的机器码
- 如何取得物品的数据库单价和销售价格
- 如何取得邮件的数量信息
- 如何取得自定义界面里面玩家放入的物品信息
- 如何让打开客户端的背包、商城及市场
- 如何让他人执行指定的脚本
- 如何删除或修改行会称号
- 如何删除玩家的物品
- 如何删除一个称号
- 如何删除一个副本地图
- 如何删除一个扩展按钮
- 如何删除一个延时调用函数
- 如何设置当前称号
- 如何设置角色死亡不爆出
- 如何实现充值平台对接
- 如何实现骰子
- 如何实现无敌隐身
- 如何实现物品属性转移(物品复制)
- 如何实现一个带参数的输入框
- 如何实现一个机器人
- 如何实现自定义装备爆出提示
- 如何使用JSON对象
- 如何使用角色S、P及N变量
- 如何使用静态数组和动态数组
- 如何使用升级加属性点
- 如何收取城堡金币
- 如何随机刷新物品属性
- 如何踢出在线人物
- 如何添加一个称号
- 如何调整角色的HP、MP值
- 如何调整角色声望值
- 如何调整人物攻击模式
- 如何调整人物转生等级
- 如何调整限时杀怪经验倍率
- 如何调整装备属性上限
- 如何完全控制他人
- 如何显示一个进度条
- 如何修改怪物名称
- 如何修改行会帮主
- 如何修改人物技能属性
- 如何修改一个物品的属性
- 如何延时调用一个函数
- 如何以爆物的方式将一个怪物的爆率给玩家
- 如何用脚本存取物品
- 如何在地图上爆出一个指定的物品
- 如何在行会指定的称号里面添加成员
- 如何在脚本中引用外部DLL
- 如何在客户端显示一个特效
- 如何增加和移除一个个人时钟事件
- 如何增加或减少角色经验值
- 如何增加一个地图连接点
- 如何增加一个行会的称号
- 如何增加一个扩展按钮
- 如何召唤下属
- 如何指定删除角色身上的装备
- 如何重新计算排行榜
- 如何转职
- 如何自动增加或减少元宝
- 如何做一个感叹号提示
- 实现自定义的客户端命令集
- 推开指定的目标
- 修改怪物的爆率为一个指定的爆率文件
- 循环自身全部技能
- 如何设置装备掉落触发脚本处理
- 如何设置装备掉落提示
- 给玩家添加一个未接任务
- 给玩家添加一个已接任务
- 补丁规则
- NPC补丁设置
- Prguse.data文件编辑的注意事项
- 引擎补丁规则
- 地图补丁规则
- 盾牌补丁
- 怪物补丁设置
- 头发补丁设置
- 武器及衣服补丁设置方法
- 坐骑补丁设置
- 操作相关
- 数据库设置
- 版本数据库管理
- 锄头设置方法
- 攻速及幸运设置
- 技能特殊设置
- 扩展数据管理
- 魔法数据设置要点
- 人形怪穿戴及技能设置
- 人形怪攻击速度设置
- 人形怪数据库设置
- 如何配置宝箱及钥匙
- 如何设置解包物品
- 如何设置一个固定位置的传送道具
- 设计采集类怪物
- 设置自定义物品种类名称
- 数据库报错问题
- 特殊物品属性设置说明
- 添加宝石物品
- 添加可穿戴宝石、气血石及魔血石物品
- 物品数据库设置说明
- 游戏数据库的导入导出
- 服务端操作
- [M2]开启物品属性下限功能
- 摆摊相关
- 备份与恢复
- 防外挂设置
- 服务端部署
- 合区
- 角色成长属性调整
- 配置排行榜系统
- 如何查看M2Server所在机器的机器码
- 如何实现多机负载
- 网关防攻击配置
- 游戏网关性能设置
- 任务系统
- 脚本混编说明
- Call命令说明
- 参数Args的读取
- 存在的意义
- 让他人执行脚本
- 如何定义常量
- 如何读写变量
- 如何实现混编
- 特殊标志段说明
- 特殊的CHECK和SET
- 调整杀怪倍率
- 支持编译时错误提示
- 地图配置
- 地图NPC配置
- 地图安全区编辑
- 地图创建及属性说明
- 地图杀怪任务触发
- 地图事件编辑
- 地图刷怪配置
- 地图挖矿设置
- 附属地图配置
- 关联到盛大新格式地图
- 检查地图文件使用情况
- 卫士配置
- 登陆器操作
- 登陆器自我更新
- 登录器界面组件介绍
- 登录器设计界面初识
- 管理登陆器列表
- 将登陆器列表部署到服务器
- 客户端控制
- 客户端样式选择
- 列表设计界面初识
- 如何创建登陆器皮肤
- 如何生成登陆器文件
- 玩家登陆器选项
- 微端控制
- 版本管理器
- NPC对话内容编辑
- 版本文件二次注册使用方法
- 查看程序是否更新
- 创建新的版本文件
- 单个脚本加密方法
- 额外数据库信息配置
- 给版本设置一个唯一ID
- 怪物爆率配置
- 将版本运行所需的配置文件植入版本文件中
- 角色登陆提示信息
- 脚本分类说明
- 脚本机器人配置
- 配置宝箱
- 配置怪物说话
- 如何开启技能自动追踪目标的功能
- 如何实现登陆器图标及客户端Logo的替换
- 如何下载最新版本
- 商城(元宝、礼金)管理
- 商贩贩卖物品配置
- 设置版本工具环境变量
- 套装配置
- 添加一个盾牌物品
- 系统提示信息配置
- 一键导入其他引擎的版本
- 远程管理
- 资源数据管理
- 如何添加一个任务模板中的任务
- 其他辅助说明
- [重要]脚本编写注意项
- 256颜色值
- IP库
- Mir200_Envir下的列表文件详解
- 各种时间控制方法
- 怪物DB数据
- 怪物Race设置
- 键盘码对应数值表
- 脚本系统与系统安全说明
- Pascal基础说明
- Pascal变量类型
- Pascal数据类型
- 基础函数及单元
- 客户端标签变量
- 疑问/建议/反馈/留言
- 在线教程
- 引擎下载