UID11438
阅读权限90
威望 点
积分10672
注册时间2012-2-5
最后登录1970-1-1
听众
收听
 
 
 
升级 
    0%
 
 
 | 
 
 
发表于 2012-4-10 21:21:57
|
显示全部楼层
 
 
 
 本帖最后由 一生一叹一痕沙 于 2012-4-10 21:29 编辑  
 
今天回来后正好要更新RA源码,把那段源码if语句加到itemdb.c里,生成失败,他说battle_debug_itemnull不属于battle.......后面几个英文忘了,吃饭前弄的,忘了说了,服务端用的是RA15839 
然后就照原来那个脚本自己也做了一个,去掉countitem还是出错。就是灵巧儿源码里的那段警告,就是在把东西拖进窗口点购买后就会显示,制作扣东西都不会再报错了。今天上班一有空就再研究callsub,特别是当中起初判断需要什么材料前的那段if(@bought_nameid == .shop[@i]),一直没理解了,研究了好久才开了一点窍,主要还是没能理解callsub的运用 
 
后来还是用回自己比较熟悉的callfunc 
 
-        shop        qqj_shop        -1,512:50 
prontera,150,172,4        script        头饰制作        446,{ 
        mes "[裁缝]"; 
        mes "这里我可以为你做很多头饰,"; 
        mes "但要东西哦"; 
        callshop "qqj_shop",1; 
        npcshopattach "qqj_shop"; 
        end; 
 
OnBuyItem: 
        if(@bought_nameid == 5353) callfunc "HandDo",0,@bought_nameid; 
        if(@bought_nameid == 2629) callfunc "HandDo",1,@bought_nameid; 
 
 
 
OnInit: 
        npcshopitem "qqj_shop",5353,1,2629,1; 
        end; 
} 
 
 
 
function        script        HandDo        { 
        switch(getarg(0)) { 
                case 0:        setarray @shop[0],500000,502,1,503,1,504,1,0;break; 
                case 1:        setarray @shop[0],500000,502,1,503,1,504,1,505,1,0;break; 
        } 
        mes "- 制作 "+getitemname(getarg(1))+""; 
        mes "- 请准备好下面的材料!"; 
        for(set @e,1;@shop[@e] != 0;set @e,@e+2) { 
                mes " "+getitemname(@shop[@e])+"  x" + countitem(@shop[@e]) +"/"+ @shop[@e+1] +(countitem(@shop[@e]) >= @shop[@e+1]?("已完成"):("未完成")); 
        } 
        mes "需要"+@shop[0]+"Z"; 
        next; 
        switch(select("制作","看样子","结束对话")) { 
        case 1:        if(Zeny <= @shop[0]) goto L_nomoney; 
                set zeny,zeny-@shop[0]; 
                for(set @e,1;@shop[@e] != 0;set @e,@e+2) { 
                        if(countitem(@shop[@e]) < @shop[@e+1]) goto L_nomoney; 
                        delitem @shop[@e],@shop[@e+1]; 
                } 
                mes "制作成功"; 
                getitem getarg(1),1; 
                close; 
        case 2:        mes "制作成功"; 
                close; 
        case 3:        close; 
L_nomoney: 
        mes "get out!"; 
        close; 
        } 
} 
 
测试了没错误,其他的自己根据原来的东西加吧。 |   
 
 
 
 |