• 0
Sign in to follow this  
Followers 0
danilopietro

Ajuda com Evento Poring Bomb

Question

Fala galera, gostaria de saber se alguém consegue me ajudar. Estou utilizando o evento Poring Bomb do próprio emulador (Lastman). Traduzi ele, mas por algum motivo, quando tento abrir o WhispGlobal, nada acontece. Segue o script:

//Bomb Poring Event. by Jeroen
//================================
//Version: 2.1
//================================
//= Version: 1.6 Added Array for player + Rewards.
//= Version: 1.7 Optimised the script so its less resource intensive.(Received tips from Eurphy on rAthena, Thanks!)
//= Version: 1.8 Removed the use of 06guild_05, also started adding some new code for the next update.
//= Version: 1.9 Cleaned up the code a little bit.
//= Version: 2.0 Added a few more stuff to the config at the bottom, also did a bit more code cleaning.
//= Also added a GM Menu and other stuff(will have to expand the GM menu at some point).
//= Version: 2.1 Added a configurable map and added it to the GM menu.
//================================
//Notes:
//=If used on the eAthena Emulator, its required to change the Bomb porings AI to explode right away. 0x308D is the one I personally recommend.
//=GM's can activate it by sending a PM to NPC:bombgame with the word Start. To enter the GM menu, send the pm 'Menu' 
//Future Plans:
//=Combining the two arrays, into one to clean up a little bit of space
//================================
-	script	bombgame	-1,{
OnStart:
	enablenpc "Poring Bomb";
	setmapflag .bomb_map$,12;
	setmapflag .bomb_map$,34;
	setmapflag .bomb_map$,mf_noskill;
	set .bombevent, 1;
	announce "[Poring Bomb]Está na hora do evento Poring Bomb!",0;
	sleep 3000;
	announce "[Poring Bomb] Um portal foi aberto na Sala de Eventos!",0;
	sleep 3000;
	announce "[Poring Bomb] O portal ficará aberto por 2 minutos.",0;
	sleep 120000;
	if(getmapusers(.bomb_map$) < .min_player) {
		announce "[Poring Bomb]Parece que não tem players o suficiente para o evento. Que chato!",0;
		disablenpc "Poring Bomb";
		set .bombevent, 0;
		mapwarp .bomb_map$,"prontera",150,149;
		set .bombstarted, 0;
		end;
	}
	announce "[Poring Bomb] O portal para o Poring Bomb foi fechado!",0;
	disablenpc "Poring Bomb";
	mapannounce .bomb_map$,"[Poring Bomb] O evento começará em 1 minuto!",bc_map,"0x00ffff";
	sleep 60000;
	for(set .@i, 0; .@i < getarraysize(.bomb_iamount); set .@i,.@i+1) {
		if(.bomb_players[.@i+1] != 0) {
			if(getmapusers(.bomb_map$) >= .bomb_players[.@i] && getmapusers(.bomb_map$) < .bomb_players[.@i+1]) {
				set .bomb_iamount2, .bomb_iamount[.@i];
				break;
			}
		} else {
			set .bomb_iamount2, .bomb_iamount[.@i];
			break;
		}
	}
	set .bombevent, 0;
	for(set .@i, 0; .@i < getarraysize(.mapf); set .@i,.@i+1) setmapflag .bomb_map$,.mapf[.@i];
	mapannounce .bomb_map$,"[Poring Bomb] O round começa em 10 segundos!",bc_map,"0x00ffff";
	sleep 10000;
	while(1) {
		sleep .timer_bombs;
		killmonsterall .bomb_map$;
		if(getmapusers(.bomb_map$) == 1) {
			set .bombstarted, 0;
			mapwarp .bomb_map$,.bomb_map$,0,0;
			end;
		} else if (!getmapusers(.bomb_map$)) {
			announce "[Poring Bomb] Parece que todos morreram no último ataque!",0;
			set .bombstarted, 0;
			for(set .@i, 0; .@i < getarraysize(.mapf); set .@i,.@i+1) removemapflag .bomb_map$,.mapf[.@i];
			removemapflag .bomb_map$,12;
			removemapflag .bomb_map$,34;
			removemapflag .bomb_map$,mf_noskill;
			end;
		} else {
			set .@raidnum,.@raidnum+1;
			mapannounce .bomb_map$,"[Poring Bomb] Ataque "+.@raidnum,bc_map,"0x00ffff";
			sleep 1000;
			monster .bomb_map$,0,0,"--ja--",1904,.mobcount;
			set .mobcount,.mobcount+.increase;
		}
	}

OnWhisperGlobal:
	if(@whispervar0$ == "Start" || @whispervar0$ == "start" ) { 
		if(.bombstarted) {
			mes "O evento ainda está acontecendo!";
			close;
		}
		if(getgroupid() < .min_GMlvl) end;
		mes "Gostaria de iniciar o evento?";
		if (select("Sim:Não") == 2) close;
		else {
			mes "Começar com quantas bombas?";
			mes "^00FF00Min:^000000"+.min_bombs+".";
			mes "^00FF00Max:^000000"+.max_bombs+".";
			while(1) {
				input .mobcount;
				if(.mobcount > .max_bombs) mes "Por favor, selecione uma quantidade menor.";
				else if(.mobcount < .min_bombs) mes "Por favor, selecione uma quantidade maior.";
				else break;
			}
			next;
			mes "Quantas bombas a mais por round?";
			mes "^00FF00Max:^000000"+(.max_bombs/5)+".";
			while(1) {
				input .increase;
				if (!.increase) mes "Por favor, selecione uma quantidade maior";
				else if (.increase > (.max_bombs/5)) mes "Por favor, selecione uma quantidade menor."; //increase should never be greater than the max bomb increase, Divided by 5 to set a certain limit.
				else break;
			}
			next;
			mes "Certo, aqui vamos nós!.";
			donpcevent strnpcinfo(0)+"::OnStart";
			set .bombstarted, 1;
			close;
		}
	}
	else if( @whispervar0$ == "Menu" || @whispervar0$ == "menu") {
		if(getgroupid() < .min_GMmenu) end; 
		if(select("^FF0000GM Menu^000000:Cancelar") == 2) close;
		while(1) {
			switch(select(
				"^777777~Mínimo de bombas requeridas^FF0000["+.min_bombs+"]^000000:"+
				"^777777~Máximo de bombas requeridas^FF0000["+.max_bombs+"]^000000:"+
				"^777777~Recompensa^FF0000["+((!.bomb_item)?" Tickets de Evento":getitemname(.bomb_item))+"]^000000:"+
				"^777777~Mínimo de players^FF0000["+.min_player+"]^000000:"+
				"^777777~Mapa^FF0000["+.bomb_map$+"]^000000:"+
				"^777777~Fechar^000000")) {
				case 1:
					mes "Informe a nova quantidade mínima de bombas.";
					mes "Quantidade mínima atual: ^0000FF "+.min_bombs+"^000000.";
					input .min_bombs;
					next;
					break;
				case 2:
					mes "Informe a nova quantidade máxima de bombas.";
					mes "Quantidade máxima atual: ^0000FF "+.max_bombs+"^000000.";
					input .max_bombs;
					if (.max_bombs < 20 || .max_bombs > 1000) { set .max_bombs, 200; mes "Quantidade de bombas inválida. Configurando para 200."; } //it is NOT recomemnded to go over 1000!
					next;
					break;
				case 3:
					mes "Selecione o novo prêmio.";
					mes "Prêmio atual: ^0000FF "+((!.bomb_item)?"Tickets de Evento":getitemname(.bomb_item))+"^000000.";
					input .bomb_item;
					if (.bomb_item == 0){ next; break;} //allowing to set .bomb_item to 0 to use event rewards
					if (getitemname(.bomb_item) == "null" ) { set .bomb_item, 501; mes "Item inválido. Configurando para Poção Vermelha."; }
					next;
					break;
				case 4:
					mes "Informe a nova quantidade mínima de players para iniciar o evento.";
					mes "Quantidade mínima de players atual: ^0000FF "+.min_player+"^000000.";
					input .min_player;
					if (.min_player < 2) { set .min_player, 2; mes "Quantidade inválida. Configurando mínimo de players para 2."; }
					next;
					break;
				case 5:
					mes "Informe o novo mapa para o evento.";
					mes "Mapa atual:^0000FF "+.bomb_map$+"^000000.";
					input .bomb_map$;
					if(getmapusers(.bomb_map$) == -1) { set .bomb_map$, "06guild_04"; mes "Mapa inválido. Configurando para 06guild_04"; }
					next;
					break;
				default: close; break;
			}
		}
	}
	else end;


OnPCDieEvent:
	if (strcharinfo(3) != .bomb_map$) end;
	mapannounce .bomb_map$, strcharinfo(0)+" está fora! Participantes restantes: "+(getmapusers(.bomb_map$) - 2),bc_map,"0x00ffff";
	warp "SavePoint",0,0;
	end;

OnPCLoadMapEvent:
	if (strcharinfo(3) != .bomb_map$) end;
	if (.bombstarted) {
		dispbottom "O evento está sendo realizado no momento.";
		warp "SavePoint",0,0;
	} else {
		for(set .@i, 0; .@i < getarraysize(.mapf); set .@i,.@i+1) removemapflag .bomb_map$,.mapf[.@i];
		removemapflag .bomb_map$,12;
		removemapflag .bomb_map$,34;
		removemapflag .bomb_map$,mf_noskill;
		announce strcharinfo(0)+" ganhou o Evento Poring Bomb!",0;
		if (.bomb_item) getitem .bomb_item, .bomb_iamount2;
		else { set #Event_Points,#Event_Points+.bomb_iamount2; dispbottom "You now have "+#Event_Points+" Event Points"; }
		dispbottom "Parabéns! Você ganhou o Evento Poring Bomb!";
		dispbottom "Você será teletransportado para fora em 5 segundos.";
		specialeffect 568;
		sleep2 5000;
		dispbottom "Obrigado por participar!";
		warp "SavePoint",0,0;
		end;
	}
end;

//------------------Config----------------------------
OnInit:
	disablenpc "Poring Bomb";
	//sets max bomb Porings on a map set by a GM.
	set .max_bombs, 120;
	set .increase, 10;
	//sets min bombs
	set .min_bombs, 10;
	set .mobcount, 10;
	//timer until the new raid spawns (Atleast 10 seconds is recommended!)
	set .timer_bombs, (1000*15); //15 seconds, 1000 * 150 = 15000
	//Item reward, set to 0 to use event points (Var used for event points = #Event_Points)
	set .bomb_item, 7180; //Event Points
	//How many points Array lenght needs to be the same as the Array lenght below.
	setarray .bomb_iamount[0],800;
	//Array of how many players are in the room, for the reward amount (event points or Item amount)
	setarray .bomb_players[0],1;
	//Event Map
	set .bomb_map$, "guild_vs5";
	//Minimum required player amount.
	set .min_player, 2;
	//Required GM level to start event.
	set .min_GMlvl, 90;
	//Required GM level to enter GM menu
	set .min_GMmenu, 90;
	//Mapflags
	setarray .mapf[0],0,1,2,3,4,11,13,22,33,42; //in order "No memo, No teleport, no save, no branch, No Penalty,No trade, No Warp, No go, No return, no warp to, load event"
end;

}
//Prontera NPC:
ama_test,38,102,5	script	Poring Bomb	BOMBPORING,{

if (checkmount()) {
	mes "Você não pode entrar no evento de Peco Peco.";
	close;
	}
	if (getvariableofnpc(.bombevent, "bombgame")) {
		mes "[Poring Bomb]";
		mes "Ola, gostaria de entrar no evento?";
		next;
	if (select("Sim, por favor:Não agora, obrigado") == 1) { sc_end SC_ALL; warp (getvariableofnpc(.bomb_map$, "bombgame")),0,0; }
	else mes "Que pena, vejo você em breve!";
	close;
	} else {
		mes "[Poring Bomb]";
		mes "O evento não está aberto!";
		close;
	}
}

Agradeço desde já!

Share this post


Link to post
Share on other sites

0 answers to this question

There have been no answers to this question yet

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0