Help query_sql to many columns discarding last 1 columns

REKT

New member
Messages
372
Points
0
Emulator
Other
Hello, i'm bit confuse, where should i edit the problem exactly and also i'm just new to Hercules
default_tongue.png


i just found out this script in old eAthena forum might can be use.

Code:
// -o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o- //                             Poll System 1.1                                   //                           For eAthena TXT/SQL                                 //                 (c) 2007, by Myzter (Raff - Pow4Ever.com)                     // -o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o- // - CHANGELOG                                                                   // -o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o- //   Ver. 1.0 [09-15-2007]: First public version                                 //   Ver. 1.1 [09-20-2007]: Added tables to save results on eAthena MySQL        //                          Automatic TXT / SQL detection [with table creation]  //                          Show/hide results before voting [Lupus suggestion]   // -o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-  -	script	PollInternal	-1,{OnInit:	// Text for Add Option menu - don't remove color	set $@NewOption$, "^1010FF<Add Option>^000000";	 // MySQL Parameters - Only for eAthena MySQL Servers	set $@PollPageSize, 3;		// Paging Size (max: 125)	set $@TimeFormat$, "%M %d, %Y %k:%i";	// September 20, 2007 14:20	// Other formats: [%m/%d/%Y %k:%i = 09/20/2007 14:20] [%d/%m/%Y %k:%i = 20/09/2007 14:20]		// MySQL Auto-Detection	set .MyExist, query_sql("select version()");	if (.MyExist < 0) { set $@UseMySQL,0; debugmes "Poll System: Working on TXT Mode"; } else { set $@UseMySQL,1; debugmes "Poll System: Working on SQL Mode"; }		// First Time Initialization	if (!$LastPollID && !$PollID) {		cleararray $PollData$[0],"",128;		set $PollData$[1],$@NewOption$;	}		// Table checking / creation	if ($@UseMySQL == 1) {		if ($@PollPageSize > 125) set $@PollPageSize, 125;		set $@UseMySQL,2;	// Don't ask why i'm doing this		query_sql "show tables like 'poll_main'",.PollTable$;		if (.PollTable$[0] == "") {			debugmes "Poll System - Creating table `poll_main`";			query_sql "CREATE TABLE `poll_main` (`poll_id` int(11) unsigned NOT NULL,`poll_creator` int(11) unsigned NOT NULL,`poll_title` varchar(70) NOT NULL,`poll_started` datetime NOT NULL,`poll_finished` datetime default NULL,`poll_status` tinyint(1) unsigned default '0', PRIMARY KEY (`poll_id`)) ENGINE=MyISAM;";		}		deletearray .PollTable$[0],1;		query_sql "show tables like 'poll_options'",.PollTable$;		if (.PollTable$[0] == "") {			debugmes "Poll System - Creating table `poll_options`";			query_sql "CREATE TABLE `poll_options` ( `poll_id` int(11) unsigned NOT NULL default '0',`poll_text` varchar(70) NOT NULL, `poll_votes` int(11) default '0' ) ENGINE=MyISAM;";		}	}	// The script will continue on OnTimerXXXXX to start the timerOnTimer30000:	// Check every 30 seconds	initnpctimer;	if (!$PollID || !$PollDuration) end;	// Static Counter - VERY HELPFUL (Current Time - Started Time >= Wanted Time)	if ($PollDurationType)		if ((gettimetick(2) - $PollStartDate) / 60 >= $PollDuration) callfunc "AutoClosePoll",1;	else		if ((gettimetick(2) - $PollStartDate) / 3600 >= $PollDuration) callfunc "AutoClosePoll,1";	end;} -	script	Poll	-1,{	if ($@NewOption$ == "") goto OnInit;	mes "[^930781Tokumitsu^000000]";	if (!$PollID && !$LastPollID) {		mes "Hi " + strcharinfo(0) + ", this is a nice day to play RO.";		close;	}	if ($@UseMySQL) set @ViewHistoryPolls$,"^626200View Old Polls^000000"; else set @ViewHistoryPolls$,"View Previows Poll";	if ($PollID) {		if (#LastPollID != $PollID) {			if (($PollMinLevel && BaseLevel < $PollMinLevel) || ($PollMaxLevel && BaseLevel > $PollMaxLevel)) {				mes "Sorry " + strcharinfo(0) + ", your character don't meet the requirements for voting.";				mes " ";				if ($PollMinLevel) mes "> ^FF0000Minimum level: ^FF0000" + $PollMinLevel + "^000000";				if ($PollMaxLevel) mes "> ^FF0000Maximum level: ^FF0000" + $PollMaxLevel + "^000000";				close;			}			mes "Hi " + strcharinfo(0) + ", please vote.";			switch ($PollPrizeType) {				case 1: mes "> Prize: ^FF0000+" + $PollPrizeAmount + "%^000000 Base Level";					mes "> Chance: ^FF0000" + $PollPrizeProb + "%^000000";					break;				case 2: mes "> Prize: ^FF0000+" + $PollPrizeAmount + "%^000000 Job Level";					mes "> Chance: ^FF0000" + $PollPrizeProb + "%^000000";					break;				case 3: mes "> Prize: ^FF0000" + $PollPrizeAmount + "z^000000";					mes "> Chance: ^FF0000" + $PollPrizeProb + "%^000000";			}			mes " ";			mes " (1 vote x account)";			if ($LastPollID) set @MainMenu$, "^0000F0Vote^000000:" + @ViewHistoryPolls$ + ":^FF0000Exit^000000"; else set @MainMenu$, "^0000F0Vote^000000::^FF0000Exit^000000";		} else {			mes "Hi " + strcharinfo(0) + ", may i help you?";			if ($LastPollID) set @MainMenu$, "^F00000View Current Poll^000000:" + @ViewHistoryPolls$ + ":^FF0000Exit^000000"; else set @MainMenu$, "^F00000View Current Poll^000000::^FF0000Exit^000000";		}	} else {		mes "Hi " + strcharinfo(0) + ", may i help you?";		set @MainMenu$, ":" + @ViewHistoryPolls$ + ":^FF0000Exit^000000";	}	emotion e_no1;	next;	switch (select(@MainMenu$)) {		case 1: goto L_Poll;		case 2: if ($@UseMySQL) goto L_OldPolls; else { callfunc "DrawLastPoll"; close; }	}L_Exit:	mes "[^930781Tokumitsu^000000]";	mes "I hope to see you again ^^";	close;L_PollClosed:	mes "[^930781Tokumitsu^000000]";	mes "Oh sorry, the Poll is closed.";	close;L_Poll:	if (!$PollID) goto L_PollClosed;	set @TotPollOpts, callfunc("CountPollOpts");	set @TotPollVotes, callfunc("CountPollVotes");	mes "^0000FF" + $PollData$[0] + "^000000";	mes " ^25B54C(Total Votes: " + @TotPollVotes + ")^000000";	if ($PollShowBeforeVote || #LastPollID == $PollID) {		mes "^C0C0C0×××××××××××××××××××××××××××××××^000000";		callfunc "DrawPollOption";	}	if (#LastPollID != $PollID) {		next;		set @opc,select($PollData$[1],$PollData$[3],$PollData$[5],$PollData$[7],$PollData$[9],$PollData$[11],$PollData$[13],$PollData$[15],				$PollData$[17],$PollData$[19],$PollData$[21],$PollData$[23],$PollData$[25],$PollData$[27],$PollData$[29],$PollData$[31],				$PollData$[33],$PollData$[35],$PollData$[37],$PollData$[39],"^FF0000Exit^000000");		if (@opc == 21) goto L_Exit;		mes "[^930781Tokumitsu^000000]";		mes "Selected Option:";		mes " >^0000FF" + $PollData$[@opc * 2 - 1] + "^000000 <";		next;		if (select("^0000FFConfirm!^000000","^FF0000Change Option^000000") == 2) goto L_Poll;		if (!$PollID) goto L_PollClosed;		set #LastPollID,$PollID;		set @PollVotes, atoi($PollData$[@opc * 2]) + 1;		set $PollData$[@opc * 2], @PollVotes;		mes "[^930781Tokumitsu^000000]";		if ($PollPrizeType) {			if ($PollPrizeProb < 100) {				mes "Please, press <Next> to check your prize:";				mes " ";				mes "^FF0000I hope you win!^000000";				next;				mes "[^930781Tokumitsu^000000]";			}			if (rand(100) <= $PollPrizeProb) {				soundeffect "tming_success.wav",0;				specialeffect2 610;				emotion e_grat;				mes "Congratulations!!!";				switch ($PollPrizeType) {					case 1:						set BaseExp, BaseExp + ((NextBaseExp / 100) * $PollPrizeAmount / 100) * 100;						mes "You Win: ^FF0000+" + $PollPrizeAmount + "%^000000 Base Level";						break;					case 2:						set JobExp, JobExp + ((NextJobExp / 100) * $PollPrizeAmount / 100) * 100;						mes "You Win: ^FF0000+" + $PollPrizeAmount + "%^000000 Job Level";						break;					default:						set zeny, zeny + $PollPrizeAmount;						mes "You Win: ^FF0000+" + $PollPrizeAmount + "z^000000";				}			} else {				soundeffect "goat_die.wav",0;				specialeffect2 611;				emotion e_sry;				mes "Sorry " + strcharinfo(0) + ", i hope you win the next time!";				mes " ";				mes "Thank's for your Vote.";			}		} else {			mes "Thanks for your vote " + strcharinfo(0) + "!";		}		if (!$PollShowBeforeVote) {			next;			mes "^0000FF" + $PollData$[0] + "^000000";			mes " ^25B54C(Total Votes: " + (@TotPollVotes + 1) + ")^000000";			if ($PollShowBeforeVote || #LastPollID == $PollID) {				mes "^C0C0C0×××××××××××××××××××××××××××××××^000000";				callfunc "DrawPollOption";			}		}	}	if ($PollMaxVotes && @PollVotes >= $PollMaxVotes) callfunc "AutoClosePoll",1;	close;L_OldPolls:	deletearray @pollcount[0],128;	query_sql "select count(*) from poll_main where poll_status = 1",@pollcount;	if (!@pollcount[0]) {		mes "[^930781Poll History^000000]";		mes "Sorry, there are not Old Polls to view.";		close;	}	set @ototpages, (@pollcount[0] - 1) / $@PollPageSize;	set @opage, 1;	while (1) {		cleararray @opollid[0],0,128;		cleararray @opolltit$[0],"",128;		cleararray @opollstart$[0],0,128;		cleararray @opollfinish$[0],0,128;		cleararray @opolltot[0],0,128;		set @pindex, @opage * $@PollPageSize - $@PollPageSize;		set @cnt, query_sql("select a.poll_id, poll_title, date_format(poll_started,'" + $@TimeFormat$ + "'), date_format(poll_finished,'" + $@TimeFormat$ + "'), (select sum(poll_votes) from poll_options b where b.poll_id = a.poll_id) from poll_main a where poll_status = 1 order by poll_title limit " + @pindex + "," + $@PollPageSize,@opollid,@opolltit$,@opollstart$,@opollfinish$,@opolltot);		mes "[^930781Old Polls Page " + @opage + "^000000]";		mes "Select a Poll to view the details.";		next;		if (@ototpages > 0 && @opage < @ototpages + 1) set @EndMenu$, "^0000FF> Next Page^000000:"; else set @EndMenu$, ":";		if (@opage > 1) set @EndMenu$, @EndMenu$ + "^0000FF< Previows Page^000000:^FF0000Exit^000000"; else set @EndMenu$, @EndMenu$ + ":^FF0000Exit^000000";		set @opc, select( @opolltit$[0],  @opolltit$[1],  @opolltit$[2],  @opolltit$[3],  @opolltit$[4],  @opolltit$[5],  @opolltit$[6],				  @opolltit$[7],  @opolltit$[8],  @opolltit$[9], @opolltit$[10], @opolltit$[11], @opolltit$[12], @opolltit$[13],				 @opolltit$[14], @opolltit$[15], @opolltit$[16], @opolltit$[17], @opolltit$[18], @opolltit$[19], @opolltit$[20],				 @opolltit$[21], @opolltit$[22], @opolltit$[23], @opolltit$[24], @opolltit$[25], @opolltit$[26], @opolltit$[27],				 @opolltit$[28], @opolltit$[29], @opolltit$[30], @opolltit$[31], @opolltit$[32], @opolltit$[33], @opolltit$[34],				 @opolltit$[35], @opolltit$[36], @opolltit$[37], @opolltit$[38], @opolltit$[39], @opolltit$[40], @opolltit$[41],				 @opolltit$[42], @opolltit$[43], @opolltit$[44], @opolltit$[45], @opolltit$[46], @opolltit$[47], @opolltit$[48],				 @opolltit$[49], @opolltit$[50], @opolltit$[51], @opolltit$[52], @opolltit$[53], @opolltit$[54], @opolltit$[55],				 @opolltit$[56], @opolltit$[57], @opolltit$[58], @opolltit$[59], @opolltit$[60], @opolltit$[61], @opolltit$[62],				 @opolltit$[63], @opolltit$[64], @opolltit$[65], @opolltit$[66], @opolltit$[67], @opolltit$[68], @opolltit$[69],				 @opolltit$[70], @opolltit$[71], @opolltit$[72], @opolltit$[73], @opolltit$[74], @opolltit$[75], @opolltit$[76],				 @opolltit$[77], @opolltit$[78], @opolltit$[79], @opolltit$[80], @opolltit$[81], @opolltit$[82], @opolltit$[83],				 @opolltit$[84], @opolltit$[85], @opolltit$[86], @opolltit$[87], @opolltit$[88], @opolltit$[89], @opolltit$[90],				 @opolltit$[91], @opolltit$[92], @opolltit$[93], @opolltit$[94], @opolltit$[95], @opolltit$[96], @opolltit$[97],				 @opolltit$[98], @opolltit$[99],@opolltit$[100],@opolltit$[101],@opolltit$[102],@opolltit$[103],@opolltit$[104],				@opolltit$[105],@opolltit$[106],@opolltit$[107],@opolltit$[108],@opolltit$[109],@opolltit$[110],@opolltit$[111],				@opolltit$[112],@opolltit$[113],@opolltit$[114],@opolltit$[115],@opolltit$[116],@opolltit$[117],@opolltit$[118],				@opolltit$[119],@opolltit$[120],@opolltit$[121],@opolltit$[122],@opolltit$[123],@opolltit$[124],@EndMenu$);		if (@opc < 126) {			callfunc "ShowOldPoll",@opollid[@opc - 1],@opolltit$[@opc - 1],@opollstart$[@opc - 1],@opollfinish$[@opc - 1],@opolltot[@opc - 1];			if (select("Back","^FF0000Exit^000000") == 2) goto L_Exit;		} else {			switch (@opc) {				case 126: set @opage, @opage + 1; break;				case 127: set @opage, @opage - 1; break;				case 128: goto L_Exit;			}		}	}OnTouch:	if (($PollID && #LastPollID != $PollID) && (($PollMinLevel && BaseLevel >= $PollMinLevel) || !$PollMinLevel) && (($PollMaxLevel && BaseLevel <= $PollMaxLevel) || !$PollMaxLevel) && !rand(5)) {		emotion e_com;		npctalk "Hi " + strcharinfo(0) + ", can you help me please?, it's free!";	}	end;OnWhisperGlobal:	if (getgmlevel() < 99) end;	if (@whispervar0$ == "reset") {		set #LastPollID,0;		dispbottom "Now you can vote again in this Poll.";		end;	}	mes "[^930781Tokumitsu^000000]";	mes "Hi Master, what can i do for you?";	next;	if ($PollID) set @MainMenu$,"::Close Poll:^FF0000Exit^000000"; else set @MainMenu$,"Configure Poll:Publish Poll::^FF0000Exit^000000";	switch(select(@MainMenu$)) {		case 1:			L_PollConfig:			mes "[^930781Tokumitsu^000000]";			if ($PollID) {				mes "I'm sorry, you must close the current Poll before try to edit them or create a new one.";				next;				goto OnWhisperGlobal;			}			mes "Configure your Poll:";			next;			L_PollConfig2:			set @TotPollOpts, callfunc("CountPollOpts");			if ($PollMinLevel) set @MinLvL$,"Level " + $PollMinLevel; else set @MinLvL$,"no limit";			if ($PollMaxLevel) set @MaxLvL$,"Level " + $PollMaxLevel; else set @MaxLvL$,"no limit";			switch ($PollPrizeType) {				case 1: set @PollPrize$,"Base Level (" + $PollPrizeAmount + "%/" + $PollPrizeProb + "%)";break;				case 2: set @PollPrize$,"Job Level (" + $PollPrizeAmount + "%/" + $PollPrizeProb + "%)";break;				case 3: set @PollPrize$,"Zeny (" + $PollPrizeAmount + "z/" + $PollPrizeProb + "%)";break;				default: set @PollPrize$,"none";			}			if ($PollDuration) {				if ($PollDurationType)					set @MenuDuration$, $PollDuration + " min(s)";				else					set @MenuDuration$, $PollDuration + " hr(s)";							} else set @MenuDuration$, "no limit";			if ($PollMaxVotes) set @MenuMaxVotes$, $PollMaxVotes + ""; else set @MenuMaxVotes$, "unlimited";			if ($PollShowBeforeVote) set @ViewBeforeVote$, "Show Results Before Vote [^0000FFYes^000000]"; else set @ViewBeforeVote$, "Show Results Before Vote [^FF0000No^000000]";			switch (select("Title [^0000FF" + $PollData$[0] + "^000000]","Options [^FF0000" + @TotPollOpts + "^000000]","Duration [^FF0000" + @MenuDuration$ + "^000000]","Prize [^FF0000" + @PollPrize$ + "^000000]","Min. Lvl [^FF0000" + @MinLvL$ + "^000000]","Max. Lvl [^FF0000" + @MaxLvL$ + "^000000]","Max. Global Votes [^FF0000" + @MenuMaxVotes$ + "^000000]",@ViewBeforeVote$,"^FF0000Reset^000000","Back")) {				case 1:					L_PollQuestion:					mes "[^930781Tokumitsu^000000]";					mes "Please input the Poll Title:";					if ($PollData$[0] != "") mes "> Current Title: ^0000FF" + $PollData$[0] + "^000000";					mes " (1 to 70 characters)";					next;					input @PollQuestion$;					if (getstrlen(@PollQuestion$) > 70) {						mes "[^930781Tokumitsu^000000]";						mes "The max length is 70 characters.";						next;						goto L_PollQuestion;					}					if (compare(@PollQuestion$,":")) {						mes "[^930781Tokumitsu^000000]";						mes "Invalid character detected [ ^FF0000:^000000 ]";						next;						goto L_PollQuestion;					}					if (compare(@PollQuestion$,"^")) {						mes "[^930781Tokumitsu^000000]";						mes "Invalid character detected [ ^FF0000^^000000 ]";						next;						goto L_PollQuestion;					}					mes "[^930781Tokumitsu^000000]";					mes "> ^FF0000" + @PollQuestion$ + "^000000 <";					next;					if (select("Confirm","Back") == 2) goto L_PollConfig;					set $PollData$[0],@PollQuestion$;					goto L_PollConfig;				case 2:					L_PollOptions:					mes "[^930781Tokumitsu^000000]";					mes "Select a option to edit / create:";					next;					L_PollOptions2:					set @TotPollOpts, callfunc("CountPollOpts");					if (@TotPollOpts > 1) set @RAO$,"^B13D05Remove All Options^000000"; else set @RAO$,"";					set @opc,select($PollData$[1],$PollData$[3],$PollData$[5],$PollData$[7],$PollData$[9],$PollData$[11],$PollData$[13],$PollData$[15],							$PollData$[17],$PollData$[19],$PollData$[21],$PollData$[23],$PollData$[25],$PollData$[27],$PollData$[29],$PollData$[31],							$PollData$[33],$PollData$[35],$PollData$[37],$PollData$[39],@RAO$,"^FF0000Back^000000");					switch (@opc) {						case 21:							mes "[^930781Tokumitsu^000000]";							mes "Are you sure that you want to clear all Options?";							next;							if (select("No","Yes") == 1) goto L_PollOptions;							cleararray $PollData$[1],"",48;							setarray $PollData$[1],$@NewOption$;							goto L_PollOptions;						case 22:							goto L_PollConfig;					}					L_PollOptions3:					set @pidx, @opc * 2 - 1;					if ($PollData$[@pidx] != $@NewOption$) {						switch (select("^F00000* Back^000000","^0000FF* Edit^000000 (" + $PollData$[@pidx] + ")","^800000* Move Up^000000","^8000E0* Move Down^000000","^FF0000* Delete^000000")) {							case 1: goto L_PollOptions2;							case 2:								mes "[^930781Tokumitsu^000000]";								mes "Current Option:";								mes "> ^0000FF" + $PollData$[@pidx] + "^000000 <";								break;							case 3:								if (@pidx > 1) {									set @NewOption$, $PollData$[@pidx];									set $PollData$[@pidx],$PollData$[@pidx - 2];									set $PollData$[@pidx - 2],@NewOption$;								}								goto L_PollOptions2;							case 4:								if (@pidx < @TotPollOpts * 2 - 1) {									set @NewOption$, $PollData$[@pidx];									set $PollData$[@pidx],$PollData$[@pidx + 2];									set $PollData$[@pidx + 2],@NewOption$;								}								goto L_PollOptions2;							case 5:								set @px,@pidx;								set @mopt,@TotPollOpts * 2;								while (@px < @mopt) {									set $PollData$[@px],$PollData$[@px + 2];									set @px, @px + 2;								}								if ($PollData$[@px - 2] != $@NewOption$)									set $PollData$[@px], $@NewOption$;								else if ($PollData$[@px] == $@NewOption$)									set $PollData$[@px], "";								goto L_PollOptions2;						}					} else {						mes "[^930781Tokumitsu^000000]";						mes "Please input this Option:";					}					next;					input @NewOption$;					if (compare(@NewOption$,":")) {						mes "[^930781Tokumitsu^000000]";						mes "Invalid character detected [ ^FF0000:^000000 ]";						next;						goto L_PollOptions3;					}					if (compare(@NewOption$,"^")) {						mes "[^930781Tokumitsu^000000]";						mes "Invalid character detected [ ^FF0000^^000000 ]";						next;						goto L_PollOptions3;					}					set @pollidx, callfunc("SearchOption",@NewOption$);					if (@pollidx == @opc) goto L_PollOptions;					if (@pollidx) {						mes "[^930781Tokumitsu^000000]";						mes ">> ^FF0000Duplicate option!^000000 <<";						mes "That option already exist in the position #^FF0000" + @pollidx + "^000000.";						next;						goto L_PollOptions3;					}					mes "[^930781Tokumitsu^000000]";					if ($PollData$[@pidx] != $@NewOption$) mes "Previows Option: ^0000FF" + $PollData$[@pidx] + "^000000";					mes "New Option: ^FF0000" + @NewOption$ + "^000000";					next;					if (select("Confirm","Back") == 2) goto L_PollOptions;					set $PollData$[@pidx],@NewOption$;					if ($PollData$[@pidx + 2] == "") {						set $PollData$[@pidx + 2],$@NewOption$;						set $PollData$[@pidx + 3],"0";					}					goto L_PollOptions;				case 3:					L_PollDuration:					mes "[^930781Tokumitsu^000000]";					mes "Select the time unit:";					next;					switch(select("Minutes","Hours","Back")) {						case 1: set @PollDurationType,1;break;						case 2: set @PollDurationType,0;break;						default: goto L_PollConfig;					}					mes "[^930781Tokumitsu^000000]";					if ($PollDurationType) mes "Input the duration of the Poll (minutes):"; else mes "Input the duration of the Poll (hours):";					mes "(0: unlimited)";					next;					input @PollDuration;					if (@PollDuration < 1) {						mes "[^930781Tokumitsu^000000]";						mes "Do you want to set unlimited time to this Poll?";						next;						menu "Unlimited Time",-,"Change",L_PollDuration,"Back",L_PollConfig;						set $PollDuration,0;						set $PollDurationType,0;					} else {						mes "[^930781Tokumitsu^000000]";						if (@PollDurationType) mes "Poll duration: " + @PollDuration + " minute(s)"; else mes "Poll duration: " + @PollDuration + " hour(s)";						next;						menu "Confirm",-,"Change",L_PollDuration,"Back",L_PollConfig;						set $PollDuration,@PollDuration;						set $PollDurationType,@PollDurationType;					}					goto L_PollConfig;				case 4:					L_PollPrizes:					mes "[^930781Tokumitsu^000000]";					mes "Please, select the prize for this Poll:";					next;					set @pprize, select("Base Exp","Job Exp","Zeny","^FF0000No Prizes^000000","^FF0000Back^000000");					if (@pprize == 4) goto L_PollConfig;					switch(@pprize) {						case 1:							L_BLR:							mes "[^930781Tokumitsu^000000]";							mes "Please, input the Base Level Rate for this prize:";							mes " (1-100%, 0: Cancel)";							next;							input @pbl;							if (!@pbl) goto L_PollPrizes;							if (@pbl > 100) {								mes "[^930781Tokumitsu^000000]";								mes "The max amount of Base Level for a Poll Prize is 100%";								next;								goto L_BLR;							}							break;						case 2:							L_JLR:							mes "[^930781Tokumitsu^000000]";							mes "Please, input the Job Level Rate for this prize:";							mes " (1-100%, 0: Cancel)";							next;							input @pbl;							if (!@pbl) goto L_PollPrizes;							if (@pbl > 100) {								mes "[^930781Tokumitsu^000000]";								mes "The max amount of Job Level for a Poll Prize is 100%";								next;								goto L_JLR;							}							break;						case 3:							L_ZEN:							mes "[^930781Tokumitsu^000000]";							mes "Please, input the amount of zeny for this prize:";							mes " (100-100000, 0: Cancel)";							next;							input @pbl;							if (!@pbl) goto L_PollPrizes;							if (@pbl > 100000) {								mes "[^930781Tokumitsu^000000]";								mes "The max amount of zeny for a Poll Prize is 100,000z";								next;								goto L_ZEN;							}							break;						case 4:							set $PollPrizeType,@pprize;							set $PollPrizeAmount,@pbl;							set $PollPrizeProb,@pbp;							mes "[^930781Tokumitsu^000000]";							mes "Poll Prize removed!";							next;						default:							goto L_PollConfig;					}					mes "[^930781Tokumitsu^000000]";					switch(@pprize) {						case 1: mes "Prize: ^FF0000" + @pbl + "% of Base Level";break;						case 2: mes "Prize: ^FF0000" + @pbl + "% of Job Level";break;						case 3: mes "Prize: ^FF0000" + @pbl + " of Zeny";break;					}					mes "^000000Please, input the probabilities to win:";					mes "(1-100%, 0: Cancel)";					next;					input @pbp;					if (!@pbp) goto L_PollPrizes;					if (@pbp > 100) set @pbp, 100;					mes "[^930781Tokumitsu^000000]";					switch(@pprize) {						case 1: mes "Prize: ^FF0000" + @pbl + "%^000000 of Base Level";break;						case 2: mes "Prize: ^FF0000" + @pbl + "%^000000 of Job Level";break;						case 3: mes "Prize: ^FF0000" + @pbl + "^000000 of Zeny";break;					}					mes "Probabilities: ^FF0000" + @pbp + "%^000000";					next;					if (select("Confirm","Back") == 2) goto L_PollConfig;					set $PollPrizeType,@pprize;					set $PollPrizeAmount,@pbl;					set $PollPrizeProb,@pbp;					goto L_PollConfig;				case 5:					mes "[^930781Tokumitsu^000000]";					mes "Please, input the minimum Base Level required for Vote:";					mes "(0: All)";					next;					input @minlvl;					mes "[^930781Tokumitsu^000000]";					mes "Minimum level required for Vote: ^FF0000" + @minlvl + "^000000";					next;					if (select("Confirm","Back") == 2) goto L_PollConfig;					set $PollMinLevel,@minlvl;					if ($PollMinLevel && $PollMaxLevel && $PollMinLevel > $PollMaxLevel) {						set @maxlvl,$PollMinLevel;						set $PollMinLevel, $PollMaxLevel;						set $PollMaxLevel, @maxlvl;					}					goto L_PollConfig;				case 6:					mes "[^930781Tokumitsu^000000]";					mes "Please, input the maximum Base Level required for Vote:";					mes "(0: no limit)";					next;					input @maxlvl;					mes "[^930781Tokumitsu^000000]";					mes "Maximum level required for Vote: ^FF0000" + @maxlvl + "^000000";					next;					if (select("Confirm","Back") == 2) goto L_PollConfig;					set $PollMaxLevel,@maxlvl;					if ($PollMinLevel && $PollMaxLevel && $PollMinLevel > $PollMaxLevel) {						set @maxlvl,$PollMinLevel;						set $PollMinLevel, $PollMaxLevel;						set $PollMaxLevel, @maxlvl;					}					goto L_PollConfig;				case 7:					L_PollMaxVotes:					mes "[^930781Tokumitsu^000000]";					mes "Please, input the total votes to count before close the Poll:";					mes "(0: no limit)";					next;					input @PollMaxV;					if (@PollMaxV < 1) {						set @PollMaxV,0;						goto L_PollConfig;					}					mes "[^930781Tokumitsu^000000]";					mes "The Poll will be closed after count " + @PollMaxV + " vote(s)";					next;					menu "Confirm",-,"Change",L_PollMaxVotes,"Back",L_PollConfig;					set $PollMaxVotes,@PollMaxV;					goto L_PollConfig;				case 8:					if ($PollShowBeforeVote) set $PollShowBeforeVote,0; else set $PollShowBeforeVote, 1;					goto L_PollConfig2;				case 9:					mes "[^930781Tokumitsu^000000]";					mes "Are you sure that you want to delete the current Poll configuration?";					next;					if (select("Yes","No") == 1) callfunc "ClearPollData",0;					goto L_PollConfig;				default: goto OnWhisperGlobal;			}		case 2:			mes "[^930781Tokumitsu^000000]";			if ($PollID) {				mes "The Poll is already published.";				next;				goto OnWhisperGlobal;			}			if ($PollData$[0] == "") {				mes "Sorry, you must define the Poll Title with 2 or more options.";				next;				goto OnWhisperGlobal;			}			set @TotPollOpts, callfunc("CountPollOpts");			if (@TotPollOpts < 2) {				mes "Sorry, before publish this Poll create at least 2 options to vote.";				next;				goto OnWhisperGlobal;			}			for (set @px,1; @px < 42; set @px,@px + 2) {				if ($PollData$[@px] == $@NewOption$) set $PollData$[@px],"";			}			if ($PollDuration) {				if ($PollDurationType)					set @MenuDuration$, $PollDuration + " min(s)";				else					set @MenuDuration$, $PollDuration + " hr(s)";			} else set @MenuDuration$, "sin límite";			mes "Title: ^0000FF" + $PollData$[0] + "^000000";			mes "> Duration: ^0000FF" + @MenuDuration$ + "^000000";			mes "^C0C0C0×××××××××××××××××××××××××××××××^000000";			callfunc "DrawPollOption";			next;			if (select("Publish Poll","Back") == 2) goto OnWhisperGlobal;			set $PollInternalID, $PollInternalID + 1;			set $PollID, $PollInternalID;			if ($@UseMySQL) query_sql "insert into poll_main (poll_id,poll_creator,poll_title,poll_started) values (" + $PollID + "," + getcharid(3) + ",'" + escape_sql($PollData$[0]) + "', now())";			set $PollStartDate, gettimetick(2);			announce "New Poll: [" + $PollData$[0] + "], Please Vote!",bc_all;			mes "[^930781Tokumitsu^000000]";			mes "It's done, waiting players votes!";			close;		case 3:			mes "[^930781Tokumitsu^000000]";			if (!$PollID) {				mes "Sorry, there are not a active Poll right now.";				next;				goto OnWhisperGlobal;			}			mes "Title: " + $PollData$[0] + "^000000";			callfunc "DrawPollOption";			next;			if (select("Close Poll","Back") == 2) goto OnWhisperGlobal;			mes "[^930781Tokumitsu^000000]";			mes "Are you sure that you want to close this Poll?";			next;			if (select("No","Yes") == 1) goto OnWhisperGlobal;			if (!$@UseMySQL) {				mes "[^930781Tokumitsu^000000]";				mes "Save the results in the option '^0000FFView Previows Poll^000000'?";				mes " ";				mes "(^FF0000replace Last Poll information^000000)";				next;				switch (select("Save","Don't Save","Back")) {					case 1:callfunc "AutoClosePoll",1;break;					case 2:callfunc "AutoClosePoll",0;break;					default:goto OnWhisperGlobal;				}			} else {				callfunc "AutoClosePoll",0;			}			mes "[^930781Tokumitsu^000000]";			mes "The Poll was Closed!";			next;			goto OnWhisperGlobal;	}	goto L_Exit;} function	script	CountPollOpts	{	set @TotPollOpts,0;	for (set @cpox,1; @cpox < 41; set @cpox,@cpox + 2) {		if ($PollData$[@cpox] != "" && $PollData$[@cpox] != $@NewOption$) set @TotPollOpts,@TotPollOpts + 1;	}	return @TotPollOpts;} function	script	CountPollVotes	{	set @TotPollOpts,0;	for (set @cpvx,2; @cpvx < 42; set @cpvx,@cpvx + 2) {		if ($PollData$[@cpvx] != "") set @TotPollOpts,@TotPollOpts + atoi($PollData$[@cpvx]);	}	return @TotPollOpts;} function	script	CountOldPollOpts	{	set @TotPollOpts,0;	for (set @copox,51; @copox < 91; set @copox,@copox + 2) {		if ($PollData$[@copox] != "" && $PollData$[@cpox] != $@NewOption$) set @TotPollOpts,@TotPollOpts + 1;	}	return @TotPollOpts;} function	script	CountOldPollVotes	{	set @TotPollOpts,0;	for (set @copvx,52; @copvx < 92; set @copvx,@copvx + 2) {		if ($PollData$[@copvx] != "") set @TotPollOpts,@TotPollOpts + atoi($PollData$[@copvx]);	}	return @TotPollOpts;} function	script	SearchOption	{	for (set @so,1; @so < 42; set @so,@so + 2) {		if ($PollData$[@so] == getarg(0)) return @so / 2 + 1;	}	return 0;} function	script	ClearPollData	{	set $PollID, 0;	if (getarg(0)) announce "The Poll [" + $PollData$[0] + "] was closed, thanks for your feedback!",bc_all;	cleararray $PollData$[0],"",49;	setarray $PollData$[1],$@NewOption$;	set $PollDuration,0;	set $PollMinLevel,0;	set $PollMaxLevel,0;	set $PollPrizeType,0;	set $PollPrizeAmount,0;	set $PollPrizeProb,0;	set $PollMaxVotes,0;	return;} function	script	DrawPollOption	{	set @TotPollVotes, callfunc("CountPollVotes");	for (set @dpox,1; @dpox < 42; set @dpox,@dpox + 2) {		if ($PollData$[@dpox] != "") {			set @DPVotes,atoi($PollData$[@dpox + 1]);			mes (@dpox / 2 + 1) + ". ^FF9C01" + $PollData$[@dpox];			if (@DPVotes) set @pct,21 * (@DPVotes * 100 / @TotPollVotes) / 100; else set @pct,0;			set @DPOLine$,"^FF0000";			for (set @DPO,0; @DPO < 21; set @DPO, @DPO + 1) {				if (@DPO < @pct) {					set @DPOLine$,@DPOLine$ + "¤";				} else {					if (@DPO - 1 < @pct) set @DPOLine$,@DPOLine$ + "^DCDCDC";					set @DPOLine$,@DPOLine$ + "¤";				}			}			mes @DPOLine$ + "^000000 ^DC883E[" + @DPVotes + " vote(s)]^000000";		}	}	return;} function	script	DrawLastPoll	{	set @TotPollVotes, callfunc("CountOldPollVotes");	mes "^0000FF" + $PollData$[50] + "^000000";	mes " ^25B54C(Total Votes: " + @TotPollVotes + ")^000000";	mes " (^FF0000Closed^000000)";	mes "^C0C0C0×××××××××××××××××××××××××××××××^000000";	for (set @dlpx,51; @dlpx < 90; set @dlpx,@dlpx + 2) {		if ($PollData$[@dlpx] != "") {			set @DPVotes,atoi($PollData$[@dlpx + 1]);			mes ((@dlpx - 50) / 2 + 1) + ". ^FF9C01" + $PollData$[@dlpx];			if (@DPVotes) set @pct,21 * (@DPVotes * 100 / @TotPollVotes) / 100; else set @pct,0;			set @DPOLine$,"^F0AF00";			for (set @DPO,0; @DPO < 21; set @DPO, @DPO + 1) {				if (@DPO < @pct) {					set @DPOLine$,@DPOLine$ + "¤";				} else {					if (@DPO - 1 < @pct) set @DPOLine$,@DPOLine$ + "^DCDCDC";					set @DPOLine$,@DPOLine$ + "¤";				}			}			mes @DPOLine$ + "^000000 ^DC883E[" + @DPVotes + " votes]^000000";		}	}	return;} function	script	AutoClosePoll	{	cleararray $PollData$[50],"",77;	if ($@UseMySQL) {		for (set .acpx,1; .acpx < 42; set .acpx,.acpx + 2) {			if ($PollData$[.acpx] != "") query_sql "insert into `poll_options` (`poll_id`,`poll_text`,`poll_votes`) values (" + $PollID + ",'" + escape_sql($PollData$[.acpx]) + "'," + atoi($PollData$[.acpx + 1]) + ")";		}		query_sql "update `poll_main` set `poll_finished` = now(), `poll_status` = 1";	}	if (getarg(0)) {		for (set .acpx,0; .acpx < 42; set .acpx,.acpx + 1) {			set $PollData$[.acpx + 50],$PollData$[.acpx];		}		set $LastPollID,$PollID;	}	callfunc "ClearPollData",1;	return;} function	script	ShowOldPoll	{	deletearray .@polltext$[0],128;	deletearray .@pollvotes[0],128;	mes "[^0000FFPoll Details^000000]";	mes "Title: ^0000FF" + getarg(1) + "^000000";	mes "> Total Votes: ^FF0000" + getarg(4) + "^000000";	mes "> ^930781" + getarg(2) + " to " + getarg(3) + "^000000";	mes "(^FF0000sorted by votes^000000)";	mes "^C0C0C0×××××××××××××××××××××××××××××××^000000";	set .@totopts, query_sql("select `poll_text`, `poll_votes` from `poll_options` where `poll_id` = " + getarg(0) + " order by `poll_votes` desc",.@polltext$,.@pollvotes);	for (set .@x,0; .@x < .@totopts; set .@x, .@x + 1) {		mes (.@x + 1) + ". ^0000FF" + .@polltext$[.@x] + "^000000";		 if (.@pollvotes[.@x]) set @pct,21 * (.@pollvotes[.@x] * 100 / getarg(4)) / 100; else set @pct,0;		set @SOPLine$,"^F0AF00";		for (set @SOP,0; @SOP < 21; set @SOP, @SOP + 1) {			if (@SOP < @pct) {				set @SOPLine$,@SOPLine$ + "¤";			} else {				if (@SOP - 1 < @pct) set @SOPLine$,@SOPLine$ + "^DCDCDC";				set @SOPLine$,@SOPLine$ + "¤";			}		}		mes @SOPLine$ + "^000000 ^DC883E[" + .@pollvotes[.@x] + " votes]^000000";	}	next;	return;} // Duplicatesegg1.gat, 208, 185, 5	duplicate(PollInternal)	Poll Board#1-1	2_BULLETIN_BOARD  /*prontera,171,180,4	duplicate(Poll)	Poll#1	831,7,7morocc,172,88,0	duplicate(Poll)	Poll#2	831,7,7geffen,103,55,5	duplicate(Poll)	Poll#3	831,7,7payon,150,208,6	duplicate(Poll)	Poll#4	831,7,7alberta,149,135,4	duplicate(Poll)	Poll#5	831,7,7izlude,142,151,3	duplicate(Poll)	Poll#6	831,7,7aldebaran,137,102,6	duplicate(Poll)	Poll#7	831,7,7xmas,150,207,2	duplicate(Poll)	Poll#8	831,7,7comodo,182,153,4	duplicate(Poll)	Poll#9	831,7,7yuno,150,124,6	duplicate(Poll)	Poll#10	831,7,7amatsu,191,102,6	duplicate(Poll)	Poll#11	831,7,7gonryun,163,142,4	duplicate(Poll)	Poll#12	831,7,7umbala,75,173,6	duplicate(Poll)	Poll#13	831,7,7niflheim,202,160,4	duplicate(Poll)	Poll#14	831,7,7louyang,224,70,4	duplicate(Poll)	Poll#15	831,7,7ayothaya,159,92,4	duplicate(Poll)	Poll#16	831,7,7einbroch,104,202,4	duplicate(Poll)	Poll#17	831,7,7lighthalzen,258,206,4	duplicate(Poll)	Poll#18	831,7,7einbech,113,179,4	duplicate(Poll)	Poll#19	831,7,7hugel,75,163,5	duplicate(Poll)	Poll#20	831,7,7rachel,142,147,6	duplicate(Poll)	Poll#21	831,7,7veins,201,132,4	duplicate(Poll)	Poll#22	831,7,7*/ 
 
I remember I also did another poll system for rathena users

https://rathena.org/board/topic/75157-poll-npc-enabledisable/

I remember at the time when I test myzter one ... I don't recall having bugs

well that was ... 3 years ago, let me see ...

my script goes 1st,

poll_0.3.txt

- Fix npc id into constant, hercules script engine spam this error

- Fix baselevel into Baselevel, hercules script engine is case-sensitive

- Fix getbattleflag("max_lv") into MAX_LEVEL

- add bindatcmd to OnWhisperGlobal label, now just have to type @poll

- Fix the weird symbol in my hexed client ... yeah my hexed client sux

- change all .@i++ into ++.@i

next is myzter's ...

http://upaste.me/01fc22264347d5bff

- Fix npc id into constant

- Fix "select version()" without a dummy field

- add bindatcmd to OnWhisperGlobal label, now just have to type @poll

- Fix the weird symbol in my hexed client ... yeah my hexed client sux

next is [GM]Xeon ...

CREATE TABLE `support_response` (`ticket_id` int(11) NOT NULL,`reply_number` int(11) NOT NULL default '1',`char_name` varchar(24) NOT NULL default '',`char_id` int(11) unsigned NOT NULL default '0',`message` varchar(80) NOT NULL default '',`status_change` decimal(10,0) NOT NULL default '-1',`date` datetime NULL) ENGINE=InnoDB;CREATE TABLE `support_ticket` (`ticket_id` int(11) NOT NULL auto_increment,`status` tinyint(1) NOT NULL default '0',`char_name` varchar(24) NOT NULL default '',`char_id` int(11) unsigned NOT NULL default '0',`title` varchar(45) NOT NULL default '',`message` varchar(80) NOT NULL default '',`date` datetime NULL,PRIMARY KEY (`ticket_id`)) ENGINE=InnoDB;
http://upaste.me/a2d22226654d3679cthe only thing I change is the npc ID into constant

this script still works well

 
Last edited by a moderator:
I remember I also did another poll system for rathena users

https://rathena.org/board/topic/75157-poll-npc-enabledisable/

I remember at the time when I test myzter one ... I don't recall having bugs

well that was ... 3 years ago, let me see ...

my script goes 1st,

poll_0.3.txt

- Fix npc id into constant, hercules script engine spam this error

- Fix baselevel into Baselevel, hercules script engine is case-sensitive

- Fix getbattleflag("max_lv") into MAX_LEVEL

- add bindatcmd to OnWhisperGlobal label, now just have to type @poll

- Fix the weird symbol in my hexed client ... yeah my hexed client sux

- change all .@i++ into ++.@i

next is myzter's ...

http://upaste.me/01fc22264347d5bff

- Fix npc id into constant

- Fix "select version()" without a dummy field

- add bindatcmd to OnWhisperGlobal label, now just have to type @poll

- Fix the weird symbol in my hexed client ... yeah my hexed client sux

next is [GM]Xeon ...

CREATE TABLE `support_response` (`ticket_id` int(11) NOT NULL,`reply_number` int(11) NOT NULL default '1',`char_name` varchar(24) NOT NULL default '',`char_id` int(11) unsigned NOT NULL default '0',`message` varchar(80) NOT NULL default '',`status_change` decimal(10,0) NOT NULL default '-1',`date` datetime NULL) ENGINE=InnoDB;CREATE TABLE `support_ticket` (`ticket_id` int(11) NOT NULL auto_increment,`status` tinyint(1) NOT NULL default '0',`char_name` varchar(24) NOT NULL default '',`char_id` int(11) unsigned NOT NULL default '0',`title` varchar(45) NOT NULL default '',`message` varchar(80) NOT NULL default '',`date` datetime NULL,PRIMARY KEY (`ticket_id`)) ENGINE=InnoDB;
http://upaste.me/a2d22226654d3679cthe only thing I change is the npc ID into constant

this script still works well

About the Poll of your's annie? possible to have 1 Per IP?  or what is a good feature that comes with IP System.

 
poll_0.4

- added block ip address

- change date_format in query_sql

this thing is far from complete,

the reason I posted GMXeon's support ticket because I want to integrate with his reply system

- reply option to the poll, on/off ( maybe another table ... `poll_reply` )

- auto-close poll on certain time ( maybe 1 more field on `poll_title` table )

- list all players voted on the poll options when view result ( that's the reason `poll_votes` exist )

- able to view archived polls ( I already did the ID system without deleting existing polls )

btw you should at least try Myzter's one ... I feel like some of his feature are interesting and not yet in my script

 
Last edited by a moderator:
Back
Top