铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 2504|回复: 7

手机LUA版求修正此.lua文件内容

[复制链接]
发表于 2011-1-23 13:31 | 显示全部楼层 |阅读模式
本帖最后由 苍天泰坦 于 2011-1-23 14:45 编辑



如图所示,这是原本LUA文件里就存在的一个剧本,只是没有激活...........

用"瞬息千里"功能时,在手机上显示时文字很大,并且其他三个客栈的名字根本无法看到,哪位高人能修复一下,谢谢了~~~

另外,"地下市场"功能里只兜售三个物品,尝试添加过其他物品,但只能显示前三个,如何才能正常显示添加物品?

代码如下:




--场景1 编号为19的D*触发


--先定义本文件使用的局部函数

--当铺
--对于价格表中有价格的,则可收。没有的,如果是药品则一律以10兩的价格收。
local function Menu_Sale()
    local Price={};
        Price[0]=1600;           --醉生梦死酒
        Price[2]=1000;           --还魂液
    Price[28]=600;           --茯苓首乌丸
    Price[29]=700;           --千年灵芝
    Price[34]=500;           --千年人参
    Price[35]=800;           --天山雪莲

        Cls();
    DrawStrBox(CC.MainSubMenuX,CC.MainSubMenuY,"请选择您要当掉的物品",C_WHITE,CC.DefaultFont);
    lib.ShowSurface();
        lib.Delay(500);

        local thing={};
    local thingnum={};

    for i = 0,CC.MyThingNum-1 do
        thing=JY.Base["物品" .. i+1];
        thingnum=JY.Base["物品数量" ..i+1];
    end

    local r=SelectThing(thing,thingnum);
        Cls();
    if r<0 then
            return 0;
        end

    local value;
    if Price[r]==nil then
            if JY.Thing[r]["类型"]==3 then
                value=10;
                else
            DrawStrBoxWaitKey("抱歉,你这物品我们不收。",C_WHITE,CC.DefaultFont);
                        Cls();
                        return 0;
                end
        else
            value=Price[r];
        end

    if DrawStrBoxYesNo(-1,-1,string.format("%s价值%s兩银子,是否当掉?",JY.Thing[r]["名称"],value),C_WHITE,CC.DefaultFont,1) == true then
        instruct_32(r,-1);                 --物品减少1
        instruct_32(CC.MoneyID,value);     --银子增加
    end
        Cls();
        return 0;
end




local function Menu_Shop()
    TalkEx("我们这里出售市面上没有的产品,欢迎选购",111,0);

        local ShopThing={ {0,2000},         --醉生梦死酒
                          {2,1200},          --还魂液
                                          {28,800},}         --茯苓首乌丸

    local menu={};
        for i=1,3 do
            menu={};
            menu[1]=string.format("%-12s %5d",JY.Thing[ShopThing[1]]["名称"],ShopThing[2]);
        menu[2]=nil;
                menu[3]=1;
        end

    local r=ShowMenu(menu,3,0,CC.MainSubMenuX,CC.MainSubMenuY+CC.SingleLineHeight,0,0,1,1,CC.DefaultFont,C_ORANGE, C_WHITE);

    if r>0 then
        if instruct_31(ShopThing[r][2])==false then
            TalkEx("非常抱歉,你身上的钱似乎不够.",111,0);
        else
            instruct_32(CC.MoneyID,-ShopThing[r][2]);     --银子减少
            instruct_32(ShopThing[r][1],1);           --物品增加
            TalkEx("欢迎下次光临!",111,0);
        end
    end

end


local function Menu_Task()
    TalkEx("欢迎光临佣兵行会,您可以选择任务",111,0);

    local menu={ {"去沙漠消灭蜘蛛怪",nil,1,61,50},    --最后两个数据为战斗编号和赢后得到的钱数
                     {"去南海杀大鳄鱼",nil,1,89,100},
                                 {"去长白山打雪怪",nil,1,6,200},
                                 };

    local r=ShowMenu(menu,3,0,CC.MainSubMenuX,CC.MainSubMenuY+CC.SingleLineHeight,0,0,1,1,CC.DefaultFont,C_ORANGE, C_WHITE);

    if r>0 then
        TalkEx("祝你好运!",111,0);
                if WarMain(menu[r][4],1)==true then
                    instruct_13();
            DrawStrBoxWaitKey(string.format("您的战斗胜利,获得%d兩银子!",menu[r][5]),C_WHITE,CC.DefaultFont);
            instruct_32(CC.MoneyID,menu[r][5]);     --银子减少
                else
                    instruct_13();
            DrawStrBoxWaitKey("战斗失败,抱歉没有银子可挣!",C_WHITE,CC.DefaultFont);
                end
        end

    Cls();

end



--去其他客栈
local function Menu_Go()
    TalkEx("您可以选择要去的客栈。",111,0);
    local Address={ {3,21,50},           --依次为场景id,出现在场景的XY坐标。注意这个坐标必须是空地。
                        {40,26,43},
                                        {60,26,42},
                    {61,23,49}, };

    local menu={};
        for i=1,4 do
            menu={ JY.Scene[Address[1]]["名称"],nil,1};
        end

    local r=ShowMenu(menu,4,0,200,200,0,0,1,1,24,C_ORANGE, C_WHITE);

    if r>0 then

                lib.ShowSlow(50,1);
                ChangeSMap(Address[r][1],Address[r][2],Address[r][3],0);       --设置新场景
                --设置新的主地图坐标,以便从新场景正确出来。
                ChangeMMap(JY.Scene[JY.SubScene]["外景入口X1"],JY.Scene[JY.SubScene]["外景入口Y1"]+1,0);

        lib.ShowSlow(50,0);
    end;

    Cls();
    return 1;
end



-- 下面是事件执行

--在事件执行时,首先根据JY.CurrentEventType变量确定事件触发方式 1 空格触发 2 物品触发 3路过触发
--然后根据JY.SubScene 和JY.CurrentD 得到当前事件和当前D* 数据。读取D*相应触发事件的值。
--最后根据这个值来判断事件应该执行的动作。然后按照需要可以修改此值,达到更新事件动作的目的


    if JY.CurrentEventType~=1 then
            return ;
        end

    local v=GetD(JY.SubScene,JY.CurrentD,2);       --得到空格触发事件的值

        if v<0 then
            return ;
        elseif v==0 then
        Talk("咦?你刚才还在外面,怎么突然就到这里来了?莫不是使出了传说中的移行幻影之术?",0);
                TalkEx("哈哈,你看错了。我是韦小宝的哥哥韦大宝,我们两个是孪生,所以很多人都会认错的。",111,0);
        Talk("你既然是他哥哥,那么本领是不是比他大那么一点点呢?",0);
                TalkEx("那当然,他的那些货色也只能哄哄新人,没他的货同样可以在江湖上混。我这里提供的都是特殊服务,你要不要试试看?",111,0);
        Talk("你都提供哪些特殊服务啊?介绍一下先",0);
                TalkEx("提供以下几种服务:典当服务,地下市场,佣兵行会,瞬息千里",111,0);
        Talk("那典当服务就是当铺了?",0);
                TalkEx("对,你身上用不着的东西,都可以进行在这里当掉。不过是死当,不能赊回的。当然,有些东西我们是不收的。我们只收药品。也回收地下市场出售的物品",111,0);
        Talk("地下市场是什么?莫非是黑市?",0);
                TalkEx("嘘!小声点,当心官差来了。这里提供市面上见不到的特殊物品。",111,0);
        Talk("那佣兵行会是干什么的,难道也能接任务做?",0);
                TalkEx("对啊!你是不是经常感到没钱花?我们可以给你提供挣钱的机会,给你任务做。可以挣钱的同时顺便练练级。",111,0);
        Talk("有道理,那瞬息千里是干什么的?",0);
                TalkEx("看你大老远跑到我这里来。我可以给你免费提供去其他客栈的服务,您一眨眼的功夫,就到了其他客栈了,岂不美哉?",111,0);

        SetD(JY.SubScene,JY.CurrentD,2,1)     --设置空格触发事件的值
    elseif v==1 then
                TalkEx("要不要试试我提供的特殊服务?",111,0);
        Talk("不错,不错。我来见识一下你的特殊服务。",0);
        Cls();

                local menu={ {"典当服务",Menu_Sale,1},
                             {"地下市场",Menu_Shop,1},
                             {"佣兵行会",Menu_Task,1},
                                         {"瞬息千里",Menu_Go,1},}
        local nexty=CC.MainSubMenuY+CC.SingleLineHeight;
        local r=ShowMenu(menu,4,0,CC.MainSubMenuY,nexty,0,0,1,1,CC.DefaultFont,C_ORANGE,C_WHITE);
                Cls();

        end



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2011-1-23 13:35 | 显示全部楼层
仔细看下ShowMenu这个函数的使用说明即可解决问题
第一个问题是显示坐标的问题
第二个问题是显示菜单数量的问题

看下ShowMenu这个函数的各个参数的意义后即可,很容易改好
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2011-1-23 13:56 | 显示全部楼层
jy02785317 发表于 2011-1-23 13:35
仔细看下ShowMenu这个函数的使用说明即可解决问题
第一个问题是显示坐标的问题
第二个问题是显示菜单数量 ...

感谢提醒,客栈移动问题解决,不过关于贩卖物品还是一头雾水,如果我没弄错的话,应该是这句代码

local r=ShowMenu(menu,3,0,CC.MainSubMenuX,CC.MainSubMenuY+CC.SingleLineHeight,0,0,1,1,CC.DefaultFont,C_ORANGE, C_WHITE);

那个3应该就是菜单的数量,不过测试的时候老是出错,比如修改为贩卖7个物品,添加后面四个物品后,将代码里的3改为7,只要选择“地下市场”菜单就会被踢出游戏

这个问题到底错在哪???
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2011-1-23 14:01 | 显示全部楼层
把你如何添加物品的代码贴出来看看
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2011-1-23 14:28 | 显示全部楼层
local function Menu_Shop()
    TalkEx("我们这里出售市面上没有的产品,欢迎选购",111,0);

        local ShopThing={ {198,500},         --醉生梦死酒
                          {199,300},          --还魂液
                          {28,400},        --茯苓首乌丸
                          {29,700},        --千年灵芝
                          {34,600},        --千年人蔘
                          {35,800},        --天山雪莲
                          {20,300}, }       --天王保命丹

    local menu={};
        for i=1,3 do
            menu[i]={};
            menu[i][1]=string.format("%-12s %5d",JY.Thing[ShopThing[i][1]]["名称"],ShopThing[i][2]);
        menu[i][2]=nil;
                menu[i][3]=1;
        end

    local r=ShowMenu(menu,7,0,CC.MainSubMenuX,CC.MainSubMenuY+CC.SingleLineHeight,0,0,1,1,CC.DefaultFont,C_ORANGE, C_WHITE);

    if r>0 then
        if instruct_31(ShopThing[r][2])==false then
            TalkEx("非常抱歉,你身上的钱似乎不够.",111,0);
        else
            instruct_32(CC.MoneyID,-ShopThing[r][2]);     --银子减少
            instruct_32(ShopThing[r][1],1);           --物品增加
            TalkEx("欢迎下次光临!",111,0);
        end
    end

end
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2011-1-23 14:29 | 显示全部楼层
而同样按照这样添加的战斗则无任何问题

local function Menu_Task()
    TalkEx("欢迎光临佣兵行会,您可以选择任务",111,0);

    local menu={ {"去沙漠消灭蜘蛛怪",nil,1,61,100},    --最后两个数据为战斗编号和赢后得到的钱数
                     {"去南海杀大鳄鱼",nil,1,89,200},
                                 {"去长白山打雪怪",nil,1,6,300},
                                 {"去光明顶挑战六大门派高手",nil,1,12,1000},
                                 {"去黑木崖挑战东方不败",nil,1,54,3000},
                                 {"去圣堂挑战邪道十大高手",nil,1,133,4000},
                                 {"去圣堂挑战正道十大高手",nil,1,134,5000},
                                 };

    local r=ShowMenu(menu,7,0,CC.MainSubMenuX,CC.MainSubMenuY+CC.SingleLineHeight,0,0,1,1,CC.DefaultFont,C_ORANGE, C_WHITE);

    if r>0 then
        TalkEx("祝你好运!",111,0);
                if WarMain(menu[r][4],1)==true then
                    instruct_13();
            DrawStrBoxWaitKey(string.format("您的战斗胜利,获得%d兩银子!",menu[r][5]),C_WHITE,CC.DefaultFont);
            instruct_32(CC.MoneyID,menu[r][5]);     --银子减少
                else
                    instruct_13();
            DrawStrBoxWaitKey("战斗失败,抱歉没有银子可挣!",C_WHITE,CC.DefaultFont);
                end
        end

    Cls();

end
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2011-1-23 14:37 | 显示全部楼层
有一个地方有问题

  1.         for i=1,3 do
  2.             menu[i]={};
  3.             menu[i][1]=string.format("%-12s %5d",JY.Thing[ShopThing[i][1]]["名称"],ShopThing[i][2]);
  4.         menu[i][2]=nil;
  5.                 menu[i][3]=1;
  6.         end
复制代码
需要把f
or i=1,3 do 改成for i=1,7,如果还想继续增加,相应的数字还要作修改
或者也可以这样写

  1.                 for i,v in pairs(ShopThing) do
  2.                         menu[i]={};
  3.                         menu[i][1]=string.format("%-12s %5d",JY.Thing[ShopThing[i][1]]["名称"],ShopThing[i][2]);
  4.                         menu[i][2]=nil;
  5.                         menu[i][3]=1;
  6.                 end
复制代码
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2011-1-23 14:43 | 显示全部楼层
好的,感谢您的耐心解答,谢谢了!!!
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-9-28 04:48

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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