Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //====================================================================================
- //Script Name: Vote For Points NPC Script for FluxCP
- //SVN: Tested in rAthena r156513
- //Developed By: JayPee Mateo
- //Version: 1.0
- //Requirement(s): FluxCP V4P Addon
- //Description: This is a npc script for FluxCP Vote for points in order for the players
- //to claim their vote points
- //====================================================================================
- prontera,164,156,3 script VoteForPoints 89,{
- //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$,"[ VotePoints ]";
- //Initialization of the Rewards
- add_item(555,1,100,"Hello");
- add_item(556,2,101,"Hello");
- add_item(557,3,101,"Hello1");
- //Script Start
- mes .npcname$;
- mes "Hi! Do you want to exchange your vote points?:";
- switch(select("Yes, I want to exchange my points:See my points"))
- {
- case 1:
- next;
- mes .npcname$;
- mes "Please choose a category:";
- set .@selected,select(makeCategory())-1;
- next;
- mes .npcname$;
- mes "Please 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+" pc(s).";
- mes "Required Points: "+.@rpoints+" pt(s).";
- 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. :D";
- }
- 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+" pt(s).";
- 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;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement