Jump to content
  • 0

Vote for Points Help


Question

Posted

Hello, just installed the vote for points  on my fluxcp and i want to make the vote points that every time i will change my vote points it will automatically change his current vote points to donation token not 1 by 1

//====================================================================================
//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
//====================================================================================

mellina,97,51,5 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$,"[ Vote For Points ]";

//Initialization of the Rewards
add_item(8042,1,1,"Vote Token Exchanger");


//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 "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;
                                        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];

                        }
                        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

  GNU nano 2.2.4                                         File: voteforpoints.txt                                                                                        

                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;
        }
}


2 answers to this question

Recommended Posts

Posted

//Initialization of the Rewards
add_item(8042,1,1,"Vote Token Exchanger");
every 1 votes point from `cp_v4p_voters` gives you 1 Item ID 8042 ...

hmm, I'm sure there must be a guide somewhere in this forum tells you how to set this stuffs ..

  • Upvote 1

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