pastebin - collaborative debugging tool
rathena.kpaste.net RSS

Difference between
modified post 60f0ec by Anonymous on Wed 20th Feb 2013 08:02
original post d4f8e by Anonymous on Sun 17th Feb 2013 22:45
Download diff
Show old version | new version | both versions

    
11
// http://rathena.org/board/topic/78486-breaker-rankings-npc/
22
// NPC that:
33
// - displays top 10 emperium breaker (Rank, Char Name, Guild Name, Breaker Points)
44
// - when a player was the last to break the emp after the WoE he will get 1 point
55
// - selection which enables the player to trade their points into TCG (item id: 7227)
66
// but their break points are still displayed
77
88
prontera,155,188,0	script	Emp Break Ladder	910,{
99
	switch(select("View Emp Break Ladder:Redeem points for TCG:More Info:" + ((getgmlevel()>=99) ? "Reset Ladder":""))) {
1010
	case 1:
1111
		query_sql "SELECT `char`.`name`, `char`.`class`, guild.`name`, CAST(`value` AS UNSIGNED) " +
1212
		          "FROM global_reg_value " +
1313
		          "LEFT JOIN `char` ON global_reg_value.char_id=`char`.char_id " +
1414
		          "LEFT JOIN `guild` ON `char`.guild_id=guild.guild_id " +
1515
		          "WHERE global_reg_value.`str`='breaker_points' " +
1616
		          "ORDER BY CAST(`value` AS UNSIGNED) DESC LIMIT 10",
1717
		          .@name$, .@job, .@guild$, .@points;
1818
		mes "[Top 10 Emp Breakers]";
1919
		for (set .@i,0; .@i<getarraysize(.@name$); set .@i,.@i+1) {
2020
			mes (.@i+1) +". ^0000FF"+ .@name$[.@i] +"^000000, "+jobname(.@job[.i@])+", "+ .@guild$[.@i] +" ("+ .@points[.@i] +((.@points[.@i]==1)?" pt":" pts")+")";
2121
		}
2222
		break;
2323
	case 2:
2424
		mes "[Emp Break Ladder]";
2525
		mes "Total Emp Breaks: " + breaker_points;
2626
		mes "Available Points: " + (breaker_points - breaker_tcg);
2727
2828
		if (breaker_points == 0) {
2929
			mes "You have not broke the emp yet!";
3030
		} else if (breaker_points <= breaker_tcg) {
3131
			mes "You've already exchanged all your points for TCG.";
3232
			mes "Come back after you break the emp again!";
3333
		} else {
3434
			set .@reward, breaker_points - breaker_tcg;
3535
			if (select("Redeem points for "+.@reward+" TCG:Cancel") == 2) {
3636
				mes "Come back if you change your mind.";
3737
			} else if (checkweight(7227, .@reward) == 0) {
3838
				mes "You are overweight or carrying too many items.";
3939
			} else {
4040
				getitem 7227, .@reward;
4141
				set breaker_tcg, breaker_tcg + .@reward
4242
				mes "Here are your "+.@reward+" TCG!";
4343
			}
4444
		}
4545
		break;
4646
	case 3:
4747
		mes "[Emp Break Ladder]";
4848
		mes "Each time you break the emp, you earn 1 point.";
4949
		mes "Then, talk to me to redeem your point(s) for TCG.";
5050
		break;
5151
	case 4:
5252
		if (getgmlevel() < 99) end;
53+
		set .@AID, playerattached();
5354
		// reset for offline chars
5455
		query_sql "DELETE FROM global_reg_value WHERE `str`='breaker_points'";
5556
		query_sql "DELETE FROM global_reg_value WHERE `str`='breaker_tcg'";
5657
5758
		// for each online char, reset breaker_points to 0
5859
		while (getusers(1) > .@count) {
5960
			set .@count, .@count + query_sql("SELECT account_id FROM `char` WHERE online=1 LIMIT 128 OFFSET "+.@count, .@account_id);
6061
			set .@i, 0;
6162
			while (.@i < getarraysize(.@account_id)) {
6263
				if (attachrid(.@account_id[.@i]))
6364
					doevent strnpcinfo(3)+"::OnResetBreakerPoints";
6465
				set .@i, .@i +1;
6566
			}
6667
			deletearray .@account_id, 128;
6768
			sleep 1; // prevent infinity loop
6869
		}
70+
		attachrid .@AID;
6971
		mes "Emp Break Ladder has been reset.";
7072
		break;
7173
	}
7274
	close;
7375
7476
OnResetBreakerPoints:
7577
	set breaker_points, 0;
7678
	set breaker_tcg, 0;
7779
	end;
7880
}
7981

Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.

Syntax highlighting:

To highlight particular lines, prefix each line with {%HIGHLIGHT}




All content is user-submitted.
The administrators of this site (kpaste.net) are not responsible for their content.
Abuse reports should be emailed to us at