Jump to content
Sign in to follow this  
keitenai

Prize Giver NPC

Recommended Posts

I really have no idea who created this script, and i'm not claiming this to be my own.

 

All i did is to modify this script to be compatible with 3ceam.

here's the thread of the request:

http://herc.ws/board/topic/12194-rprice-giver-sql-script-for-3ceam-check-this-out/

 

 

Here's my modified prize giver NPC script for anyone who needs it:

 

Prize_Giver.txt

 

//======= 3ceam Script =======================================
//= Prize Giver NPC
//===== Modified By: =========================================
//= Keitenai
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= Athena Project
//===== Description: =========================================
//= Prize giver for single char, account and more.
//===== Additional Comments: =================================
//= 1.0 Modified Version for 3ceam compatibility
//============================================================

prontera,156,184,4	script	Item Giver	544,{
	//cutin "v_sprakki04",2;
	//Check if setups are loaded.
	if(!.Setup)
		{
			callsub OnLoadSetup;
		}

	//Show GM Panel if player is GM.
	if(getgmlevel() >= .GMin)
		menu("Take a prize as a player",-,"Give prize",
				OnManagement,"Reset Item Give",
				OnDelete,"IP Limit per Item",
				OnLimit);

	//Read attached player gifts from SQL table.
	if(select("Get Account Prize!:Get Character Prize!:Exit") == 1)
		{
			set .@query, query_sql("SELECT * FROM `" + .GiftTableName$ + "` WHERE account_id="+getcharid(3),
				.@gift_id,
				.@gift_account,
				.@gift_char,
				.@gift_item,
				.@gift_amount,
				.@gift_duration,
				.@gift_time
				); //Account gifts.
		}
		else if(@menu == 2)
		{
			set .@query, query_sql("SELECT * FROM `" + .GiftTableName$ + "` WHERE char_id="+getcharid(0),
				.@gift_id,
				.@gift_account,
				.@gift_char,
				.@gift_item,
				.@gift_amount,
				.@gift_duration,
				.@gift_time
				); //Char gifts.
		}
		else goto OnLeave;

	//Check if player don't have gifts.
	if(!.@query)
		{
			mes "[Reward Giver]";
			mes "Sorry, you don't have any prize";

			cutin "v_sprakki04",255;
			close;
		}

	//Build menu from query arrays.
		mes "[" + strnpcinfo(1) + "]";
		mes "^009900You got the prize^000000";
			for( set .@i, 0; .@i < .@query; set .@i, .@i + 1 )
			{
				mes "(" + .@gift_amount[.@i] + ") " + getitemname(.@gift_item[.@i]) + ".";
				set .@menu$, .@menu$ + getitemname(.@gift_item[.@i]) + ":";
			}
			next;
			set .@mid,select(.@menu$); //Show menu.
			set .@mid,.@mid-1;

	if (.@gift_time[.@mid] && .@gift_time[.@mid] < gettimetick(2))
	{
		mes "[Reward Giver]";
		mes "Sorry, this prize's claim time is already over.";

		cutin "v_sprakki04",255;
		close;
	}
	//Item is now selected. Choose what you want to do with it.
	mes "[" + strnpcinfo(1) + "]";
	mes "what you want do with (" + .@gift_amount[.@mid] + ") " + getitemname(.@gift_item[.@mid]) + "?";
	next;
	set .@Select,select("^009900Get it^000000:^ff0000Delete it! ^000000:nothings");

	//Receive gift selected.
	if(.@Select == 1)
	{
		//Check weight.
		if(checkweight( .@gift_item, .@gift_amount ) || .@gift_item[.@mid] == .ZenyID)
		{
			mes "[" + strnpcinfo(1) + "]";
			mes "^009900Get : (" + .@gift_amount[.@mid] + ") " + getitemname(.@gift_item[.@mid]) + ".^000000";
			if (.ip_limit)
			{
				// add ip_address to logs
				.@ipexist = query_sql("SELECT item_id, ip_address, claim_count FROM " + .GiftTableNameIP$ + " WHERE last_ip = (SELECT last_ip FROM login WHERE account_id="+getcharid(3)+") AND item_id = "+.@gift_item[.@mid]+" LIMIT 1", .@item,.@ip,.@claim_count);
				if (.@claim_count[0] >= .ip_limit)
				{
					next;
					mes "Sorry you have reached the maximum redeem limit for this IP address";
					cutin "v_sprakki04",255;
					close;
				}
				if (!.@claim_count[0])
				{
					query_sql("INSERT INTO " + .GiftTableNameIP$ + " (give_id,item_id,last_ip,claim_count) VALUES("+.@gift_id+","+.@gift_item+",'(SELECT last_ip FROM login WHERE account_id="+getcharid(3)+")',1)");		
				}
				else
				{
					query_sql("UPDATE " + .GiftTableNameIP$ + " SET claim_count = "+(.@claim_count[0]+1)+" WHERE item_id = "+.@gift_item[.@mid]+" AND last_ip = (SELECT last_ip FROM login WHERE account_id="+getcharid(3)+")");
				}
			}
			if (.@gift_item[.@mid] == .ZenyID) { // detects zeny ID and give zeny.
				if (Zeny+.@gift_amount[.@mid] > .MaxZeny)
				{
					mes "Please make sure that you have enough space to handle all these zennies and come back later.";
					cutin "v_sprakki04",255;
					close;
				}
				set Zeny,Zeny+.@gift_amount[.@mid];
			}
			else
			{
				if (!.@gift_duration)
				{
					getitem .@gift_item[.@mid], .@gift_amount[.@mid]; //Give item to player.
				}
				else
				{
					rentitem .@gift_item[.@mid], .@gift_duration * 60; 
				}
			}
			query_sql( "DELETE FROM `" + .GiftTableName$ + "` WHERE id = " + .@gift_id[.@mid] ); //Remove item from table.
			cutin "v_sprakki04",255;
			close;
		}
		else
		{
			//Overweight
			mes "^ff0000Sorry ^000000 You can't take it " + getitemname(.@gift_item[.@mid]);
			mes "Could lose some wight?";
			cutin "v_sprakki04",255;
			close;
		}
	}
	//Remove gift selected.
	else if(.@Select == 2) {
		mes "[" + strnpcinfo(1) + "]";
		mes "Are you sure you want dellet it?";
		mes "Gift: ("+.@gift_amount[.@mid]+") "+getitemname(.@gift_item[.@mid])+".";
		next;
		if(select("Yes:No") == 1) {
			mes "[" + strnpcinfo(1) + "]";
			mes "^ff0000Dellet: ("+.@gift_amount[.@mid]+") "+getitemname(.@gift_item[.@mid])+".^000000";
			query_sql("DELETE FROM `" + .GiftTableName$ + "` WHERE id = " + .@gift_id[.@mid]); //Remove item from table.
			cutin "v_sprakki04",255;
			close;
		} else {
			mes "[" + strnpcinfo(1) + "]";
			mes "we will save it";
			cutin "v_sprakki04",255;
			close;
		}
	}
	//Nothing selected.
	else
	{
		goto OnLeave;
	}

//GM Panel below:
OnManagement:
	if(getgmlevel() < .GMin) goto OnLeave;
	mes "[" + strnpcinfo(1) + "]";
	mes "Welvome " + strcharinfo(0) + "!";
	mes "How I can help you?";
	next;

	if(select("Make Gift:Nothing") != 1) goto OnLeave;

		//Make new gift.
		mes "[" + strnpcinfo(1) + "]";
		mes "Please input the item id.";
		mes "Default: 501";
	next;
		mes "What do you want to give?";
		set .@zenygive,0;
			if(select("Item:Zeny") == 1)
				{
					input .@new_item, 501, 30000;
				}
	next;
	mes "Do you want to add a claim timer?";
	if(select("No:Yes")==2)
	{
		next;
		mes "How many minutes do you want this reward to be claimable?";
		input(.@c);
		.@claimtime = gettimetick(2)+(.@c*60);
	}
	if(select("Continue:Cancel") != 1) goto OnLeave;
		mes "[" + strnpcinfo(1) + "]";
		mes "How many items/zeny?";
		mes "Default: 1";
	next;
	//item quantity range of 1 to 1,000.
	if(.@zenygive)
	{
		input .@new_value, 1, .MaxZeny;
	}
	else
	{
		input .@new_value, 1, 1000;
	}
	
	if(select("Continue:Cancel") != 1) goto OnLeave;
		mes "[" + strnpcinfo(1) + "]";
		mes "Please select input type:";
		mes "1. Single Account";
		mes "2. Single Character";
		mes "3. All ^009900Online^000000 Accounts.";
		mes "4. All Accounts.";
		mes "5. All ^009900Online^000000 Players/Characters.";
		mes "6. All Players/Characters.";
		mes "7. ^ff0000Cancel.^000000";
	next;
	switch(select("Single Account:Single Character:^009900Online^000000 Accounts:All Accounts:^009900Online^000000 Characters:All Characters:Cancel"))
	{
		//Account gift
		case 1:
			mes "[" + strnpcinfo(1) + "]";
			mes "Please select input type:";
			mes "By AID or Name?";
			next;
			if(select("Account ID:Character Name") == 1)
			{
				mes "[" + strnpcinfo(1) + "]";
				mes "Write account id:";
				next;
				input .@new_account, 2000000, 10000000; //Account id range from 2m to 10m.
				set .@query, query_sql("SELECT account_id FROM `" + .CharTableName$ + "` WHERE account_id = " + .@new_account, .@new_account);
				if(!.@query) goto OnNotExist;
				if(select("Continue:Cancel") != 1) goto OnLeave;
				mes "[" + strnpcinfo(1) + "]";
				mes "^009900Gift is ready to go!^000000";
				mes "AID: ^ff0000" + .@new_account + "^000000";
				mes "------------------";
				mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
				mes "Quantity: ^ff0000" + .@new_value + "^000000";
				mes "Duration: " + .@duration + " Minutes";
				mes "Claim Time: " + .@c + " Minutes";
				next;
				if(select("Send Gift:Cancel") != 1) goto OnLeave;
				mes "[" + strnpcinfo(1) + "]";
				mes "Gift sending success!";
				//Create gift. <auto_id>, <account_id> <char_id> <item> <value>
				query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp) VALUES(" + .@new_account + ", " + .@new_item + ", " + .@new_value + ", " + .@duration + ", " + .@claimtime + ")");
			}
			else
			{
				mes "[" + strnpcinfo(1) + "]";
				mes "Write player name:";
				next;
				input .@new_name$;
				set .@query, query_sql("SELECT account_id FROM `" + .CharTableName$ + "` WHERE name = '" + .@new_name$ + "'", .@new_account);
				if(!.@query) goto OnNotExist;
				if(select("Continue:Cancel") != 1) goto OnLeave;
				mes "[" + strnpcinfo(1) + "]";
				mes "^009900Gift is ready to go!^000000";
				mes "AID: ^ff0000" + .@new_account + "^000000";
				mes "Name: ^ff0000"+ .@new_name$ + "^000000";
				mes "------------------";
				mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
				mes "Quantity: ^ff0000" + .@new_value + "^000000";
				mes "Duration: " + .@duration + " Minutes";
				mes "Claim Time: " + .@c + " Minutes";
				next;
				if(select("Send Gift:Cancel") != 1) goto OnLeave;
				//Check if player is logged in.
				if(isloggedin(.@new_account)) {
					mes "[" + strnpcinfo(1) + "]";
					mes "Gift sending success!";
					query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp) VALUES(" + .@new_account + ", " + .@new_item + ", " + .@new_value + ", " + .@duration + ", " + .@claimtime + ")");
				} else {
					//Account was not online.
					mes "[" + strnpcinfo(1) + "]";
					mes "Gift sending success!";
					query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp) VALUES(" + .@new_account + ", " + .@new_item + ", " + .@new_value + ", " + .@duration + ", " + .@claimtime + ")"); // duplicate to other menus - continue here on giver side
				}
			}
			break;

		//Character gift.
		case 2:
			mes "[" + strnpcinfo(1) + "]";
			mes "Please select input type:";
			mes "By CID or Name?";
			next;
			if(select("Character ID:Character Name") == 1)
			{
				mes "[" + strnpcinfo(1) + "]";
				mes "Write character id:";
				next;
				input .@new_char,150000, 10000000; //Char id range from 150k to 10m.
				set .@query, query_sql("SELECT account_id, name FROM `" + .CharTableName$ + "` WHERE char_id = " + .@new_char, .@new_accountid, .@new_name$);
				if(!.@query) goto OnNotExist;
				if(select("Continue:Cancel") != 1) goto OnLeave;
					mes "[" + strnpcinfo(1) + "]";
					mes "^009900Gift is ready to go!^000000";
					mes "CID: ^ff0000" + .@new_char + "^000000";
					mes "Name: ^ff0000" + .@new_name$ + "^000000";
					mes "------------------";
					mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
					mes "Quantity: ^ff0000" + .@new_value + "^000000";
					mes "Duration: " + .@duration + " Minutes";
					mes "Claim Time: " + .@c + " Minutes";
				next;
				if(select("Send Gift:Cancel") != 1) goto OnLeave;
				//Check if player is logged in.
				if(isloggedin(.@new_accountid)) {
					mes "[" + strnpcinfo(1) + "]";
					mes "Gift sending success!";

					//Create gift. <auto_id>, <account_id> <char_id> <item> <value>
					query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp) VALUES (" + .@new_char + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ")");
				} else {
					//not online ask if we still give the gift.
					mes "[" + strnpcinfo(1) + "]";
					mes "The character is not online!";
					mes "Would you still like to send the gift?";
					next;
					if(select("Yes:No") != 1) goto OnLeave;
					mes "[" + strnpcinfo(1) + "]";
					mes "Gift sending success!";
					//Create gift. <auto_id>, <account_id> <char_id> <item> <value>
					query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp) VALUES (" + .@new_char + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ")");
				}

			}
			else
			{
				mes "[" + strnpcinfo(1) + "]";
				mes "Write player name:";
				next;
				input .@new_name$;
				set .@query, query_sql("SELECT char_id, account_id FROM `" + .CharTableName$ + "` WHERE name = '" + .@new_name$ + "'", .@new_char, .@new_accountid);
				if(!.@query) goto OnNotExist;
				if(select("Continue:Cancel") != 1) goto OnLeave;
					mes "[" + strnpcinfo(1) + "]";
					mes "^009900Gift is ready to go!^000000";
					mes "CID: ^ff0000" + .@new_char + "^000000";
					mes "Name: ^ff0000"+ .@new_name$ + "^000000";
					mes "------------------";
					mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
					mes "Quantity: ^ff0000" + .@new_value + "^000000";
					mes "Duration: " + .@duration + " Minutes";
					mes "Claim Time: " + .@c + " Minutes";
				next;
				if(select("Send Gift:Cancel") != 1) goto OnLeave;
				//Check if player is logged in.
				if(isloggedin(.@new_accountid))
				{
					mes "[" + strnpcinfo(1) + "]";
					mes "Gift sending success!";
					query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp) VALUES (" + .@new_char + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ")");
				}
				else
				{
					//not online ask if we still give the gift.
					mes "[" + strnpcinfo(1) + "]";
					mes "The character is not online!";
					mes "Would you still like to give the gift?";
					next;
					if(select("Yes:No") != 1) goto OnLeave;
					mes "[" + strnpcinfo(1) + "]";
					mes "Gift sending success!";
					//Create gift. <auto_id>, <account_id> <char_id> <item> <value>
					query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp) VALUES (" + .@new_char + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ")");
				}
			}
			announce strcharinfo(0)+" successfully sent " + .@new_value + "x " + getitemname(.@new_item) + " to " + .@new_name$,bc_all;
			break;

		//Register gift to all online accounts!
		case 3:
			mes "[" + strnpcinfo(1) + "]";
			mes "^009900Gift is ready to go!^000000";
			mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
			mes "Quantity: ^ff0000" + .@new_value + "^000000";
			mes "Duration: " + .@duration + " Minutes";	
			mes "Claim Time: " + .@c + " Minutes";
			next;
			if(select("Send Gift:Cancel") != 1) goto OnLeave;
			mes "[" + strnpcinfo(1) + "]";
			mes "Please hold...";
			set .@c, 0; //Counting success.
			set .@query, query_sql("SELECT account_id FROM `"+.CharTableName$+"` WHERE online=1",.@account);
			for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
				sleep2 25; //Slowdown the loop abit.
				.@at = query_sql("SELECT account_id, char_id FROM "+$GiftTableNameAT$+" WHERE account_id = "+.@account[.@i]+"", .@account_id, .@char_id); // check if in the table
				if (!.@at) {		
					query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp) VALUES(" + .@account[.@i] + ", " + .@new_item + ", " + .@new_value + ", " + .@duration + ", " + .@claimtime + ")");
				}
			}
			mes "Gift registered to (" + .@i + ") accounts!";
			break;

		//Register gift to all accounts!
		case 4:
			mes "[" + strnpcinfo(1) + "]";
			mes "^009900Gift is ready to go!^000000";
			mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
			mes "Quantity: ^ff0000" + .@new_value + "^000000";
			mes "Claim Time: " + .@c + " Minutes";		
			next;
			if(select("Send Gift:Cancel") != 1) goto OnLeave;
			mes "[" + strnpcinfo(1) + "]";
			mes "Please hold...";
			set .@query, query_sql("SELECT account_id FROM `"+.LoginTableName$+"`",.@account);
			for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
				sleep2 25; //Slowdown the loop abit.
					query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp) VALUES(" + .@account[.@i] + ", " + .@new_item + ", " + .@new_value + ", " + .@duration + ", " + .@claimtime + ")");
			}
			mes "Gift registered to (" + .@i + ") accounts!";
			break;

		//Register gift to all online characters!
		case 5:
			mes "[" + strnpcinfo(1) + "]";
			mes "^009900Gift is ready to go!^000000";
			mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
			mes "Quantity: ^ff0000" + .@new_value + "^000000";
			mes "Claim Time: " + .@c + " Minutes";		
			next;
			if(select("Send Gift:Cancel") != 1) goto OnLeave;
			mes "[" + strnpcinfo(1) + "]";
			mes "Please hold...";
			set .@c, 0; //Counting success.
			set .@query, query_sql("SELECT char_id FROM `"+.CharTableName$+"` WHERE online=1",.@char);
			for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
				sleep2 25; //Slowdown the loop abit.
				.@at = query_sql("SELECT account_id, char_id FROM "+$GiftTableNameAT$+" WHERE char_id = "+.@char[.@i]+"", .@account_id, .@char_id); // check if in the table
				if (!.@at) {
					query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp) VALUES (" + .@char[.@i] + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ")");
				}
			}
			mes "Gift registered to (" + .@i + ") players!";
			break;

		//Register gift to all characters!
		case 6:
			mes "[" + strnpcinfo(1) + "]";
			mes "^009900Gift is ready to go!^000000";
			mes "Item: ^ff0000" + getitemname(.@new_item) + "^000000";
			mes "Quantity: ^ff0000" + .@new_value + "^000000";
			mes "Claim Time: " + .@c + " Minutes";	
			next;
			if(select("Send Gift:Cancel") != 1) goto OnLeave;
			mes "[" + strnpcinfo(1) + "]";
			mes "Please hold...";
			set .@query, query_sql("SELECT char_id FROM `"+.CharTableName$+"`",.@char);
			for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
				sleep2 25; //Slowdown the loop abit.
				query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp) VALUES (" + .@char[.@i] + ", " + .@new_item + ", " + .@new_value + "," + .@duration + "," + .@claimtime + ")");
			}
			mes "Gift registered to (" + .@i + ") players!";
			break;

		//Cancel.
		Default:
				mes "[Reward Giver]";
				mes "See you later";
				break;
	}
	close;

OnLeave:
		mes "[Reward Giver]";
		mes "See you later";
		cutin "v_sprakki04",255;
		close;

OnNotExist:
		mes "[" + strnpcinfo(1) + "]";
		mes "This account does not exist!";
		cutin "v_sprakki04",255;
		close;
	
//============Reset Function=========================
OnDelete:
		mes "Which gifts do you want to reset?";
		mes "1. Single Account";
		mes "2. Single Character";
		mes "3. All ^009900Online^000000 Accounts.";
		mes "4. All Accounts.";
		mes "5. All ^009900Online^000000 Players/Characters.";
		mes "6. All Players/Characters.";
		mes "7. All cancel";
		switch(select("Single Account:Single Character:^009900Online^000000 Accounts:All Accounts:^009900Online^000000 Characters:All Characters:Specific Item:IPLimit Logs:Cancel"))
			{
			case 1: //Single Account
				mes "[" + strnpcinfo(1) + "]";
				mes "Please select input type:";
				mes "By AID or Name?";
				next;
				if(select("Account ID:Character Name") == 1)
				{
					mes "[" + strnpcinfo(1) + "]";
					mes "Write account id:";
					next;
					input .@new_account, 2000000, 10000000; //Account id range from 2m to 10m.
					set .@query, query_sql("SELECT account_id FROM `" + .CharTableName$ + "` WHERE account_id = " + .@new_account, .@new_account);
					if(!.@query) goto OnNotExist;
					if(select("Continue:Cancel") != 1) goto OnLeave;
						query_sql("DELETE FROM " + .GiftTableName$ + " WHERE account_id = " + .@new_account);
				}
				else
				{
					mes "[" + strnpcinfo(1) + "]";
					mes "Write player name:";
					next;
					input .@new_name$;
					set .@query, query_sql("SELECT account_id FROM `" + .CharTableName$ + "` WHERE name = '" + .@new_name$ + "'", .@new_account);
					if(!.@query) goto OnNotExist;
					if(select("Continue:Cancel") != 1) goto OnLeave;
						query_sql("DELETE FROM " + .GiftTableName$ + " WHERE account_id = " + .@new_account);
				}
				break;
			case 2: //Single Character
				mes "[" + strnpcinfo(1) + "]";
				mes "Please select input type:";
				mes "By CID or Name?";
				next;
				if(select("Character ID:Character Name") == 1)
				{
					mes "[" + strnpcinfo(1) + "]";
					mes "Write character id:";
					next;
					input .@new_char,150000, 10000000; //Char id range from 150k to 10m.
					set .@query, query_sql("SELECT account_id, name FROM `" + .CharTableName$ + "` WHERE char_id = " + .@new_char, .@new_accountid, .@new_name$);
					if(!.@query) goto OnNotExist;
					if(select("Continue:Cancel") != 1) goto OnLeave;
						query_sql("DELETE FROM " + .GiftTableName$ + " WHERE char_id = " + .@new_char);
				}
				else
				{
					mes "[" + strnpcinfo(1) + "]";
					mes "Write player name:";
					next;
					input .@new_name$;
					set .@query, query_sql("SELECT char_id, account_id FROM `" + .CharTableName$ + "` WHERE name = '" + .@new_name$ + "'", .@new_char, .@new_accountid);
					if(!.@query) goto OnNotExist;
					if(select("Continue:Cancel") != 1) goto OnLeave;
						query_sql("DELETE FROM " + .GiftTableName$ + " WHERE char_id = " + .@new_char);
				}
				break;
			case 3: //All Online Accounts.
				mes "[" + strnpcinfo(1) + "]";
				mes "Please hold...";
				set .@c, 0; //Counting success.
				set .@query, query_sql("SELECT account_id FROM `"+.CharTableName$+"` WHERE online=1",.@account);
				for(set .@i, 0; .@i < .@query; set .@i, .@i + 1) {
					sleep2 25; //Slowdown the loop abit.
					query_sql("DELETE FROM " + .GiftTableName$ + " WHERE account_id = " + .@account[.@i]);
				}
				break;
			case 4: //All Accounts.
				query_sql("DELETE FROM " + .GiftTableName$ + " WHERE account_id >= 1");
				break;
			case 5: //All Online Players/Characters.
				mes "[" + strnpcinfo(1) + "]";
				mes "Please hold...";
				set .@c, 0; //Counting success.
				set .@query, query_sql("SELECT char_id FROM `"+.CharTableName$+"` WHERE online=1",.@char);
				for(set .@i, 0; .@i < .@query; set .@i, .@i + 1)
					{
						sleep2 25; //Slowdown the loop abit.
						query_sql("DELETE FROM " + .GiftTableName$ + " WHERE char_id = " + .@char[.@i]);
					}
				break;
			case 6: //All Players/Characters.
				query_sql("TRUNCATE TABLE " + .GiftTableName$);
				break;
			case 7: // Delete specific item
				mes "Please type the id of the item you wish to delete";
				mes "This will delete all entries with the item id you typed";
				input(.@deletethis);
				next;
				mes "Are you sure you want to delete all entries of " + .@deletethis;
				if (select("Yes:No")==1)
					{
						query_sql("DELETE FROM " + .GiftTableName$ + " WHERE item = " + .@deletethis + "");
					}
					else
					{
						mes "Deletion cancelled";
						close;
					}
			case 8: //All ip logs
				query_sql("TRUNCATE TABLE " + .GiftTableNameIP$);
				break;
			default:
				break;
		}
		next;
		mes "deletion finished";
		cutin "v_sprakki04",255;
		close;

OnLimit:
	mes "Please enter an ip limit, current limit is " + .ip_limit;
	input(.ip_limit);
	mes "Done!";
	cutin "v_sprakki04",255;
	close;

//============================================================ 
// Config/Edit:
//============================================================ 
OnLoadSetup:
	set .Setup, 1;	//OnInit is loaded check.
	set .GMin, 60;	//Minimum GM level to use gm panel.
	set .ZenyID,23500; // put this when asked for which item to give zeny.
	set .MaxZeny,1000000000;
	//Your table names:
	set .CharTableName$, "char";	//Character table name(SQL).
	set .LoginTableName$, "login";
	set .GiftTableName$, "reward";	//Gift table name(SQL).
	set .GiftTableNameIP$, "reward_ip";	//Gift table name for ip tracker
	set $GiftTableNameAT$, "reward_at";	//Gift table name for auto trade tracker
	//Create gift table <auto_id>, <account_id>, <char_id>, <item>, <value>

	query_sql("CREATE TABLE IF NOT EXISTS `reward` (`id` int(11) NOT NULL AUTO_INCREMENT,`account_id` int(11) unsigned NOT NULL DEFAULT '0',`char_id` int(11) unsigned NOT NULL DEFAULT '0',`item` int(11) NOT NULL DEFAULT '0',`value` int(11) NOT NULL DEFAULT '0',`duration` int(11) NOT NULL DEFAULT '0',`timestamp` int(23) NOT NULL DEFAULT '0',PRIMARY KEY (`id`))");
	query_sql("CREATE TABLE IF NOT EXISTS `reward_ip` ( `give_id` int(11) NOT NULL,  `item_id` int(11) NOT NULL,  `ip_address` varchar(23) NOT NULL, `claim_count` int(11) NOT NULL,  PRIMARY KEY (`give_id`))");
	query_sql("CREATE TABLE IF NOT EXISTS `reward_at` (`account_id` int(11) NOT NULL,`char_id` int(11) NOT NULL)");
	return;

OnInit:
	callsub OnLoadSetup;
	end;
}

/* Manual table update for at tracker 
CREATE TABLE IF NOT EXISTS `reward_at` (
  `account_id` int(11) NOT NULL,
  `char_id` int(11) NOT NULL
);
*/
-	script	anti_trader	-1,{
	
OnInit:
	.is_anti_trade = 1; // 0 to disable
	end;
	
}
function	script	PG_30Seconds	{
	//dispbottom "anti trader 30sec";
	//Check if Vending (normal or @at)
	if(checkvending() >= 1)
	{
	   // mark as auto trader
	   	.@query = query_sql("SELECT account_id, char_id FROM "+$GiftTableNameAT$+" WHERE account_id = "+getcharid(3)+"", .@account_id, .@char_id); // check if in the table
		if (!.@query)
		{ // add if not there yet
			query_sql("INSERT INTO "+$GiftTableNameAT$+"(account_id,char_id) VALUES("+getcharid(3)+","+getcharid(0)+")");
			//dispbottom "you have been marked as auto trader";
			stopnpctimer;
			detachnpctimer;
			end;
		}
	}
	return;
}
function	script	PG_Login	{
	//dispbottom "at delete";
	.@query = query_sql("SELECT account_id, char_id FROM "+$GiftTableNameAT$+" WHERE account_id = "+getcharid(3)+"", .@account_id, .@char_id); // check if in the table
	if (.@query)
	{ // remove to reverify vending status
		query_sql("DELETE FROM "+$GiftTableNameAT$+" WHERE account_id = "+getcharid(3)+"");
	}
}
	
Edited by keitenai

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.