Jump to content
  • 0

Question

Posted (edited)

I got problem with the Voteforpoints script by Jaypee.

I'm using the dynamic npc made by Lunar, and I changed zeny into .@points, so it should get the votepoints.

but when I click the npc. It shows no votepoints. The points aren't updated.

What script should I used?

btw, here's my script.

- shop upperhgr#v4p -1,501:50
que_temsky,87,147,5 script Upper Headgear#v4p 436,{
function getPoints;
function updatePoints;
dispbottom "You currently have "+.@points+" Vote Points.";
set @i,0;
mes "[Vote for Points]";
mes "Which item do you wish to obtain?";
mes "Select only one.";
callshop "upperhgr#v4p",1;
npcshopattach "upperhgr#v4p";
end;
OnBuyItem:
if(.BuildQuest) {
 for(set .e,0; !compare(getarg(.e+1),".@points"); set .e,.e+2) {}
 npcshopadditem "upperhgr#v4p",getarg(.e+2),getarg(.e)*compare(getarg(.e+1),"S.@points");
 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 "[Vote for Points]";
mes "I require the following:";
for(set @i,0; !compare(getarg(@i+1),".@points"); 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" + ((.@points>=getarg(@i))? "^00FF00":"") + "" + getarg(@i) + " Vote Points";
mes "^000000In exchange, I will give you:^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),".@points"); set @i,@i+2) if(countitem(getarg(@i)) < getarg(@i+1)) {
next;
mes "You have " + countitem(getarg(@i)) + " " + getitemname(getarg(@i)) + ", while I require " + getarg(@i+1) + ".";
mes "Please obtain ^FF0000" + (getarg(@i+1)-countitem(getarg(@i))) + " more " + getitemname(getarg(@i)) + "^000000.";
close;
  }
  if(.@points < getarg(@i)) {
next;
mes "[Vote for Points]";
mes "You do not have enough Vote Points.";
mes "Please obtain ^FF0000" + (getarg(@i)-.@points) + " more Vote Points^000000.";
close;
  }
  for(set @i,0; !compare(getarg(@i+1),".@points"); set @i,@i+2) delitem getarg(@i),getarg(@i+1);
  set .@points,.@points-getarg(@i);
  for(set @i,@i+2; getarg(@i+1,0); set @i,@i+2) getitem getarg(@i),getarg(@i+1);
  dispbottom "You now have "+.@points+" Vote Points left.";
  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 "upperhgr#v4p",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,5,"S.@points",5474,1;
 case 2: callsub OnBuyItem,5,"S.@points",21453,1;
 case 3: callsub OnBuyItem,5,"S.@points",21454,1;
 case 4: callsub OnBuyItem,5,"S.@points",21609,1;
 case 5: callsub OnBuyItem,5,"S.@points",21389,1;
 case 6: callsub OnBuyItem,5,"S.@points",21420,1;
 case 7: callsub OnBuyItem,5,"S.@points",21424,1;
 case 8: callsub OnBuyItem,5,"S.@points",21427,1;
 case 9: callsub OnBuyItem,5,"S.@points",21428,1;
 case 10: callsub OnBuyItem,5,"S.@points",21429,1;
}
end;
//Functions Bodies
function updatePoints {
set .@account_id,getarg(0);
set .@usedPoints,getarg(1);
query_sql("UPDATE `cp_v4p_voters` SET points=(points-"+.@usedPoints+") WHERE account_id='"+.@account_id+"'");
return;
}
function getPoints {
set .@account_id,getarg(0);
query_sql("SELECT `points` FROM `cp_v4p_voters` WHERE account_id="+.@account_id+" LIMIT 1",.@points);
if(getarraysize(.@points)==0)
return 0;
return .@points[0];
}
}

Edited by Joseph
Codebox.

2 answers to this question

Recommended Posts

Posted

callsub OnBuyItem,5,"S.@points",5474,1;

It should be clear that "S.@points" is an incorrect argument (whatever it is). Lunar's quest shop doesn't support variables, so use mine instead.

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...