gmsv石器单机研究论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1431|回复: 4

【ABLUA教程】模拟地底封印之间黑暗精灵王

[复制链接]

34

主题

72

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
21279
发表于 2017-12-14 22:12:06 | 显示全部楼层 |阅读模式
gmsv石器单机原创作品


原文
NEWNPCENEMY

entype:2
askbattlemsg1:你又想来封印我吗?
askbattlemsg2:可恶的光明精灵王,竟然关了我两千年!
askbattlemsg3:不过因为这场地震,我出去的日子终于到来了!
askbattlemsg4:就凭你一个人类也想来打扰我的计划吗?
askbattlemsg5:不要以为你可以承受我累积了两千年的魔力!
askbattlemsg6:受死吧!
startmsg:胆敢阻拦我?不自量力的人类!死吧!
dieact:1
warpfl:30619
warpx:19
warpy:22
item:1292
enemyno:1690,1688,1687,1689,1686,1678,1679,1677,1680
deniedmsg:你是什么东西?
alreadymsg:别急,马上就轮到你了…
onebattle:1
OVER

NEWEVENT1:
FREE:ENDEV=4&ENDEV=69&ENDEV=70&NOWEV=71&EQUIT=1292
WARP:30691,87,68
endmsg:让你们尝尝我两千年的魔力与怨念吧!
OVER

NEWEVENT2:
FREE:ENDEV=4&ENDEV=69&ENDEV=70&NOWEV=71&EQUIT!=1292
WARP:30619,19,22
endmsg:没有灵力铠,你是无法阻止我的~~~
OVER

NEWEVENT3:
FREEV>0
WARP:117,180,99
endmsg:别想混水摸鱼!
OVER


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
转LUA
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------



--NPC战斗结束事件(NPC索引, 战斗索引,赢败)
function BattleOver(meindex, battleindex, iswin)
                --当NPC输了
                if iswin == 1 then
                        for i=0, 4 do
                                local charaindex = battle.getCharOne(battleindex, i, 0)
                                if char.check(charaindex) == 1 then
                                  if npc.Free(meindex, charaindex, "ENDEV=4&ENDEV=69&ENDEV=70&NOWEV=71&EQUIT=1292") == 1 then
                                    char.WarpToSpecificPoint(charaindex, 30691, 87, 68)
                                    char.TalkToCli(charaindex, meindex, ""..char.getChar(meindex, "名字")..":让你们尝尝我两千年的魔力与怨念吧!", "黄色")
                                elseif npc.Free(meindex, charaindex, "ENDEV=4&ENDEV=69&ENDEV=70&NOWEV=71&EQUIT!=1292") == 1 then
                                    char.TalkToCli(charaindex, meindex, ""..char.getChar(meindex, "名字")..":没有灵力铠,你是无法阻止我的~~~", "黄色")
                                    char.WarpToSpecificPoint(charaindex, 30619,19,22)
                                else
                                   char.TalkToCli(charaindex, meindex, ""..char.getChar(meindex, "名字")..":别想混水摸鱼!", "黄色")
                                   char.WarpToSpecificPoint(charaindex, 117,180,99)
                                end
                             end
                        end
                end
end

--NPC对话事件(NPC索引)
function Talked(meindex, talkerindex , szMes, color )
        if npc.isFaceToFace(meindex, talkerindex) == 1 then
          if npc.Free(meindex, talkerindex, "ENDEV=4&ENDEV=69&ENDEV=70&NOWEV=71&EQUIT=1292") == 1 then
                  token = "你又想来封印我吗?\n"                       
                                 .. "可恶的光明精灵王,竟然关了我两千年!\n"
                                 .. "不过因为这场地震,我出去的日子终于到来了!\n"
                                 .. "就凭你一个人类也想来打扰我的计划吗?\n"
                                 .. "不要以为你可以承受我累积了两千年的魔力!\n"
                                 .. "受死吧!\n"
                                                                                                                                          
                  lssproto.windows(talkerindex, "对话框", "确定|取消", 1, char.getWorkInt( meindex, "对象"), token)
                else
                  char.TalkToCli(talkerindex, meindex, ""..char.getChar(meindex, "名字")..":你是什么东西?", "黄色")
                end
        end
end

--NPC窗口事件(NPC索引)
function WindowTalked ( meindex, talkerindex, seqno, select, data)
        if npc.isFaceToFace(meindex, talkerindex) == 1 then
                if seqno == 1 then
                        if select == 1 then
                                enemytable = {1690,1688,1687,1689,1686,1678,1679,1677,1680}
                                battleindex = battle.CreateVsEnemy(talkerindex, meindex, enemytable)
                        end
                end
        end
end

function Create(name, metamo, floor, x, y, dir)
        --创建NPC(NPC名字,图像号,地图号,坐标X,坐标Y,方向号)将返回一个NPC索引
        npcindex = npc.CreateNpc(name, metamo, floor, x, y, dir)
        --设置事件触发(NPC索引,事件,执行函数,执行函数文件路径)
        char.setFunctionPointer(npcindex, "对话事件", "Talked", "")
        char.setFunctionPointer(npcindex, "窗口事件", "WindowTalked", "")
        char.setFunctionPointer(npcindex, "战后事件", "BattleOver", "")
end

function data()

end

function main()
        data()
        Create("黑暗精灵王", 100444, 2000, 58, 77, 4)  --坐标没有修改
end


最后提示:data修改各方面都在于有自学精神,好多知识是需要实践过才掌握的







77

主题

153

帖子

333

积分

中级会员

Rank: 3Rank: 3

积分
333
发表于 2017-12-14 22:27:56 | 显示全部楼层
石器时代比魔力的代码要复杂多了,

370

主题

843

帖子

990

积分

中级会员

Rank: 3Rank: 3

积分
990
发表于 2017-12-31 16:14:09 | 显示全部楼层
也?好久没来,老大发帖子了?

1

主题

40

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2018-1-12 14:48:48 | 显示全部楼层
学习一下~~~~~~~~~~~~~~~~~~~~~~~~~~

295

主题

720

帖子

1885

积分

高级会员

Rank: 4

积分
1885
发表于 2018-1-20 20:10:36 | 显示全部楼层
感谢 大神呀 ~!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|gmsv石器单机研究论坛  

JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!

GMT+8, 2018-4-26 15:17 , Processed in 0.149990 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表