Jump to content
  • 0

Vote for Points


Radian

Question


  • Group:  Members
  • Topic Count:  162
  • Topics Per Day:  0.05
  • Content Count:  1546
  • Reputation:   192
  • Joined:  07/23/14
  • Last Seen:  

Can someone help me with this script that will allow players to view the items listed like a dynamic shop?

//====================================================================================

//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,98,96,3	script	V4P Redeemer	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(32069,1,500,"Upper/Middle/Lower");
add_item(32068,1,200,"Upper/Middle/Lower");
add_item(32168,1,150,"Upper/Middle/Lower");
add_item(32180,1,300,"Upper/Middle/Lower");
add_item(32159,1,700,"Upper/Middle/Lower");
add_item(32177,1,270,"Upper/Middle/Lower");
add_item(32176,1,350,"Upper/Middle/Lower");
add_item(32171,1,250,"Upper/Middle/Lower");
add_item(32167,1,350,"Upper/Middle/Lower");
add_item(32166,1,250,"Upper/Middle/Lower");
add_item(32162,1,500,"Upper/Middle/Lower");
add_item(32151,1,100,"Upper/Middle/Lower");
add_item(32080,1,500,"Upper/Middle/Lower");
add_item(32045,1,200,"Upper/Middle/Lower");
// Costume Box
add_item(32562,1,100,"Costume Headgears Box");
add_item(32563,1,100,"Costume Headgears Box");
add_item(32564,1,100,"Costume Headgears Box");
add_item(32565,1,100,"Costume Headgears Box");
add_item(32566,1,100,"Costume Headgears Box");





//Script Start	

	mes .npcname$;

	mes "Hi! Do you want to exchange your vote points?";

	switch(select("Exchange Points:Check 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 "ID#: "+.@ritemid;

			mes "Item Name: "+getitemname(.@ritemid);

			mes "Item Quantity: "+.@rquantity+" x";

			mes "Required Points: "+.@rpoints+" x";

			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;

	}

}
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  3
  • Topics Per Day:  0.00
  • Content Count:  50
  • Reputation:   4
  • Joined:  12/12/13
  • Last Seen:  

There is already a script like this.............. 

From what i remember all you do is change the currency to a varible like #vote4points or something. 

Sorry for the bland response i'm in a rush!

 

 

I lied here is the script.

 

https://rathena.org/board/topic/101658-feeftys-vote-for-points-used-in-pointshop/#entry288529

Edited by Shiodevs
Link to comment
Share on other sites

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.

×
×
  • Create New...