Jump to content
  • 0

I need help with guild registration


FrajolazitoH

Question


  • Group:  Members
  • Topic Count:  7
  • Topics Per Day:  0.00
  • Content Count:  10
  • Reputation:   0
  • Joined:  10/29/20
  • Last Seen:  

//Modified by - PandaLovesHamster
//Custom Guild Limiter
//Credits to the owners of the individual makers of the script, I just tied them all together to create this script
 
sec_in01,99,187,4	script	Limitador de Guilda 	833,{
 
// this part registers the guild
	function sf {
		function s;
		.@a = getarg(2);
		.@len = getarg(3);
		return (
			sprintf( getarg(0),
				s(.@a, .@len, getarg(1)), s(.@a++, .@len, getarg(1)),
				s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1)),
				s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1)), 
				s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1)), 
				s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1))
			)
			+(( .@a+1 < .@len )?":Next":":")
			+(( .@a-11 > 0 )?":Back":":")
			+":Cancel"
		);
		function s {
			if( getarg(0) >= getarg(1) ) return "";
			else {
				.@name$ = getguildname(getelementofarray(getarg(2),getarg(0)));
				return .@name$=="null"?"":.@name$;
			}
		};
	};
	function nex { return((getarg(0)+10)<getarg(1)?getarg(0)+10:getarg(1)-(getarg(1)%10)); };
	function bac { return((getarg(0)-10)>=0?getarg(0)-10:0); };
 
	if(getgmlevel()>=80 ) {
		mes .Npc_Name$;
		mes "Olá Sr. GM, o que você gostaria de fazer?";
		next;
		switch( select("Adicionar/Remover Guildas:Limpar Dados da Guilda:Menu do Jogador:Cancelar") ) {
			case 1:
				mes .Npc_Name$;
				mes "Gostaria de adicionar ou remover uma guilda?";
				.@a_len = getarraysize($App_Guilds);
				.@format$ = "%s:%s:%s:%s:%s:%s:%s:%s:%s:%s";
				next;
				if( select("- Remover:- Adicionar") == 1 ) {
					while( .@a != 9999 ) {
						select( sf( .@format$, $App_Guilds, .@a, .@a_len ) );
						switch( @menu ) {
							case 11: .@a = nex( .@a, .@a_len ); break;
							case 12: .@a = bac( .@a ); break;
							case 13: end;
 
							default:
								.@select = .@a+@menu-1;
								mes .Npc_Name$;
								mes "Você selecionou ^0000FF["+getguildname($App_Guilds[.@select])+"]^000000 guilda. Você gostaria de removê-los das guildas aceitas?";
								next;
								if( select("sim:não") == 1 ) {
									deletearray($App_Guilds[.@select],1);
									mes .Npc_Name$;
									mes "A guilda foi removida com sucesso!";
								}
								close;
						}
					}
				} else {
					mes .Npc_Name$;
					mes "Por favor, insira o nome da guilda ou o nome do Lider.";
					next;
					input(.@input$);
					.@len = query_sql( "Select `guild_id` from `guild` where `name` like '%"+escape_sql(.@input$)+"%' or `master` like '%"+escape_sql(.@input$)+"%';",.@guild_id );
					while( .@a != 9999 ) {
						select( sf( .@format$, .@guild_id, .@a, .@len ) );
						switch( @menu ) {
							case 11: .@a = nex( .@a, .@len ); break;
							case 12: .@a = bac( .@a ); break;
							case 13: end;
 
							default:
								.@select = .@a+@menu-1;
								.@a_len = getarraysize($App_Guilds);
								for(.@b=0;.@b<.@a_len;.@b++)
									if( $App_Guilds[.@b]==.@guild_id[.@select] ) {
										mes .Npc_Name$;
										mes "Você selecionou ^0000FF["+getguildname(.@guild_id[.@select])+"]^000000 guilda. Sinto muito guilda já foi adicionada, mas à lista de aceitos.";
										close;
									}
								mes .Npc_Name$;
								mes "Você selecionou ^0000FF["+getguildname(.@guild_id[.@select])+"]^000000 guilda. Você gostaria de adicioná-los às guildas aceitas?";
								next;
								if( select("Sim:Não") == 1 ) {
									.@a_len = getarraysize($App_Guilds);
									if( .@a_len>=128 ) {
										mes .Npc_Name$;
										mes "Desculpe, mas a lista de aceitos está cheia, por favor, abra espaço e tente novamente...";
									} else {
										mes .Npc_Name$;
										mes "TA guilda foi adicionada com sucesso!";
										$App_Guilds[.@a_len] = .@guild_id[.@select];
									}
								}
								close;
						}
					}
				}
			case 2:
				mes .Npc_Name$;
				mes "Tem certeza de que deseja limpar os dados da guilda?!";
				next;
				if( select("Sim!:Não!")==1 ) {
					mes .Npc_Name$;
					mes "Esta é sua última chance. Você tem certeza tão certo quanto pode ser?";
					next;
					if( select("Grosseiro!:Não, espere... Onde estou?!!")==1 )
						deletearray($App_Guilds);
				}
				if( @menu==1 ) {
					mes .Npc_Name$;
					mes "A ação está feita...";
				} else {
					mes .Npc_Name$;
					mes "Uau, isso foi perto... Tenha um bom dia!";
				}
				close;
 
			case 3: break;
 
			case 4:
				mes .Npc_Name$;
				mes "Tudo bem, tenha um bom dia!";
				close;
		}
	}
 
	.@len = getarraysize($App_Guilds);
	for( .@i=0; .@i <= .@len; .@i++ ) {
		if( getcharid(2) == $App_Guilds[.@i] )
			set .@Guild_Check, .@Guild_Check+1;
	}
 
 
// Esta parte ejeta os jogadores quando eles estão no mapa
	OnPCLoadMapEvent:
	if( getcharid(2) == $App_Guilds[.@i] ){
	.count = 0;
	.@origin = getcharid(3);
	addrid 3, 0, getcharid(2);
	if ( strcharinfo(3) == .checkmap$ )
		.count++;
	if ( !.@origin ) end;
	if ( .count > 20 ) { // 5 significa apenas 5 jogadores por guilda permitidos em um mapa
		message strcharinfo(0), "Os membros da sua guilda estão acima do limite permitido pela satff.";
		sleep2 2000;
		warp "SavePoint", 0,0;
	}
	}
	end;
OnInit:
	setarray .@checkmap$, "arug_cas01", "arug_cas02", "arug_cas03", "arug_cas04", "arug_cas05", "schg_cas01", "schg_cas02", "schg_cas03", "schg_cas04", "schg_cas05";
	.@len = getarraysize( .@checkmap$ );
	for ( .@i = 0; .@i < .@size; .@i++ ) {
		setmapflag .@checkmap$[.@i], mf_loadevent;
		setd "."+ .@checkmap$[.@i], 1;
	}
	end;
}
 
-	script	kjdhfkjshf	-1,{
OnPCLoadMapEvent:
	if ( getmapflag( strcharinfo(3), mf_gvg_castle ) && ( agitcheck() || agitcheck2() )) {
	.@len = getarraysize($App_Guilds);
	for( .@i=0; .@i <= .@len; .@i++ ) {
		if( getcharid(2) == $App_Guilds[.@i] )
			set .@Guild_Check, .@Guild_Check+1;
	}
	if( .@Guild_Check < 1 ) {
		dispbottom "Sua guilda ainda não foi aprovada, entre em contato com os GMs";
		sleep2 3000;
		warp "SavePoint",0,0;
		end;
	}
	if( !getcharid(2) ) {
		dispbottom "Desculpe, apenas membros de uma guilda podem entrar em um castelo.";
		sleep2 3000;
		warp "SavePoint",0,0;
		end;
	}
}
	end;
OnInit:
	setarray .castles$[0],
		"prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05",
		"payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05",
		"gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05",
		"aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05",
		"arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05",
		"schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05";
	for ( .@i = 0; .@i < 30; .@i++ )
		setmapflag .castles$[.@i], mf_loadevent;
	end;
}
whenever I add or remove a guild, the NPC shows me the same guild twice. This ends up buggy when removing a guild from the registry. I click on remove guild "X" and guild "Y" is removed from the registry.
can anyone help me?
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

  • Group:  Forum Moderator
  • Topic Count:  33
  • Topics Per Day:  0.01
  • Content Count:  1282
  • Reputation:   393
  • Joined:  02/03/12
  • Last Seen:  

On 9/20/2024 at 1:54 PM, FrajolazitoH said:
//Modified by - PandaLovesHamster
//Custom Guild Limiter
//Credits to the owners of the individual makers of the script, I just tied them all together to create this script
 
sec_in01,99,187,4	script	Limitador de Guilda 	833,{
 
// this part registers the guild
	function sf {
		function s;
		.@a = getarg(2);
		.@len = getarg(3);
		return (
			sprintf( getarg(0),
				s(.@a, .@len, getarg(1)), s(.@a++, .@len, getarg(1)),
				s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1)),
				s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1)), 
				s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1)), 
				s(.@a++, .@len, getarg(1)), s(.@a++, .@len, getarg(1))
			)
			+(( .@a+1 < .@len )?":Next":":")
			+(( .@a-11 > 0 )?":Back":":")
			+":Cancel"
		);
		function s {
			if( getarg(0) >= getarg(1) ) return "";
			else {
				.@name$ = getguildname(getelementofarray(getarg(2),getarg(0)));
				return .@name$=="null"?"":.@name$;
			}
		};
	};
	function nex { return((getarg(0)+10)<getarg(1)?getarg(0)+10:getarg(1)-(getarg(1)%10)); };
	function bac { return((getarg(0)-10)>=0?getarg(0)-10:0); };
 
	if(getgmlevel()>=80 ) {
		mes .Npc_Name$;
		mes "Olá Sr. GM, o que você gostaria de fazer?";
		next;
		switch( select("Adicionar/Remover Guildas:Limpar Dados da Guilda:Menu do Jogador:Cancelar") ) {
			case 1:
				mes .Npc_Name$;
				mes "Gostaria de adicionar ou remover uma guilda?";
				.@a_len = getarraysize($App_Guilds);
				.@format$ = "%s:%s:%s:%s:%s:%s:%s:%s:%s:%s";
				next;
				if( select("- Remover:- Adicionar") == 1 ) {
					while( .@a != 9999 ) {
						select( sf( .@format$, $App_Guilds, .@a, .@a_len ) );
						switch( @menu ) {
							case 11: .@a = nex( .@a, .@a_len ); break;
							case 12: .@a = bac( .@a ); break;
							case 13: end;
 
							default:
								.@select = .@a+@menu-1;
								mes .Npc_Name$;
								mes "Você selecionou ^0000FF["+getguildname($App_Guilds[.@select])+"]^000000 guilda. Você gostaria de removê-los das guildas aceitas?";
								next;
								if( select("sim:não") == 1 ) {
									deletearray($App_Guilds[.@select],1);
									mes .Npc_Name$;
									mes "A guilda foi removida com sucesso!";
								}
								close;
						}
					}
				} else {
					mes .Npc_Name$;
					mes "Por favor, insira o nome da guilda ou o nome do Lider.";
					next;
					input(.@input$);
					.@len = query_sql( "Select `guild_id` from `guild` where `name` like '%"+escape_sql(.@input$)+"%' or `master` like '%"+escape_sql(.@input$)+"%';",.@guild_id );
					while( .@a != 9999 ) {
						select( sf( .@format$, .@guild_id, .@a, .@len ) );
						switch( @menu ) {
							case 11: .@a = nex( .@a, .@len ); break;
							case 12: .@a = bac( .@a ); break;
							case 13: end;
 
							default:
								.@select = .@a+@menu-1;
								.@a_len = getarraysize($App_Guilds);
								for(.@b=0;.@b<.@a_len;.@b++)
									if( $App_Guilds[.@b]==.@guild_id[.@select] ) {
										mes .Npc_Name$;
										mes "Você selecionou ^0000FF["+getguildname(.@guild_id[.@select])+"]^000000 guilda. Sinto muito guilda já foi adicionada, mas à lista de aceitos.";
										close;
									}
								mes .Npc_Name$;
								mes "Você selecionou ^0000FF["+getguildname(.@guild_id[.@select])+"]^000000 guilda. Você gostaria de adicioná-los às guildas aceitas?";
								next;
								if( select("Sim:Não") == 1 ) {
									.@a_len = getarraysize($App_Guilds);
									if( .@a_len>=128 ) {
										mes .Npc_Name$;
										mes "Desculpe, mas a lista de aceitos está cheia, por favor, abra espaço e tente novamente...";
									} else {
										mes .Npc_Name$;
										mes "TA guilda foi adicionada com sucesso!";
										$App_Guilds[.@a_len] = .@guild_id[.@select];
									}
								}
								close;
						}
					}
				}
			case 2:
				mes .Npc_Name$;
				mes "Tem certeza de que deseja limpar os dados da guilda?!";
				next;
				if( select("Sim!:Não!")==1 ) {
					mes .Npc_Name$;
					mes "Esta é sua última chance. Você tem certeza tão certo quanto pode ser?";
					next;
					if( select("Grosseiro!:Não, espere... Onde estou?!!")==1 )
						deletearray($App_Guilds);
				}
				if( @menu==1 ) {
					mes .Npc_Name$;
					mes "A ação está feita...";
				} else {
					mes .Npc_Name$;
					mes "Uau, isso foi perto... Tenha um bom dia!";
				}
				close;
 
			case 3: break;
 
			case 4:
				mes .Npc_Name$;
				mes "Tudo bem, tenha um bom dia!";
				close;
		}
	}
 
	.@len = getarraysize($App_Guilds);
	for( .@i=0; .@i <= .@len; .@i++ ) {
		if( getcharid(2) == $App_Guilds[.@i] )
			set .@Guild_Check, .@Guild_Check+1;
	}
 
 
// Esta parte ejeta os jogadores quando eles estão no mapa
	OnPCLoadMapEvent:
	if( getcharid(2) == $App_Guilds[.@i] ){
	.count = 0;
	.@origin = getcharid(3);
	addrid 3, 0, getcharid(2);
	if ( strcharinfo(3) == .checkmap$ )
		.count++;
	if ( !.@origin ) end;
	if ( .count > 20 ) { // 5 significa apenas 5 jogadores por guilda permitidos em um mapa
		message strcharinfo(0), "Os membros da sua guilda estão acima do limite permitido pela satff.";
		sleep2 2000;
		warp "SavePoint", 0,0;
	}
	}
	end;
OnInit:
	setarray .@checkmap$, "arug_cas01", "arug_cas02", "arug_cas03", "arug_cas04", "arug_cas05", "schg_cas01", "schg_cas02", "schg_cas03", "schg_cas04", "schg_cas05";
	.@len = getarraysize( .@checkmap$ );
	for ( .@i = 0; .@i < .@size; .@i++ ) {
		setmapflag .@checkmap$[.@i], mf_loadevent;
		setd "."+ .@checkmap$[.@i], 1;
	}
	end;
}
 
-	script	kjdhfkjshf	-1,{
OnPCLoadMapEvent:
	if ( getmapflag( strcharinfo(3), mf_gvg_castle ) && ( agitcheck() || agitcheck2() )) {
	.@len = getarraysize($App_Guilds);
	for( .@i=0; .@i <= .@len; .@i++ ) {
		if( getcharid(2) == $App_Guilds[.@i] )
			set .@Guild_Check, .@Guild_Check+1;
	}
	if( .@Guild_Check < 1 ) {
		dispbottom "Sua guilda ainda não foi aprovada, entre em contato com os GMs";
		sleep2 3000;
		warp "SavePoint",0,0;
		end;
	}
	if( !getcharid(2) ) {
		dispbottom "Desculpe, apenas membros de uma guilda podem entrar em um castelo.";
		sleep2 3000;
		warp "SavePoint",0,0;
		end;
	}
}
	end;
OnInit:
	setarray .castles$[0],
		"prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05",
		"payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05",
		"gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05",
		"aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05",
		"arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05",
		"schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05";
	for ( .@i = 0; .@i < 30; .@i++ )
		setmapflag .castles$[.@i], mf_loadevent;
	end;
}
whenever I add or remove a guild, the NPC shows me the same guild twice. This ends up buggy when removing a guild from the registry. I click on remove guild "X" and guild "Y" is removed from the registry.
can anyone help me?

This is a stupid bug what the early sf function I made. Replace it with f_DisplayPages. You should be able to find it with a quick search on rAthena.

 

 

Edited by Skorm
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...