Jump to content

Recommended Posts

Posted

Script Name: FluxCP V4P NPC

Description: This is the npc script for my FluxCP V4P.

Version: 1.0

Function: add_item(ITEMID,QUANTITY,VOTEPOINTS,"CATEGORY");

REQUIREMENTS: You must have this: http://rathena.org/b...ote-for-points/

Parameters(should be in order):

  • ITEMID - the itemid to give
  • QUANTITY - how many will be given
  • VOTEPOINTS - how many points needed
  • CATEGORY - on what category you want it to be belong

rAthena Version:


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

royal_room3,80,136,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(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. ";
}
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;
}
}

eAthena version:


//====================================================================================
//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,151,175,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(555,1,100,"Hello");
add_item(556,2,101,"Hello");
add_item(557,3,101,"Hello1");
add_item(607,1,10,"Ygg");


//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. ";
}
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(.@detail$ == "ItemID")
return @ItemID[.@key];
else if((.@detail$ == "Quantity") || (.@detail$ == "quantity"))
return @itemQ[.@key];
else if((.@detail$ == "Points") || (.@detail$ == "points"))
return @points[.@key];
else if((.@detail$ == "Category") || (.@detail$ == "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(.@selectedCat$ == @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;
} 
[color=#000000]}[/color]

  • Upvote 2
Posted

jaypee i got buildin_getitem Nonexistant item 0 requested whenever i try to exchange the item from the npc it will show that message on mapserver and i got no item.

i have added the item id 12210 for bubble gum but when i click the npc they npc say itemID 0 quantity 1 required point 3 which is the point i put and after i press yes it give me no item and it reduce my point~

Posted (edited)

I'm having problem w/ the npc script using eAthena SVN...

Sir example i've input this

add_item(5013,1,15,"Lord Kaho's Horn");

Yxp0C.jpg?1

QpEFt.jpg?1

Edited by Lordamax
Posted (edited)

jaypee i am having same issues as lordamax please help TT_TT

i am using eathena too and using the script from 1.2 and the problem is still exactly the same as lordamax

Edited by MaximumBlaze
  • 3 weeks later...
  • 2 weeks later...
Posted

i am using eathena and used the eathena npc. but the category style won't effect,,

example..

category1 and category2

i added 2 items on category 1 and 3items on category 2.

when i select category 2 it's supposed to show only 3 items but the problem is the items on category 1 is also there .. T_T

  • 2 weeks later...
  • 3 weeks later...
  • 2 months later...
Posted (edited)

why its not.. working on me?? Im using Rathena svn then I have 2 vote points on my site when I add the Npc its says 0 vote points

and also line 205 is error

[Error]: Missing 1 right curlys at file 'npc/custom/Zhen/v4pshop.txt', line '205'.

}

Edited by zhen
  • 2 months later...
Posted

Thank you sir Jaypee Mateo.

But, I will ask something.

In your script, the user will be asked for certain categories.

1 Voting Proof Ticket

10 Voting Proof Ticket

How can I change it by USING INPUT BOX instead of selections?

It's like.

[ NPC ]

How many Vote Points do you want to exchange?

Please write it in the input box.

So, I'll use

input @var$;

How? :D

Thank you so much for replies.

Also, because I have two NPCs - the one that will convert POINTS FROM SITE and then POINTS IN-GAME, and VPS Ticket is different, so that's 3 Transactions, how to put it in just ONE NPC? :|

Sounds harsh... Sorry for disturbing.

  • 2 weeks later...
  • 3 weeks later...
  • 4 months later...
Posted
//====================================================================================
//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,165,167,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(14536,2,"Consumables");
add_item(12375,2,"Consumables");
add_item(14542,2,"Consumables");
add_item(14544,2,"Consumables");
add_item(12161,6,"Consumables");
add_item(12210,10,"Consumables");
add_item(14525,5,"Consumables");
add_item(12349,3,"Consumables");
add_item(14530,3,"Consumables");
add_item(12172,3,"Consumables");
add_item(14533,5,"Consumables");
add_item(12232,5,"Consumables");
add_item(12247,3,"Consumables");
add_item(12123,2,"Consumables");
add_item(14592,1,"Consumables");
add_item(12261,20,"Consumables");
add_item(12209,1,"Consumables");
add_item(12320,1,"Consumables");
add_item(12122,1,"Consumables");
add_item(12182,3,"Consumables");
add_item(16677,1,"Consumables");
add_item(13989,1,"Box");
add_item(14287,4,"Box");
add_item(13570,3,"Box");
add_item(14288,4,"Box");
add_item(13580,10,"Box");
add_item(13973,3,"Box");
add_item(13863,2,"Box");
add_item(13940,5,"Box");
add_item(12944,24,"Rental Items");
add_item(12938,92,"Rental Items");
add_item(13959,32,"Rental Items");
add_item(12950,32,"Rental Items");
add_item(14227,30,"Rental Items");
add_item(12935,60,"Rental Items");
add_item(13513,22,"Rental Items");
add_item(12936,20,"Rental Items");
add_item(12941,22,"Rental Items");
add_item(13508,30,"Rental Items");
add_item(12937,28,"Rental Items");




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

I have this problem, whenever i use this at my server. r17235. even without votepoints they can spam those items. And this doesn't show the Category. I need help.

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

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