Jump to content

Modified FluxCP Donation NPC


sikiro

Recommended Posts


  • Group:  Members
  • Topic Count:  16
  • Topics Per Day:  0.00
  • Content Count:  171
  • Reputation:   15
  • Joined:  01/26/12
  • Last Seen:  

I do not take credit for this nor did i make this script at all i just modified it.

 

THIS NPC REQUIRES FLUX CONTROL PANEL OR IT WILL NOT WORK.

i myself was asking for someone to modify an Npc to be able to accept cash points in game  but i also decided it would be ideal to give you both options so

it was edited to not only give you the option to redeem cash points but also maintain its core function of allowing a player to still redeem items purchased on the web-store.

 

if you have any questions please feel Free to reply to this topic.

Databases required.

cp_redeemlog.sql

CREATE TABLE IF NOT EXISTS `cp_redeemlog` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `nameid` int(11) unsigned NOT NULL default '0',
  `quantity` int(11) unsigned NOT NULL default '0',
  `cost` int(11) unsigned NOT NULL,
  `account_id` int(11) unsigned NOT NULL,
  `char_id` int(11) unsigned default NULL,
  `redeemed` tinyint(1) unsigned NOT NULL,
  `redemption_date` datetime default NULL,
  `purchase_date` datetime NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM COMMENT='Log of redeemed donation items.';

cp_credits.sql

CREATE TABLE IF NOT EXISTS `cp_credits` (
  `account_id` int(11) unsigned NOT NULL,
  `balance` int(11) unsigned NOT NULL DEFAULT '0',
  `last_donation_date` datetime DEFAULT NULL,
  `last_donation_amount` float unsigned DEFAULT NULL,
  PRIMARY KEY (`account_id`),
  KEY `account_id` (`account_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Donation credits balance for a given account.';
prontera,139,182,4	script	Donor Rewards Redeemer	987,{
	// ----------------- NPC Settings -----------------
	// --- SET THESE BEFORE LOADING THE SCRIPT! ---
	
	// Server Name
	set .serverName$,"rAthena";
	
	// NPC Name to display during chat.
	// Default: "[Donor Rewards Redeemer]"
	set .npcName$,"[Donor Rewards Redeemer]";
	
	// DO NOT CHANGE THIS!
	// Default: "cp_redeemlog"
	set .redeemTable$,"cp_credits";
	set .itemTable$,"cp_redeemlog";
	
	// Display Credits to FluxCP Creators?
	// Help promote our product if its useful.
	// 0 = Disable. 1 = Enable.
	// Default: 1
	set .showCredits,1;
	
	// Max number of unique items to redeem at a time.
	// DO NOT RAISE THIS VALUE ABOVE 128 WITHOUT
	// MAKING THE NECESSARY SCRIPT ENGINE MODS
	// FOR SCRIPT ARRAY SIZING! DANGEROUS!
	// Default: 128
	set .numRedemptionsSimul,128; 
	// --------------- End NPC Settings ---------------

	// ----------------- Begin Script -----------------
	mes .npcName$;
	mes "Well hello there " + (Sex ? "good sir!" : "young madam!");
	mes "How may I be of assistance to you on this fine day?";
	next;
	prompt("I wish to redeem My Credits:Collect My items :Check my balance.");
	mes .npcName$;
switch(@menu) {
		case 1:
			query_sql("SELECT `balance` FROM `" + escape_sql(.redeemTable$) + "` WHERE `account_id` = " + getcharid(3) + " LIMIT 0,30", .@credits);
			if (.@credits > 0){
			mes "How many Donation Credits do you wish to redeem?";
			next;
			mes .npcName$;
			input .@withdrawCredits,1,.@credits;
			query_sql("UPDATE `" + escape_sql(.redeemTable$) + "` SET `balance` = `balance` - " + .@withdrawCredits + " WHERE `account_id` = " + getcharid(3) + "");
			set #CASHPOINTS,#CASHPOINTS + .@withdrawCredits;
			mes .@withdrawCredits + "x " ;
			} else {
				mes "My records indicate that there are no rewards awaiting to be redeemed.";
				mes "My deepest apologies for the misunderstanding.";
			}
		break;
		case 2:
			query_sql "SELECT `id`, `nameid`, `quantity` FROM `" + escape_sql(.itemTable$) + "` WHERE `account_id` = " + getcharid(3) + " AND `redeemed` = 0 LIMIT " + .numRedemptionsSimul,.@id,.@nameid,.@quantity;
			if (getarraysize(.@id) > 0) {
				mes "Items Pending Redemption: " + getarraysize(.@id);
				for (set .@i,0; .@i < getarraysize(.@id); set .@i,.@i+1)
					if (checkweight(.@nameid[.@i],.@quantity[.@i]) == 0) {
						mes "I'm terribly sorry, but you are carrying too much to accept " + (.@i ? "any more of " : " ") + "your rewards at this time.";
						mes "Please come back with fewer items.";
					} else {
						query_sql "UPDATE `" + escape_sql(.itemTable$) + "` SET `char_id` = " + getcharid(0) + ", `redeemed` = 1, `redemption_date` = NOW() WHERE `id` = " + .@id[.@i];
						getitem .@nameid[.@i],.@quantity[.@i];
						mes .@quantity[.@i] + "x " + getitemname(.@nameid[.@i]);
					}
				if (.@i == getarraysize(.@id)) {
					mes "Thank you for your patronage " + (Sex ? "fine sir." : "ma'am.");
					mes "Please enjoy your stay on " + .serverName$ + "!";
				}
				if (.showCredits)
					callfunc "F_FluxCredits";
			} else {
				mes "My records indicate that there are no rewards awaiting to be redeemed.";
				mes "My deepest apologies for the misunderstanding.";
			}
		break;
		case 3:
			query_sql("SELECT `balance` FROM `" + escape_sql(.redeemTable$) + "` WHERE `account_id` = " + getcharid(3) + " LIMIT 0,30", .@credits);
			mes "You currently have " + .@credits + " donation credits.";
		break;
	}
	close;
	// ------------------ End Script ------------------
}

// ------------ Credits to FluxCP Creators ------------
// - Please do not modify or delete this function or  -
// - its contents. To disable the credits from being  -
// - shown, set .showCredits to 0 in the NPC Settings -
// - at the top of this file.                         -
// ----------------------------------------------------

function	script	F_FluxCredits	{
	mes "-----------------------------------";
	mes "Powered by Flux Control Panel.";
	mes "Copyright © 2008-2012 Matthew Harris and Nikunj Mehta.";
	mes "http://fluxcp.googlecode.com/";
	return;
}

donation.txt

 

Edited by sikiro
  • Upvote 1
Link to comment
Share on other sites


  • Group:  Forum Moderator
  • Topic Count:  93
  • Topics Per Day:  0.02
  • Content Count:  10013
  • Reputation:   2347
  • Joined:  10/28/11
  • Last Seen:  

your script doesn't provide the required SQL tables that used in the script?

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  16
  • Topics Per Day:  0.00
  • Content Count:  171
  • Reputation:   15
  • Joined:  01/26/12
  • Last Seen:  

this is meant to be used with Flux cp ill edit first post.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  8
  • Topics Per Day:  0.00
  • Content Count:  1137
  • Reputation:   290
  • Joined:  04/29/13
  • Last Seen:  

12 minutes ago, sikiro said:

this is meant to be used with Flux cp ill edit first post.


 

What about cp_reedeemlog table

Edited by Cyro
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  16
  • Topics Per Day:  0.00
  • Content Count:  171
  • Reputation:   15
  • Joined:  01/26/12
  • Last Seen:  

all tables are part of flux cp if you are using the latest version  it should have all of those tables installed by default.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  8
  • Topics Per Day:  0.00
  • Content Count:  1137
  • Reputation:   290
  • Joined:  04/29/13
  • Last Seen:  

3 minutes ago, sikiro said:

all tables are part of flux cp if you are using the latest version  it should have all of those tables installed by default.

Okie my bad, my server dont have this table xD

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  16
  • Topics Per Day:  0.00
  • Content Count:  171
  • Reputation:   15
  • Joined:  01/26/12
  • Last Seen:  

then you need to check your schemas on flux cp it should definately have them or else your donation shop on the web will not work properly.

 

Link to comment
Share on other sites

  • 3 weeks later...

  • Group:  Members
  • Topic Count:  32
  • Topics Per Day:  0.01
  • Content Count:  123
  • Reputation:   6
  • Joined:  03/12/13
  • Last Seen:  

Hi, found this error in latest rAthena.

npc_parsesrcfile: Detected unsupported UTF-8 BOM in file 'npc/donate.txt'. Stopping (please consider using another character set).

Edited by Psyche
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  16
  • Topics Per Day:  0.00
  • Content Count:  171
  • Reputation:   15
  • Joined:  01/26/12
  • Last Seen:  

@psyche did you download the file or did you copy it from the text box?

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  32
  • Topics Per Day:  0.01
  • Content Count:  123
  • Reputation:   6
  • Joined:  03/12/13
  • Last Seen:  

On 4/17/2017 at 3:04 AM, sikiro said:

@psyche did you download the file or did you copy it from the text box?

Download sir, 

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  16
  • Topics Per Day:  0.00
  • Content Count:  171
  • Reputation:   15
  • Joined:  01/26/12
  • Last Seen:  

i am curently using the script on the latest version of rathena it is working correctly can you show me a picture of your console. please.

Link to comment
Share on other sites

  • 1 month later...

  • Group:  Members
  • Topic Count:  28
  • Topics Per Day:  0.01
  • Content Count:  135
  • Reputation:   1
  • Joined:  05/21/17
  • Last Seen:  

On 3/27/2017 at 9:08 AM, sikiro said:

I do not take credit for this nor did i make this script at all i just modified it.

 

THIS NPC REQUIRES FLUX CONTROL PANEL OR IT WILL NOT WORK.

i myself was asking for someone to modify an Npc to be able to accept cash points in game  but i also decided it would be ideal to give you both options so

it was edited to not only give you the option to redeem cash points but also maintain its core function of allowing a player to still redeem items purchased on the web-store.

 

if you have any questions please feel Free to reply to this topic.

Databases required.

cp_redeemlog.sql


CREATE TABLE IF NOT EXISTS `cp_redeemlog` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `nameid` int(11) unsigned NOT NULL default '0',
  `quantity` int(11) unsigned NOT NULL default '0',
  `cost` int(11) unsigned NOT NULL,
  `account_id` int(11) unsigned NOT NULL,
  `char_id` int(11) unsigned default NULL,
  `redeemed` tinyint(1) unsigned NOT NULL,
  `redemption_date` datetime default NULL,
  `purchase_date` datetime NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM COMMENT='Log of redeemed donation items.';

cp_credits.sql


CREATE TABLE IF NOT EXISTS `cp_credits` (
  `account_id` int(11) unsigned NOT NULL,
  `balance` int(11) unsigned NOT NULL DEFAULT '0',
  `last_donation_date` datetime DEFAULT NULL,
  `last_donation_amount` float unsigned DEFAULT NULL,
  PRIMARY KEY (`account_id`),
  KEY `account_id` (`account_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Donation credits balance for a given account.';

prontera,139,182,4	script	Donor Rewards Redeemer	987,{
	// ----------------- NPC Settings -----------------
	// --- SET THESE BEFORE LOADING THE SCRIPT! ---
	
	// Server Name
	set .serverName$,"rAthena";
	
	// NPC Name to display during chat.
	// Default: "[Donor Rewards Redeemer]"
	set .npcName$,"[Donor Rewards Redeemer]";
	
	// DO NOT CHANGE THIS!
	// Default: "cp_redeemlog"
	set .redeemTable$,"cp_credits";
	set .itemTable$,"cp_redeemlog";
	
	// Display Credits to FluxCP Creators?
	// Help promote our product if its useful.
	// 0 = Disable. 1 = Enable.
	// Default: 1
	set .showCredits,1;
	
	// Max number of unique items to redeem at a time.
	// DO NOT RAISE THIS VALUE ABOVE 128 WITHOUT
	// MAKING THE NECESSARY SCRIPT ENGINE MODS
	// FOR SCRIPT ARRAY SIZING! DANGEROUS!
	// Default: 128
	set .numRedemptionsSimul,128; 
	// --------------- End NPC Settings ---------------

	// ----------------- Begin Script -----------------
	mes .npcName$;
	mes "Well hello there " + (Sex ? "good sir!" : "young madam!");
	mes "How may I be of assistance to you on this fine day?";
	next;
	prompt("I wish to redeem My Credits:Collect My items :Check my balance.");
	mes .npcName$;
switch(@menu) {
		case 1:
			query_sql("SELECT `balance` FROM `" + escape_sql(.redeemTable$) + "` WHERE `account_id` = " + getcharid(3) + " LIMIT 0,30", .@credits);
			if (.@credits > 0){
			mes "How many Donation Credits do you wish to redeem?";
			next;
			mes .npcName$;
			input .@withdrawCredits,1,.@credits;
			query_sql("UPDATE `" + escape_sql(.redeemTable$) + "` SET `balance` = `balance` - " + .@withdrawCredits + " WHERE `account_id` = " + getcharid(3) + "");
			set #CASHPOINTS,#CASHPOINTS + .@withdrawCredits;
			mes .@withdrawCredits + "x " ;
			} else {
				mes "My records indicate that there are no rewards awaiting to be redeemed.";
				mes "My deepest apologies for the misunderstanding.";
			}
		break;
		case 2:
			query_sql "SELECT `id`, `nameid`, `quantity` FROM `" + escape_sql(.itemTable$) + "` WHERE `account_id` = " + getcharid(3) + " AND `redeemed` = 0 LIMIT " + .numRedemptionsSimul,.@id,.@nameid,.@quantity;
			if (getarraysize(.@id) > 0) {
				mes "Items Pending Redemption: " + getarraysize(.@id);
				for (set .@i,0; .@i < getarraysize(.@id); set .@i,.@i+1)
					if (checkweight(.@nameid[.@i],.@quantity[.@i]) == 0) {
						mes "I'm terribly sorry, but you are carrying too much to accept " + (.@i ? "any more of " : " ") + "your rewards at this time.";
						mes "Please come back with fewer items.";
					} else {
						query_sql "UPDATE `" + escape_sql(.itemTable$) + "` SET `char_id` = " + getcharid(0) + ", `redeemed` = 1, `redemption_date` = NOW() WHERE `id` = " + .@id[.@i];
						getitem .@nameid[.@i],.@quantity[.@i];
						mes .@quantity[.@i] + "x " + getitemname(.@nameid[.@i]);
					}
				if (.@i == getarraysize(.@id)) {
					mes "Thank you for your patronage " + (Sex ? "fine sir." : "ma'am.");
					mes "Please enjoy your stay on " + .serverName$ + "!";
				}
				if (.showCredits)
					callfunc "F_FluxCredits";
			} else {
				mes "My records indicate that there are no rewards awaiting to be redeemed.";
				mes "My deepest apologies for the misunderstanding.";
			}
		break;
		case 3:
			query_sql("SELECT `balance` FROM `" + escape_sql(.redeemTable$) + "` WHERE `account_id` = " + getcharid(3) + " LIMIT 0,30", .@credits);
			mes "You currently have " + .@credits + " donation credits.";
		break;
	}
	close;
	// ------------------ End Script ------------------
}

// ------------ Credits to FluxCP Creators ------------
// - Please do not modify or delete this function or  -
// - its contents. To disable the credits from being  -
// - shown, set .showCredits to 0 in the NPC Settings -
// - at the top of this file.                         -
// ----------------------------------------------------

function	script	F_FluxCredits	{
	mes "-----------------------------------";
	mes "Powered by Flux Control Panel.";
	mes "Copyright © 2008-2012 Matthew Harris and Nikunj Mehta.";
	mes "http://fluxcp.googlecode.com/";
	return;
}

donation.txt

 

hi  any vid tutorial or guides how to encode it

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  16
  • Topics Per Day:  0.00
  • Content Count:  171
  • Reputation:   15
  • Joined:  01/26/12
  • Last Seen:  

what do do you want to encode? this npc works directly with flux cp so you get the secirity it provides.

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

×
×
  • Create New...