Jump to content
  • 0
Sign in to follow this  
Helena

Help please, Chat bubble/room doesn't update.

Question

Good day, community.
 
I was wondering if someone could assist me with this script. It's from Annie Ruru, I actually combined two of her pvp ladders into one and the particular part with the chat bubble that I added from the other script is what gives me problems:
 
The problem being, the bubble that displays #1 player doesn't update until I apply a @loadnpc or server restart.... I really would like it to update without having to do that.
 
Thank you, help is very appreciated! 

OnInit:	delwaitingroom strnpcinfo(1);	set .@nb, query_sql("select name, kills from pvpladder order by kills desc limit 1", .@name$, .@kills );	waitingroom "#1 Player: "+ .@name$ +" ("+ .@kills +" kills)",0;	end;

 
Here's the whole script:

//===== eAthena Script =======================================================//= PVP ladder script with dota announcement ( SQL only )//===== By: ==================================================================//= ~AnnieRuru~//===== Current Version: =====================================================//= 2.9//===== Compatible With: =====================================================//= eAthena SQL 14279, with MySQL 5.1//===== Description: =========================================================//= PVP ladder store in SQL table//= plus anti-sit-killer feature//===== Topic ================================================================//= http://www.eathena.ws/board/index.php?showtopic=177918//===== Additional Comments: =================================================//= still don't have modify value option, will be done ... in next year ...//============================================================================ //	add all the maps that you want this script to trigger ... all pvp and event maps perhaps ?//	but if you already enable "all" maps, then can comment all theseguild_vs1	mapflag	loadeventguild_vs3	mapflag	loadeventprtg_cas01	mapflag	loadevent -	script	DOTAPVP	-1,{OnInit:// Config	set .sound, 0; // soundeffect : 0 - disable, 1 - play soundeffect to all players on map, 2 - play soundeffect to an area around the killer, 3 - play soundeffect to killer only	set .announce, 1; // announce to : 0 - global, 1 - map	set .announcemap, 0; // announce the map name in the announcement ? : 0 - off, 1 - on	 set .announcekill, 1; // announce who pawn who's head : 0 - off, 1 - on	set .msg_die, 0; // show message who kill you when die : 0 - off, 1 - on	set .msg_kill, 0; // show message you kill who when killed someone : 0 - off, 1 - on	 set .gmnokill, 0; // GMs are not suppose to kill players. A GM with <this number> level or higher will do nothing. IF set to 60, GM60 and above kill any player will not get anything : 0 - off	 set .killingspree, 3;	set .dominating, 4;	set .megakill, 5;	set .unstoppable, 6;	set .wickedsick, 7;	set .monsterkill, 8;	set .godlike, 9;	set .holyshit, 10;	set .continue, 1; // after beyond-godlike, every <this number> kills will make announcement again	 set .owned, 5; // how many times the party/guild has to kill to announce ownage	set .owncontinue, 1; // after ownage, every <this number> party/guild cumulative kills will make ownage announce again	 set .min_gm_menu, 90; // minimum level of GM can use the GM menu on ladder npc	 set .showtotal, 10; // show the length of ladder. Note : Maximum value = 128	set .showpage, 10;	// set the views per page. Note : Maximum value = 128	set .loweststreak, 3; // mininum streak count allow to show in highest streak ladder. Default 3 means must at least have killing spree streak to display in ladder	set .lowestownage, 5; // mininum ownage count allow to show in longest ownage ladder. Default 5 means must at least have 5 ownage counts to display in ladder	 setarray .maptrigger$, // only these maps will trigger this script		//"all", // uncomment this to allow load all maps		"guild_vs1",		"guild_vs3",		"fwarena",		"prtg_cas01"; //	anti-sit-killer system	// a player must kill another player with this minimum <this number> base level to get the announcement and in the ladder.	// Otherwise only have streak ended announcement and killed player's streak reset.	// Its possible for a level 1 novice to kill a level 99 player and he/she will still get in the ladder	// but a level 99 kill a level 1 player will get nothing	// 0 - off this system ( default is 55, pk setting )	set .lvltokill, 0;	 // when a player kill another same player <this number> times in a row, the player is warp back to save point.	// and the player's streak, kills, and ownage count will deduct accordingly	// 0 - off this system	set .counttopunish, 0;	 // minimum level range to kill another player	// eg. when set to 20, player level 99 needs to kill another player with minimum level of 79 to get announcement and increase the kill rank.	// but a player with base level 50 kills a level 99 will also get the announcement	// higher base level cannot kill lower level, but lower level can kill higher level	// 0 - off this system	set .minlvlrange, 0;  // Config ends ------------------------------------------------------------------------------------------ //	to prevent bug happen	if ( .announce < 0 || .announce > 1 ) set .announce, 0;	if ( .continue < 1 ) set .continue, 1;	if ( .owncontinue < 1 ) set .owncontinue, 1;	if ( .gmnokill <= 0 ) set .gmnokill, 100;	if ( .lvltokill <= 1 ) set .lvltokill, 0;	if ( .counttopunish <= 1 ) set .counttopunish, 0;	set .maptriggersize, getarraysize(.maptrigger$);	end; //	script start.OnPCKillEvent:	if ( getgmlevel() >= .gmnokill ) end;	getmapxy .@map$, .@x, .@y, 0;	if ( .maptrigger$ != "all" ) {		for ( set .@i, 0; .@i < .maptriggersize; set .@i, .@i +1 ) {			if ( .@map$ == .maptrigger$[.@i] ) break;		}		if ( .@i == .maptriggersize ) end;	}	attachrid killedrid;	if ( killerrid != getcharid(3) && ( .msg_die || .msg_kill ) ) {		if ( .msg_die ) message strcharinfo(0),"You have been killed by "+ rid2name(killerrid);		if ( .msg_kill ) message rid2name(killerrid),"You just killed "+ strcharinfo(0);	}	if ( @PlayersKilledStreak >= .holyshit )		set .@streakname$,"Beyond Godlike";	else if ( @PlayersKilledStreak >= .godlike )		set .@streakname$,"Godlike";	else if ( @PlayersKilledStreak >= .monsterkill )		set .@streakname$,"Monster Kill";	else if ( @PlayersKilledStreak >= .wickedsick )		set .@streakname$,"Wicked Sick";	else if ( @PlayersKilledStreak >= .unstoppable )		set .@streakname$,"Unstoppable";	else if ( @PlayersKilledStreak >= .megakill )		set .@streakname$,"Mega-kill";	else if ( @PlayersKilledStreak >= .dominating )		set .@streakname$,"Dominating";	else if ( @PlayersKilledStreak >= .killingspree )		set .@streakname$,"Killing Spree";	if ( @PlayersKilledStreak >= .killingspree && killerrid == getcharid(3) )		announce strcharinfo(0) +" has ended "+( (sex)?"him":"her" )+" own "+ .@streakname$ +"["+ @PlayersKilledStreak +"] streak "+( (.announcemap)?("at "+ .@map$):""),16|.announce;	else if ( @PlayersKilledStreak >= .killingspree )		announce rid2name(killerrid) +" has ended "+ strcharinfo(0) +"'s "+ .@streakname$ +"["+ @PlayersKilledStreak +"] streak "+( (.announcemap)?("at "+ .@map$):""),16|.announce;	else if ( .announcekill && killerrid != getcharid(3) )		announce rid2name(killerrid) +" has brutally slaughtered "+ strcharinfo(0) +"! "+( (.announcemap)?("at "+ .@map$):""),16|.announce;	set @PlayersKilledStreak,0;	set @dota_sql_deaths, @dota_sql_deaths +1;	set @dota_multikills,0;	query_sql "replace into pvpladder values ( "+ getcharid(0) +", '"+ escape_sql(strcharinfo(0)) +"', "+ @dota_sql_streaks +", "+ @dota_sql_kills +", "+ @dota_sql_deaths +", from_unixtime("+ @dota_sql_streaktime +") )";	set .@killed_gid, getcharid(2);	if ( .@killed_gid ) {		setd ".dota_sql_"+ .@killed_gid +"_c", 0;		if ( getd(".dota_sql_"+ .@killed_gid +"_h") )			query_sql "replace into ownladder values ( "+ .@killed_gid +", '"+ escape_sql(getguildname(.@killed_gid)) +"', "+ getd(".dota_sql_"+ .@killed_gid +"_c") +", "+ getd(".dota_sql_"+ .@killed_gid +"_h") +", from_unixtime("+ getd(".dota_sql_"+ .@killed_gid +"_t") +") )";	}	if ( killerrid == getcharid(3) || baselevel < .lvltokill ) end;	if ( .minlvlrange ) set .@killedlvl, baselevel;	attachrid killerrid;	if ( .minlvlrange && .@killedlvl + .minlvlrange < baselevel ) end;	if ( .counttopunish ) {		if ( @sitkillminute != gettime(2) ) {			deletearray @sitkillid, 128;			deletearray @sitkilltimes, 128;			set @sitkillminute, gettime(2);		}		set .@sitkillsize, getarraysize(@sitkillid);		for ( set .@i,0; .@i < .@sitkillsize; set .@i, .@i +1 ) {			if ( @sitkillid[.@i] != killedrid ) continue;			else {				set @sitkilltimes[.@i], @sitkilltimes[.@i] +1 ;				if ( @sitkilltimes[.@i] >= .counttopunish ) {					warp "SavePoint",0,0;					announce strcharinfo(0) +" , Stop killing "+ rid2name(killedrid) + " !!!",0;					debugmes strcharinfo(0) +" is sit-killing "+ rid2name(killedrid) +" for "+ @sitkilltimes[.@i] + " times";					logmes "is sit-killing "+ rid2name(killedrid) +" for "+ @sitkilltimes[.@i] +" times";					if ( @PlayersKilledStreak == @dota_sql_streaks ) {						set @dota_sql_streaks, @dota_sql_streaks +1 - .counttopunish;						set @dota_sql_streaktime, gettimetick(2);					}					set @PlayersKilledStreak, @PlayersKilledStreak +1 - .counttopunish;					set @dota_sql_kills, @dota_sql_kills +1 - .counttopunish;					query_sql "replace into pvpladder values ( "+ getcharid(0) +", '"+ escape_sql(strcharinfo(0)) +"', "+ @dota_sql_streaks +", "+ @dota_sql_kills +", "+ @dota_sql_deaths +", from_unixtime("+ @dota_sql_streaktime +") )";					set .@killer_gid, getcharid(2);					if ( .@killer_gid ) {						if ( getd(".dota_sql_"+ .@killer_gid +"_c") == getd(".dota_sql_"+ .@killer_gid +"_h") ) {							setd ".dota_sql_"+ .@killer_gid +"_h", getd(".dota_sql_"+ .@killer_gid +"_h") +1 - .counttopunish;							setd ".dota_sql_"+ .@killer_gid +"_t", gettimetick(2);						}						setd (".dota_sql_"+ .@killer_gid +"_c"), getd(".dota_sql_"+ .@killer_gid +"_c") +1 - .counttopunish;						query_sql "replace into ownladder values ( "+ .@killer_gid +", '"+ escape_sql(getguildname(.@killer_gid)) +"', "+ getd(".dota_sql_"+ .@killer_gid +"_c") +", "+ getd(".dota_sql_"+ .@killer_gid +"_h") +", from_unixtime("+ getd(".dota_sql_"+ .@killer_gid +"_t") +") )";					}					end;				}				break;			}		}		if ( .@i == .@sitkillsize ) {			set @sitkillid[.@i], killedrid;			set @sitkilltimes[.@i], 1;		}	}	set @PlayersKilledStreak, @PlayersKilledStreak +1 ;	set @dota_sql_kills, @dota_sql_kills +1 ;	if ( @PlayersKilledStreak > @dota_sql_streaks ) {		set @dota_sql_streaks, @PlayersKilledStreak;		set @dota_sql_streaktime, gettimetick(2);	}	query_sql "replace into pvpladder values ( "+ getcharid(0) +", '"+ escape_sql(strcharinfo(0)) +"', "+ @dota_sql_streaks +", "+ @dota_sql_kills +", "+ @dota_sql_deaths +", from_unixtime("+ @dota_sql_streaktime +") )";	if ( @PlayersKilledStreak == .killingspree )		setarray .@streakname$,"killingspree.wav","is on a killing spree","!";	else if ( @PlayersKilledStreak == .dominating )		setarray .@streakname$,"dominating.wav","is dominating","!";	else if ( @PlayersKilledStreak == .megakill )		setarray .@streakname$,"megakill.wav","is owning","!";	else if ( @PlayersKilledStreak == .unstoppable )		setarray .@streakname$,"unstoppable.wav","is unstoppable","!!";	else if ( @PlayersKilledStreak == .wickedsick )		setarray .@streakname$,"wickedsick.wav","is owning everyone","!!";	else if ( @PlayersKilledStreak == .monsterkill )		setarray .@streakname$,"monsterkill.wav","made an amazing kill","!!";	else if ( @PlayersKilledStreak == .godlike )		setarray .@streakname$,"godlike.wav","is being god-like","!!!";	else if ( @PlayersKilledStreak >= .holyshit && ( (@PlayersKilledStreak - .holyshit) % .continue == 0 ) )		setarray .@streakname$,"holyshit.wav","is beyond god-like",". Someone stop "+( (sex)?"him":"her" ) +"!";	if ( .@streakname$[1] != "" ) {		announce strcharinfo(0) +" "+ .@streakname$[1] +"["+ @PlayersKilledStreak +"] "+( (.announcemap)?("at "+ .@map$):"") + .@streakname$[2],16|.announce;		if ( .sound == 1 ) soundeffectall .@streakname$[0],0,.@map$;		else if ( .sound == 2 ) soundeffectall .@streakname$[0],0;		else if ( .sound == 3 ) soundeffect .@streakname$[0],0;	}	set @dota_multikills, @dota_multikills + 1;	deltimer "DOTAPVP::OnStreakReset";	addtimer 18000,"DOTAPVP::OnStreakReset";	set .@killer_gid, getcharid(2);	if ( .@killer_gid && .@killer_gid != .@killed_gid ) {		setd ".dota_sql_"+ .@killer_gid +"_c", getd(".dota_sql_"+ .@killer_gid +"_c") +1 ;		if ( getd(".dota_sql_"+ .@killer_gid +"_c") > getd(".dota_sql_"+ .@killer_gid +"_h") ) {			setd ".dota_sql_"+ .@killer_gid +"_h", getd(".dota_sql_"+ .@killer_gid +"_c");			setd ".dota_sql_"+ .@killer_gid +"_t", gettimetick(2);		}		query_sql "replace into ownladder values ( "+ .@killer_gid +", '"+ escape_sql(getguildname(.@killer_gid)) +"', "+ getd(".dota_sql_"+ .@killer_gid +"_c") +", "+ getd(".dota_sql_"+ .@killer_gid +"_h") +", from_unixtime("+ getd(".dota_sql_"+ .@killer_gid +"_t") +") )";	}	set .@dota_multikills, @dota_multikills;	set .@origin, getcharid(3);	sleep 1500;	if ( .@killer_gid && .@killer_gid != .@killed_gid && getd(".dota_sql_"+ .@killer_gid +"_c") >= .owned && ( ( getd(".dota_sql_"+ .@killer_gid +"_c") - .owned ) % .owncontinue == 0 ) ) {		if ( .announce ) mapannounce .@map$, "The guild ["+ getguildname(.@killer_gid) +"] is OWNING["+ getd(".dota_sql_"+ .@killer_gid +"_c") +"] !!!",16;		else announce "The guild ["+ getguildname(.@killer_gid) +"] is OWNING["+ getd(".dota_sql_"+ .@killer_gid +"_c") +"] !!!",16;		if ( .sound == 1 ) soundeffectall "ownage.wav",0,.@map$;		else if ( .sound == 2 ) soundeffectall "ownage.wav",0;		else if ( .sound == 3 && attachrid(.@origin) ) soundeffect "ownage.wav",0;	}	sleep 1250;	if ( !attachrid(.@origin) ) end;	if ( .@dota_multikills == 2 ) {		if ( .announce ) mapannounce .@map$, strcharinfo(0) +" just got a Double Kill !",16;		else announce strcharinfo(0) +" just got a Double Kill !",16;		if ( .sound == 1 ) soundeffectall "doublekill.wav",0,.@map$;		else if ( .sound == 2 ) soundeffectall "doublekill.wav",0;		else if ( .sound == 3 ) soundeffect "doublekill.wav",0;	}	else if ( .@dota_multikills == 3 ) {		if ( .announce ) mapannounce .@map$, strcharinfo(0) +" just got a Triple Kill !!!",16;		else announce strcharinfo(0) +" just got a Triple Kill !!!",16;		if ( .sound == 1 ) soundeffectall "triplekill.wav",0,.@map$;		else if ( .sound == 2 ) soundeffectall "triplekill.wav",0;		else if ( .sound == 3 ) soundeffect "triplekill.wav",0;	}	else if ( .@dota_multikills == 4 ) {		if ( .announce ) mapannounce .@map$, strcharinfo(0) +" just got a Ultra Kill !!!",16;		else announce strcharinfo(0) +" just got a Ultra Kill !!!",16;		if ( .sound == 1 ) soundeffectall "ultrakill.wav",0,.@map$;		else if ( .sound == 2 ) soundeffectall "ultrakill.wav",0;		else if ( .sound == 3 ) soundeffect "ultrakill.wav",0;	}	else if ( .@dota_multikills >= 5 ) {		if ( .announce ) mapannounce .@map$, strcharinfo(0) +" is on a Rampage !!!",16;		else announce strcharinfo(0) +" is on a Rampage !!!",16;		if ( .sound == 1 ) soundeffectall "rampage.wav",0,.@map$;		else if ( .sound == 2 ) soundeffectall "rampage.wav",0;		else if ( .sound == 3 ) soundeffect "rampage.wav",0;	}	donpcevent "PvP Ranker::OnInit";	end;OnStreakReset:	set @dota_multikills, 0;	donpcevent "PvP Ranker::OnInit";	end;OnWhisperGlobal:	if ( @spam_dotapvp + 3 >= gettimetick(2) ) // 3 seconds interval so player don spam this command		end;	set @spam_dotapvp, gettimetick(2);	if ( @dota_sql_kills == 0 && @dota_sql_deaths == 0 )		query_sql "select kills, deaths, streaks, unix_timestamp(streaktime) from pvpladder where char_id = "+ getcharid(0), @dota_sql_kills, @dota_sql_deaths, @dota_sql_streaks, @dota_sql_streaktime;	if ( @dota_sql_kills || @dota_sql_deaths ) {		dispbottom "Your current Streak      : "+ @PlayersKilledStreak;		dispbottom "Your total Kills               : "+ @dota_sql_kills;		dispbottom "Your total Deaths          : "+ @dota_sql_deaths;		dispbottom "Your highest Streak      : "+ @dota_sql_streaks;		query_sql "select date_format( from_unixtime("+ @dota_sql_streaktime +"),'%a %e/%c/%y %r')", .@time1$;		dispbottom "Your highest Streak on : "+ .@time1$;	}	else		dispbottom "You are not in the pvp ladder yet.";	if ( getcharid(2) ) {		if ( getd(".dota_sql_"+ getcharid(2) +"_h") == 0 ) {			query_sql "select currentown, highestown, unix_timestamp(owntime) from ownladder where guild_id = "+ getcharid(2), .@c, .@h, .@t;			setd ".dota_sql_"+ getcharid(2) +"_c", .@c;			setd ".dota_sql_"+ getcharid(2) +"_h", .@h;			setd ".dota_sql_"+ getcharid(2) +"_t", .@t;		}		if ( getd(".dota_sql_"+ getcharid(2) +"_h") ) {			dispbottom "Your guild current Own      : "+ getd(".dota_sql_"+ getcharid(2) +"_c");			dispbottom "Your guild highest Own      : "+ getd(".dota_sql_"+ getcharid(2) +"_h");			query_sql "select date_format( from_unixtime("+ getvariableofnpc( getd(".dota_sql_"+ getcharid(2) +"_t"), "DOTAPVP" ) +"),'%a %e/%c/%y %r')", .@time2$;			dispbottom "Your guild highest Own on : "+ .@time2$;		}		else			dispbottom "Your guild is not in the ladder yet.";	}	end;OnPCLoginEvent:	if ( .maptrigger$ != "all" ) end;OnPCLoadMapEvent:	if ( @dota_sql_kills == 0 && @dota_sql_deaths == 0 ) {		if ( .maptrigger$ != "all" ) {			getmapxy .@map$, .@x, .@y, 0;			for ( set .@i, 0; .@i < .maptriggersize; set .@i, .@i +1 ) {				if ( .@map$ == .maptrigger$[.@i] ) break;			}			if ( .@i == .maptriggersize ) end;		}		query_sql "select kills, deaths, streaks, unix_timestamp(streaktime) from pvpladder where char_id = "+ getcharid(0), @dota_sql_kills, @dota_sql_deaths, @dota_sql_streaks, @dota_sql_streaktime;	}	if ( getcharid(2) && getd(".dota_sql_"+ getcharid(2) +"_h") == 0 ) {		query_sql "select currentown, highestown, unix_timestamp(owntime) from ownladder where guild_id = "+ getcharid(2), .@c, .@h, .@t;		setd ".dota_sql_"+ getcharid(2) +"_c", .@c;		setd ".dota_sql_"+ getcharid(2) +"_h", .@h;		setd ".dota_sql_"+ getcharid(2) +"_t", .@t;	}	donpcevent "PvP Ranker::OnInit";	end;} prontera,146,174,5	script	PvP Ladder	733,{	set .@npcname$, strnpcinfo(0);	while (1) {		mes "["+ .@npcname$ +"]";		mes "Hello "+ strcharinfo(0) +"!";		mes "What can I do for you?";		next;		switch ( select ( "Display the PvP Ladder" ) ) {			case 1:				set .@nb, query_sql("select name, kills, deaths from pvpladder order by kills desc limit "+ getvariableofnpc(.showtotal,"DOTAPVP"), .@name$, .@kills, .@deaths);				if ( .@nb == 0 ) {					mes "["+ .@npcname$ +"]";					mes "The ladder currently is empty.";					next;				}				for ( set .@j,0; .@j < .@nb; set .@j, .@j + getvariableofnpc(.showpage,"DOTAPVP") ) {						mes "[^006699Name^000000] [^00AA00Kills^000000] [^FF0000Deaths^000000]";					for ( set .@i, .@j; .@i < (getvariableofnpc(.showpage,"DOTAPVP") + .@j) && .@i < .@nb; set .@i, .@i + 1 ) {						mes "^996600"+ (.@i+1) +":^000000 [^006699"+ .@name$[.@i] +"^000000] [^00AA00"+ .@kills[.@i] +"^000000] [^FF0000"+ .@deaths[.@i] +"^000000]";						}						close;}end; //if not work < delete those 2. and add 2 {'s down. OnInit:	delwaitingroom strnpcinfo(1);	set .@nb, query_sql("select name, kills from pvpladder order by kills desc limit 1", .@name$, .@kills );	waitingroom "#1 Player: "+ .@name$ +" ("+ .@kills +" kills)",0;	end;}		}	} guild_vs3	mapflag	noteleportguild_vs3	mapflag	nowarpguild_vs1	mapflag	nowarpguild_vs1	mapflag	noteleport
Edited by Via
Placed script inside code box.

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

The reason for the missing update is the wrong NPC name

donpcevent "PvP Ranker::OnInit";

This assumes an NPC named "PvP Ranker" has an Event named "OnInit" (which is executed once after server start and on every @reloadscript and @loadnpc).
Your NPC is named "PvP Ladder".

So either rename your NPC to "PvP Ladder" or adjust all "PvP Ranker::OnInit" call to "PvP Ladder::OnInit".

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.