Jump to content
  • 0

NPC dynamic [Warning] & [Debug]


Question

Posted

-    shop    Coin_shop    -1,501:50
prontera,164,169,4    script    Coin Converter    436,{
   set @i,0;
   mes "[ Coin Converter ]";
   mes "Pilih yang kamu inginkan?";
   mes "Pilih salah satu.";
   callshop "Coin_shop",1;
   npcshopattach "Coin_shop";
   end;

OnBuyItem:
   if(.BuildQuest) {
       for(set .e,0; !compare(getarg(.e+1),"Zeny"); set .e,.e+2) {}
       npcshopadditem "Coin_shop",getarg(.e+2),getarg(.e)*compare(getarg(.e+1),"SZeny");
       setarray .Shop[.i],getarg(.e+2);
       set .i,.i+1;
       goto Quest_Setup;
   }
   if(.Shop[@i]!=@bought_nameid) for(set @i,1; 1; set @i,@i+1) if(.Shop[@i]==@bought_nameid) { set .i,@i; callsub Quest_Setup; }
   for(set @i,1; !@e; set @i,@i+1) if(.Shop[@i]==@bought_nameid) { set @e,1; set .i,@i; callsub Quest_Setup; }
   mes "[ Coin Converter ]";
   mes "Saya memerlukan berikut ini :";
   for(set @i,0; !compare(getarg(@i+1),"Zeny"); set @i,@i+2) mes "^FF0000" + ((countitem(getarg(@i))>=getarg(@i+1))? "^00FF00":"") + "" + getarg(@i+1) + " " + getitemname(getarg(@i)) + " [" + countitem(getarg(@i)) + "/" + getarg(@i+1) + "]";
   if(getarg(@i)) mes "^FF0000" + ((Zeny>=getarg(@i))? "^00FF00":"") + "" + getarg(@i) + " Zeny";
   mes "^000000Sebagai gantinya, saya akan memberikan :^0000FF";
   for(set @i,@i+2; getarg(@i+1,0); set @i,@i+2) mes getarg(@i+1) + " " + getitemname(getarg(@i));
   switch(select("Exchange:" + (((((getiteminfo(@bought_nameid,5) & 1) || (getiteminfo(@bought_nameid,5) & 256) || (getiteminfo(@bought_nameid,5) & 512)) && @equip==0))? "Preview Item":"") + ":No thanks")) {
       case 1:
           for(set @i,0; !compare(getarg(@i+1),"Zeny"); set @i,@i+2) if(countitem(getarg(@i)) < getarg(@i+1)) {
               next;
               mes "Anda harus memiliki " + countitem(getarg(@i)) + " " + getitemname(getarg(@i)) + ", while I require " + getarg(@i+1) + ".";
               mes "Silahkan mendapatkan ^FF0000" + (getarg(@i+1)-countitem(getarg(@i))) + " more " + getitemname(getarg(@i)) + "^000000.";
               close;
           }
           if(Zeny < getarg(@i)) {
               next;
               mes "Kamu tidak memiliki cukup zeny.";
               mes "Silahkan mendapatkan ^FF0000" + (getarg(@i)-Zeny) + " more Zeny^000000.";
               close;
           }
           for(set @i,0; !compare(getarg(@i+1),"Zeny"); set @i,@i+2) delitem getarg(@i),getarg(@i+1);
           set Zeny,Zeny-getarg(@i);
           for(set @i,@i+2; getarg(@i+1,0); set @i,@i+2) getitem getarg(@i),getarg(@i+1);
           if (compare(getarg(@i,0),"announce")) announce strcharinfo(0) + " has just obtained " + getitemname(@bought_nameid) + "!",bc_all;
           close;
       case 2:
           set @bottomview, getlook(3);
           set @topview, getlook(4);
           set @midview, getlook(5);
           addtimer 1000, strnpcinfo(3)+"::On_Leave";
           set @equip,getiteminfo(@bought_nameid, 5);
           set @view, getiteminfo(@bought_nameid, 11);
           if(@equip != -1 && @view > 0) {
               if(@equip & 1) atcommand "@changelook 3 " + @view;
               if(@equip & 256) atcommand "@changelook 1 " + @view;
               if(@equip & 512) atcommand "@changelook 2 " + @view;
           }
           next;
           goto OnBuyItem;
       case 3:
           close;
   }
On_Leave:
   atcommand "@changelook 1 " + @topview;
   atcommand "@changelook 2 " + @midview;
   atcommand "@changelook 3 " + @bottomview;
   set @equip,0;
   set @view,0;
   set @topview,0;
   set @midview,0;
   set @bottomview,0;
   end;
OnInit:
   npcshopitem "Coin_shop",0,0;
   set .BuildQuest,1;
   set .i,1;
Quest_Setup:
   switch(.i) {
       default: set .BuildQuest,0; set .e,0; set .i,0; end;
       case 1: callsub OnBuyItem,675,5,1,"SZeny",674,1,0;
       case 2: callsub OnBuyItem,674,10,1,"SZeny",673,1,0;
       case 3: callsub OnBuyItem,673,10,1,"SZeny",671,1,0;
       case 4: callsub OnBuyItem,671,10,1,"SZeny",670,1,0;        
   }
}

if anyone can help justify my script problem? thanks

post-1298-0-28582200-1335628754_thumb.png

6 answers to this question

Recommended Posts

Posted

The compare functions wants the variable type "string". It receives an integer.

You can solve this by type-casting the variables from integer to string.

Look at the green part. By adding an empty string, you make sure that it is a string:

compare(""+var, ...)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...