This is easy because you don't have to make a option for every single item in the menu screen.
Now my question is, I was wondering if someone could make me help this script to work with an item (ID #7227) instead of vote points.
This means i don't need SQL queries or anything since i wont be using it for voting purpose, i just want it to read item id 7227 and let players pick items if they have the required amount of those, I'm merely using this script as a example.
Help very much appreciated!
Here is the complete script;
- script - -1,{
//Function Prototypes
function garbagecol;//Garbage collection for the Character variables
garbagecol();
function add_item; //Syntanx: add_item(ITEMID,QUANTITY,POINTS,CATEGORY);
function makeCategory;//This will return a list of the categories
function getItemsByCat;//This will return the list of items associated to the particular category
function getItemDetails;//This will return the details of the item
function getPoints;//This will return the points of the player stored in the database
function updatePoints;//This will updates the points of the player stored in the database
//NPC Name
set .npcname$,"[Vote Point Redeemer]";
//Initialization of the Rewards
add_item(20012,1,50,"Money Cards");
add_item(20007,1,250,"Money Cards");
add_item(20008,1,500,"Money Cards");
add_item(2345,1,50,"Equipment");
add_item(2347,1,50,"Equipment");
add_item(2349,1,50,"Equipment");
add_item(2351,1,50,"Equipment");
//Script Start
mes .npcname$;
mes "What do you want to do?";
switch(select("Exchange my Vote Points.:Check my balance."))
{
case 1:
next;
mes .npcname$;
mes "To proceed, please select a category:";
set .@selected,select(makeCategory())-1;
next;
mes .npcname$;
mes "Now choose the item you want:";
set .@selected,select(getItemsByCat(@listCat$[.@selected]))-1;
next;
mes .npcname$;
set .@ritemid,getItemDetails(@itemKeys[.@selected],"itemid");
set .@rquantity,getItemDetails(@itemKeys[.@selected],"quantity");
set .@rpoints,getItemDetails(@itemKeys[.@selected],"points");
mes "Item ID:"+.@ritemid;
mes "Item Name: "+getitemname(.@ritemid);
mes "Item Quantity: "+.@rquantity+"";
mes "Required Points: "+.@rpoints+" Vote Points";
mes "\n";
mes "Do you want to this item?";
if(select("Yes:No")==1)
{
set .@points,getPoints(getcharid(3));
if(.@points>=.@rpoints)
{
next;
mes .npcname$;
updatePoints(getcharid(3),.@rpoints);
getitem .@ritemid,.@rquantity;
mes "Here you go! Thank you for voting. Don't forget to vote again.";
}
else
mes "Sorry, you do not have enough points for this item.";
}
else
{
next;
mes .npcname$;
mes "Okay bye!";
}
garbagecol();
close;
case 2:
next;
mes .npcname$;
set .@points,getPoints(getcharid(3));
mes "You currently have "+.@points+" Vote Points.";
garbagecol();
close;
}
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];
}
function getItemDetails {
set .@key,getarg(0); //Key
set .@detail$,getarg(1); //What details to return such as ItemID, Points, Quantity, Category
if(strtolower(.@detail$) == strtolower("ItemID"))
return @itemID[.@key];
else if(strtolower(.@detail$) == strtolower("Quantity"))
return @itemQ[.@key];
else if(strtolower(.@detail$) == strtolower("Points"))
return @points[.@key];
else if(strtolower(.@detail$) == strtolower("Category"))
return @category$[.@key];
}
function getItemsByCat {
set .@selectedCat$,getarg(0);
set .@make_string$,"";
set .@x,0;
for(set .@i,0; .@i<getarraysize(@category$); set .@i,.@i+1)
{
if(strtolower(.@selectedCat$) == strtolower(@category$[.@i]))
{
setarray @itemKeys[.@x],.@i;
if(.@make_string$ == "")
set .@make_string$,getitemname(@itemID[.@i]);
else
set .@make_string$,.@make_string$+":"+getitemname(@itemID[.@i]);
set .@x,.@x+1;
}
}
return .@make_string$;
}
function makeCategory {
set .@make_string$,"";
for(set .@i,0; .@i<getarraysize(@category$); set .@i,.@i+1)
{
if(.@make_string$ == "")
{
setarray @listCat$[getarraysize(@listCat$)],@category$[.@i];
set .@make_string$,@category$[.@i];
}
else
{
if(compare(.@make_string$,@category$[.@i])==0)
{
setarray @listCat$[getarraysize(@listCat$)],@category$[.@i];
set .@make_string$,.@make_string$+":"+@category$[.@i];
}
}
}
return .@make_string$;
}
function add_item
{
set .@itemID,getarg(0,-1); //IteID
set .@itemQ,getarg(1,-1); //Item Quantity
set .@points,getarg(2,-1);
set .@cat$,getarg(3,"Uncategorized"); //Category
if(.@itemID == -1)
{
debugmes "Invalid Item ID. Script not completely loaded.";
end;
}
else if(.@itemQ == -1)
{
debugmes "Invalid Item Quantity. Script not completely loaded.";
end;
}
else if(.@points == -1)
{
debugmes "Points assignment error. Script not completely loaded.";
end;
}
set .@key,getarraysize(@itemID);
setarray @itemID[.@key],.@itemID;
setarray @itemQ[.@key],.@itemQ;
setarray @points[.@key],.@points;
setarray @category$[.@key],.@cat$;
return 1; //return 1 as success
}
function garbagecol{
deletearray @itemID[0],128;
deletearray @itemQ[0],128;
deletearray @points[0],128;
deletearray @category$[0],128;
deletearray @listCat$[0],128;
deletearray @itemKeys[0],128;
return;
}
}
Question
HristDead
Nevermind, find another script that works just fine!
---------------------------------------------------------------
Hi all.
I'm using the script that comes along with the flux vote for point module by Jaypee.
I really like how he's done the easy way to redeem items like this:
This is easy because you don't have to make a option for every single item in the menu screen.
Now my question is, I was wondering if someone could make me help this script to work with an item (ID #7227) instead of vote points.
This means i don't need SQL queries or anything since i wont be using it for voting purpose, i just want it to read item id 7227 and let players pick items if they have the required amount of those, I'm merely using this script as a example.
Help very much appreciated!
Here is the complete script;
Edited by HristDeadLink to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.