游戏简单任务脚本示例luaWord格式文档下载.docx
- 文档编号:17448856
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:20
- 大小:62.71KB
游戏简单任务脚本示例luaWord格式文档下载.docx
《游戏简单任务脚本示例luaWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《游戏简单任务脚本示例luaWord格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
1、该任务中任何死亡都做正常死亡处理,死亡后需要重新从法坛进入目的地
2、当每拿到半颗天使之心,则该地图不可再次进入,输入坐标无效
3、当两个半颗天使之心都已获得,则玉符自动消失
4、两个场景地图不保存信息,即玩家在两个场景地图中的任一个下线后,再次上线则回到法坛前
5、该任务不可重复,每个用户只能完成一次
6、该任务接受后需要在任务日志中记录,用户可以随时查询,任务完成后清除任务日志
7、用户获得的奖励需要做log,方便查询
要求:
1、写出任务基本流程,并附流程图
2、按照任务编写一份伪脚本
其他说明:
1、所有所需的关键词、变量、以及函数由答题者自行定义,并对所定义的词、变量、函数等作出解释说明
2、编写格式可以按自己的方式编写,但需作出必要的说明
3、在战斗脚本部分编写,可任一选择一个战斗进行编写,也可以全部编写
“老道炼药”任务策划案(初稿)
一任务基本流程
领取任务:
1.玩家去道观(21,104)找老道对话,获得玉符,任务开始。
做任务:
2.玩家去道观所在的法坛。
3.玩家在法坛使用玉符,打开通道,输入A坐标,来到光明大殿杀死加百列,获得半颗天使之心。
4.玩家在法坛使用玉符,打开通道,输入B坐标,来到黑暗大殿杀死路西法,获得半颗天使之心。
5.玩家带着2个半颗天使之心找老道对话。
6.玩家奉命炼制天使之心,去找材料黑狗血。
还任务:
7.玩家带着天使之心找老道对话,获得人参果,任务完成。
任务流程图:
⑦
①
②
二加百列战斗脚本流程图
N
YY
NN
Y
NY
AI决策流程图:
三脚本相关
1.函数定义:
GetMissionFlag(PlayerID,MissionID)---读取玩家某任务的任务完成标识
GetMissionSpace()---读取玩家当前已接任务总数,
---未达上限返回TURE,否则返回FALSE
GetMissionName(MissionFlag)---读取指定任务的任务变量名
GetMissionValue(MissionFlag)---读取指定任务的任务变量名对应的变量值
TestMissionFlag(Flag)---检测玩家任务完成标识表的状态,有变化则返回---对应任务的任务编号,否则返回FALSE
GetMissionText(MissionID,MissionFlag)---根据任务编号和任务完成标识读取任务日志说明
GetPlayerLevel(PlayerID)---读取玩家当前等级
GetPlayerName(PlayerID)---读取玩家游戏ID的呢称
GetItem(ItemID)---玩家获得指定物品
LoseItem(ItemID)---玩家失去指定物品
GetMissionGain(MissionID)---玩家获得某任务的任务奖励
LookforItem(ItemID,ItemNumber)---追踪玩家身上携带的某物品,返回TURE或FALSE
PlayAnim(NPC/Player,AnimID)---播放指定的精灵动画
NPCtalk()---显示NPC当前对白
Playertalk()---显示玩家当前对白
ERROR()---提示错误的输入信息
GetPlayerHP(PlayerID)---读取玩家当前HP值
GetNPCHP(NPCID)---读取NPC当前HP值
GetPlayerDroidX()---读取玩家当前X坐标
GetPlayerDroidY()---读取玩家当前Y坐标
GetPlayerDroidDir()---读取玩家当前面向
GetPlayerToNPCDist()---读取玩家距NPC的当前距离
GetNPCDroidX()---读取NPC当前X坐标
GetNPCDroidY()---读取NPC当前Y坐标
GetNPCDroidDir()---读取NPC当前面向
MoveNPCDroid(Dir,Dist,,Speed)---根据给定的面向,距离和速度移动NPC
GetStateTime(FreqtTime)---计时器根据计数循环返回FALSE或1
UseSkill(SkillID)---使用指定的技能
OverSkill(SkillID)---取消指定的技能
ViewPepoleInRegional(radius)---查看区域radius内目标,返回TURE或者FALSE
GetSystemTime()---读取当前系统时间,单位秒
GetRanInRange(Min,Max)---获得[Min+1,Max-Min+1]范围内的任意整数值
ChangeScence(to,from)---由from场景切换到to场景
GetScenceDriod(DroidX,DroidY)---读取玩家输入的X,Y坐标
2.附相关NPC对白配置文件:
NPCdb.text(对白,文件后缀名不知道是什么类型的)
-------------------------------------------------NPC对白编号---------------------------------------------------
//
Dn660=“你输入的是错误的坐标,请重新输入。
”
;
Db1000=“XXX,你能力不够,还是去外面磨炼吧。
Db1001=“XXX,贫道有件事想请你帮忙。
Db1002=“道长,啥事?
Db1003=“是这样,我炼药需要一个叫做天使之心的材料,这个材料在加百列身上有半颗,在路西法身上有半颗,你能帮我去取来吗?
Db1004=“没问题。
Db1005=“XXX,快去做你的事情吧。
Db1006=“XXX,事情办的怎样了?
Db1007=“抱歉,道长,我决定放弃了。
Db1008=“办好了。
Db1009=“太好了,XXX你真是少年英豪,贫道一直很看好你,恩,这个人参果送给你,希望你不要辜负贫道一番心意。
Db1010=“道长你太客气了。
哦,对了,顺便问下,道长你准备炼什么灵丹妙药呀?
Db1011=“没啥用,就是看那鸟人表面道貌岸然,其实一肚子男盗女娼的样子不爽,我正好最近有点闲,拿天使之心不过是想炼一份给自己养的牛除牛虱的药而已。
Db1012=“XXX,贫道要的是完整的天使之心,你用狗血去融合了这两个半颗天使之心,使之变成一颗完整的天使之心,然后再找我吧。
Db1013=“XXX,不要和贫道开玩笑了,快点去完成吧。
Db1014=“XXX,很遗憾你放弃了。
Db1015=“XXX,很高兴见到你,上次多谢你帮忙。
Db1016=“嘎嘎,哪来的异教徒,还不向仁慈的主忏悔?
Db1017=“我呸!
你丫的狂什么,不过是一个长着鸡翅膀的不男不女的鸟人。
Db1018=“气死我也,主会原谅我的,受死吧!
Db1019=“嘎嘎,看你往哪跑!
Db1020=“嘎嘎…”
Db1021=“别得意了,战斗才刚刚开始。
Db1022=“嘎嘎,很失望吧。
Db1023=“该死,不可能的事情,我居然被打败了!
Db1024=“可恶!
Db1025=“难以置信,我会输给一个卑贱的人类么?
Db1026=“别妄想反抗了,快来乖乖受死吧!
Db1027=“还在挣扎,也好,我就来导演一场猫戏老鼠的精彩演出,嘎嘎!
Db1028=“觉悟吧,你死定了。
3.任务脚本:
Mission.lua
--------------------------------------------------导入API-----------------------------------------------------
intHAPI_GetMissionFlag(lua_state*pluastate)
intHAPI_GetMissionName(lua_state*pluastate)
intHAPI_GetMissionValue(lua_state*pluastate)
intHAPI_TestMissionFlag(lua_state*pluastate)
intHAPI_GetMissionText(lua_state*pluastate)
-----------------------------------------------脚本主体--------------------------------------------------------
Func_Mission()
//
;
If(TestMissionFlag())then
If(TestMissionFlag()==01)then---记录新任务信息
Flag=TestMissionFlag();
Mission={};
Mission[Flag]={GetMissionName(Flag)=GetMissionValue(Flag)};
Else
Mission[TestMissionFlag()]=nil;
---删除指定任务信息
End
Elseif(LookforMissionText())then---查询指定任务日志
Print(GetMissionText(MissionID,MissionFlag));
Elseif(LookforMissionTable())then---查询玩家当前任务列表信息
Print(Mission);
End
End
4.老道(npc47)的脚本:
npc47.lua
intHAPI_GetMissionSpace(lua_state*pluastate)
intHAPI_GetPlayerLevel(lua_state*pluastate)
intHAPI_GetPlayerName(lua_state*pluastate)
intHAPI_GetItem(lua_state*pluastate)
intHAPI_GetMissionGain(lua_state*pluastate)
intHAPI_LookforItem(lua_state*pluastate)
intHAPI_PlayAnim(lua_state*pluastate)
intHAPI_NPCtalk(lua_state*pluastate)
intHAPI_Playertalk(lua_state*pluastate)
-------------------------------------------------常量声明--------------------------------------------------------
Level=50
------------------------------------------------对话脚本--------------------------------------------------------
Func_npc47()
#defineXXXGetPlayerName(PlayerID);
If(GetPlayerLevel(PlayerID)<
Level)then
NPCtalk(Db1000);
MissionFlag=GetMissionFlag(PlayerID,Mission112)--读取玩家该任务的完成标识
If(MissionFlag==00)then---玩家没有领取过该任务If(GetMissionSpace())then---玩家还可以领取任务
NPCtalk(Db1001);
Playertalk(Db1002);
NPCtalk(Db1003);
Playertalk(Db1004);
GetItem(Item250);
--获得道具玉符
Else---玩家领取任务已达上限
NPCtalk(Db1005);
Elseif(MissionFlag==01)then
NPCtalk(Db1006,Db1007,Db1008);
If(Answer==Db1007)then
MissionFlag=10;
Elseif(LookforItem(Item368,1))then---察看玩家身上是否携带天使之心
NPCtalk(Db1009);
Playertalk(Db1010);
NPCtalk(Db1011)
GetMissionGain(Mission112);
--获得任务奖励(人参果)
Elseif((LookforItem(Item366,1))then
---查看玩家身上是否携带2个半颗天使之心
If((LookforItem(Item367,1))then
NPCtalk(Db1012);
Else
NPCtalk(Db1013);
End
End
Elseif(MissionFlag==10)then
NPCtalk(Db1014);
Elseif(MissionFlag==11)then
NPCtalk(Db1015);
5.加百列(npc112)的脚本:
npc112.lua
intHAPI_Playertalk(lua_state*pluastate)
intHAPI_ERROR(lua_state*pluastate)
intHAPI_GetPlayerHP(lua_state*pluastate)
intHAPI_GetNPCHP(lua_state*pluastate)
intHAPI_GetPlayerDroidX(lua_state*pluastate)
intHAPI_GetPlayerDroidY(lua_state*pluastate)
intHAPI_GetPlayerDroidDir(lua_state*pluastate)
intHAPI_GetPlayerToNPCDist(lua_state*pluastate)
intHAPI_GetNPCDroidX(lua_state*pluastate)
intHAPI_GetNPCDroidY(lua_state*pluastate)
intHAPI_GetNPCDroidDir(lua_state*pluastate)
intHAPI_MoveNPCDroid(lua_state*pluastate)
intHAPI_GetSystemTime(lua_state*pluastate)
intHAPI_GetRanInRange(lua_state*pluastate)
intHAPI_GetStateTime(lua_state*pluastate)
intHAPI_UseSkill(lua_state*pluastate)
intHAPI_ViewPlayerInRegional(lua_state*pluastate)
//Direction//
NORTH=0;
SOUTH=2;
EAST=4;
WEST=6;
-------------------------------------------------------------------------------------------------------------------
OriginalX=12;
--加百列原来的X坐标
OriginalY=20;
---加百列原来的Y坐标
Speed=10;
---加百列的移动速度
Radius=20;
---加白列可以察觉目标的区域半径
HP=5000;
---加百列的生命满值
Rarity=0;
---指定的几率值
FreqAttack=1;
---加百列的攻击频率(s)
AttackDist=4;
---加百列的有效攻击距离
OrdinaryAttack=1;
---普通攻击
BrightShield=121;
---光明护盾
BrightState=0;
---光明护盾状态
CD=5;
---光明状态有效持续时间(s)
Therapy=122;
---治疗术
Resurrection=123;
---复活术
Cout=0;
---加百列复活术已使用次数
BigPrediction_1=124;
---大预言术之时间凝固
BigPrediction_2=125---大预言术之时间倒流
-----------------------------------------------定义函数-------------------------------------------------------
//---获得需要面对玩家的方向
FunctionGetPlayerFaceDir()
NPCDroidX=GetNPCDroidX();
NPCDroidY=GetNPCDroidY();
PlayerDroidX=GetNPCDroidX();
PlayerDroidY=GetNPCDroidY();
If(NPCDroidX<
PlayerDroidX)then
ReturnEAST;
Else
RetuunWEST;
If(NPCDroidY<
PlayerDroidY)then
ReturnSOUTH;
Else
ReturnNORTH;
ReturnNORTH;
---
//---获得返回原处需要面对的方向
FunctionGetMoveBackDir()
OriginalX)then
Elseif(NPCDroidY<
OriginalY)then
Elseif(NPCDroidX>
ReturnWEST;
Elseif(NPCDroidY>
OriginalY)then
ElsereturnFALSE;
End
//---光明护盾的AI策略
FunctionBrightShield()---
If(BrightState==0)then
Rarity=GetRanInRange(0,9);
If(GetRanInRan
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 游戏 简单 任务 脚本 示例 lua