logo资料库

lua游戏脚本(源码).doc

第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
资料共15页,剩余部分请下载后查看
一 任务简要说明: 游戏任务策划案 老道炼药,需要一个天使之心,在天使加百列身上有半颗,在路西法身上有半颗。老道交给 你一个玉符,告诉你在法坛上使用可以帮你打开通往两处的通道。并告诉你两处的坐标 A、 B。(不在法坛上使用玉符无效) A 坐标通往加百列,B 通道通往路西法。 你站在法坛上,使用玉符进入光明前殿(或者黑暗大殿,进入先后次序不论)。 进入光明前殿遇到加百列,加百列异常高傲,称你为异教徒,你回敬他是长着鸡翅膀的不男 不女的鸟人,对骂之后开始战斗。 加百列战斗策略:自身 20%的几率使用光明护盾,持续 5 秒,每次光明护盾消失后都有 20% 的几率再次使用。 当自身血量低于最大血量有 10%的几率使用治愈术。 当自身血量低于最大血量 10%有 10%的几率使用复活术,血量回满,复活术最多可使用三 次。 当自身血量低于最大血量 1%,且三次复活术不满则 100%使用复活术。 当对方血量是当前自身血量的 2 倍,有 10%的几率使用大预言术,大预言术 50%几率为时 间凝固,对方不可操作,时间 5 秒,50%的几率为时间逆流,对方所有属性减半,时间 5 秒 加百列死亡后 100%获得半颗光明天使之心,获得天使之心后,你自动返回法坛前,法坛前 坐标为 C。 进入黑暗神殿,路西法只说了声战斗吧,即开始战斗。 路西法战斗策略:当自身血量分别为最大血量的 90%,70%, 50%, 30%, 10%时开始召 唤生物,第一批为三个石像鬼,第二批为三个黑暗巫师,第三批为四个大恶魔,第四批为四 个骨龙,第五批为五个深渊魔王。 当每死一只召唤生物,有 10%的几率分别使用虚弱,中毒,恐惧,失明,四个魔法中的一 个。 若召唤生物没有全部死亡,而路西法血量少于 5%的时候处于无敌状态,物理和魔法攻击免 疫。 杀死路西法 100%获得半颗黑暗天使之心,获得后自动返回法坛前台。 你将两个半颗天使之心带到老道处,老道要你用狗血去融合了这两个半颗天使之心,使之变 成一颗完整的天使之心。
你去找了半盆黑狗血,将两颗天使之心扔进去,一道光闪过,盆里出现课天使之心,你拿完 整的天使之心又去交给老道,老道很满意,给了你一枚人参果,你临走好奇问老道要天使之 心炼什么药,老道告诉你,没啥用,就是看鸟人脸上道貌岸然,一肚子男盗女娼的样子不爽, 正好最近有点闲,拿天使之心不过是想炼一份给自己养的牛除牛虱的药而已。你不仅为老道 的恶搞而汗颜。 特别说明: 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.玩家带着天使之心找老道对话,获得人参果,任务完成。 任务流程图: 找黑狗血 ⑦ 光明大殿 ① 老道 道观 ⑥ ⑤ ② ③ ② (法坛) ④ 二 加百列战斗脚本流程图 黑暗大殿 加百列 路西法 Dist = 0 DropItem () MoveBack () N N NPC 生命状态 Move, Dist-1 Y 战斗状态 Y Y 战斗状态 N 参数 Dir,Dist 执行决策 N Dist>0 Y AI 决策
AI 决策流程图: BrightShield ( ) N Resurrection ( ) N Therapy ( ) N BigPrediection ( ) N Y Y Y Y UseSkill (AI) 三 脚本相关 1.函数定义: GetMissionFlag (PlayerID,MissionID) GetMissionSpace ( ) GetMissionName (MissionFlag) GetMissionValue(MissionFlag) TestMissionFlag (Flag) ---读取玩家某任务的任务完成标识 ---读取玩家当前已接任务总数, ---未达上限返回 TURE,否则返回 FALSE ---读取指定任务的任务变量名 ---读取指定任务的任务变量名对应的变量值 ---检测玩家任务完成标识表的状态,有变化则返回 ---对应任务的任务编号,否则返回 FALSE ---读取玩家当前等级 ---读取玩家游戏 ID 的呢称 ---玩家获得指定物品 ---玩家失去指定物品 ---玩家获得某任务的任务奖励 ---追踪玩家身上携带的某物品,返回 TURE 或 FALSE GetMissionText (MissionID,MissionFlag) ---根据任务编号和任务完成标识读取任务日志说明 GetPlayerLevel (PlayerID) GetPlayerName (PlayerID) GetItem (ItemID) LoseItem (ItemID) GetMissionGain (MissionID) LookforItem (ItemID,ItemNumber) PlayAnim (NPC/Player,AnimID) NPCtalk ( ) Playertalk ( ) ERROR( ) GetPlayerHP (PlayerID) GetNPCHP (NPCID) GetPlayerDroidX ( ) GetPlayerDroidY ( ) GetPlayerDroidDir ( ) ---播放指定的精灵动画 ---显示 NPC 当前对白 ---显示玩家当前对白 ---提示错误的输入信息 ---读取玩家当前 HP 值 ---读取 NPC 当前 HP 值 ---读取玩家当前 X 坐标 ---读取玩家当前 Y 坐标 ---读取玩家当前面向
GetPlayerToNPCDist ( ) GetNPCDroidX ( ) GetNPCDroidY ( ) GetNPCDroidDir ( ) MoveNPCDroid(Dir, Dist,,Speed) GetStateTime (FreqtTime) UseSkill (SkillID) OverSkill (SkillID) ViewPepoleInRegional (radius) GetSystemTime ( ) GetRanInRange (Min,Max ) ChangeScence(to,from) GetScenceDriod (DroidX, DroidY) ---读取玩家距 NPC 的当前距离 ---读取 NPC 当前 X 坐标 ---读取 NPC 当前 Y 坐标 ---读取 NPC 当前面向 ---根据给定的面向,距离和速度移动 NPC ---计时器根据计数循环返回 FALSE 或 1 ---使用指定的技能 ---取消指定的技能 ---查看区域 radius 内目标,返回 TURE 或者 FALSE ---读取当前系统时间,单位秒 ---获得[Min+1,Max-Min+1]范围内的任意整数值 ---由 from 场景切换到 to 场景 ---读取玩家输入的 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----------------------------------------------------- int HAPI_GetMissionFlag (lua_state *pluastate) int HAPI_GetMissionName (lua_state int HAPI_GetMissionValue(lua_state *pluastate) int HAPI_TestMissionFlag (lua_state int HAPI_GetMissionText (lua_state *pluastate) -----------------------------------------------脚本主体-------------------------------------------------------- Func_Mission ( ) *pluastate) *pluastate) // ; ; // If (TestMissionFlag ( )) then If (TestMissionFlag ( ) = = 01) Flag= TestMissionFlag ( ); Mission={ }; Mission[Flag]={GetMissionName (Flag)= GetMissionValue (Flag)}; ---记录新任务信息 then Else End Mission={ }; Mission[TestMissionFlag ( )]=nil; ---删除指定任务信息 Else if (LookforMissionText ( )) then ---查询指定任务日志 Print (GetMissionText(MissionID, MissionFlag)); Else if (LookforMissionTable ( ) ) then ---查询玩家当前任务列表信息 Print (Mission); End End
4.老道(npc47)的脚本:npc47.lua *pluastate) *pluastate) --------------------------------------------------导入 API----------------------------------------------------- int HAPI_GetMissionFlag (lua_state *pluastate) int HAPI_GetMissionSpace (lua_state int HAPI_GetPlayerLevel (lua_state *pluastate) int HAPI_GetPlayerName (lua_state *pluastate) int HAPI_GetItem (lua_state int HAPI_GetMissionGain (lua_state *pluastate) int HAPI_LookforItem (lua_state *pluastate) int HAPI_PlayAnim (lua_state *pluastate) int HAPI_NPCtalk (lua_state *pluastate ) int HAPI_Playertalk (lua_state *pluastate) -------------------------------------------------常量声明-------------------------------------------------------- Level=50 ------------------------------------------------对话脚本-------------------------------------------------------- Func_npc47 ( ) # define XXX If (GetPlayerLevel (PlayerID)
Else if ((LookforItem (Item366,1)) If ((LookforItem (Item367,1)) NPCtalk (Db1012); then ---查看玩家身上是否携带 2 个半颗天使之心 then NPCtalk (Db1013); Else End End Else if (MissionFlag= =10) then NPCtalk (Db1014); Else if (MissionFlag= =11) then NPCtalk (Db1015); End End 5.加百列(npc112)的脚本:npc112.lua *pluastate) *pluastate ) --------------------------------------------------导入 API----------------------------------------------------- *pluastate ) int HAPI_NPCtalk (lua_state int HAPI_Playertalk (lua_state *pluastate ) int HAPI_ERROR (lua_state *pluastate ) int HAPI_GetPlayerHP (lua_state int HAPI_GetNPCHP (lua_state *pluastate) int HAPI_GetPlayerDroidX (lua_state int HAPI_GetPlayerDroidY (lua_state*pluastate) int HAPI_GetPlayerDroidDir (lua_state *pluastate) int HAPI_GetPlayerToNPCDist (lua_state *pluastate) int HAPI_GetNPCDroidX (lua_state *pluastate) int HAPI_GetNPCDroidY (lua_state *pluastate ) int HAPI_GetNPCDroidDir (lua_state int HAPI_MoveNPCDroid (lua_state *pluastate) int HAPI_GetSystemTime (lua_state *pluastate ) int HAPI_GetRanInRange (lua_state *pluastate) int HAPI_GetStateTime (lua_state *pluastate) *pluastate) int HAPI_UseSkill (lua_state int HAPI_ViewPlayerInRegional (lua_state *pluastate) *pluastate) // Direction -------------------------------------------------常量声明-------------------------------------------------------- // NORTH=0; SOUTH=2; EAST=4; WEST=6;
分享到:
收藏