游迅网
游迅网 > 攻略首页 > 单机游戏攻略 > 正文

《轩辕剑外传汉之云》脚本编写简明教程

2012-07-25 11:05:07来源:游戏下载编辑:评论(0)

这里我给出一个修改的实例,大家可以借此熟悉一下lua脚本的语法(if、for、数组)和汉之云提供的一些函数(additem、addsprite、addmoney分别用于增加物品、怪物和金钱,join用于加入队员)

[Copy to clipboard] [ - ]CODE:
restore_save_q = function()
selmsg(3, "選項:")
setselect(1, "1.存檔")
setselect(2, "2.作弊")
setselect(3, "3.取消")
sleep(3)
waitanykey()
restore_save_ans(getselectanwser())
end

restore_cheat_q = function()
selmsg(6, "選項:")
setselect(1, "1.怪物")
setselect(2, "2.物品")
setselect(3, "3.裝備")
setselect(4, "4.金錢")
setselect(5, "5.隊伍")
setselect(6, "6.取消")
sleep(3)
waitanykey()
restore_cheat_ans(getselectanwser())
end

restore_cheat_ans = function(x)
local mainid = get_mainrole()
local mainname = get_rolename(mainid)
if x == 1 then
local mon = {17, 14, 15, 15, 16, 16, 14, 12, 7, 6}
local a = table.getn(mon)
for i = 1, a do
for j = 1, mon[i] do
addsprite(i * 100 + 900 + j, 1)
end
end
elseif x == 2 then
for i = 6001, 6028 do
if i ~= 6024 then
additem(i, 99)
end
end
for i = 6039, 6046 do
if i ~= 6040 then
additem(i, 99)
end
end
elseif x == 3 then
local i1 = {3001, 3018, 3021, 3041, 3061, 3081, 3101, 4001, 4021, 4041, 5001, 5051}
local i2 = {3016, 3018, 3034, 3055, 3074, 3090, 3109, 4011, 4030, 4051, 5024, 5063}
local a = table.getn(i1)
local b = table.getn(i2)
local num = 11
if a == b then
for i = 1, a do
for j = i1[i], i2[i] do
additem(j, num)
end
end
end
elseif x == 4 then
addmoney(1000000)
elseif x == 5 then
for i = 1, 11 do
join(i)
end
elseif x == 6 then
else
restore_cheat_q()
end
end

restore_save_ans = function(x)
local mainid = get_mainrole()
local mainname = get_rolename(mainid)
if x == 1 then
call_save()
elseif x == 3 then
restore_team()
elseif x == 2 then
restore_cheat_q()
else
restore_save_q()
end
end
二、剧情修改
剧情修改相对比较复杂,所以我们先从人物对话开始介绍。
下面是飞羽军营中和“徐豐”对话的相应代码(简化过了):

[Copy to clipboard] [ - ]CODE:
t341 = function()
local mainid = get_mainrole()
local mainname = get_rolename(mainid)
chang_role_dir_torole(mainid, 341, 0)
lock_player(1)
set_watch_each(mainid, 341)
if isfon(1002) == 1 and isfon(1017) == 0 then
local a = random(2)
if a == 0 then
facetotalk(341, "徐豐", "聽說供應曹賊糧草的是在邽嶺山中的砦堡!")
else
facetotalk(341, "徐豐", "邽嶺就在我軍營外幾里處。")
end
else
if isfon(1017) == 1 and isfon(1053) == 0 then
facetotalk(341, "徐豐", "我們的補給從漢中運來,路途遙遠。不像曹賊,邽嶺以北幾乎是援助他們的砦堡。")
else
if isfon(1101) == 1 and isfon(1151) == 0 then
facetotalk_noback(341, "徐豐", "我們現在就在賊將郭淮、費曜駐守的上邽城外。")
chatinfo(341, "徐豐", "料想他們怎麼也想不到,我們飛羽部隊會在這地方。")
chang_role_dir(341, 0, 1)
end
end
end
lock_player(0)
set_watch_back(mainid, 341)
end
我们可以看到,和NPC对话之前通常会作两件事情:
第一,调用chang_role_dir_torole,使得NPC朝向主角;第二,调用lock_player将主角锁定
然后就是一长串根据isfon的if...else...了。
isfon是is flag on的缩写。每当我们进行一次对话,完成一次任务的时候,系统都会使用fon函数进行记录。之后就可以使用isfon来判断对话是否发生,任务是否完成,等等。
这里,我们和"徐豐"对话的时候,系统会根据flag的值来推断玩家目前处于剧情的哪个阶段,并显示相应的对话
(比如,游戏一开始,和多聞使对话之后就会设置1002这个flag)

isfon和fon对于主线或者支线的剧情非常重要。可以说是我们制作MOD剧情必不可少的函数
譬如,我们完成NPC交待的任务,返回领取奖励的时候,系统就会根据flag来测试相应任务是否完成。

12 2/2
友情提示:支持键盘左右键← →翻页
轩辕剑外传汉之云

轩辕剑外传汉之云

  • 游戏类别:角色扮演
  • 游戏平台:/PC/
  • 开发商:大宇资讯
  • 发行商:大宇资讯
  • 发行时间:2007年12月19日
游戏介绍:《轩辕剑外传:汉之云》是国产电脑游戏《轩辕剑》系列的第9款单机角色扮演游戏,故事背景设定在三国时代,为“轩辕剑伍系列三部曲”的第二部,另两部为《轩辕剑伍:一剑凌云山海情》和《轩辕剑外传:云之遥》。“汉之云”源自游戏角色赵云的一段话,他说他与主角皇甫暮云的名字中都有一个云字,乃大汉的中坚力量,是汉帝国的精英。但从上下文中不难理解,“汉之云”中的“汉”字并非狭指蜀汉政权,而是指益州百姓、蜀汉子民,或者说整个大汉的命运。而根据人物设定,女主角横艾其实也是另一重要意义下的第三位“汉之云”。

推荐阅读

更多>>48小时热评资讯

更多>>精华推荐