Jump to content

Kassio Felix

Members
  • Posts

    20
  • Joined

  • Last visited

Posts posted by Kassio Felix

  1. Salve pessoal, estou usando esse npc para adicionar o vip, pois o emulador que estou usando é eAmod com rathena, porem é um emulador antigo e n tem suporte ao sistema vip original do rathena.  gostaria de saber, se alguém pode fazer o script de dias vip grats, abaixo segue o sistema que estou usando.

    Spoiler
    
    //  ___________________________________________________________________________________
    // /                                                                                   \
    // |                            __  __ _____ _      _____                              |
    // |                           |  \/  |_   _| |    |  __ \                             |
    // |                           | \  / | | | | |    | |  | |                            |
    // |                           | |\/| | | | | |    | |  | |                            |
    // |                           | |  | |_| |_| |____| |__| |                            |
    // |                           |_|  |_|_____|______|_____/                             |
    // |                                                                                   |
    // | --------------------------------------------------------------------------------- |
    // | Name: VIP System ( CONTROL )                                                      |
    // | --------------------------------------------------------------------------------- |
    // | Author: mild                                                                      |
    // | --------------------------------------------------------------------------------- |
    // | Description: VIP System ( CONTROL ),                                              |
    // |              add VIP, remove VIP, Add new staff member and other.                 |
    // | --------------------------------------------------------------------------------- |
    // | Changelog:                                                                        |
    // | 1.0 Started                              [mild]                                   |
    // | 1.1 Added "See members banished"         [mild]                                   |
    // | 1.2 Added "See VIP members"              [mild]                                   |
    // | ALTER TABLE `login` ADD `dayVip` INT(11) NOT NULL DEFAULT '0';//                  |
    // \__________________________________________________________________________________/
    prontera, 155, 172, 4	script	VIP System#script	936,{
    
    	// Script's configurations
    	
    		// Script's name
    		set $nScript$, "[ VIP System ]";
    
    	// VIP's configurations
    	
    		// Sale of VIP, 30 days.
    		set @dVip1, 30;
    		
    		// Sale of VIP, 15 days.
    		set @dVip2, 15;
    		
    		// Sale of VIP, 5 days.
    		set @dVip3, 5;
    		
    		// Purchase price of the VIP of 30 days.
    		set @pVip1, 20;
    
    		// Purchase price of the VIP of 15 days.
    		set @pVip2, 10;
    
    		// Purchase price of the VIP of 5 days.
    		set @pVip3, 5;
    
    	if ( getgroupid() < 1 )
    	{
    		mes $nScript$;
    		mes "Você não é VIP, deseja adquirir?";
    		if (select ("- Yes:- No") == 1)
    		{
    			switch ( select ("- "+@dVip1+" days for ^FF0000"+@pVip1+"^000000 cash.:- "+@dVip2+" days for ^FF0000"+@pVip2+"^000000 cash.:- "+@dVip3+" days for ^FF0000"+@pVip3+"^000000 cash.:- Nothing.") )
    			{
    			case 1:
    				if (#CASHPOINTS >= @pVip1)
    				{
    					mes $nScript$;
    					mes "Your VIP will be activated.";
    					close2;
    					query_sql ("UPDATE `login` SET `group_id`='1',`dayVip`=`dayVip`+"+@dVip1+" WHERE `account_id`='"+ getcharid(3) +"'");
    					set #CASHPOINTS,#CASHPOINTS-@pVip1;
    					atcommand "@kick " + strcharinfo(0);
    					end;
    				}
    				next;
    				mes $nScript$;
    				mes "Você não tem ^FF0000"+@pVip1+"^000000 Cash.";
    				close;
    			case 2:
    				if (#CASHPOINTS >= @pVip2)
    				{
    					mes $nScript$;
    					mes "Seu VIP será ativado.";
    					close2;
    					query_sql ("UPDATE `login` SET `group_id`='1',`dayVip`=`dayVip`+"+@dVip2+" WHERE `account_id`='"+ getcharid(3) +"'");
    					set #CASHPOINTS,#CASHPOINTS-@pVip2;
    					atcommand "@kick " + strcharinfo(0);
    					end;
    				}
    				next;
    				mes $nScript$;
    				mes "Você não tem ^FF0000"+@pVip2+"^000000 Cash.";
    				close;
    			case 3:
    				if (#CASHPOINTS >= @pVip3)
    				{
    					mes $nScript$;
    					mes "Your VIP will be activated.";
    					close2;
    					query_sql ("UPDATE `login` SET `group_id`='1',`dayVip`=`dayVip`+"+@dVip3+" WHERE `account_id`='"+ getcharid(3) +"'");
    					set #CASHPOINTS,#CASHPOINTS-@pVip3;
    					atcommand "@kick " + strcharinfo(0);
    					end;
    				}
    				next;
    				mes $nScript$;
    				mes "Você não tem ^FF0000"+@pVip3+"^000000 Cash.";
    				close;
    			case 4:
    				mes $nScript$;
    				mes "Okay, vejo você em breve.";
    				close;
    			}
    		}
    		next;
    		mes $nScript$;
    		mes "Okay, vejo você em breve.";
    		close;
    	} else if (getgroupid() == 1) {
    		query_sql ("SELECT `dayVip` FROM `login` WHERE `account_id` = '"+getcharid(3)+"'", @dayVip);
    		mes $nScript$;
    		mes "Olá "+strcharinfo(0);
    		mes "Você tem ^FF0000"+@dayVip+"^000000 dias VIP";
    		close;
    
    	} else if ( getgroupid() == 99 ) {
    		mes $nScript$;
    		mes "Olá "+strcharinfo(0)+".";
    		mes "O que você quer fazer?";
    		switch ( select ( "- Add VIP.:- Add staff.:- Remove VIP.:- membros VIP:- Banir membro.:- Ver membros banidos.: -Nada." ) )
    		{
    		case 1:
    			next;
    			mes $nScript$;
    			mes "Digite o login da conta que deseja adicionar dias VIP";
    			input .@lAccount$;
    			query_sql ("SELECT `account_id` FROM `login` WHERE `userid`='"+.@lAccount$+"'",.@ExisAccount);
    			if ( .@ExisAccount == 0 )
    			{
    				next;
    				mes $nScript$;
    				mes "Você não digitou o login correto.";
    				close;
    			}
    			next;
    			mes $nScript$;
    			mes "Agora digite a quantidade de dias que deseja adicionar. "+.@lAccount$+".";
    			input .@ammouVip;
    			if ( .@ammouVip == 0 )
    			{
    				next;
    				mes $nScript$;
    				mes "Você digitou uma quantidade inválida.";
    				close;
    			}
    			next;
    			mes $nScript$;
    			mes "Ok, vou adicionar o VIP";
    			next;
    			mes $nScript$;
    			mes "Pronto, adicionei o VIP na conta ^FF0000"+.@lAccount$+"^000000 - Quantidade ^FF0000"+.@ammouVip+"^000000.";
    			query_sql ("UPDATE `login` SET `group_id`='1',`dayVip`=`dayVip`+"+.@ammouVip+" WHERE `userid`='"+.@lAccount$+"'");
    			close;
    		case 2:
    			next;
    			mes $nScript$;
    			mes "Escolha a posição que deseja adicionar à conta.";
    			switch ( select ("- Administrator ^CD0000(99)^000000 :- Game Master ^CD0000(60)^000000 :- Game Helper ^CD0000(40)^000000 :- Other :- Nothing") )
    			{
    				case 1:
    					next;
    					mes $nScript$;
    					mes "Digite a conta de login.";
    					input .@lAccoGM$;
    					query_sql ("SELECT `account_id` FROM `login` WHERE `userid`='"+.@lAccoGM$+"'",.@NoGM);
    					if ( .@NoGM == 0 )
    					{
    						next;
    						mes $nScript$;
    						mes "Essa conta não existe.";
    						close;
    					}
    					mes $nScript$;
    					mes "Vou adicionar a posição na conta.";
    					query_sql ("UPDATE `login` SET `group_id`='99' WHERE `userid`='"+.@lAccoGM$+"'");
    					next;
    					mes $nScript$;
    					mes "Pronto, adicionado!";
    					close;
    				case 2:
    					next;
    					mes $nScript$;
    					mes "Digite a conta de login.";
    					input .@lAccoGM$;
    					query_sql ("SELECT `account_id` FROM `login` WHERE `userid`='"+.@lAccoGM$+"'",.@NoGM);
    					if ( .@NoGM == 0 )
    					{
    						next;
    						mes $nScript$;
    						mes "Essa conta não existe.";
    						close;
    					}
    					mes $nScript$;
    					mes "Vou adicionar a posição na conta.";
    					query_sql ("UPDATE `login` SET `group_id`='60' WHERE `userid`='"+.@lAccoGM$+"'");
    					next;
    					mes $nScript$;
    					mes "Pronto, adicionado";
    					close;
    				case 3:
    					next;
    					mes $nScript$;
    					mes "Digite a conta de login.";
    					input .@lAccoGM$;
    					query_sql ("SELECT `account_id` FROM `login` WHERE `userid`='"+.@lAccoGM$+"'",.@NoGM);
    					if ( .@NoGM == 0 )
    					{
    						next;
    						mes $nScript$;
    						mes "Essa conta não existe.";
    						close;
    					}
    					mes $nScript$;
    					mes "Vou adicionar a posição na conta.";
    					query_sql ("UPDATE `login` SET `group_id`='40' WHERE `userid`='"+.@lAccoGM$+"'");
    					next;
    					mes $nScript$;
    					mes "Pronto, adicionado";
    					close;
    				case 4:
    					next;
    					mes $nScript$;
    					mes "Digite a conta de login.";
    					input .@lAccoGM$;
    					query_sql ("SELECT `account_id` FROM `login` WHERE `userid`='"+.@lAccoGM$+"'",.@NoGM);
    					if ( .@NoGM == 0 )
    					{
    						next;
    						mes $nScript$;
    						mes "Essa conta não existe.";
    						close;
    					}
    					mes $nScript$;
    					mes "Agora, adiciona a posição que deseja.";
    					input .@lGroup;
    					next;
    					mes $nScript$;
    					mes "Vou adicionar a posição na conta.";
    					query_sql ("UPDATE `login` SET `group_id`='"+.@lGroup+"' WHERE `userid`='"+.@lAccoGM$+"'");
    					next;
    					mes $nScript$;
    					mes "Pronto, adicionado.";
    					close;
    				case 5:
    					next;
    					mes $nScript$;
    					mes "Ok, adeus";
    					close;
    			}
    		case 3:
    			next;
    			mes $nScript$;
    			mes "Deseja remover VIP de alguma conta?";
    			if ( select ("- Yes.:- No,") == 1 )
    			{
    				input @AccountBan$;
    				query_sql ("SELECT `account_id` FROM `login` WHERE `userid`='"+@AccountBan$+"'",.@NoExist);
    				if (!.@NoExist)
    				{
    					next;
    					mes $nScript$;
    					mes "Essa conta não existe.";
    					close;
    				}
    				next;
    				mes $nScript$;
    				mes "Digite a quantidade de dias que deseja remover.";
    				next;
    				input .@QAccountBan;
    				mes $nScript$;
    				mes "Eu vou remover."+.@QAccountBan+" - Account: "+@AccountBan$+".";
    				next;
    				mes $nScript$;
    				mes "Você tem certeza?";
    				if ( select ("- Yes:- No") == 1 )
    				{
    					next;
    					mes $nScript$;
    					mes "Ok, vou remover o VIP.";
    					close2;
    					query_sql ("UPDATE `login` SET `group_id`='1',`dayVip`=`dayVip`-"+.@QAccount+" WHERE `userid`='"+@AccountBan$+"'");
    					end;
    				}
    				next;
    				mes $nScript$;
    				mes "Okay, Adeus.";
    				close;
    			}
    			next;
    			mes $nScript$;
    			mes "Okay, Adeus.";
    			close;
    		case 4:
    			next;
    			query_sql("SELECT `userid` FROM `login` WHERE `group_id`=1",@nVIPs$); 
    			for(set @v, 0; @v < getarraysize(@nVIPs$); set @v, @v+1)
    			{
    				mes @v+" - "+ @nVips$[@v];
    			}
    			close;
    		case 5:
    			next;
    			mes $nScript$;
    			mes "Deseja banir alguém?";
    			if ( select ("- Yes.:- No.") == 1 )
    			{
    				next;
    				mes $nScript$;
    				mes "Digite a conta de login.";
    				next;
    				input @banM$;
    				query_sql ("SELECT `account_id` FROM `login` WHERE `userid`='"+@banM$+"'",.@NoExis);
    				if ( !.@NoExis )
    				{
    					next;
    					mes $nScript$;
    					mes "Essa conta não existe.";
    					close;
    				}
    				next;
    				mes $nScript$;
    				mes "Tem certeza que deseja banir "+@banM$+"?";
    				if ( select ("- Yes:- No") == 1 )
    				{
    					close2;
    					atcommand "@kick " + @banM$;
    					query_sql ("UPDATE `login` SET `state`='5' WHERE `userid`='"+@BanM$+"'");
    					end;
    				}
    				next;
    				mes $nScript$;
    				mes "Okay, Adeus.";
    				close;
    			}
    			next;
    			mes $nScript$;
    			mes "Okay, Adeus.";
    			close;
    		case 6:
    			next;
    			query_sql("SELECT `userid` FROM `login` WHERE `state`>=5",@nBan$); 
    			for(set @a, 0; @a < getarraysize(@nBan$); set @a, @a+1)
    			{
    				mes @a+" - "+ @nBan$[@a];
    			}
    			close;
    		case 7:
    			next;
    			mes $nScript$;
    			mes "Okay, Adeus.";
    			close;
    		}
    	}
    }
    -	script	SysVip#clock	-1,{
    
    OnClock0001:
    	query_sql ("UPDATE `login` SET `dayVip`=`dayVip`-1 WHERE `group_id`='1'");
    	end;
    OnClock0002:
    	query_sql ("UPDATE `login` SET `group_id`='0' WHERE `dayVip`<='0' AND `group_id`='1'");
    	end;
    }
    -	script	SysVip#onlogin	-1,{
    
    OnPCLoginEvent:
    	query_sql ("SELECT `dayVip` FROM `login` WHERE `account_id` = '"+getcharid(3)+"'", .@ReSVIP);
    	if(getgroupid() < 1)
    	{
    		dispbottom "Você não é VIP";
    		end;
    	} else if (getgroupid() == 1) {
    		dispbottom "Olá "+strcharinfo(0)+" Você tem "+.@ReSVIP+" dias VIP.";
    		end;
    	} else
    		end;
    }

     

     

     

    E tenho esse vip grats aqui. porem com outra tabela....  Porem estou com muita dificuldade de fazer ele funcionar...

    Spoiler
    
    //====================================
    // ==Aqui a tabela do vip
    //==ALTER TABLE `login` ADD `diasvip` INT( 11 ) UNSIGNED NOT NULL DEFAULT '0';
    //====================================
    
    
    -	script	VIPGRATIS	-1,{
    
    OnPCLoginEvent:
    if(#japegou != 1){
    mes "Bem-Vindo(a) ao Adventure! ";
    mes "Você está recebendo agora 7 dias vip gratis.^000000.";
    mes "Você será desconectado para que a operação tenha efeito. Basta digitar seu Login e sua senha normalmente e continuar a jogar";
    close2;
    query_sql "UPDATE `login` SET `group_id`='1',`diasvip`='5' WHERE `account_id` = '"+ getcharid(3) +"'";
    set #japegou,1;
    atcommand "@kick "+strcharinfo(0);
    end;
    }else{
    end;
    }
    }
    
    
    OnPCLoginEvent:
    if(getgmlvl () >= 1){
    dispbottom "[Controle VIP]: Você ainda tem "+.@diasvip+" dia(s) de VIP.";
    
    
    //========================================
    //==Abaixo o controle dos dias vip
    //========================================
    
    
    -	script	contador vip	-1,{
    
    OnPCLoginEvent:
    query_sql "SELECT `diasvip` FROM `login` WHERE `account_id` = '"+ getcharid(3) +"'", .@diasvip;
    if (.@diasvip > 0) && 
    {
    dispbottom "[Controle VIP]: Você ainda tem "+.@diasvip+" dia(s) de VIP.";
    end;
    }else{
    
    OnPCLoginEvent:
    query_sql "SELECT `diasvip` FROM `login` WHERE `account_id` = '"+ getcharid(3) +"'", .@diasvip;
    if (.@diasvip <= 3)
    {
    dispbottom "[#ragnaMeta! Controle VIP]: O seu vip está acabando, você só tem mais "+.@diasvip+" dia(s) de VIP.";
    dispbottom "[#ragnaMeta! Controle VIP]: Acesse ja o site www.ragnaMeta.net e saiba ja como fazer uma doação para continuar utilizando esta conta com os benefícios vip";
    end;
    }
    
    
    OnClock0000:
    query_sql "UPDATE `login` SET `diasvip`=`diasvip`-1 WHERE `group_id`>='1'";
    end;
    OnClock0000:
    query_sql "UPDATE `login` SET `group_id`='0' WHERE `diasvip`<='0' AND `group_id`>='1'";
    end;
    }
    
    //=========================================

     

     

    Consegui fazer funcionar, mas agradeço se alguém conseguir optimizar esse npc =D

     

    Spoiler
    
    -	script	VIPGratis#K-1	-1,{
    
    OnPcLoginEvent:
        if(GetGmLevel() >= 1) end;
        if(#vipmake == 0) {
    mes "Bem-Vindo(a) ao servidor "+strcharinfo(0)+"";
    mes "Voce acaba de ganhar 7 dias vip grátis.";
    mes "Re-Logue para que ele seja ativado.";
    query_sql "UPDATE `login` SET `group_id`='1',`dayVip`='7' WHERE `account_id` = '"+ getcharid(3) +"'";
    set #vipmake,1;
    close;
        }
        end;
    
    }
    
    // Diminuição dos VIPS
    -	script	VIPGratis#K-2	-1,{
    	end;
    
    OnClock0001:
    	query_sql "UPDATE `login` SET `dayVip`=`dayVip`-1 WHERE `group_id`='1'";
    	end;
    
    OnClock0002:
    	query_sql "UPDATE `login` SET `group_id`='0' WHERE `dayVip`<='0' AND `group_id`='1'";
    	end;
    }
    
    // Relógio VIP
    -	script	VIPGratis#K-3	-1,{
    OnPCLoginEvent:
    	if (getgroupid() < 1 || getgroupid() > 2) end;
    	query_sql "SELECT `dayVip` FROM `login` WHERE `account_id` = '"+ getcharid(3) +"'", @dias;
    	if (@dias[0] <= 5){
    	dispbottom "[Controle VIP]";
    	dispbottom "Você só tem "+@dias+" dia(s) de VIP restando,";
    	dispbottom "Recarregue sua VIP e Ajude o Servidor !!!";
    	end;
    	}
    	dispbottom "[Controle VIP]";
    	dispbottom "Você ainda tem "+@dias+" dia(s) de VIP.";
    	end;
    }

     

     

  2. Salve pessoal estou com duvida pois n consigo acerta a formula

    estou usando esse script do Emistry  Porem eu não estou conseguindo colocar as placas uma ao lado da outra com 1 espaço de diferença  para o lado e para baixo, e quando consigo fica 5 a 10 uma em cima da outra, alguém pode me ensinar essa formula de posicionamento ?

    Na imagem abaixo consigo colocar quatro com essa configuração do set .map$ porem quando adiciono mais fica tudo em cima uma placa da outra

    set .map$,"quiz_00";
    setcell .map$,0,0,300,300,cell_novending,1;
    // x and y horizone ..
    setarray .x_line,50,54,0,0,0,0,0;
    setarray .y_line,27,17,0,0,0,0,0;

    image.thumb.png.26ad24e5b8a0b4078fbb639302b97d10.png

    Spoiler
    
    quiz_00,62,34,4	script	Vending Helper	757,{
    for( set .@i,1; .@i <= .count; set .@i,.@i + 1 ){
    	getmapxy( .@map$,.@x,.@y,1,"#vend_slot"+.@i );
    	if( !getareausers( .map$,.@x,.@y,.@x,.@y ) && .@x > 1 && .@y > 1 ){
    		set .@available,.@available + 1;
    		set .@menu$,.@menu$ + "Slot - "+.@i+":";
    	}else{
    		set .@menu$,.@menu$ + ":";
    	}
    }
    
    if( !.@available ){
    	mes "Dont have any available slot.";
    }else if( !getskilllv("MC_VENDING") ){
    	mes "You dont have ^0055FFVending Skill^000000.";
    }else{
    	mes "Available Slot : "+.@available;
    	mes "Please select a slot to vending.";
    	set .@i,select( .@menu$ );
    	getmapxy( .@map$,.@x,.@y,1,"#vend_slot"+.@i );
    	if( .@x == 1 || .@y == 1 ){
    		mes "This NPC at invalid location...";
    	}else{
    		warp .@map$,.@x,.@y;
    		hideonnpc "#vend_slot"+.@i;
    	}
    }
    close;
    
    OnInit:
    sleep 1000;
    // Map for vending
    set .map$,"quiz_00";
    setcell .map$,0,0,300,300,cell_novending,1;
    
    
    
    // x and y horizone ..
    
    setarray .x_line,50,54,0,0,0,0,0;
    
    setarray .y_line,27,17,0,0,0,0,0;
    
    set .x_line_size,getarraysize( .x_line );
    set .y_line_size,getarraysize( .y_line );
    set .count,1;
    for( set .@x,0; .@x < .x_line_size; set .@x,.@x + 1 )
    	for( set .@y,0; .@y < .y_line_size; set .@y,.@y + 1 )
    		if( checkcell( .map$,.x_line[.@x],.y_line[.@y],cell_chkpass ) ){
    			movenpc "#vend_slot"+.count,.x_line[.@x],.y_line[.@y];
    			setcell .map$,.x_line[.@x],.y_line[.@y],.x_line[.@x],.y_line[.@y],cell_novending,0;
    			set .count,.count + 1;
    		}
    npctalk "Vending Spot : "+.count;
    donpcevent "::OnSetup";
    end;
    }
    
    -	script	vend_slot	-1,{
    getmapxy( .@map$,.@x,.@y,1 );
    if( !getskilllv("MC_VENDING") ){
    	mes "You dont have ^0055FFVending Skill^000000.";
    }else if( getareausers( .@map$,.@x,.@y,.@x,.@y ) ){
    	mes "Someone already selected this spot.";
    }else{
    	mes "Spot : ^777777Available^000000";
    	mes "^0055FF[ Vending Area Rules ]^000000";
    	mes "^FF0000 ~ Use proper Shop Name.^000000";
    	mes "^FF0000 ~ Never sell Junk/Gifts.^000000";
    	mes " ";
    	mes "^777777Player will failed to follow these will be punished.^000000";
    	if( select( "Select this Spot","Cancel" ) == 1 ){
    		warp .@map$,.@x,.@y;
    		hideonnpc strnpcinfo(0);
    	}
    }
    close;
    
    OnSetup:
    getmapxy( .@map$,.@x,.@y,1 );
    set .@npcname$,strnpcinfo(0);
    while( .@map$ != "" ){
    	if( getareausers( .@map$,.@x,.@y,.@x,.@y ) ){
    		hideonnpc .@npcname$;
    	}else{
    		hideoffnpc .@npcname$;
    		// specialeffect 313;
    	}
    	sleep 5000;
    }
    end;
    }
    
    // Add more if needed.
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot1	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot2	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot3	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot4	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot5	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot6	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot7	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot8	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot9	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot10	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot11	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot12	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot13	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot14	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot15	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot16	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot17	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot18	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot19	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot20	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot21	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot22	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot23	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot24	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot25	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot26	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot27	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot28	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot29	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot30	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot31	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot32	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot33	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot34	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot35	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot36	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot37	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot38	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot39	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot40	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot41	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot42	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot43	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot44	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot45	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot46	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot47	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot48	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot49	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot50	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot51	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot52	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot53	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot54	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot55	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot56	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot57	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot58	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot59	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot60	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot70	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot71	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot72	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot73	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot74	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot75	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot76	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot77	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot78	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot79	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot80	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot90	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot91	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot92	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot93	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot94	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot95	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot96	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot97	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot98	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot99	858
    quiz_00,1,1,4	duplicate(vend_slot)	#vend_slot100	858

     

    Salveeeeee.. Eu entendi o npc, ele é baseado num sistema criado por René Descartes.  Sistema de coordenadas cartesiano. Ele vai funcionar da seguinte maneira. 

    x baixo. y reto o npc vai criar 1 placa  na celula 118 e 129 vai ser a direção que vou criar as placas então para fazer uma fila de placa eu vou por as celulas 129 em diante 130,131,132 etc.

    para criar uma novafileira eu vou seleciona a direção por exemplo  122 ai vai ficar assim :

    setarray .x_line,118,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

    setarray .y_line,129,0,0,0,0,0,0,0;  

    qualquer duvida podem perguntar que eu ajudo tbm, Moderadores, podem fechar o tópico e se puder levar essa explicação para a area adequada de suporte.

     

  3. On 11/17/2020 at 8:47 AM, Hyroshima said:

    Um adendo amigo, Você deve usar o label OnInit: no final do código ou quando o script fizer o que você quer ali ele finalize com um end; caso contrário o script vai passar para a label OnNPCKillEvent: que no caso só seria ativado quando o player mata mob, então se o script do OnInit não for finalizado ali antes de começar a outra label vai acontecer esse erro justamente por quê não tem um player anexado ou seja não foi ativado por um player simplesmente o script seguiu em frente, só precisa adicionar um end; após definir os ids.

    vlw mano =D vou usar essa dica. =D

  4. Salve pessoal. Estou tendo um erro na Kafra da guild. ela apresenta o erro que esta na imagem abaixo. Pelo que consegui entender lendo o erro, deve ser algo relacionado ao comando ta vindo ta vindo antes dele ser carregado.  Porem n sei como arrumar, alguém pode ajudar? vou deixa abaixo da imagem em spoiler/code o npc

    Quote

    image.thumb.png.afdecf5a6e039e844c0bc2bd47bf3e82.png

     

    Spoiler
    
    //    ________________________________________________________
    //   /                                                        \
    //   |       _           _   _   _                            |
    //   |      | |__  _ __ / \ | |_| |__   ___ _ __   __ _       |
    //   |      | '_ \| '__/ _ \| __| '_ \ / _ \ '_ \ / _` |      |
    //   |      | |_) | | / ___ \ |_| | | |  __/ | | | (_| |      |
    //   |      |_.__/|_|/_/   \_\__|_| |_|\___|_| |_|\__,_|      |
    //   |                                                        |
    //   |                    brAthena Script                     |
    //   |--------------------------------------------------------|
    //   | Nome do Script: gde_padrao.txt                         |
    //   |--------------------------------------------------------|
    //   | Criado por: eA/rA/brA Dev. Team                        |
    //   |--------------------------------------------------------|
    //   | Versões eA/rA/brA: 1.9/1.0/1.2                         |
    //   |--------------------------------------------------------|
    //   | Descrição: NPCs padrões de todos os castelos GDE 1.0.  |
    //   |--------------------------------------------------------|
    //   | Changelog:                                             |
    //   | 1.0 Criado Cabeçalho [Shiraz]                          |
    //   | 1.1 Tradução PT-BR [cleyton]                           |
    //   | 1.2 Otimizações [Filid]                                |
    //   |--------------------------------------------------------|
    //   | - Anotações                                            |
    //   \________________________________________________________/
    
    // Gerenciador Automático
    //============================================================
    -	script	Gld_Agit_Manager::Gld_Agit_Manager	-1,{
    	end;
    
    // Início da Guerra do Emperium.
    OnAgitStart:
    	if (strnpcinfo(0) == "Gld_Agit_Manager") end;
    	MapRespawnGuildID strnpcinfo(2),GetCastleData(strnpcinfo(2),1),6;
    	GvgOn strnpcinfo(2);
    
    // Spawn do Emperium.
    OnStartArena:
    	if (strnpcinfo(2) == "aldeg_cas01") { setarray .@emproom[0],216,23; }
    	else if (strnpcinfo(2) == "aldeg_cas02") { setarray .@emproom[0],213,23; }
    	else if (strnpcinfo(2) == "aldeg_cas03") { setarray .@emproom[0],205,31; }
    	else if (strnpcinfo(2) == "aldeg_cas04") { setarray .@emproom[0],36,217; }
    	else if (strnpcinfo(2) == "aldeg_cas05") { setarray .@emproom[0],27,101; }
    	else if (strnpcinfo(2) == "gefg_cas01") { setarray .@emproom[0],197,181; }
    	else if (strnpcinfo(2) == "gefg_cas02") { setarray .@emproom[0],176,178; }
    	else if (strnpcinfo(2) == "gefg_cas03") { setarray .@emproom[0],244,166; }
    	else if (strnpcinfo(2) == "gefg_cas04") { setarray .@emproom[0],174,177; }
    	else if (strnpcinfo(2) == "gefg_cas05") { setarray .@emproom[0],194,184; }
    	else if (strnpcinfo(2) == "payg_cas01") { setarray .@emproom[0],139,139; }
    	else if (strnpcinfo(2) == "payg_cas02") { setarray .@emproom[0],38,25; }
    	else if (strnpcinfo(2) == "payg_cas03") { setarray .@emproom[0],269,265; }
    	else if (strnpcinfo(2) == "payg_cas04") { setarray .@emproom[0],270,28; }
    	else if (strnpcinfo(2) == "payg_cas05") { setarray .@emproom[0],30,30; }
    	else if (strnpcinfo(2) == "prtg_cas01") { setarray .@emproom[0],197,197; }
    	else if (strnpcinfo(2) == "prtg_cas02") { setarray .@emproom[0],157,174; }
    	else if (strnpcinfo(2) == "prtg_cas03") { setarray .@emproom[0],16,220; }
    	else if (strnpcinfo(2) == "prtg_cas04") { setarray .@emproom[0],291,14; }
    	else if (strnpcinfo(2) == "prtg_cas05") { setarray .@emproom[0],266,266; }
    	// Adicione castelos personalizados abaixo.
    	else {
    		end;
    	}
    	if (!mobcount(strnpcinfo(2),"Agit#"+strnpcinfo(2)+"::OnAgitBreak")) {
    		monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Emperium",1288,1,"Agit#"+strnpcinfo(2)+"::OnAgitBreak";
    	}
    	end;
    
    // Quebra do Emperium.
    OnAgitBreak:
    	set .@GID,getcharid(2);
    	// Exibição do log de erro caso um personagem sem Clã quebra um Emperium (Isso nunca deve ocorrer em padrões oficiais - kRO/bRO).
    	if (.@GID <= 0) {
    		set .@notice$,"O personagem "+strcharinfo(0)+" ("+getcharid(0)+") quebrou o Emperium do Castelo:: "+strnpcinfo(2)+" sem um Clã. Nenhum dado será salvo e o Emperium retornará.";
     		logmes .@notice$; debugmes .@notice$;
    		donpcevent "Agit#"+strnpcinfo(2)+"::OnStartArena";
    		end;
    	}
    	// Ajustes dos Leveis de Ecônomia e Investimento para o Castelo.
    	set .@Economy,GetCastleData(strnpcinfo(2),2) - 5;
    	if (.@Economy < 0) set .@Economy, 0;
    	SetCastleData strnpcinfo(2), 2, .@Economy;
    	// Ajustes dos Leveis de Defesa do Investimento para o Castelo.
    	set .@Defence,GetCastleData(strnpcinfo(2),3) - 5;
    	if (.@Defence < 0) set .@Defence, 0;
    	SetCastleData strnpcinfo(2), 3, .@Defence;
    
    	// Adiciona uma nova Clã ao Castelo.
    	SetCastleData strnpcinfo(2),1, .@GID;
    
    	// Anúncio de Destruição do Emperium e sua nova Clã ocupante.
    	mapannounce strnpcinfo(2),"O Emperium foi destruído.",bc_map|bc_woe,"0x00CCFF",FW_NORMAL,12;
    	MapRespawnGuildID strnpcinfo(2),.@GID,6;
    
    	// Repara os dados do Castelo, Desabilita a Kafra e Investimentos do Castelo.
    	donpcevent strnpcinfo(0)+"::OnRecvCastle";
    	disablenpc "Funcionária Kafra#"+strnpcinfo(2);
    	for( set .@i, 4; .@i <= 9; set .@i, .@i+1 ) {
    		SetCastleData strnpcinfo(2), .@i, 0;
    	}
    	// Limpa os dados dos Guardiões, caso a nova Clã não tenha habilidades para usar Guardiões
    	if( getgdskilllv(.@GID,10002) == 0 ) {
    		for( set .@i, 10; .@i <= 17; set .@i, .@i+1 ) {
    			SetCastleData strnpcinfo(2), .@i, 0;
    		}
    	}
    	// Readiciona o Emperium e mostra a nova Clã ocupante.
    	sleep 500; // Slow down script execution slightly.
    	if( agitcheck() )
    		donpcevent "Agit#"+strnpcinfo(2)+"::OnStartArena";
    	sleep 7000;
    	announce "O castelo [" + getcastlename(strnpcinfo(2)) + "] foi conquistado pelo Clã [" + getguildName(.@GID) + "].",bc_all|bc_woe;
    	end;
    
    // Término da Guerra do Emperium.
    OnAgitEnd:
    	if (strnpcinfo(0) == "Gld_Agit_Manager") end;
    	GvgOff strnpcinfo(2);
    	// Caso o castelo não tenha nenhum Clã ocupante, o Emperium não é destruído.
    	if (GetCastleData(strnpcinfo(2),1)) {
    		KillMonster strnpcinfo(2),"Agit#"+strnpcinfo(2)+"::OnAgitBreak";
    	}
    	end;
    
    // Caso a Clã abandone o Castelo.
    OnGuildBreak:
    	if (strnpcinfo(0) == "Gld_Agit_Manager") end;
    	// Destroí os Guardiões, desabilita a Kafra e modifica o Guild Master (Dono do Castelo) para 0.
    	killmonster strnpcinfo(2),"Guardian#"+strnpcinfo(2)+"::OnGuardianDied";
    	disablenpc "Funcionária Kafra#"+strnpcinfo(2);
    	SetCastleData strnpcinfo(2),1,0;
    	// Aguarda o salvamento de informação da Guilda.
    	sleep 7000;
    	Announce "O castelo [" + GetCastleName(strnpcinfo(2)) + "] foi abandonado.",0;
    	donpcevent strnpcinfo(0)+"::OnRecvCastle";
    	end;
    
    OnAgitInit:
    OnRecvCastle:
    	if (strnpcinfo(0) == "Gld_Agit_Manager") end;
    	// Spawn Monsters if the castle is empty.
    	set .@GID, GetCastleData(strnpcinfo(2),1);
    	if (.@GID == 0) {
    		killmonsterall strnpcinfo(2);
    		if (compare(strnpcinfo(2),"aldeg")) {
    			// Normal Spawns
    			monster strnpcinfo(2),0,0,"Evil Druid",1117,10;
    			monster strnpcinfo(2),0,0,"Khalitzburg",1132,4;
    			monster strnpcinfo(2),0,0,"Abysmal Knight",1219,2;
    			monster strnpcinfo(2),0,0,"Executioner",1205,1;
    			monster strnpcinfo(2),0,0,"Penomena",1216,10;
    			monster strnpcinfo(2),0,0,"Alarm",1193,18;
    			monster strnpcinfo(2),0,0,"Clock",1269,9;
    			monster strnpcinfo(2),0,0,"Raydric Archer",1276,7;
    			monster strnpcinfo(2),0,0,"Wanderer",1208,3;
    			monster strnpcinfo(2),0,0,"Alice",1275,1;
    			monster strnpcinfo(2),0,0,"Bloody Knight",1268,1;
    			monster strnpcinfo(2),0,0,"Dark Lord",1272,1;
    			// Set Emperium room spawn coordinates and spawn monsters.
    			if (strnpcinfo(2) == "aldeg_cas01") { setarray .@emproom[0],216,23; }
    			else if (strnpcinfo(2) == "aldeg_cas02") { setarray .@emproom[0],213,23; }
    			else if (strnpcinfo(2) == "aldeg_cas03") { setarray .@emproom[0],205,31; }
    			else if (strnpcinfo(2) == "aldeg_cas04") { setarray .@emproom[0],36,217; }
    			else if (strnpcinfo(2) == "aldeg_cas05") { setarray .@emproom[0],27,101; }
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Dark Lord",1272,1;
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Tower Keeper",1270,4;
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Bloody Knight",1268,1;
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Abysmal Knight",1219,1;
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Raydric Archer",1276,5;
    		}
    		else if (compare(strnpcinfo(2),"gefg")) {
    			// Normal Spawns
    			monster strnpcinfo(2),0,0,"Evil Druid",1117,10;
    			monster strnpcinfo(2),0,0,"Wind Ghost",1263,11;
    			monster strnpcinfo(2),0,0,"Bathory",1102,10;
    			monster strnpcinfo(2),0,0,"Jakk",1130,10;
    			monster strnpcinfo(2),0,0,"Marduk",1140,20;
    			monster strnpcinfo(2),0,0,"Raydric",1163,9;
    			monster strnpcinfo(2),0,0,"Alice",1275,1;
    			monster strnpcinfo(2),0,0,"Abysmal Knight",1219,1;
    			monster strnpcinfo(2),0,0,"Moonlight Flower",1150,1;
    			monster strnpcinfo(2),0,0,"Phreeoni",1159,1;
    			// Set Emperium room spawn coordinates and spawn monsters.
    			if (strnpcinfo(2) == "gefg_cas01") { setarray .@emproom[0],197,181; }
    			else if (strnpcinfo(2) == "gefg_cas02") { setarray .@emproom[0],176,178; }
    			else if (strnpcinfo(2) == "gefg_cas03") { setarray .@emproom[0],244,166; }
    			else if (strnpcinfo(2) == "gefg_cas04") { setarray .@emproom[0],174,177; }
    			else if (strnpcinfo(2) == "gefg_cas05") { setarray .@emproom[0],194,184; }
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Mysteltainn",1203,1;
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Orc Hero",1087,1;
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"High Orc",1213,10;
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Orc Archer",1189,10;
    		}
    		else if (compare(strnpcinfo(2),"payg")) {
    			// Normal Spawns
    			monster strnpcinfo(2),0,0,"Greatest General",1277,9;
    			monster strnpcinfo(2),0,0,"Wanderer",1208,10;
    			monster strnpcinfo(2),0,0,"Mutant Dragonoid",1262,5;
    			monster strnpcinfo(2),0,0,"Bathory",1102,5;
    			monster strnpcinfo(2),0,0,"Moonlight Flower",1150,1;
    			monster strnpcinfo(2),0,0,"Eddga",1115,1;
    			monster strnpcinfo(2),0,0,"Horong",1129,11;
    			monster strnpcinfo(2),0,0,"Raydric Archer",1276,5;
    			monster strnpcinfo(2),0,0,"Kobold Archer",1282,4;
    			monster strnpcinfo(2),0,0,"Gargoyle",1253,5;
    			// Set Emperium room spawn coordinates and spawn monsters.
    			if (strnpcinfo(2) == "payg_cas01") { setarray .@emproom[0],139,139; }
    			else if (strnpcinfo(2) == "payg_cas02") { setarray .@emproom[0],38,25; }
    			else if (strnpcinfo(2) == "payg_cas03") { setarray .@emproom[0],269,265; }
    			else if (strnpcinfo(2) == "payg_cas04") { setarray .@emproom[0],270,28; }
    			else if (strnpcinfo(2) == "payg_cas05") { setarray .@emproom[0],30,30; }
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Moonlight Flower",1150,1;
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Eddga",1115,1;
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Wanderer",1208,6;
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Raydric Archer",1276,5;
    		} 
    		else if (compare(strnpcinfo(2),"prtg")) {
    			// Normal Spawns
    			monster strnpcinfo(2),0,0,"Raydric",1163,1;
    			monster strnpcinfo(2),0,0,"Khalitzburg",1132,10;
    			monster strnpcinfo(2),0,0,"Abysmal Knight",1219,5;
    			monster strnpcinfo(2),0,0,"Bloody Knight",1268,5;
    			monster strnpcinfo(2),0,0,"Stormy Knight",1251,1;
    			monster strnpcinfo(2),0,0,"Hatii",1252,1;
    			monster strnpcinfo(2),0,0,"Raydric Archer",1276,5;
    			monster strnpcinfo(2),0,0,"Gryphon",1259,2;
    			monster strnpcinfo(2),0,0,"Chimera",1283,3;
    			monster strnpcinfo(2),0,0,"Alice",1275,1;
    			monster strnpcinfo(2),0,0,"Zealotus",1200,1;
    			// Set Emperium room spawn coordinates and spawn monsters.
    			if (strnpcinfo(2) == "prtg_cas01") { setarray .@emproom[0],197,197; }
    			else if (strnpcinfo(2) == "prtg_cas02") { setarray .@emproom[0],157,174; }
    			else if (strnpcinfo(2) == "prtg_cas03") { setarray .@emproom[0],16,220; }
    			else if (strnpcinfo(2) == "prtg_cas04") { setarray .@emproom[0],291,14; }
    			else if (strnpcinfo(2) == "prtg_cas05") { setarray .@emproom[0],266,266; }
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Guardian Knight",1268,1;
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Guardian Master",1251,1;
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Hatii",1252,1;
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Guardian Knight",1219,1;
    			monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Raydric Archer",1276,5;
    		}
    		// Add custom Guild Castles here.
    		else {
    			end;
    		}
    		donpcevent "Agit#"+strnpcinfo(2)+"::OnStartArena";
    		// Disable Kafra Staff...
    		disablenpc "Kafra Staff#"+strnpcinfo(2);
    		end;
    	} 
    
    	else {
    		// Caso a Clã tenha conquistado o Castelo, adicionar seus Emblemas nas Bandeiras de todos os locais.
    		if (strnpcinfo(2) == "aldeg_cas01") { donpcevent "::OnRecvCastleA01"; }
    		else if (strnpcinfo(2) == "aldeg_cas02") { donpcevent "::OnRecvCastleA02"; }
    		else if (strnpcinfo(2) == "aldeg_cas03") { donpcevent "::OnRecvCastleA03"; }
    		else if (strnpcinfo(2) == "aldeg_cas04") { donpcevent "::OnRecvCastleA04"; }
    		else if (strnpcinfo(2) == "aldeg_cas05") { donpcevent "::OnRecvCastleA05"; }
    		else if (strnpcinfo(2) == "gefg_cas01") { donpcevent "::OnRecvCastleG01"; }
    		else if (strnpcinfo(2) == "gefg_cas02") { donpcevent "::OnRecvCastleG02"; }
    		else if (strnpcinfo(2) == "gefg_cas03") { donpcevent "::OnRecvCastleG03"; }
    		else if (strnpcinfo(2) == "gefg_cas04") { donpcevent "::OnRecvCastleG04"; }
    		else if (strnpcinfo(2) == "gefg_cas05") { donpcevent "::OnRecvCastleG05"; }
    		else if (strnpcinfo(2) == "payg_cas01") { donpcevent "::OnRecvCastlePy01"; }
    		else if (strnpcinfo(2) == "payg_cas02") { donpcevent "::OnRecvCastlePy02"; }
    		else if (strnpcinfo(2) == "payg_cas03") { donpcevent "::OnRecvCastlePy03"; }
    		else if (strnpcinfo(2) == "payg_cas04") { donpcevent "::OnRecvCastlePy04"; }
    		else if (strnpcinfo(2) == "payg_cas05") { donpcevent "::OnRecvCastlePy05"; }
    		else if (strnpcinfo(2) == "prtg_cas01") { donpcevent "::OnRecvCastlePt01"; }
    		else if (strnpcinfo(2) == "prtg_cas02") { donpcevent "::OnRecvCastlePt02"; }
    		else if (strnpcinfo(2) == "prtg_cas03") { donpcevent "::OnRecvCastlePt03"; }
    		else if (strnpcinfo(2) == "prtg_cas04") { donpcevent "::OnRecvCastlePt04"; }
    		else if (strnpcinfo(2) == "prtg_cas05") { donpcevent "::OnRecvCastlePt05"; }
    		// Adicione castelos personalizados abaixo.
    		else {
    			end;
    		}
    		// Exibe os guardiões no castelo se adquiridos.
    		donpcevent "Guardian#"+strnpcinfo(2)+"::OnSpawnGuardians";
    		// Exibe a kafra se adquirida.
    		if (GetCastleData(strnpcinfo(2),9) < 1) disablenpc "Funcionária Kafra#"+strnpcinfo(2);
    	}
    	end;
    }
    
    // Kafras do Castelo
    //============================================================
    -	script	Assistente Kafra#woe::guildkafra	-1,{
    
    	set .@GID,GetCastleData(strnpcinfo(2),1);
    
    	if (compare(strnpcinfo(2),"aldeg")) {
    		setarray .@destination$[0],"Al De Baran","aldebaran";
    		setarray .@coordinates[0],132,103;
    	} else if (compare(strnpcinfo(2),"gefg")) {
    		setarray .@destination$[0],"Geffen","geffen";
    		setarray .@coordinates[0],120,39;
    	} else if (compare(strnpcinfo(2),"payg")) {
    		setarray .@destination$[0],"Payon","payon";
    		setarray .@coordinates[0],70,100;
    	} else if (compare(strnpcinfo(2),"prtg")) {
    		setarray .@destination$[0],"Prontera","prontera";
    		setarray .@coordinates[0],278,211;
    	}
    	// Adicione cordenadas personalizadas de Castelos abaixo.
    	else {
    		end;
    	}
    
    	cutin "kafra_01",2;
    	if (getcharid(2) == .@GID) {
    		mes "[Funcionária Kafra]";
    		mes "Bem vindo, membro do clã ^ff0000" + GetGuildName(.@GID) + "^000000.";
    		mes "A Corporação Kafra estará com você onde quer que vá.";
    		next;
    		switch (select("Usar Armazém do Clã.:Usar serviço de Teleporte.:Alugar um carrinho.:Cancelar")) {
    		case 1:
    				mes "[Funcionária Kafra]";
    			if (getskilllv("NV_BASIC") < 6) {
    				mes "Me desculpe, mas para poder usar o armazém, você precisa ser um Aprendiz com no mínimo level 6 de profissão.";
    				close2;
    				cutin "",255;
    				end;
    			}
    			mes "Aqui, deixe-me abrir";
    			mes "seu Armazém para você.";
    			mes "Obrigado por usar";
    			mes "o Serviço Kafra.";
    			close2;
    			cutin "",255;
    			openstorage;
    			end;
    		case 2:
    			mes "[Funcionária Kafra]";
    			mes "Por favor, escolha seu destino.";
    			next;
    			switch (select(.@destination$+" -> 200z:Cancelar")) {
    			case 1:
    					mes "[Funcionária Kafra]";
    				if (Zeny < 200) {
    					mes "Você não possui a quantidade de zenys necessária. Verifique seus zenys novamente.";
    					mes "O serviço de teleporte para "+.@destination$+" custará 200 zeny.";
    					close2;
    					cutin "",255;
    					end;
    				}
    				set Zeny, Zeny - 200;
    				set RESRVPTS,RESRVPTS+2;
    				close2;
    				warp .@destination$[1],.@coordinates[0],.@coordinates[1];
    				end;
    			case 2:
    				close2;
    				cutin "",255;
    				end;
    			}
    		case 3:
    				mes "[Funcionária Kafra]";
    			if (BaseClass != Job_Merchant) {
    				mes "Lamento, mas o serviço de aluguel de carrinhos está disponível somente para a classe de Mercadores e suas evoluções.";
    				close2;
    				cutin "",255;
    				end;
    			}
    			if (checkcart()) {
    				mes "Você já está com um carrinho equipado.";
    				close2;
    				cutin "",255;
    				end;
    			}
    			mes "[Funcionária Kafra]";
    			mes "O aluguel de carrinhos custa 800 zenys. Deseja alugar um carrinho?";
    			next;
    			switch (select("Alugar um Carrinho.:Cancelar")) {
    			case 1:
    				if (Zeny < 800) {
    					mes "[Funcionária Kafra]";
    					mes "Me desculpe, mas você não possui zenys suficientes. São necessários 800 zenys para alugar um carrinho.";
    					close2;
    					cutin "",255;
    					end;
    				}
    				set RESRVPTS,RESRVPTS+8;
    				set Zeny, Zeny - 800;
    				setcart;
    				close2;
    				cutin "",255;
    				end;
    			case 2:
    				close2;
    				cutin "",255;
    				end;
    			}
    		case 4:
    			mes "[Funcionária Kafra]";
    			mes "A Corp. Kafra fará o possível para oferecer o melhor serviço.";
    			mes "Obrigada por usar a Corp. Kafra. Volte sempre.";
    			close2;
    			cutin "",255;
    			end;
    		}
    	}
    	mes "[Funcionária Kafra]";
    	mes "Estou instruída para servir somente os membros do Clã ^ff0000" + getguildname(.@GID) + "^000000. Por favor, procure outra Kafra da cidade mais próxima. Lamentamos pelo inconveniente.";
    	close2;
    	cutin "",255;
    	end;
    }
    
    // Administração
    //============================================================
    -	script	Castle Manager#cm::cm	-1,{
    
    	set .@GID,GetCastleData(strnpcinfo(2),1);
    
    	// .@guardiantype = Definições para os Guardiões nos Castelos.
    	// 1 - Guardião Soldado; 2 - Guardião Arqueiro; 3 - Guardião Cavaleiro
    	// .@guardianposx = Define a coordenada x para um Guardião.
    	// [0] = 1° Guardiões da coordenada x.
    	// .@guardianposy = Define a coordenada y para um Guardião.
    	// [0] = 1° Guardiões da coordenada y.
    	// .@masterroom = Define as coordenadas da "Sala do Tesouro".
    	if (strnpcinfo(2) == "aldeg_cas01") { 
    		setarray .@guardiantype[0],1,2,2,2,2,3,3,3;
    		setarray .@guardianposx[0],17,39,38,45,21,218,213,73;
    		setarray .@guardianposy[0],218,208,196,228,194,24,24,70;
    		setarray .@masterroom[0],113,223;
    	} else if (strnpcinfo(2) == "aldeg_cas02") {
    		setarray .@guardiantype[0],3,3,3,1,1,2,2,2;
    		setarray .@guardianposx[0],27,88,117,60,51,21,36,210;
    		setarray .@guardianposy[0],184,43,46,202,183,177,183,7;
    		setarray .@masterroom[0],134,225;
    	} else if (strnpcinfo(2) == "aldeg_cas03") {
    		setarray .@guardiantype[0],3,3,1,1,1,2,2,2;
    		setarray .@guardianposx[0],90,116,86,116,64,212,195,110;
    		setarray .@guardianposy[0],112,112,120,76,103,160,151,217;
    		setarray .@masterroom[0],229,267;
    	} else if (strnpcinfo(2) == "aldeg_cas04") {
    		setarray .@guardiantype[0],2,2,2,1,1,1,3,3;
    		setarray .@guardianposx[0],187,192,148,145,169,198,48,55;
    		setarray .@guardianposy[0],100,42,88,209,53,77,72,88;
    		setarray .@masterroom[0],83,17;
    	} else if (strnpcinfo(2) == "aldeg_cas05") {
    		setarray .@guardiantype[0],2,2,1,1,3,3,3,3;
    		setarray .@guardianposx[0],51,188,157,157,27,145,156,41;
    		setarray .@guardianposy[0],202,79,192,74,221,78,73,112;
    		setarray .@masterroom[0],64,8;
    	}
    	// Geffen (Feudo de Britoniah)
    	else if (strnpcinfo(2) == "gefg_cas01") {
    		setarray .@guardiantype[0],1,1,1,2,2,3,3,3;
    		setarray .@guardianposx[0],67,184,62,36,50,50,189,200;
    		setarray .@guardianposy[0],179,20,41,186,186,67,41,167;
    		setarray .@masterroom[0],152,117;
    	} else if (strnpcinfo(2) == "gefg_cas02") {
    		setarray .@guardiantype[0],1,1,1,2,2,3,3,3;
    		setarray .@guardianposx[0],64,56,166,35,20,19,166,159;
    		setarray .@guardianposy[0],168,41,25,148,150,41,42,188;
    		setarray .@masterroom[0],145,115;
    	} else if (strnpcinfo(2) == "gefg_cas03") {
    		setarray .@guardiantype[0],2,2,1,1,1,3,3,3;
    		setarray .@guardianposx[0],48,113,48,157,243,157,234,238;
    		setarray .@guardianposy[0],176,214,207,62,41,45,25,160;
    		setarray .@masterroom[0],275,289;
    	} else if (strnpcinfo(2) == "gefg_cas04") {
    		setarray .@guardiantype[0],2,2,1,1,1,3,3,3;
    		setarray .@guardianposx[0],53,31,49,29,147,57,160,148;
    		setarray .@guardianposy[0],191,178,220,46,65,46,50,189;
    		setarray .@masterroom[0],116,123;
    	} else if (strnpcinfo(2) == "gefg_cas05") {
    		setarray .@guardiantype[0],2,2,1,1,1,3,3,3;
    		setarray .@guardianposx[0],45,71,72,66,177,66,177,193;
    		setarray .@guardianposy[0],149,163,142,47,50,17,35,166;
    		setarray .@masterroom[0],149,106;
    	}
    	// Payon (Feudo do Bosque Celestial)
    	else if (strnpcinfo(2) == "payg_cas01") {
    		setarray .@guardiantype[0],2,2,2,2,2,2,2,3;
    		setarray .@guardianposx[0],229,225,222,99,65,36,51,138;
    		setarray .@guardianposy[0],92,80,111,45,31,127,144,133;
    		setarray .@masterroom[0],295,8;
    	} else if (strnpcinfo(2) == "payg_cas02") {
    		setarray .@guardiantype[0],2,2,2,2,2,2,2,3;
    		setarray .@guardianposx[0],237,228,210,57,42,287,264,27;
    		setarray .@guardianposy[0],54,72,41,241,241,257,272,20;
    		setarray .@masterroom[0],141,149;
    	} else if (strnpcinfo(2) == "payg_cas03") {
    		setarray .@guardiantype[0],2,2,2,2,2,2,2,3;
    		setarray .@guardianposx[0],245,269,36,41,39,19,37,268;
    		setarray .@guardianposy[0],37,51,39,39,65,276,277,244;
    		setarray .@masterroom[0],163,167;
    	} else if (strnpcinfo(2) == "payg_cas04") {
    		setarray .@guardiantype[0],2,2,2,2,2,2,2,3;
    		setarray .@guardianposx[0],251,232,231,32,32,35,36,270;
    		setarray .@guardianposy[0],212,212,175,287,232,45,17,41;
    		setarray .@masterroom[0],151,47;
    	} else if (strnpcinfo(2) == "payg_cas05") {
    		setarray .@guardiantype[0],2,2,2,2,2,2,2,3;
    		setarray .@guardianposx[0],19,33,266,266,263,263,250,36;
    		setarray .@guardianposy[0],279,260,234,279,37,21,22,36;
    		setarray .@masterroom[0],153,137;
    	}
    	// Prontera (Feudo das Valquírias)
    	else if (strnpcinfo(2) == "prtg_cas01") {
    		setarray .@guardiantype[0],1,1,1,2,2,3,3,3;
    		setarray .@guardianposx[0],182,182,153,59,50,184,196,107;
    		setarray .@guardianposy[0],62,116,86,28,36,183,189,179;
    		setarray .@masterroom[0],15,209;
    	} else if (strnpcinfo(2) == "prtg_cas02") {
    		setarray .@guardiantype[0],3,3,3,1,1,2,2,2;
    		setarray .@guardianposx[0],161,153,178,71,49,64,7,75;
    		setarray .@guardianposy[0],161,161,44,75,28,186,196,175;
    		setarray .@masterroom[0],207,229;
    	} else if (strnpcinfo(2) == "prtg_cas03") {
    		setarray .@guardiantype[0],3,3,3,1,1,2,2,2;
    		setarray .@guardianposx[0],191,137,45,50,41,191,179,191;
    		setarray .@guardianposy[0],190,190,99,87,87,42,43,72;
    		setarray .@masterroom[0],190,130;
    	} else if (strnpcinfo(2) == "prtg_cas04") {
    		setarray .@guardiantype[0],3,3,3,1,1,1,2,2;
    		setarray .@guardianposx[0],276,274,246,38,29,33,78,36;
    		setarray .@guardianposy[0],14,35,246,240,240,258,48,61;
    		setarray .@masterroom[0],275,160;
    	} else if (strnpcinfo(2) == "prtg_cas05") {
    		setarray .@guardiantype[0],3,3,3,1,1,1,2,2;
    		setarray .@guardianposx[0],266,287,245,236,251,278,32,44;
    		setarray .@guardianposy[0],262,280,250,63,63,253,253,248;
    		setarray .@masterroom[0],281,176;
    	}
    	// Adicione castelos personalizados abaixo.
    	else {
    		end;
    	}
    
    	mes "[ Mordomo " + .@name$ + " ]";
    	if (.@GID == 0) {
    		mes "Eu estou aguardando meu mestre retornar.";
    		mes "Se você deseja falar com ele, também terá que aguardar.";
    		close;
    	}
    	if (GetGuildMaster(.@GID) != strcharinfo(0)) {
    		mes "Eu sou um leal seguidor do mestre ^ff0000" + getguildmaster(.@GID) + "^000000. Nós somos guardiões e defendemos nosso castelo até o fim!";
    		close;
    	}
    	mes "Bem-vindo, meu honorável mestre, ^ff0000" + getguildmaster(.@GID) + "^000000...";
    	mes "Estou a seu serviço para o que precisar e serei fiel as minhas funções.";
    	next;
    	switch(select("Informações do castelo.:Investir no crescimento comercial.:Inverstir na defesa.:Convocar Guardiões.:Serviços da Kafra.:Ir para sala do mestre.")) {
    	case 1:
    		mes "[ Mordomo " + .@name$ + " ]";
    		mes "Mestre, eu vou relatar as informações do castelo.";
    		mes " ";
    		mes "^0000ffO nível de investimento comercial é " + GetCastleData(strnpcinfo(2),2) + ".";
    		if (GetCastleData(strnpcinfo(2),4)) {
    			mes "E você investiu " + GetCastleData(strnpcinfo(2),4) + " vez(es) hoje.";
    		}
    		mes "O nível de defesa do castelo é " + GetCastleData(strnpcinfo(2),3) + ".^000000";
    		if (GetCastleData(strnpcinfo(2),5)) {
    			mes "E você investiu " + GetCastleData(strnpcinfo(2),5) + " vez(es) hoje.^000000";
    		}
    		mes " ";
    		mes "Mestre, esse é todo o relatório de hoje.";
    		close;
    	case 2:
    		set .@Economy,GetCastleData(strnpcinfo(2),2);
    		if (.@Economy < 6) { set .@eco_invest,5000; }
    		else if ((.@Economy >= 6) && (.@Economy <= 10)) { set .@eco_invest,10000; }
    		else if ((.@Economy >= 11) && (.@Economy <= 15)) { set .@eco_invest,20000; }
    		else if ((.@Economy >= 16) && (.@Economy <= 20)) { set .@eco_invest,35000; }
    		else if ((.@Economy >= 21) && (.@Economy <= 25)) { set .@eco_invest,55000; }
    		else if ((.@Economy >= 26) && (.@Economy <= 30)) { set .@eco_invest,80000; }
    		else if ((.@Economy >= 31) && (.@Economy <= 35)) { set .@eco_invest,110000; }
    		else if ((.@Economy >= 36) && (.@Economy <= 40)) { set .@eco_invest,145000; }
    		else if ((.@Economy >= 41) && (.@Economy <= 45)) { set .@eco_invest,185000; }
    		else if ((.@Economy >= 46) && (.@Economy <= 50)) { set .@eco_invest,230000; }
    		else if ((.@Economy >= 51) && (.@Economy <= 55)) { set .@eco_invest,280000; }
    		else if ((.@Economy >= 56) && (.@Economy <= 60)) { set .@eco_invest,335000; }
    		else if ((.@Economy >= 61) && (.@Economy <= 65)) { set .@eco_invest,395000; }
    		else if ((.@Economy >= 66) && (.@Economy <= 70)) { set .@eco_invest,460000; }
    		else if ((.@Economy >= 71) && (.@Economy <= 75)) { set .@eco_invest,530000; }
    		else if ((.@Economy >= 76) && (.@Economy <= 80)) { set .@eco_invest,605000; }
    		else if ((.@Economy >= 81) && (.@Economy <= 85)) { set .@eco_invest,685000; }
    		else if ((.@Economy >= 86) && (.@Economy <= 90)) { set .@eco_invest,770000; }
    		else if ((.@Economy >= 91) && (.@Economy <= 95)) { set .@eco_invest,860000; }
    		else if ((.@Economy >= 96) && (.@Economy <= 100)) { set .@eco_invest,955000; }
    		// Quadrúplica o custo de investimento se já estiver sido feito um investimento anterior.
    		if (GetCastleData(strnpcinfo(2),4)) {
    			set .@eco_invest,.@eco_invest*4;
    		}
    		mes "[ Mordomo " + .@name$ + " ]";
    		mes "Se você aumentar o investimento comercial, a quantidade de tesouros produzidos para o Clã cresce. Se você deseja um futuro próspero, é necessário investir.";
    		mes " ";
    		mes "Originalmente, você pode investir uma vez, mas se pagar mais pode investir o dobro.";
    		mes " ";
    		if (.@Economy >= 100) {
    			mes " ";
    			mes "^ff0000Mas o nível de investimento comercial chegou a 100%. Não é mais necessário investir. Como eu esperava, você possui grande perspicácia mestre.^000000";
    			close;
    		}
    		if (GetCastleData(strnpcinfo(2),4) >= 2) {
    			mes "^ff0000Mas você já investiu duas vezes hoje, então você não pode investir mais.^000000 Eu espero que o nível de investimento cresça cada vez mais.";
    			close;
    		}
    		if (GetCastleData(strnpcinfo(2),4) == 0) {
    			mes "Agora será necessário investir a quantia de ^ff0000" + .@eco_invest + "^000000 zenys. Você vai investir?";
    		} else {
    			mes "Você já investiu hoje... mas se deseja investir novamente, será necessário investir mais ^ff0000" + .@eco_invest + "^000000 zenys.";
    		}
    		next;
    		switch (select("Investir no crescimento comercial.:Cancelar")) {
    		case 1:
    			if (Zeny < .@eco_invest) {
    				mes "[ Mordomo " + .@name$ + " ]";
    				mes "Sinto muito, mas você não possui zenys para investir. Mestre, tente novamente quando tiver juntado mais fundos.";
    				close;
    			}
    			set Zeny, Zeny - .@eco_invest;
    			SetCastleData strnpcinfo(2),4,GetCastleData(strnpcinfo(2),4)+1;
    			mes "[ Mordomo " + .@name$ + "]";
    			mes "Nós concluímos os investimentos em segurança. Espero que nosso nível de comércio tenha aumentado mais até amanhã.";
    			close;
    		case 2:
    			mes "[ Mordomo " + .@name$ + "]";
    			mes "Como o senhor desejar Mestre... Sem pressa. Faremos o nosso melhor.";
    			close;
    		}
    	case 3:
    		set .@Defence,GetCastleData(strnpcinfo(2),3);
    		if (.@Defence < 6) { set .@def_invest,10000; }
    		else if ((.@Defence >= 6) && (.@Defence <= 10)) { set .@def_invest,20000; }
    		else if ((.@Defence >= 11) && (.@Defence <= 15)) { set .@def_invest,40000; }
    		else if ((.@Defence >= 16) && (.@Defence <= 20)) { set .@def_invest,70000; }
    		else if ((.@Defence >= 21) && (.@Defence <= 25)) { set .@def_invest,110000; }
    		else if ((.@Defence >= 26) && (.@Defence <= 30)) { set .@def_invest,160000; }
    		else if ((.@Defence >= 31) && (.@Defence <= 35)) { set .@def_invest,220000; }
    		else if ((.@Defence >= 36) && (.@Defence <= 40)) { set .@def_invest,290000; }
    		else if ((.@Defence >= 41) && (.@Defence <= 45)) { set .@def_invest,370000; }
    		else if ((.@Defence >= 46) && (.@Defence <= 50)) { set .@def_invest,460000; }
    		else if ((.@Defence >= 51) && (.@Defence <= 55)) { set .@def_invest,560000; }
    		else if ((.@Defence >= 56) && (.@Defence <= 60)) { set .@def_invest,670000; }
    		else if ((.@Defence >= 61) && (.@Defence <= 65)) { set .@def_invest,790000; }
    		else if ((.@Defence >= 66) && (.@Defence <= 70)) { set .@def_invest,920000; }
    		else if ((.@Defence >= 71) && (.@Defence <= 75)) { set .@def_invest,1060000; }
    		else if ((.@Defence >= 76) && (.@Defence <= 80)) { set .@def_invest,1210000; }
    		else if ((.@Defence >= 81) && (.@Defence <= 85)) { set .@def_invest,1370000; }
    		else if ((.@Defence >= 86) && (.@Defence <= 90)) { set .@def_invest,1540000; }
    		else if ((.@Defence >= 91) && (.@Defence <= 95)) { set .@def_invest,1720000; }
    		else if ((.@Defence >= 96) && (.@Defence <= 100)) { set .@def_invest,1910000; }
    		// Quadrúplica o custo de investimento se já estiver sido feito um investimento anterior.
    		if (GetCastleData(strnpcinfo(2),5)) {
    			set .@def_invest,.@def_invest*4;
    		}
    		mes "[ Mordomo " + .@name$ + " ]";
    		mes "Se você investir na defesa, a durabilidade dos guardiões e do Emperium irá aumentar. Se você espera possuir uma defesa sólida nas batalhas, invista na defesa.";
    		mes " ";
    		mes "Originalmente, você pode investir uma vez, mas se pagar mais pode investir o dobro.";
    		mes " ";
    		if (.@Defence >= 100) {
    			mes "^ff0000Mas o nível de investimento da defesa chegou a 100%. Não é mais necessário investir. Como eu esperava, você possui grande perspicácia mestre.^000000";
    			close;
    		}
    		if (GetCastleData(strnpcinfo(2),5) >= 2) {
    			mes "^ff0000^ff0000Mas você já investiu duas vezes hoje, então você não pode investir mais.^000000 Eu espero que o nível de defesa cresça cada vez mais.";
    			close;
    		}
    		if (GetCastleData(strnpcinfo(2),5) == 0) {
    			mes "Agora será necessário investir a quantia de ^ff0000" + .@def_invest + "^000000 zenys. Você vai investir?";
    		} else {
    			mes "Você já investiu hoje... mas se deseja investir novamente, será necessário investir mais ^ff0000" + .@def_invest + "^000000 zenys.";
    		}
    		next;
    		switch (select("Investir na defesa.:Cancelar")) {
    		case 1:
    			if (Zeny < .@def_invest) {
    				mes "[ Mordomo " + .@name$ + " ]";
    				mes "Sinto muito, mas você já investiu duas vezes hoje, então você não pode investir mais.";
    				close;
    			}
    			set Zeny, Zeny - .@def_invest;
    			SetCastleData strnpcinfo(2),5,GetCastleData(strnpcinfo(2),5)+1;
    			mes "[ "+strnpcinfo(1)+"]";
    			mes "Nós concluímos os investimentos em segurança. Espero que nosso nível de defesa tenha aumentado mais até amanhã.";
    			close;
    		case 2:
    			mes "[ Mordomo " + .@name$ + " ]";
    			mes "Como o senhor desejar Mestre... Sem pressa. Faremos o nosso melhor!";
    			close;
    		}
    	case 4:
    		mes "["+strnpcinfo(1)+"]";
    		mes "Você vai convocar um Guardião? Eles irão proteger o castelo com lealdade.";
    		mes "Por favor, escolha o guardião que irá defender o nosso castelo.";
    		next;
    		for( set .@i, 0; .@i <= 7 ; set .@i, .@i+1 ) {
    			if (.@guardiantype[.@i] == 1) { set .@type$,"Guardião Soldado"; }
    			else if (.@guardiantype[.@i] == 2) { set .@type$,"Guardião Arqueiro"; }
    			else { set .@type$,"Guardião Cavaleiro"; }
    			if (guardianinfo(strnpcinfo(2),.@i,0)) {
    				setarray .@gname$[.@i], .@type$ + " - Implementado (" + guardianinfo(strnpcinfo(2),.@i,2) + "/" + guardianinfo(strnpcinfo(2),.@i,1) + ")";
    			} else {
    				setarray .@gname$[.@i], .@type$ + " - Não implementado";
    			}
    		}
    		set .@menu$,.@gname$[0]+":"+.@gname$[1]+":"+.@gname$[2]+":"+.@gname$[3]+":"+.@gname$[4]+":"+.@gname$[5]+":"+.@gname$[6]+":"+.@gname$[7];
    		set .@GDnum,select(.@menu$)+9;
    		mes "[ Mordomo " + .@name$ + " ]";
    		mes "Você deseja chamar Guardiões? 10000 zenys são requeridos para convocar cada um.";
    		next;
    		switch (select("Chamar.:Cancelar")) {
    		case 1:
    			if (getgdskilllv(.@GID,10002) == 0) {
    				mes "[ Mordomo " + .@name$ + " ]";
    				mes "Mestre, nós não temos habilidade para convocar Guardiões. Se desejar convocar guardiões, será necessário aprender essa habilidade do Clã, sem essa habilidade nós falharemos ao convocar guardiões.";
    				close;
    			}
    			if (GetCastleData(strnpcinfo(2),.@GDnum) == 1) {
    				mes "[ Mordomo " + .@name$ + " ]";
    				mes "Mestre, você já convocou esse Guardião. Não podemos convocar o mesmo novamente.";
    				close;
    			}
    			if (Zeny < 10000) {
    				mes "[ Mordomo " + .@name$ + " ]";
    				mes "Bem... Eu lamento, mas nós não temos verba para convocar guardiões. Dessa forma falhamos ao convocar novos guardiões.";
    				close;
    			}
    			set Zeny, Zeny - 10000;
    			SetCastleData strnpcinfo(2),.@GDnum,1;
    			set .@UseGID,.@GDnum - 10;
    			if (.@guardiantype[.@UseGID] == 1) { set .@type,1287; }
    			else if (.@guardiantype[.@UseGID] == 2) { set .@type,1285; }
    			else { set .@type,1286; }
    			guardian strnpcinfo(2),.@guardianposx[.@UseGID],.@guardianposy[.@UseGID],strmobinfo(2,.@type),.@type,"Guardian#"+strnpcinfo(2)+"::OnGuardianDied",.@UseGID;
    			mes "[ Mordomo " + .@name$ + " ]";
    			mes "A convocação dos guardiões está completa. Nossa defesa local foi fortalecida.";
    			close;
    		case 2:
    			mes "[ Mordomo " + .@name$ + " ]";
    			mes "Eu fiz como você ordenou. Mas por favor, lembre que se tiver dinheiro sobrando, sempre será útil.";
    			close;
    		}
    	case 5:
    		if (GetCastleData(strnpcinfo(2),9) == 1) {
    			mes "[ Mordomo " + .@name$ + " ]";
    			mes "Agora sobre os serviços da Kafra... Deseja dispensa-los?";
    			next;
    			if (select("Dispensar.:Cancelar.") == 2) {
    				mes "[ Mordomo " + .@name$ + " ]";
    				mes "Aquela Kafra é muito trabalhadora. Penso que seria melhor manter ela.";
    				close;
    			}
    			cutin "kafra_01",2;
    			mes "[Kafra Contratada]";
    			mes "Eu trabalhei tão duro... Mestre, é isso que deseja?... Se o senhor está insatisfeito, trabalhei mais ianda... Por favor, reconsidere mestre.";
    			next;
    			if (select("Dispensar.:Cancelar.") == 2) {
    				mes "[Kafra Contratada]";
    				mes "Eu irei trabalhar arduamente... Muito obrigada!";
    				close;
    			}
    			mes "[Kafra Contratada]";
    			mes "Oh, meu Deus! Isso é um absurdo!";
    			next;
    			cutin "",255;
    			disablenpc "Funcionária Kafra#"+strnpcinfo(2);
    			SetCastleData strnpcinfo(2),9,0;
    			mes "[ Mordomo " + .@name$ + " ]";
    			mes "....";
    			mes "Dispensar o serviço da Kafra... mas... você está descontente com alguma coisa?";
    			close;
    		}
    			mes "[ Mordomo " + .@name$ + " ]";
    			mes "Você deseja contratar os serviços da Kafra para o nosso castelo através do Escritório Central das Kafras?";
    			mes "^ff0000 10000 zenys são necessários para a contratação. ";
    			next;
    			if (select("Contratar.:Cancelar.") == 2 ) {
    				mes "[ Mordomo " + .@name$ + " ]";
    				mes "Fiz como foi ordenado, mas algum dos nossos membros não ficarão felizes. Será melhor contratar outra Kafra rapidamente.";
    				close;
    			}
    			mes "[ Mordomo " + .@name$ + " ]";
    			if (getgdskilllv(.@GID,10001) == 0) {
    				mes "Mestre, não podemos contratar os serviços da Kafra, porque você não fez um contrato com o Escritório Central das Kafras. Se deseja contratar os serviços das Kafras é necessário aprender essa habilidade no Clã.";
    				close;
    			}
    			if (Zeny < 10000) {
    				mes "Bem... Mas nós não temos verba para contratar. Somos incapazes de contratar os serviços das Kafras.";
    				close;
    			}
    			set Zeny,Zeny-10000;
    			enablenpc "Funcionária Kafra#"+strnpcinfo(2);
    			SetCastleData strnpcinfo(2),9,1;
    			mes "Nós concluímos o nosso contrato com o Escritório das Kafras com êxito. Nós contratamos os serviços das Kafras.";
    			next;
    			cutin "kafra_01",2;
    			mes "[Kafra Contratada]";
    			mes "Como você está? Eu sou a Kafra enviada pelo escritório.";
    			mes "Nós faremos o nosso melhor para manter a reputação das Kafras.";
    			next;
    			cutin "",255;
    			mes "[ Mordomo " + .@name$ + " ]";
    			mes "O término do contrato das Kafras, é um mês após a sua contratação, após isso haverá a necessidade do pagamento de uma nova taxa.";
    			mes "Isso será muito útil para os nossos membros.";
    			close;
    
    	case 6:
    		mes "[ Mordomo " + .@name$ + " ]";
    		mes "Você deseja visitar a sala onde nossos tesouros são guardados?";
    		mes "Essa sala é restrita a você... Você é o único que tem acesso a ela.";
    		next;
    		if (select("Entrar na sala secreta.:Cancelar.") == 2) {
    			mes "[ Mordomo " + .@name$ + " ]";
    			mes "Tesouros são produzidos uma vez por dia... se você não buscar eles, não serão produzidos novamente.";
    			mes "Por isso seria interessante vir aqui uma vez por dia e guardar os tesouros no armazém do Clã.";
    			close;
    		}
    		mes "[ Mordomo " + .@name$ + " ]";
    		mes "Por favor, me siga. Mostrarei a passagem secreta.";
    		mes "Para você retornar, basta puxar uma alavanca...";
    		close2;
    		warp strnpcinfo(2),.@masterroom[0],.@masterroom[1];
    		end;
    	}
    }
    
    // Guilda Entradas - Cavernas
    //============================================================
    -	script	Lever#gd::gdlever	-1,{
    
    	set .@GID,GetCastleData(strnpcinfo(2),1);
    
    	if (.@GID == 0) {
    		mes "[Uma voz fazendo eco]";
    		mes "'Aquele que puder superar todas as provações mostrando bravura... encontrará o caminho.'";
    		close;
    	}
    
    	if (compare(strnpcinfo(2),"aldeg")) {
    		set .@destination$,"gld_dun02";
    		if (compare(strnpcinfo(2),"cas01")) setarray .@coordinates[0],32,122;
    		else if (compare(strnpcinfo(2),"cas02")) setarray .@coordinates[0],79,30;
    		else if (compare(strnpcinfo(2),"cas03")) setarray .@coordinates[0],165,38;
    		else if (compare(strnpcinfo(2),"cas04")) setarray .@coordinates[0],160,148;
    		else if (compare(strnpcinfo(2),"cas05")) setarray .@coordinates[0],103,169;
    	} else if (compare(strnpcinfo(2),"gefg")) {
    		set .@destination$,"gld_dun04";
    		if (compare(strnpcinfo(2),"cas01")) setarray .@coordinates[0],39,258;
    		else if (compare(strnpcinfo(2),"cas02")) setarray .@coordinates[0],125,270;
    		else if (compare(strnpcinfo(2),"cas03")) setarray .@coordinates[0],268,251;
    		else if (compare(strnpcinfo(2),"cas04")) setarray .@coordinates[0],268,108;
    		else if (compare(strnpcinfo(2),"cas05")) setarray .@coordinates[0],230,35;
    	} else if (compare(strnpcinfo(2),"payg")) {
    		set .@destination$,"gld_dun01";
    		if (compare(strnpcinfo(2),"cas01")) setarray .@coordinates[0],186,165;
    		else if (compare(strnpcinfo(2),"cas02")) setarray .@coordinates[0],54,165;
    		else if (compare(strnpcinfo(2),"cas03")) setarray .@coordinates[0],54,39;
    		else if (compare(strnpcinfo(2),"cas04")) setarray .@coordinates[0],186,39;
    		else if (compare(strnpcinfo(2),"cas05")) setarray .@coordinates[0],223,202;
    	} else if (compare(strnpcinfo(2),"prtg")) {
    		set .@destination$,"gld_dun03";
    		if (compare(strnpcinfo(2),"cas01")) setarray .@coordinates[0],28,251;
    		else if (compare(strnpcinfo(2),"cas02")) setarray .@coordinates[0],164,268;
    		else if (compare(strnpcinfo(2),"cas03")) setarray .@coordinates[0],164,179;
    		else if (compare(strnpcinfo(2),"cas04")) setarray .@coordinates[0],268,203;
    		else if (compare(strnpcinfo(2),"cas05")) setarray .@coordinates[0],199,28;
    	}
    	// Adicione castelos personalizados abaixo.
    	else {
    		end;
    	}
    
    	mes "[Uma voz fazendo eco]";
    	mes "'Somente quem for bravo o bastante pode passar pelos testes.'";
    	next;
    	mes " ";
    	mes "Há uma pequena alavanca aqui. Deseja puxar ela?";
    	next;
    	if(select("Puxar.:Não puxar.") == 1) {
    		if (getcharid(2) == .@GID) {
    			close2;
    			warp .@destination$,.@coordinates[0],.@coordinates[1];
    			end;
    		}
    		mes " ";
    		mes "Nada aconteceu.";
    		close;
    	}
    	close;
    }
    
    // Guardian Spawner Template
    //============================================================
    -	script	Gld_Guard_Template::Gld_Guard_Template	-1,{
    OnSpawnGuardians:
    	// Definições para os Guardiões nos Castelos.
    	// 1 - Guardião Soldado; 2 - Guardião Arqueiro; 3 - Guardião Cavaleiro
    	// Define a coordenada x para um Guardião.
    	// [0] = 1° Guardiões da coordenada x.
    	// Define a coordenada y para um Guardião.
    	// [0] = 1° Guardiões da coordenada y.
    	// Define as coordenadas da "Sala do Tesouro".
    	// Aldebaran (Feudo de Luina)
    	if (strnpcinfo(2) == "aldeg_cas01") { 
    		setarray .@guardiantype[0],1,2,2,2,2,3,3,3;
    		setarray .@guardianposx[0],17,39,38,45,21,218,213,73;
    		setarray .@guardianposy[0],218,208,196,228,194,24,24,70;
    	} else if (strnpcinfo(2) == "aldeg_cas02") {
    		setarray .@guardiantype[0],3,3,3,1,1,2,2,2;
    		setarray .@guardianposx[0],27,88,117,60,51,21,36,210;
    		setarray .@guardianposy[0],184,43,46,202,183,177,183,7;
    	} else if (strnpcinfo(2) == "aldeg_cas03") {
    		setarray .@guardiantype[0],3,3,1,1,1,2,2,2;
    		setarray .@guardianposx[0],90,116,86,116,64,212,195,110;
    		setarray .@guardianposy[0],112,112,120,76,103,160,151,217;
    	} else if (strnpcinfo(2) == "aldeg_cas04") {
    		setarray .@guardiantype[0],2,2,2,1,1,1,3,3;
    		setarray .@guardianposx[0],187,192,148,145,169,198,48,55;
    		setarray .@guardianposy[0],100,42,88,209,53,77,72,88;
    	} else if (strnpcinfo(2) == "aldeg_cas05") {
    		setarray .@guardiantype[0],2,2,1,1,3,3,3,3;
    		setarray .@guardianposx[0],51,188,157,157,27,145,156,41;
    		setarray .@guardianposy[0],202,79,192,74,221,78,73,112;
    	}
    	// Geffen (Feudo de Britoniah)
    	else if (strnpcinfo(2) == "gefg_cas01") {
    		setarray .@guardiantype[0],1,1,1,2,2,3,3,3;
    		setarray .@guardianposx[0],67,184,62,36,50,50,189,200;
    		setarray .@guardianposy[0],179,20,41,186,186,67,41,167;
    	} else if (strnpcinfo(2) == "gefg_cas02") {
    		setarray .@guardiantype[0],1,1,1,2,2,3,3,3;
    		setarray .@guardianposx[0],64,56,166,35,20,19,166,159;
    		setarray .@guardianposy[0],168,41,25,148,150,41,42,188;
    	} else if (strnpcinfo(2) == "gefg_cas03") {
    		setarray .@guardiantype[0],2,2,1,1,1,3,3,3;
    		setarray .@guardianposx[0],48,113,48,157,243,157,234,238;
    		setarray .@guardianposy[0],176,214,207,62,41,45,25,160;
    	} else if (strnpcinfo(2) == "gefg_cas04") {
    		setarray .@guardiantype[0],2,2,1,1,1,3,3,3;
    		setarray .@guardianposx[0],53,31,49,29,147,57,160,148;
    		setarray .@guardianposy[0],191,178,220,46,65,46,50,189;
    	} else if (strnpcinfo(2) == "gefg_cas05") {
    		setarray .@guardiantype[0],2,2,1,1,1,3,3,3;
    		setarray .@guardianposx[0],45,71,72,66,177,66,177,193;
    		setarray .@guardianposy[0],149,163,142,47,50,17,35,166;
    	}
    	// Payon (Feudo do Bosque Celestial)
    	else if (strnpcinfo(2) == "payg_cas01") {
    		setarray .@guardiantype[0],2,2,2,2,2,2,2,3;
    		setarray .@guardianposx[0],229,225,222,99,65,36,51,138;
    		setarray .@guardianposy[0],92,80,111,45,31,127,144,133;
    	} else if (strnpcinfo(2) == "payg_cas02") {
    		setarray .@guardiantype[0],2,2,2,2,2,2,2,3;
    		setarray .@guardianposx[0],237,228,210,57,42,287,264,27;
    		setarray .@guardianposy[0],54,72,41,241,241,257,272,20;
    	} else if (strnpcinfo(2) == "payg_cas03") {
    		setarray .@guardiantype[0],2,2,2,2,2,2,2,3;
    		setarray .@guardianposx[0],245,269,36,41,39,19,37,268;
    		setarray .@guardianposy[0],37,51,39,39,65,276,277,244;
    	} else if (strnpcinfo(2) == "payg_cas04") {
    		setarray .@guardiantype[0],2,2,2,2,2,2,2,3;
    		setarray .@guardianposx[0],251,232,231,32,32,35,36,270;
    		setarray .@guardianposy[0],212,212,175,287,232,45,17,41;
    	} else if (strnpcinfo(2) == "payg_cas05") {
    		setarray .@guardiantype[0],2,2,2,2,2,2,2,3;
    		setarray .@guardianposx[0],19,33,266,266,263,263,250,36;
    		setarray .@guardianposy[0],279,260,234,279,37,21,22,36;
    	}
    	// Prontera (Feudo das Valquírias)
    	else if (strnpcinfo(2) == "prtg_cas01") {
    		setarray .@guardiantype[0],1,1,1,2,2,3,3,3;
    		setarray .@guardianposx[0],182,182,153,59,50,184,196,107;
    		setarray .@guardianposy[0],62,116,86,28,36,183,189,179;
    	} else if (strnpcinfo(2) == "prtg_cas02") {
    		setarray .@guardiantype[0],3,3,3,1,1,2,2,2;
    		setarray .@guardianposx[0],161,153,178,71,49,64,7,75;
    		setarray .@guardianposy[0],161,161,44,75,28,186,196,175;
    	} else if (strnpcinfo(2) == "prtg_cas03") {
    		setarray .@guardiantype[0],3,3,3,1,1,2,2,2;
    		setarray .@guardianposx[0],191,137,45,50,41,191,179,191;
    		setarray .@guardianposy[0],190,190,99,87,87,42,43,72;
    	} else if (strnpcinfo(2) == "prtg_cas04") {
    		setarray .@guardiantype[0],3,3,3,1,1,1,2,2;
    		setarray .@guardianposx[0],276,274,246,38,29,33,78,36;
    		setarray .@guardianposy[0],14,35,246,240,240,258,48,61;
    	} else if (strnpcinfo(2) == "prtg_cas05") {
    		setarray .@guardiantype[0],3,3,3,1,1,1,2,2;
    		setarray .@guardianposx[0],266,287,245,236,251,278,32,44;
    		setarray .@guardianposy[0],262,280,250,63,63,253,253,248;
    	}
    	// Adicione castelos personalizados abaixo.
    	else {
    		end;
    	}
    
    	// Matar todos os guardiões após serem criados novos..
    	killmonster strnpcinfo(2),strnpcinfo(0)+"::OnGuardianDied";
    
    	for( set .@i, 0; .@i <= 7 ; set .@i, .@i+1 ) {
    		set .@UseGID,.@i + 10;
    		if (.@guardiantype[.@i] == 1) { set .@type,1287; }
    		else if (.@guardiantype[.@i] == 2) { set .@type,1285; }
    		else { set .@type,1286; }
    		if (GetCastleData(strnpcinfo(2),.@UseGID)) {
    			guardian strnpcinfo(2),.@guardianposx[.@i],.@guardianposy[.@i],strmobinfo(2,.@type),.@type,"Guardian#"+strnpcinfo(2)+"::OnGuardianDied",.@i;
    		}
    	}
    	end;
    
    OnGuardianDied:
    	end;
    }
    
    // Layout de Proteção na Sala do Tesouro.
    //============================================================
    -	script	Gld_Trea_Spawn::Gld_Trea_Spawn	-1,{
    	end;
    
    OnClock0001:
    	// Se esse script não é utilizado, então nada acontecerá.
    	if (strnpcinfo(1) == "Gld_Trea_Spawn") end;
    	
    	set .@GID, GetCastleData(strnpcinfo(2),1);
    	
    	// Se não há uma guilda pertencente, nada acontece.
    	if (!.@GID) end;
    
    	// Existe economia no castelo?
    	set .@Treasure,GetCastleData(strnpcinfo(2),2)/5+4;
    
    	// Seta informações.
    	if (strnpcinfo(2) == "aldeg_cas01") { 
    		set .@treasurebox,1324;
    		setarray .@treasurex[0],115,122,115,122,116,117,118,119,120,121,121,121,121,121,121,120,119,118,117,116,116,116,116,116;
    		setarray .@treasurey[0],226,226,219,219,225,225,225,225,225,225,224,223,222,221,220,220,220,220,220,220,221,222,223,224;
    	} else if (strnpcinfo(2) == "aldeg_cas02") { 
    		set .@treasurebox,1326;
    		setarray .@treasurex[0],134,135,135,134,132,133,134,135,136,137,137,137,137,137,137,136,135,134,133,132,132,132,132,132;
    		setarray .@treasurey[0],231,231,230,230,233,233,233,233,233,233,232,231,230,229,228,228,228,228,228,228,229,230,231,232;
    	} else if (strnpcinfo(2) == "aldeg_cas03") { 
    		set .@treasurebox,1328;
    		setarray .@treasurex[0],224,225,225,224,222,223,224,225,226,227,227,227,227,227,227,226,225,224,223,222,222,222,222,222;
    		setarray .@treasurey[0],269,269,268,268,271,271,271,271,271,271,270,269,268,267,266,266,266,266,266,266,267,268,269,270;
    	} else if (strnpcinfo(2) == "aldeg_cas04") { 
    		set .@treasurebox,1330;
    		setarray .@treasurex[0],84,85,85,84,82,83,84,85,86,87,87,87,87,87,87,86,85,84,83,82,82,82,82,82;
    		setarray .@treasurey[0],13,13,12,12,15,15,15,15,15,15,14,13,12,11,10,10,10,10,10,10,11,12,13,14;
    	} else if (strnpcinfo(2) == "aldeg_cas05") { 
    		set .@treasurebox,1332;
    		setarray .@treasurex[0],61,62,62,61,59,60,61,62,63,64,64,64,64,64,64,63,62,61,60,59,59,59,59,59;
    		setarray .@treasurey[0],12,12,11,11,14,14,14,14,14,14,13,12,11,10,9,9,9,9,9,9,10,11,12,13;
    	} else if (strnpcinfo(2) == "gefg_cas01") { 
    		set .@treasurebox,1334;
    		setarray .@treasurex[0],153,154,154,153,151,152,153,154,155,156,156,156,156,156,156,155,154,153,152,151,151,151,151,151;
    		setarray .@treasurey[0],113,113,112,112,115,115,115,115,115,115,114,113,112,111,110,110,110,110,110,110,111,112,113,114;
    	} else if (strnpcinfo(2) == "gefg_cas02") { 
    		set .@treasurebox,1336;
    		setarray .@treasurex[0],139,140,140,139,137,138,139,140,141,142,142,142,142,142,142,141,140,139,138,137,137,137,137,137;
    		setarray .@treasurey[0],115,115,114,114,117,117,117,117,117,117,116,115,114,113,112,112,112,112,112,112,113,114,115,116;
    	} else if (strnpcinfo(2) == "gefg_cas03") { 
    		set .@treasurebox,1338;
    		setarray .@treasurex[0],269,270,270,269,267,268,269,270,271,272,272,272,272,272,272,271,270,269,268,267,267,267,267,267;
    		setarray .@treasurey[0],291,291,290,290,293,293,293,293,293,293,292,291,290,289,288,288,288,288,288,288,289,290,291,292;
    	} else if (strnpcinfo(2) == "gefg_cas04") { 
    		set .@treasurebox,1340;
    		setarray .@treasurex[0],115,116,116,115,113,114,115,116,117,118,118,118,118,118,118,117,116,115,114,113,113,113,113,113;
    		setarray .@treasurey[0],119,119,118,118,121,121,121,121,121,121,120,119,118,117,116,116,116,116,116,116,117,118,119,120;
    	} else if (strnpcinfo(2) == "gefg_cas05") { 
    		set .@treasurebox,1342;
    		setarray .@treasurex[0],143,144,144,143,141,142,143,144,145,146,146,146,146,146,146,145,144,143,142,141,141,141,141,141;
    		setarray .@treasurey[0],110,110,109,109,112,112,112,112,112,112,111,110,109,108,107,107,107,107,107,107,108,109,110,111;
    	} else if (strnpcinfo(2) == "payg_cas01") { 
    		set .@treasurebox,1344;
    		setarray .@treasurex[0],289,292,292,289,288,289,290,291,292,293,293,293,293,293,293,292,291,290,289,288,288,288,288,288;
    		setarray .@treasurey[0],10,10,7,7,11,11,11,11,11,11,10,9,8,7,6,6,6,6,6,6,7,8,9,10;
    	} else if (strnpcinfo(2) == "payg_cas02") { 
    		set .@treasurebox,1346;
    		setarray .@treasurex[0],143,146,146,143,142,143,144,145,146,147,147,147,147,147,147,146,145,144,143,142,142,142,142,142;
    		setarray .@treasurey[0],146,146,143,143,147,147,147,147,147,147,146,145,144,143,142,142,142,142,142,142,143,144,145,146;
    	} else if (strnpcinfo(2) == "payg_cas03") { 
    		set .@treasurebox,1348;
    		setarray .@treasurex[0],158,159,159,158,156,157,158,159,160,161,161,161,161,161,161,160,159,158,157,156,156,156,156,156;
    		setarray .@treasurey[0],169,169,168,168,171,171,171,171,171,171,170,169,168,167,166,166,166,166,166,166,167,168,169,170;
    	} else if (strnpcinfo(2) == "payg_cas04") { 
    		set .@treasurebox,1350;
    		setarray .@treasurex[0],146,147,147,146,144,145,146,147,148,149,149,149,149,149,149,148,147,146,145,144,144,144,144,144;
    		setarray .@treasurey[0],48,48,47,47,50,50,50,50,50,50,49,48,47,46,45,45,45,45,45,45,46,47,48,49;
    	} else if (strnpcinfo(2) == "payg_cas05") { 
    		set .@treasurebox,1352;
    		setarray .@treasurex[0],155,158,158,155,154,155,156,157,158,159,159,159,159,159,159,158,157,156,155,154,154,154,154,154;
    		setarray .@treasurey[0],134,134,131,131,135,135,135,135,135,135,134,133,132,131,130,130,130,130,130,130,131,132,133,134;
    	} else if (strnpcinfo(2) == "prtg_cas01") { 
    		set .@treasurebox,1354;
    		setarray .@treasurex[0],10,11,11,10,8,9,10,11,12,13,13,13,13,13,13,12,11,10,9,8,8,8,8,8;
    		setarray .@treasurey[0],209,209,208,208,211,211,211,211,211,211,210,209,208,207,206,206,206,206,206,206,207,208,209,210;
    	} else if (strnpcinfo(2) == "prtg_cas02") { 
    		set .@treasurebox,1356;
    		setarray .@treasurex[0],201,202,202,201,199,200,201,202,203,204,204,204,204,204,204,203,202,201,200,199,199,199,199,199;
    		setarray .@treasurey[0],228,228,227,227,230,230,230,230,230,230,229,228,227,226,225,225,225,225,225,225,226,227,228,229;
    	} else if (strnpcinfo(2) == "prtg_cas03") { 
    		set .@treasurebox,1358;
    		setarray .@treasurex[0],187,188,188,187,185,186,187,188,189,190,190,190,190,190,190,189,188,187,186,185,185,185,185,185;
    		setarray .@treasurey[0],132,132,131,131,134,134,134,134,134,134,133,132,131,130,129,129,129,129,129,129,130,131,132,133;
    	} else if (strnpcinfo(2) == "prtg_cas04") { 
    		set .@treasurebox,1360;
    		setarray .@treasurex[0],269,270,270,269,267,268,269,270,271,272,272,272,272,272,272,271,270,269,268,267,267,267,267,267;
    		setarray .@treasurey[0],162,162,161,161,164,164,164,164,164,164,163,162,161,160,159,159,159,159,159,159,160,161,162,163;
    	} else if (strnpcinfo(2) == "prtg_cas05") { 
    		set .@treasurebox,1362;
    		setarray .@treasurex[0],275,276,276,275,273,274,275,276,277,278,278,278,278,278,278,277,276,275,274,273,273,273,273,273;
    		setarray .@treasurey[0],178,178,177,177,180,180,180,180,180,180,179,178,177,176,175,175,175,175,175,175,176,177,178,179;
    	}
    	else {
    		end;
    	}
    
    	// Aplicar investimento a Economia e Defesa. Desenvolvimento permanente só pode ocorrer uma vez por dia.
    	if (GetCastleData(strnpcinfo(2),4)) {
    		set .@Economy,GetCastleData(strnpcinfo(2),2);
    		SetCastleData strnpcinfo(2),2,.@Economy + GetCastleData(strnpcinfo(2),4) + (rand(2) && getgdskilllv(.@GID,10014));
    		if (GetCastleData(strnpcinfo(2),2) > 100) SetCastleData strnpcinfo(2),2,100;
    	}
    	if (GetCastleData(strnpcinfo(2),5)) {
    		set .@Defence,GetCastleData(strnpcinfo(2),3);
    		SetCastleData strnpcinfo(2),3,.@Defence + GetCastleData(strnpcinfo(2),5);
    		if (GetCastleData(strnpcinfo(2),3) > 100) SetCastleData strnpcinfo(2),3,100;
    	}
    	// Resetar limite de investimentos diários.
    	setcastledata strnpcinfo(2),4,0;
    	setcastledata strnpcinfo(2),5,0;
    
    	// Spawn de caixas.
    	for (set .@i,0; .@i < .@Treasure ; set .@i,.@i+1) {
    		// set treasure box ID
    		set .@boxid, .@treasurebox + (.@i+2) % 2;
    		set .@box,1 << .@i;
    		// Gera ou não gera baús se já existirem.
    		if ((getd("$@"+strnpcinfo(2)+"_treasure") & .@box) == 0) {
    			monster strnpcinfo(2),.@treasurex[.@i],.@treasurey[.@i],"Treasure Chest",.@boxid,1,"Treasure#"+strnpcinfo(2)+"::OnTreasureDied"+.@i;
    			setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") | .@box;
    		}
    	}
    	end;
    
    // "Você quebrou o baú", são setados de forma individual.
    OnTreasureDied0:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~1;
    	end;
    OnTreasureDied1:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~2;
    	end;
    OnTreasureDied2:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~4;
    	end;
    OnTreasureDied3:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~8;
    	end;
    OnTreasureDied4:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~16;
    	end;
    OnTreasureDied5:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~32;
    	end;
    OnTreasureDied6:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~64;
    	end;
    OnTreasureDied7:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~128;
    	end;
    OnTreasureDied8:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~256;
    	end;
    OnTreasureDied9:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~512;
    	end;
    OnTreasureDied10:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~1024;
    	end;
    OnTreasureDied11:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~2048;
    	end;
    OnTreasureDied12:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~4096;
    	end;
    OnTreasureDied13:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~8192;
    	end;
    OnTreasureDied14:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~16384;
    	end;
    OnTreasureDied15:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~32768;
    	end;
    OnTreasureDied16:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~65536;
    	end;
    OnTreasureDied17:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~131072;
    	end;
    OnTreasureDied18:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~262144;
    	end;
    OnTreasureDied19:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~524288;
    	end;
    OnTreasureDied20:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~1048576;
    	end;
    OnTreasureDied21:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~2097152;
    	end;
    OnTreasureDied22:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~4194304;
    	end;
    OnTreasureDied23:
    	setd "$@"+strnpcinfo(2)+"_treasure",getd("$@"+strnpcinfo(2)+"_treasure") & ~8388608;
    	end;
    }
    
    // Sala do Tesouro
    
    -	script	Gld_Trea_Protect::Gld_Trea_Protect	-1,{
    
    OnTouch:
    	// Armazena a ID da Guilda ocupante do Castelo.
    	set .@GID, getcastledata(strnpcinfo(2),1);
    		if (strcharinfo(0) != getguildmaster(.@GID)) {
    			if (compare(strnpcinfo(2),"aldeg"))
    				warp "aldebaran",143,112;
    			else if (compare(strnpcinfo(2),"gefg"))
    				warp "geffen",120,38;
    			else if (compare(strnpcinfo(2),"payg"))
    				warp "payon",100,100;
    			else if (compare(strnpcinfo(2),"prtg"))
    				warp "prontera",119,64;
    		}
    	end;
    }
    
    prtg_cas01,11,208,0	duplicate(Gld_Trea_Protect)	ban_warp#prtg_cas01	-1,6,6
    prtg_cas02,202,228,0	duplicate(Gld_Trea_Protect)	ban_warp#prtg_cas02	-1,6,6
    prtg_cas03,189,132,0	duplicate(Gld_Trea_Protect)	ban_warp#prtg_cas03	-1,6,6
    prtg_cas04,271,162,0	duplicate(Gld_Trea_Protect)	ban_warp#prtg_cas04	-1,6,6
    prtg_cas05,276,178,0	duplicate(Gld_Trea_Protect)	ban_warp#prtg_cas05	-1,6,6
    
    payg_cas01,291,8,0	duplicate(Gld_Trea_Protect)	ban_warp#payg_cas01	-1,6,6
    payg_cas02,145,144,0	duplicate(Gld_Trea_Protect)	ban_warp#payg_cas02	-1,6,6
    payg_cas03,159,168,0	duplicate(Gld_Trea_Protect)	ban_warp#payg_cas03	-1,6,6
    payg_cas04,147,48,0	duplicate(Gld_Trea_Protect)	ban_warp#payg_cas04	-1,6,6
    payg_cas05,157,132,0	duplicate(Gld_Trea_Protect)	ban_warp#payg_cas05	-1,6,6
    
    aldeg_cas01,118,223,0	duplicate(Gld_Trea_Protect)	ban_warp#aldeg_cas01	-1,8,8
    aldeg_cas02,135,230,0	duplicate(Gld_Trea_Protect)	ban_warp#aldeg_cas02	-1,8,8
    aldeg_cas03,225,269,0	duplicate(Gld_Trea_Protect)	ban_warp#aldeg_cas03	-1,8,8
    aldeg_cas04,84,13,0	duplicate(Gld_Trea_Protect)	ban_warp#aldeg_cas04	-1,8,8
    aldeg_cas05,62,12,0	duplicate(Gld_Trea_Protect)	ban_warp#aldeg_cas05	-1,8,8
    
    gefg_cas01,154,112,0	duplicate(Gld_Trea_Protect)	ban_warp#gefg_cas01	-1,6,6
    gefg_cas02,140,116,0	duplicate(Gld_Trea_Protect)	ban_warp#gefg_cas02	-1,6,6
    gefg_cas03,271,290,0	duplicate(Gld_Trea_Protect)	ban_warp#gefg_cas03	-1,6,6
    gefg_cas04,116,119,0	duplicate(Gld_Trea_Protect)	ban_warp#gefg_cas04	-1,6,6
    gefg_cas05,144,110,0	duplicate(Gld_Trea_Protect)	ban_warp#gefg_cas05	-1,6,6

     

     

  5. On 7/25/2019 at 10:03 PM, HD Scripts said:

    Irei testar.
    Caso funcione o comando @fontcolor, será que daria pra setar uma variável padrão do emulador que é iniciada quando o mesmo inicia?

    #edit

    Então, eu testei o comando @fontcolor, e o mesmo não funciona como eu imaginei.
    Terei que estudar como criar os canais corretamente.

    Se não me engano isso é um opcional que da para aplicar no diff do hedex.

  6. 2 hours ago, DoomSlayer said:

    pode postar o resto do script? acho que isto deve funcionar
     

    
    -	script	MvPCash	FAKE_NPC,{
    	end;
    
    OnNPCKillEvent:
    	if (getmonsterinfo(killedrid,22)){				//Se o monstro der Exp de MvP vai dar CASH
    	dispbottom "Você Ganhou 50 Pontos de Cash";
    	set #CASHPOINTS, #CASHPOINTS + 50;
    	}
    	end;
    }

     

    Quote
    
    -	script	mvpcash	-1,{
    
    OnInit:
    setarray .mobid[0],1059,1647,1511,1651,1650,1785,1039,1399,1874,1086,1871,2068,1502,1251,1719,1046,1389,1112,1115,1658,1157,1150,1159,1312,1885,1252,1832,1734,1779,1630,1688,1646,1147,1708,1648,1917,1087,1038,1768,1623,1492,1272,1373,1190,1418,2022,1649,1583,1751,1685;
    
    OnNPCKillEvent:
    for (set .@c, 0; .@c < getarraysize(.mobid); set .@c, .@c + 1)
        if (killedrid == .mobid[.@c])
            set .@s, 1; // If a MvP
    if (!.@s) end;
    dispbottom "Você Ganhou 50 Pontos de Cash";
    set #CASHPOINTS, #CASHPOINTS + 50;
    end;
    
    }

     

    Esse é ele completo.

     

    Edit. Testei seu script agora, mas ao matar 1 mvp ele não da cash  porem tbm n apresenta erro.  Funcionou sim, eu que fui desatento e não tirei o comentário do script que habilita os npcs. E além de ter tirado uma duvida minha tbm. Pois sempre que uso 1-{ para tornar o npc invisível dava erro. Agora usei o fake_npc,{ e o sv já n tem mais erro. 

     

    Valeu pela ajuda @DoomSlayer

  7. Boa noite pessoa, estou com esse npc que da 50 de cash para quem matar os mvps listados, porem ao adicionar o script no emulador e ligar, ele apresenta o erro da imagem. Alguém saberia como resolver?

    Quote
    
    OnNPCKillEvent:
    for (set .@c, 0; .@c < getarraysize(.mobid); set .@c, .@c + 1)
        if (killedrid == .mobid[.@c]) // a parte que acusa o erro.
            set .@s, 1; // If a MvP
    if (!.@s) end;
    dispbottom "Você Ganhou 50 Pontos de Cash";
    set #CASHPOINTS, #CASHPOINTS + 50;
    end;
    
    }

     

    image.thumb.png.54aaf1ad292594f4db655978932657c5.png

  8. Boa tarde pessoal queria saber qual é a função no script que alterar uma variável para uma string. pois no cronus usávamos [function implode] porem no rAthena eu não sei qual.

    Alguém poderia me ajudar?

    segue o script abaixo

    Spoiler
    
    //=====  Script  =======================================================================
    //= (Jogo da Forca)
    //===== By: ==================================================================================
    //= by Candy
    //===== Current Version: =====================================================================
    //= um Simples jogo de Jogo da Forca
    //===== Additional Comments: =================================================================
    // 1.4 Traduzido por: Renato Guedes ( Thor )
    // 1.5 Alterado o Nome do NPC para "Jogo da Forca"
    //============================================================================================
    
    prontera,154,204,4	script	Jogo da Forca	935,{
    
    	//=== Configurations ======================================================================
    
    		set .@npc$ , "^0000FF[Jogo da Forca]^000000" ; // Nome do NPC.
    		set .@minlength , 4  ;                // char no mínimo no mapa
    		set .@maxlength , 12 ;               // não podemos ver mais de 12 personagens em um chatroom...
    		set .@color$ , "^792d5b" ;          // A cor de colorise o texto °°
    		set .@rungame , 0 ;                // M nível mínimo para configurar o NPC (padrão 0)
    		set .@logword , 0 ;               // Log a palavra entra pelas pessoas? 0 = não 1 = sim (logmes + debugmes)
    		set .check_gotocount, 2048 ;     // Limite de loop infinito.
    		set .autoevent , 1 ;            // Por padrão todos os 30 minutos.
    		set .cutinposition , 2 ;      //   0, 1 , 2 , 3 , 4  (Ver o doc)
    	//=========================================================================================
    
    	//=== Functions ============================================================================
    		function change_case  ;              // Função para alterar o caso de uma letra.
    		function array_search ;            // Retorna um valor que é armazenar em um array.
    		function str_to_array ;           // Alterar uma string para uma variável.
    		function implode ;               // Alterar uma variável para uma string.
    		function load_cutin ;
    	//=========================================================================================
    
    
    		switch( ( ! .block && .@rungame > getgmlevel() ) ? 2 : .block )
    		{
    
    
    			case 0:
    
    
    					do
    					{
    
    						// Carregar as definições.
    						if ( ! .init )
    							donpcevent strnpcinfo(0) + "::OnInit" ;
    
    						//Inicializar o jogador/NPC..
    						set .block   ,  1 ;  // Não bloquear o NPC.
    						set .@string$ , "" ;    // init the var.
    						initnpctimer ;       // Timer para depurar.
    
    						mes .@npc$ ;
    						mes "Insira uma palavra com " + .@color$ + .@minlength + "^000000 ate " + .@color$ + .@maxlength + "^000000 caracteres." ;
    						mes "( " +.@color$ + "\"0\"^000000 para sair )" ;
    						next ;
    
    
    						while( input( .@string$, .@minlength, .@maxlength ) || ! str_to_array( .@string$  , ".letter$" ) )
    						{
    
    							// "0" --> "exit".
    							if ( .@string$ == "0" )
    							{
    
    								close2;
    								set .block , 0 ;
    								cleararray .letter$[0] , "" , 128 ;
    								end ;
    
    							}
    
    							mes .@npc$ ;
    							mes "O tamanho da palavra estar incorreto ou existe um caractere invalido." ;
    							next ;
    							
    							mes .@npc$ ;
    							mes "Insira uma palavra de " + .@color$ + .@minlength + "^000000 para " + .@color$ + .@maxlength + "^000000 caracteres" ;
    							next ;
    
    						}
    
    
    						mes .@npc$ ;
    						mes "Use \"" +  .@color$  + .@string$ + "^000000\" ?" ;
    						next ;
    
    						set .init , 0 ;
    
    					} while ( select( " -  Sim: -  Não" ) == 2 ) ;
    
    
    
    			AutoSelect:
    
    					set .lettercount , getarraysize( .letter$ ) - 1 ;    // Char número.
    					set .wordsearch$ , .@string$ ;                        // Salvar em um "." var.
    
    
    					if ( .@logword && playerattached() ) // Para evitar um erro, se é um autoevent (jogador não está em anexo) 
    					{
    
    						logmes "|Jogo da Forca| " + strcharinfo(0)+ " digite uma palavra : " + .@string$ ;
    						debugmes "|Jogo da Forca| " + strcharinfo(0) + " digite um mote : " + .@string$ ;
    
    					}
    
    
    					for ( set .@i , 0 ; .@i < .lettercount ; set .@i , .@i + 1 ) // Criamos o " _ _ _ _" string.
    					{
    						set .letterhide$[ .@i ] , " _" ;
    					}
    
    
    					set .letterhide$[ 0 ], .letter$[ 0 ] ;                        // Mostramos a primeira letra.
    					set .letterhide$[ .lettercount ], .letter$[ .lettercount ] ;  // Mostramos a última letra.
    
    
    
    
    
    					for ( set .@i , 0 ; .@i < .lettercount ; set .@i , .@i + 1 )
    					{
    
    						set .@j , ( array_search ( .letter$[ 0 ] , ".letter$" , .@i , .lettercount ) ) ;
    
    						if ( .@j + 1 )
    						{
    							set .letterhide$[ .@j ], .letter$[ .@j ] ;
    							set .@i , .@j ;
    						}
    
    					}
    
    					for ( set .@i , 0 ; .@i < .lettercount ; set .@i , .@i + 1 )
    					{
    
    						set .@j, ( array_search( .letter$[ .lettercount ] , ".letter$" ,	.@i , .lettercount ) ) ;
    
    						if ( .@j + 1 )
    						{
    							set .letterhide$[ .@j ], .letter$[ .@j ] ;
    							set .@i, .@j ;
    						}
    
    					}
    
    
    					set .wordfind$ , implode( "" , ".letterhide$" ) ;
    					initnpctimer ;
    					delwaitingroom ;
    					waitingroom .wordfind$ , 0 ;   // Criar o Chat-Room 
    					set .block , 3 ;               // desbloquear o jogo.
    
    				if ( playerattached() )
    					close ;
    				else
    					end ;
    
    
    
    
    
    
    			case 1:   // Alguém está a criação do NPC. 
    
    					mes .@npc$ ;
    					mes "Alguem esta criando o jogo..." ;
    					mes "Aguarde." ;
    					close ;
    
    
    					
    			case 2:  // Ele não pode config o NPC.
    			
    					mes .@npc$ ;
    					mes "Você não pode iniciar o jogo!" ;
    					close ;
    
    
    			case 3:
    
    
    					do
    					{
    
    						if ( .wordfind$ == "" )
    						{
    							close2;
    							cutin "" , 255 ;
    							end;
    						}
    
    						mes .@npc$ ;
    						mes .wordfind$ ;   // Mostramos a palavra.
    						load_cutin() ;
    
    						mes "Letras já utilizadas: " + .@color$ + ( implode( " " , ".blacklist$" ) ) + "^000000." ; //Mostramos a lista.
    						next ;
    
    
    
    						if ( select( " -  Digitar uma letra.: -  Digitar a Palavra" ) - 1 )
    						{
    
    							// digite uma palavra.
    							mes .@npc$ ;
    							mes "Se você já sabe a palavra? então digite ela toda!" ;
    							next ;
    							input @string$ ;
    
    
    							if ( compare( "_|~key~|_" + @string$ + "_|~key~|_" , "_|~key~|_" + .wordsearch$ + "_|~key~|_" ) )
    							{
    
    								announce strcharinfo( 0 ) + " Encontrou a palavra: " + .wordsearch$ + " !", bc_blue | bc_map ;
    								donpcevent strnpcinfo( 0 ) + "::OnInit" ;    //On Reset.
    
    								mes .@npc$ ;
    								mes "Parabéns !" ;
    
    								close2 ;
    								cutin "" , 255 ;
    								end ;
    
    							}
    							else
    							{
    
    								mes .@npc$ ;
    								mes "A palavra esta errada." ;
    
    								load_cutin( 1 ) ;
    
    								next ;
    								continue ;
    
    							}
    
    						}
    
    
    
    						// Input letter :
    
    						mes .@npc$ ;
    						mes "Escolha uma letra" ;
    						mes "(" +.@color$ + " 0^000000 para sair. )" ;
    						next ;
    
    						if ( input( @string$ , 1 , 1 ) )
    						{
    
    							mes .@npc$ ;
    							mes "Ops! digite só uma letra." ;
    							mes "Obrigado!" ;
    							next ;
    							continue ;
    
    						}
    
    
    						if ( @string$ == "0" )
    						{
    							close2 ;
    							cutin "" , 255 ;
    							end ;
    						}
    
    						set @string$ , change_case( @string$ ) ;
    
    						if ( @string$ == "0" ) // Se não for uma letrar (alfabeto aA-zZ)
    						{
    					
    							mes .@npc$ ;
    							mes "Caracteres Proibido." ;
    							next ;
    							continue ;
    
    						}
    						else if ( array_search ( @string$ , ".blacklist$") + 1 )   // Letra já utilizado.
    						{
    
    							mes .@npc$ ;
    							mes "Esta letra é já foi dita (veja a lista)" ;
    							mes "Eescolha uma outra." ;
    							next ;
    							continue ;
    
    						}
    
    						set .blacklist$[ getarraysize( .blacklist$ ) ] , @string$ ;    // Colocamos a letra na lista. 
    						set @i , array_search( @string$, ".letter$") ;
    
    						if ( @i == -1 )    // A letra não está na palavra. .
    						{
    
    							heal - MaxHP / 5 , 0 ; //Vida divised por 5.
    							mes .@npc$ ;
    							mes "Não é possível encontrar a letra na palavra..." ;
    							load_cutin( 1 ) ;
    							next ;
    							continue ;
    
    						}
    						else
    						{
    
    							mes .@npc$ ;
    							mes "Letra está na palavra !" ;
    
    
    							for ( set @i , 0 ; @i < .lettercount ; set @i , @i + 1 )
    							{
    
    								set @j , ( array_search( @string$ , ".letter$" ,	@i , .lettercount ) ) ;
    
    								if ( @j + 1 )
    								{
    									set .letterhide$[ @j ], .letter$[ @j ] ;
    									set @i, @j ;
    								}
    
    							}
    
    							set .wordfind$ , implode( " " , ".letterhide$" ) ;
    
    							delwaitingroom ;   // devemos atualizar o chat-room nome 
    							waitingroom .wordfind$ , 0 ;
    
    
    							if ( array_search( " _" , ".letterhide$" ) == -1 )    //Se todas as letras são encontrar.
    							{
    
    								announce strcharinfo( 0 ) + " Descobriu a palavra: " + .wordsearch$ + " !", bc_blue | bc_map ;
    								donpcevent strnpcinfo( 0 ) + "::OnInit" ;
    								close2 ;
    								cutin "" , 255 ;
    								end ;
    
    							}
    
    							next ;
    
    							if ( select( " -  Continuar: -  Sair" ) - 1 )
    							{
    								close2 ;
    								cutin "" , 255 ;
    								end ;
    							}
    						}
    
    					} while( HP ) ;
    
    
    					// O jogador é mort x)
    
    					mes .@npc$ ;
    					mes "Ahhhh, Você Perdeu..." ;
    					announce "|Jogo da Forca| " + strcharinfo( 0 ) + " Perdeu! e acaba de ser morto" , bc_blue | bc_area ;
    					close2 ;
    					cutin "" , 255 ;
    					end ;
    
    		}
    
    
    
    
    	OnInit:
    
    		delwaitingroom ;
    		set .block , 0 ;
    		set .init  , 1 ;
    		set .stat , 0 ;
    
    		cleararray .letter$[ 0 ]     , "" , 128 ;
    		cleararray .blacklist$[ 0 ]  , "" , 128 ;
    		cleararray .letterhide$[ 0 ] , "" , 128 ;
    
    		set .lettercount , 0  ;
    		set .wordfind$   , "" ;
    		set .wordsearch$ , "" ;
    
    		setarray .wordlist$[0], //Por favor, é só usar Aa-Zz personagens!
    		"eathena",
    		"bored",
    		"keyworld",
    		"kissme",
    		"mysevername",
    		"poring",
    		"lunatic",
    		"fabre",
    		"noidea";
    
    		end ;
    
    
    	OnMinute00:
    	OnMinute30:
    
    	if ( .autoevent )
    	{
    		set .@i , rand ( 0 , getarraysize( .wordlist$ ) - 1 ) ;
    		str_to_array( .wordlist$[.@i]  , ".letter$" ) ;
    		set .@string$ , .wordlist$[.@i] ;
    		callsub AutoSelect;
    	}
    
    	//Debug
    	OnTimer120000:
    
    		if ( .block - 1 )
    			end ;
    		else
    		{
    			set .block , 0 ;
    			stopnpctimer ;
    		}
    
    
    	OnTimer600000:
    
    		donpcevent strnpcinfo(0) + "::OnInit" ;
    		stopnpctimer ;
    		end ;
    
    
    
    
    
    
    
    
    
    
    
    	//=== FUNCTIONS ===========================================================================
    
    	function	load_cutin	{
    	
    		if ( getarg( 0 , 0 ) )
    			set .stat , .stat + 1 ;
    		
    		cutin "hangman_" + .stat , .cutinposition ;
    		
    		if ( .stat >= 10 )
    		{
    			announce "|Jogo da Forca| Ninguem encontrara a palavra! hahaha! " , bc_blue | bc_area ;
    			donpcevent strnpcinfo(0) + "::OnInit" ;
    		}
    		
    		return ;
    	}
    
    	function	change_case	{
    
    
    		setarray .@char$[ 0 ],
    		"A" , "B" , "C" , "D" , "E" , "F" , "G",
    		"H" , "I" , "J" , "K" , "L" , "M" , "N" ,
    		"O" , "P" , "Q" , "R" , "S" , "T" , "U" ,
    		"V" , "W" , "X" , "Y" , "Z" ;
    
    		for( set .@i , 0 ; .@i < 26 ; set .@i, .@i + 1 )
    		{
    	
    			if ( compare( getarg( 0 ) , .@char$[ .@i ] ) )
    			{
    
    				return .@char$[ .@i ] ;
    
    			}
    
    		}
    
    		return "0" ;
    
    	}
    
    
    
    
    	function	array_search	{
    
    
    
    		for ( set .@i , getarg(2,0) ; .@i < getarg( 3, getarraysize( getd( getarg(1) ) )  ) ; set .@i , .@i + 1 )
    		{
    
    			if ( getd( getarg( 1 ) + "[" + .@i + "]" ) == getarg( 0 ) )
    			{
    
    				return .@i ;
    
    			}
    
    		}
    
    
    		return -1 ;
    
    	}
    	
    	
    
    
    
    	function	str_to_array	{
    
    
    
    		if ( getstrlen( getarg(0) ) >= 110 )
    		{
    			return 0 ;
    		}
    
    
    		if ( atoi( getd( getarg(1) ) ) )
    		{
    			cleararray getd( getarg(1) + "[ 0 ]" ) , 0 , 128 ;
    		}
    		else
    		{
    			cleararray getd( getarg(1) + "[ 0 ]" ) , "" , 128 ;
    		}
    
    		setarray .@char$[ 0 ],
    		"A" , "B" , "C" , "D" , "E" , "F" , "G",
    		"H" , "I" , "J" , "K" , "L" , "M" , "N" ,
    		"O" , "P" , "Q" , "R" , "S" , "T" , "U" ,
    		"V" , "W" , "X" , "Y" , "Z" ;
    
    		set .@j , 0 ;
    		set .@str_temp$, "_|~key~|_" + getarg(0) + "_|~key~|_" ;
    
    
    
    		while( ! compare ( "_|~key~|_" + .@str$ + "_|~key~|_" , .@str_temp$ ) )
    		{
    
    			set .@j , .@j + 1 ;
    
    			for ( set .@i , 0 ; .@i <= getarraysize(.@char$) ; set .@i , .@i + 1 )
    			{
    
    				if ( compare( .@str_temp$ , "_|~key~|_" + .@str$ + .@char$[ .@i ] ) )
    				{
    
    					set .@str$ , .@str$ + .@char$[ .@i ] ;
    					setd getarg(1) + "[" + getarraysize( getd( getarg(1) ) ) + "]" , .@char$[ .@i ] ;
    					break;
    
    				}
    
    			}
    
    
    			// Caracteres não encontrado.
    			if ( .@i == getarraysize( .@char$ ) )
    				return 0 ;
    
    
    			if ( .@j >= .check_gotocount / getarraysize(.@char$) - 1 )
    			{
    
    				sleep2( 1 ) ;
    				set .@j , 0 ;
    
    			}
    
    		}
    
    		return 1 ;
    
    	}
    
    
    
    
    	function	implode	{
    
    
    		set .@str_temp$ , "" ;
    		
    		for ( set .@i , 0 ; .@i < getarraysize( getd( getarg(1) ) ) ; set .@i , .@i + 1 )
    		{
    
    			set .@str_temp$ , .@str_temp$ + getarg( 0 , "" ) + getd( getarg( 1 ) + "[" + .@i + "]" ) ;
    		
    		}
    		
    		return .@str_temp$;
    
    	}
    
    }

     

     

  9. Boa noite pessoal. Eu estou voltando a ativa com ragnarok depois de ter parado em 2012. Vi que muita coisa mudou.

    Gostaria de saber como eu consigo a Data para fazer a grf para por em meu servidor. pois estou querendo usar eamod com cliente 2012-04-10 porem n acho nenhum repositorio com data para usar.

  10. 49 minutes ago, luizragna said:

    Talvez o problema seja falta de quebra de linhas.

    Aonde está:

    
    		switch (@Tema) {
    			case 14: soundeffectall "assassin_of_sunset.wav",0,24,@mapa$,0,0,50,50; break;
    			case 12: soundeffectall "in_to_the_abyss.wav",0,24,@mapa$,0,0,50,50; break;
    			case 11: soundeffectall "dont_forget_me_not.wav",0,24,@mapa$,0,0,50,50; break;
    			case 7:  soundeffectall "ring_of_nibelungen.wav",0,24,@mapa$,0,0,50,50; break;
    			case 5:  soundeffectall "bragis_poem.wav",0,24,@mapa$,0,0,50,50; break;
    			case 2:  soundeffectall "chaos_of_eternity.wav",0,24,@mapa$,0,0,50,50; break;
    			default: soundeffectall @Tema$,0,24,@mapa$,0,0,50,50; break;
    		}

     

    Tente trocar por:

    
    		switch (@Tema) {
    			case 14:
    			soundeffectall "assassin_of_sunset.wav",0,24,@mapa$,0,0,50,50;
    			break;
    			
    			case 12:
    			soundeffectall "in_to_the_abyss.wav",0,24,@mapa$,0,0,50,50;
    			break;
    			
    			case 11:
    			soundeffectall "dont_forget_me_not.wav",0,24,@mapa$,0,0,50,50;
    			break;
    			
    			case 7:
    			soundeffectall "ring_of_nibelungen.wav",0,24,@mapa$,0,0,50,50;
    			break;
    			
    			case 5:
    			soundeffectall "bragis_poem.wav",0,24,@mapa$,0,0,50,50;
    			break;
    			
    			case 2:
    			soundeffectall "chaos_of_eternity.wav",0,24,@mapa$,0,0,50,50;
    			break;
    			
    			default:
    			soundeffectall @Tema$,0,24,@mapa$,0,0,50,50;
    			break;
    		}

     

    image.thumb.png.e1b51ff39b8ed85182bcccb1b1615641.pngpior que já tentei isso tbm e ainda persiste no erro

     

  11. Salve pessoal. Estou com esse problema 

    E na linha 519 diz [Error]:  Loading NPC file: npc/personalizado/casas/Vilas_Configuracoes.txt
    script error on npc/personalizado/casas/Vilas_Configuracoes.txt line 519
        parse_line: need ';'

    eu tentei de tudo, mas n consegui corrigir alguém da um help por favor?

    //===== Cronus Script ========================================
    //= Funções Compartilhadas - Casas Para Aluguel
    //===== Por: =================================================
    //= Zephyrus
    //=====Tradução Português - BR Por: ==========================
    //= Nosyel
    //===== Verção Atual: ===================================== 
    //= 1.0 - Iniciado por Zephyrus
    //= 1.1 - Corrigido Bugs nos Mapas por Zephyrus
    //= 2.0 - Tradução e Adaptação Para o Cronus por Nosyel
    //===== Compatível com: ===================================== 
    //= eAthena SVN Stable & Cronus SVN Stable e Trunck
    //===== Descrição: ========================================= 
    //= Contém as funções nescessárias para o sistema de Aluguel de Casas
    //===== Comentários Adicionais: ================================= 
    //= 1.0 Versão Inicial
    //============================================================ 
    //= Função para o npc, entrada das casas de campo 
    //= (Número de casa de campo, custo da propriedade, número de casas)
    //============================================================ 
    
    function	script	rent_villas	{
    	set @t, getarg(3);
    	show "^FF0000[Vila " + getarg(0) + "]^000000";
    	show "O melhor lugar para se morar...";
    	show "" + @t + " Casas Para Aluguel.";
    	show "Custo da propriedade: ^0000FF" + getarg(1) + " zeny^000000";
    	set @j, 22;
    	for (set @i, 1; @i <= @t; set @i, @i + 1) {
    		if (getd("$house" + getarg(2) + @i + "_rent") == 1) set @j, @j - 1;
    	}
    	if (@j == 0) show "Não há nenhuma propriedade disponível.";
    	else show "Propriedades disponíveis: ^0000FF" + @j + "^000000.";
    	close;
    }
    
    //============================================================ 
    //= Funções do quadro indicador que mostra os proprietários e as opções de GM 
    //= (identificação da casa de campo, e a quantidade de casas)
    //============================================================ 
    
    function	script	rent_letrero	{
    	show "[Informação de Aluguel]";
    	show "Proprietários Atuais:";
    	set @t, getarg(1);
    	for (set @i, 1; @i <= @t; set @i, @i + 1) {
    		if (getd("$house" + getarg(0) + @i + "_rent") == 1) {
    			if (@Color$ == "^0000FF")
    				set @Color$, "^FF0000";
    			else
    				set @Color$, "^0000FF";
    			// Detalhes da Casa
    			show @Color$ + "Casa Nº " + @i + " Alugada para " + getd("$house" + getarg(0) + @i + "_user$") + ".";
    			if (getgmlevel())
    				show "Alcançado " + getd("$house" + getarg(0) + @i + "_accesos") + " tempo da última restauração";
    			show "Fim: " + getd("$house" + getarg(0) + @i + "_buy_day") + "-" + getd("$house" + getarg(0) + @i + "_buy_month") + "-" + getd("$house" + getarg(0) + @i + "_buy_year") + ".^000000";
    		}
    	}
    	if (getgmlevel()) goto L_GMmenu;
    	close;
    
    L_GMmenu:
    	next;
    	menu "Liberar uma casa",L_Liberar,"Liberar Todas as Casas",L_Limpiar,"Cancelar",-;
    
    L_Salir:
    	show "^FF0000[Informação de Aluguel]^000000";
    	show "Função para acesso adiministrativo";
    	show "Até Logo...";
    	close;
    
    L_Limpiar:
    	show "^FF0000[Informação de Aluguel]^000000";
    	for (set @i, 1; @i <= @t; set @i, @i + 1) {
    		setd "$house" + getarg(0) + @i + "_access", 0;
    	}
    	show "Casa Resetada.";
    	close;
    
    L_Liberar:
    	show "^FF0000[Informação de Aluguel]^000000";
    	show "Você quer liberar uma casa?(1 - " + @t + ")";
    	show "Entre com o número da casa que você quer liberar. (0 ou maior que " + @t + " para cancelar).";
    	next;
    	input @house;
    	if (@house < 1) goto L_Salir;
    	if (@house > @t) goto L_Salir;
    
    	if (getd("$house" + getarg(0) + @house + "_rent") == 1) {
    		show "^FF0000[Informação de Aluguel]^000000";
    		setd "$house" + getarg(0) + @house + "_rent", 0;
    		show "A Casa " + @house + " Foi Liberada.";
    		killmonsterall "rentin" + getarg(0) + @house + ".gat"; // Mata os monstro pequenos
    	} else {
    		show "^FF0000[Informação de Aluguel]^000000";
    		show "Desculpe-me, mais esta Casa ja tem Locatário";
    		show "Por Favor selecione um número diferente.";
    	}
    	close;
    }
    
    //============================================================ 
    //= Função das Kafras (Teleporte para outras vilas).
    //============================================================ 
    
    function	script	rent_kafra	{
    	cutin "kafra_007.bmp",2;
    	show "^FF0000[Kafra]^000000";
    	show "Olá, Seja Bem Vindo!";
    	show "Eu posso teleportá-lo a uma vila diferente por 2000z.";
    	if (Zeny < 2000) {
    		show "Oh. .parece que você não tem bastante dinheiro. Você precisa de pagar-me ^FF00002000 zeny^000000 para que eu possa teleportá-lo ^^";
    		cutin "", 255;
    		close;
    	}
    	show "Onde você quer ir? Todos os preços são os mesmos.";
    	next;
    	menu "Prontera",L_Prontera,"Vila Prontera",L_VProntera,"Vila Geffen",L_VGeffen,"Vila Morroc",L_VMorroc,"Vila Payon",L_VPayon,"Vila Alberta",L_VAlberta,"Vila Izlude",L_VIzlude,"Vila Aldebaran",L_VAldebaran,"Nenhuma",-;
    	show "^FF0000[Kafra]^000000";
    	show "Volte Quando Você Precisar de Meus Serviços, Tenha Um Bom Dia ^^";
    	cutin "", 255;
    	close;
    
    L_Prontera:   set Zeny, Zeny - 2000; show "^FF0000[Kafra]^000000"; show "Boa Viagem ;)!"; close2; warp "prontera.gat",156,191; end;
    L_VProntera:  set Zeny, Zeny - 2000; show "^FF0000[Kafra]^000000"; show "Boa Viagem ;)!"; close2; warp "rent_mb.gat",133,113; end;
    L_VGeffen:    set Zeny, Zeny - 2000; show "^FF0000[Kafra]^000000"; show "Boa Viagem ;)!"; close2; warp "rent_md.gat",50,28; end;
    L_VMorroc:    set Zeny, Zeny - 2000; show "^FF0000[Kafra]^000000"; show "Boa Viagem ;)!"; close2; warp "rent_mc.gat",50,28; end;
    L_VPayon:     set Zeny, Zeny - 2000; show "^FF0000[Kafra]^000000"; show "Boa Viagem ;)!"; close2; warp "rent_ma.gat",50,28; end;
    L_VAlberta:   set Zeny, Zeny - 2000; show "^FF0000[Kafra]^000000"; show "Boa Viagem ;)!"; close2; warp "rent_me.gat",50,28; end;
    L_VIzlude:    set Zeny, Zeny - 2000; show "^FF0000[Kafra]^000000"; show "Boa Viagem ;)!"; close2; warp "rent_mf.gat",50,28; end;
    L_VAldebaran: set Zeny, Zeny - 2000; show "^FF0000[Kafra]^000000"; show "Boa Viagem ;)!"; close2; warp "rent_mg.gat",50,28; end;
    
    }
    
    //============================================================ 
    //= Função dos quadros indicadores (Fala as opções dos Proprietários e as opções de GM)
    //= (identificação da casa de campo, propriedade custo, uma quantidade de casas)
    //============================================================ 
    
    function	script	rent_propietario	{
    	cutin "proprietario.bmp",2;
    	show "^0000FF[Proprietário]^000000";
    	show "Olá, Seja Bem Vindo a Agência de Alugueis de Casa!";
    	show "Eu Alugo Casas!";
    	show "Você esta interessado em alguma?";
    	next;
    	set @t, getarg(2);
    
    L_next1:
    	menu "Sim, Concerteza!",L_rent,"Poderia Me Dar Mais Informações?",L_Info,"Não, Obrigado.",-;
    	show "^0000FF[Proprietário]^000000";
    	show "Sinta-se livre para retornar quando você tiver interessado.";
    	cutin "", 255;
    	close;
    
    L_Info:
    	show "^0000FF[Proprietário]^000000";
    	show "Eu Tenho" + @t + " Casas e Propriedades.";
    	show "Bem, você pode alugar uma casa de mim.";
    	show "A fixação do preço depende do tempo que você quer a casa.";
    	show "O custo mensal é de " + getarg(1) + " zenys.";
    	show "Quando o contrato se acaba, você pode estendê-lo ou sair da casa para outros poderem alugar.";
    	next;
    	goto L_next1;
    
    L_rent:
    	show "^0000FF[Proprietário]^000000";
    	show "Quantos meses você quer alugar?";
    	show "(Maximo é 3 Meses)";
    	next;
    
    L_next2:
    	input @mo;
    	if (@mo < 1) goto L_next2;
    	if (@mo > 3) goto L_next2;
    	menu @mo + " meses esta bom",-,"Change the number of months",L_next2,"Voltar ao Menu Anterior",L_next1;
    	set @costo, @mo * getarg(1);
    
    	show "^0000FF[Proprietário]^000000";
    	show "Para entrar em sua casa, você precisa de cadastrar uma senha.";
    	show "Por favor insira sua senha de usuário da casa.";
    	next;
    
    L_next3:
    	input @pwg$;
    	if(@pwg$ == "") goto L_next3;
    	menu @pwg$ + " -Esta Correto.",-,"Tentar de Novo",L_next3,"Voltar ao Menu Anterior",L_next1;
    
    	show "^0000FF[Proprietário]^000000";
    	show "Entre por favor com a senha que seus convidados podem usar.";
    	next;
    
    L_next4:
    	input @pwb$;
    	if(@pwb$ == "") goto L_next4;
    	menu @pwb$ + "-Esta Correto.",-,"Tentar de Novo",L_next4,"Voltar ao Menu Anterior",L_next1;
    
    	show "^0000FF[Proprietário]^000000";
    	show "Deixe-me rever o contrato...";
    	show "Para alugar uma casa nesta vila,";
    	show "Custa: " + @costo + " Por " + @mo + " month(s).";
    	show "Senha: " + @pwg$;
    	show "Senha de Convidados: " + @pwb$;
    	show "Você quer a casa?";
    	next;
    	menu "Sim",-,"Não, Eu Desisti",L_Salir;
    	set @current,0;
    	for (set @current, 1; @current <= @t; set @current, @current + 1) {
    		if (getd("$house" + getarg(0) + @current + "_rent") != 1) goto L_Alquilar;
    	}
    	show "^0000FF[Proprietário]^000000";
    	show "Desculpe-me amigo mais eu não tenho mais nenhuma casa disponível.";
    	show "Volte por favor um outro dia.";
    	cutin "", 255;
    	close;
    
    L_Alquilar:
    	if (Zeny < @costo) goto L_NoZeny;
    	set Zeny, Zeny - @costo;
    	setd "$house" + getarg(0) + @current + "_rent", 1;
    	setd "$house" + getarg(0) + @current + "_user$",strcharinfo(0);
    	setd "$house" + getarg(0) + @current + "_passwort$",@pwg$;
    	setd "$house" + getarg(0) + @current + "_userps$",@pwb$;
    	setd "$house" + getarg(0) + @current + "_buy_day",gettime(5);
    	setd "$house" + getarg(0) + @current + "_buy_month",gettime(6) + @mo;
    	setd "$house" + getarg(0) + @current + "_buy_year",gettime(7);
    	setd "$house" + getarg(0) + @current + "_accesos",0;
    
    	if (getd("$house" + getarg(0) + @current + "_buy_month") > 12) {
    		setd "$house" + getarg(0) + @current + "_buy_year", getd("$house" + getarg(0) + @current + "_buy_year") + 1;
    		setd "$house" + getarg(0) + @current + "_buy_month", getd("$house" + getarg(0) + @current + "_buy_month") - 11;
    	}
    	
    	show "^0000FF[Proprietário]^000000";
    	show "Parabéns " + strcharinfo(0)+"!";
    	show "Você alugou com sucesso uma casa!";
    	show "O Número de Sua Casa é " + @current + ".";
    	show "Faça Bom Proveito!";
    	cutin "", 255;
    	close;
    
    L_Salir:
    	show "^0000FF[Proprietário]^000000";
    	show "Sem Problemas, Retorne Quando Mudar de Idéia.";
    	cutin "", 255;
    	close;
    
    L_NoZeny:
    	show "^0000FF[Proprietário]^000000";
    	show "Hein? Desculpe mais você não tem zeny suficiente para alugar uma de minhas Casas.";
    	show "Por favor retorne quando tiver o suficiente.";
    	cutin "", 255;
    	close;
    }
    
    //============================================================ 
    //= Função do quadro indicador (proprietários das casas e opções do gm)
    //= (identificação da casa, custo da propriedade, X, Y)
    //============================================================ 
    
    function	script	rent_entrada	{
    	if (getd("$house" + getarg(0) + "_rent") == 1) 
    		goto L_Inicio;
    
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Esta casa está disponível para aluguel!";
    	close;
    
    L_Inicio:
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Esta Casa Pertence a ^0000FF'" + getd("$house" + getarg(0) + "_user$") + "'.^000000";
    	
    	if (getgmlevel())
    		show "Acesado ^0000FF" + getd("$house" + getarg(0) + "_accesos") + "^000000 tempo.";
    		
    	show "Você deseja entrar?";
    	next;
    	
    	menu "Sim",L_Accesar,"Manutenção",L_Conf,"Não",-;
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "....";
    	close;
    	
    L_Accesar:
    	if (getgmlevel()) 
    		goto L_Acceso; // Access for GMs without the key
    
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Entre por favor com a senha de proprietário ou de convidado.";
    	next;
    	
    	input @pw$;
    	if ((@pw$ != getd("$house" + getarg(0) + "_passwort$")) && (@pw$ != getd("$house" + getarg(0) + "_userps$")))
    		goto L_ErrorClave;
    
    L_Acceso:
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Correto, Pode entrar...";
    	close2;
    	
    	setd "$house" + getarg(0) + "_access",getd("$house" + getarg(0) + "_accesos") + 1;
    	warp "rent" + getarg(0) + ".gat",getarg(2),getarg(3);
    	end;
    
    L_Conf:
    	if (getgmlevel()) goto
    		L_ConfGM; // Alcance para GMs sem a chave
    
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Por favor entre com a Senha da Propriedade.";
    	next;
    	input @pw$;
    	if (@pw$ != getd("$house" + getarg(0) + "_passwort$"))
    		goto L_ErrorClave;
    
    L_ConfGM:
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "O que você quer fazer?";
    	next;
    
    L_MMenu:
    	menu "Mudar Minha Senha",L_CambioPW,"Muda senha de convidado",L_CambioGPW,"Extender Contrato",L_Extender,"Mudar Dono",L_Owner,"Liberar Propriedade",L_Liberar,"Nada",-;
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Ok, Nos vemos em breve.";
    	close;
    
    L_Extender:
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Você deseja estender seu contrato para um outro mês? (Costo " + getarg(1) + " zeny)";
    	show "Esta Correto?";
    	next;
    	menu "Sim",L_DExtender,"Não",-;
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Bem...";
    	next;
    	goto L_MMenu;
    
    L_DExtender:
    	if (zeny < getarg(1)) 
    		goto L_NoZeny;
    
    	if (gettime(6) < (getd("$house" + getarg(0) + "_buy_month") - 1))
    		goto L_NoExt;
    
    	setd "$house" + getarg(0) + "_buy_month", getd("$house" + getarg(0) + "_buy_month") + 1;
    	if (getd("$house" + getarg(0) + "_buy_month") > 12) {
    		setd "$house" + getarg(0) + "_buy_month", getd("$house" + getarg(0) + "_buy_month") - 12;
    		setd "$house" + getarg(0) + "_buy_year", getd("$house" + getarg(0) + "_buy_year") + 1;
    	}
    	set Zeny, Zeny - getarg(1);
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Seu contrato foi extendido com sucesso.";
    	close;
    
    L_NoZeny:
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Você não tem zeny suficiente!";
    	show "Por favor volte quando tiver zeny suficiente.";
    	close;
    
    L_NoExt:
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Você esta com um contrato máximo. Por favor volte quando faltar menos de 1 mês.";
    	close;
    
    L_CambioPW:
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Por favor entre com sua senha nova";
    	next;
    	input @pw$;
    	setd "$house" + getarg(0) + "_passwort$", @pw$;
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Sua senha nova é: " + @pw$ + ".";
    	next;
    	goto L_MMenu;
    
    L_CambioGPW:
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Por favor entre com a senha nova de convidado.";
    	next;
    	input @pw$;
    	setd "$house" + getarg(0) + "_userps$", @pw$;
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Sua senha nova de convidado é: " + @pw$ + ".";
    	next;
    	goto L_MMenu;
    
    L_ErrorClave:
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "A senha esta incorreta!";
    	close;
    
    L_Owner:
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Locatário Recente: '" + getd("$house" + getarg(0) + "_user$") + "'";
    	show "Novo Locatário: '" + strcharinfo(0) + "'";
    	show "Esta Correto?";
    	next;
    	menu "Sim, Mude",L_DOwner,"Não...",-;
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Bem...";
    	next;
    	goto L_MMenu;
    	
    L_DOwner:
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	setd "$house" + getarg(0) + "_user$",strcharinfo(0);
    	show "A casa agora tem um novo locatário.";
    	show "Por favor mude as senhas.";
    	next;
    	goto L_MMenu;
    
    L_Liberar:
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Você quer reincidir o contrato e liberar a casa?";
    	show "Não terá seu dinheiro de volta.";
    	next;
    	menu "Sim, quero liberar a casa",L_DLiberar,"Não...",-;
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "Bem...";
    	next;
    	goto L_MMenu;
    
    L_DLiberar:
    	show "^0000FF[Propriedade " + getarg(0) + "]^000000";
    	show "A propriedade foi liberada para um novo locatário.";
    	setd "$house" + getarg(0) + "_rent", 0;
    	killmonsterall "rentin" + getarg(0) + ".gat";
    	close;
    }
    
    //============================================================ 
    //= Função de controle de arvores de maçãs
    //= (id da casa)
    //============================================================ 
    
    function	script	rent_manzano	{
    	if (getd("$@Manzanas" + getarg(0)) > 0) {
    		setd "$@Manzanas" + getarg(0), getd("$@Manzanas" + getarg(0)) - 1;
    		specialeffect2 363;
    		getitem 512, 1;
    	}
    	end;
    }
    
    //============================================================ 
    //= Função para controlar o PvP.
    //============================================================ 
    
    function	script	rent_pvp	{
    	if (getmapxy(@mapa$,@mapx,@mapy,0,strcharinfo(0)) != 0) end;
    	show "[Controle PvP]";
    	show "O que você deseja fazer?";
    	next;
    	menu "Ativar PVP",L_PvpOn,"Desativar PVP",L_PvpOff,"Nada",-;
    	show "[Controle PvP]";
    	show "Bom Dia.";
    	close;
    
    L_PvpOn:
    	show "[Controle PvP]";
    	show "O PVP esta ativado.";
    	pvpon @mapa$;
    	close;
    
    L_PvpOff:
    	show "[Controle PvP]";
    	show "O PVP esta desativado";
    	pvpoff @mapa$;
    	close;
    }
    
    //============================================================ 
    //= Cama!!!!
    //= (id da casa,X,Y)
    //============================================================ 
    
    function	script	rent_camas	{
    	show "Desja descançar?";
    	menu "Sim",-,"Não",L_No;
    	close2;
    	sc_start SC_BLIND,500000,1;
    	emotion e_yawn,1;
    	sleep2(4000);
    	
    	warp "rentin" + getarg(0) + ".gat",getarg(1),getarg(2);
    	percentheal 100,100;
    	sc_end SC_BLIND;
    	end;
    L_No:
    	close;
    }
    
    //============================================================ 
    //= Função do piano
    //= (id da casa)
    //============================================================ 
    
    function	script	rent_pianoStart	{
    	if (getmapxy(@mapa$,@mapx,@mapy,0,strcharinfo(0)) != 0) end;
    	show "[Piano Automático]";
    	if (getd("$@Piano" + getarg(0)) > 0) {
    		show "Espere um pouco até que a canção termine ou que o piano esteja preparado outra vez.";
    		close;
    	}
    	show "[Piano]";
    	show "Aviso: Minhas funções ainda não estão completamente implementadas, Aguarde ...";
    	show "Escolha por favor uma canção.";
    	set @Tema, select ("Música 01","Caos da eternidade","Música 03","Música 04","Bragis Poema","Música 06","Anel de Nibelungen","Música 08","Música 09","Música 10","Não me esqueça não","Ao abismo","Música 13","Assassino do por do sol","Música 15","Música 16","Música 17","Música 18","Música 19","Nada");
    	if (@Tema >= 20) close;
    	if (@Tema < 10) set @Tema$, "m0" + @Tema + ".wav";
    	else set @Tema$, "m" + @Tema + ".wav";
    	close2;
    	if (getd("$@Piano" + getarg(0)) <= 0) {
    		// Tocar o Tema Escolhido
    		setd "$@Piano" + getarg(0), 1; // Reproduzindo
    		initnpctimer;
    		switch (@Tema) {
    			case 14: soundeffectall "assassin_of_sunset.wav",0,24,@mapa$,0,0,50,50; break;
    			case 12: soundeffectall "in_to_the_abyss.wav",0,24,@mapa$,0,0,50,50; break;
    			case 11: soundeffectall "dont_forget_me_not.wav",0,24,@mapa$,0,0,50,50; break;
    			case 7:  soundeffectall "ring_of_nibelungen.wav",0,24,@mapa$,0,0,50,50; break;
    			case 5:  soundeffectall "bragis_poem.wav",0,24,@mapa$,0,0,50,50; break;
    			case 2:  soundeffectall "chaos_of_eternity.wav",0,24,@mapa$,0,0,50,50; break;
    			default: soundeffectall @Tema$,0,24,@mapa$,0,0,50,50; break;
    		}
    	}
    	end;
    }
    
    function	script	rent_pianoStop	{
    	emotion e_no1;
    	stopnpctimer;
    	setd "$@Piano" + getarg(0), 0; // Fim das Músicas
    	end;
    }
    
    //============================================================ 
    //= Armário
    //============================================================ 
    
    function	script	rent_armario	{
    	show "[Armazem]";
    	show "Deseja usar o Armazém?";
    	menu "Sim",-,"Não",L_No;
    	callfunc("F_CheckKafCode");
    	close2;
    	openstorage;
    	end;
    L_No:
    	close;
    }
    
    //============================================================ 
    //= Serviço de Limpesa
    //============================================================ 
    
    //============================================================ 
    //= Calcule o seguinte ponto X e Y
    //= (Posição X o Y)
    //============================================================ 
    
    function	script	rent_aliceXY	{
    	set .@CP, getarg(0); // Posição X o Y
    	set .@DST, rand(1,5); // Distância
    	if (rand(2)) // Direção a ser tomada (izq der arr abj)
    		set .@CP, .@CP + .@DST;
    	else
    		set .@CP, .@CP - .@DST;
    	if (.@CP < getarg(1))
    		set .@CP, .@CP + .@DST; // Se o ponto novo é menor, aquele é o mínimo
    	if (.@CP > getarg(2))
    		set .@CP, .@CP - .@DST; // Se o ponto novo é maior, aquele é o máximo
    	return .@CP;
    }
    
    //============================================================ 
    //= Esconde Alice quando o usuário é carregado
    //= (Id da casa)
    //============================================================ 
    
    function	script	rent_serviceInit	{
    	disablenpc "AliceR" + getarg(0) + "";
    	end;
    }
    
    //============================================================ 
    //= Função para o pedido de NPC
    //= (Id da casa)
    //============================================================ 
    
    function	script	rent_serviceCall	{
    	set @alicecost,5000;	// Variável para mudar o custo do serviço [Brainstorm]
    	show "[Serviço de Limpeza]";
    	if (getd("$@house" + getarg(0) + "_alice") == 0) {
    		show "Você deseja ter Alice limpando por 8 horas?";
    		show "Quando limpar, os insetos cessarão de aparecer.";
    		show "O serviço custa 5000z.";
    		show "Você gostaria de chamar Alice?";
    		next;
    		menu "Sim",-,"Não",L_No;
    		if (Zeny < @alicecost) goto L_NoZeny;
    		if (getd("$@house" + getarg(0) + "_alice") == 1) goto L_Activo;
    		setd "$@house" + getarg(0) + "_alice", 1; // Activo
    		set Zeny, Zeny - @alicecost;
    		// Exterminio de insetos
    		setd "$house" + getarg(0) + "_bugs", 0;
    		killmonsterall "rentin" + getarg(0) + ".gat";
    		show "[Serviço de Limpeza]";
    		show "Alice estará em sua casa imediatamente.";
    		enablenpc "AliceR" + getarg(0) + ""; // Ativando NPC
    		donpcevent "AliceR" + getarg(0) + "::OnEmpezar"; // Iniciando Limpeza
    		initnpctimer;
    	} else {
    		show "Você deseja despachar Alice agora?";
    		next;
    		menu "Sim",-,"Não",L_No;
    		if (getd("$@house" + getarg(0) + "_alice") == 0) goto L_Activo;
    		setd "$@house" + getarg(0) + "_alice", 0; // Desativando
    		show "[Serviço de Limpeza]";
    		show "Alice foi despachada, finalizado o Serviço de Limpeza.";
    		stopnpctimer;
    		donpcevent "AliceR" + getarg(0) + "::OnTerminar";
    		disablenpc "AliceR" + getarg(0) + "";
    	}
    	close;
    
    L_Activo:
    	show "[Serviço de Limpeza]";
    	show "Você já pediu uma Alice para limpar, você somente pode pedir uma Alice de cada vez.";
    	show "Bom Dia.";
    	close;
    
    L_NoZeny:
    	show "[Serviço de Limpeza]";
    	show "Desculpe, mais você não tem zeny suficiente para pagar uma Alice.";
    	close;
    
    L_No:
    	show "[Serviço de Limpeza]";
    	show "Diga-me outra vez se você precisar de nossos serviços.";
    	close;
    }
    
    //============================================================ 
    //= Serviço de Kafra
    //= (Id da casa)
    //============================================================ 
    
    function	script	rent_serviceFinish	{
    	stopnpctimer;
    	setd "$@house" + getarg(0) + "_alice", 0; // Desativado
    	donpcevent "AliceR" + getarg(0) + "::OnTerminar";
    	disablenpc "AliceR" + getarg(0) + "";
    	end;
    }
    
    //============================================================ 
    //= Velocidade de locomoção da Alice
    //============================================================ 
    
    function	script	rent_aliceInit	{
    	npcspeed 100;
    	end;
    }
    
    //============================================================ 
    //= O começo da função de Alice, ativa o temporizador de NPC e a saudação
    //============================================================ 
    
    function	script	rent_aliceStart	{
    	npctalk "Eu deixarei este lugar todo em ordem!";
    	initnpctimer;
    	return 0;
    }
    
    //============================================================ 
    //= Movimentação da Alice
    //============================================================ 
    
    function	script	rent_aliceWalk	{
    	emotion e_ho;
    	getmapxy .@map$,.@x,.@y,1;
    	set .@curX, callfunc("rent_aliceXY",.@x,8,35);
    	set .@curY, callfunc("rent_aliceXY",.@y,5,27);
    	npcwalkto .@curX, .@curY;
    	stopnpctimer;
    	initnpctimer;
    	end;
    }
    
    //============================================================ 
    //= Acontece somente quando você fala ou clica na Alice…!
    //= Adicione mais dentro se você quiser (Preima)
    //============================================================ 
    
    function	script	rent_aliceTalk	{
    	switch (rand(1,5)) {
    		case 1: npctalk "Sim senhor(a), a limpeza esta quase completa."; break;
    		case 2: npctalk "Se você quer comer algo, vá à cozinha que eu lhe prepararei um lanche…"; break;
    		case 3: npctalk "Eles não me pagam o bastante por isso!"; emotion e_pif; break;
    		case 4: npctalk "Bem, eu tenho muita sorte só precisarei limpar apenas esta casa hoje."; emotion e_heh; break;
    		case 5: npctalk "Nossa, sua casa esta repugnante!"; emotion e_wah; break;
    	}
    	end;
    }
    
    //============================================================ 
    //= Finalização dos Serviços da Alice
    //============================================================ 
    
    function	script	rent_aliceStop	{
    	npctalk "Prontinho Senhor(a), esta tudo em ordem agora!";
    	stopnpctimer;
    	return 0;
    }
    
    //============================================================ 
    //= Função de trocas de roupas
    //= Summer 
    //============================================================ 
    
    function	script	rent_cambioropa	{
    	show "[Guarda Roupas]";
    	show "Escolha o estilo de roupa desejado...";
    	menu "Normal",L_Normal,"Formal",L_Formal,"Natalina",L_Abrigo,"Verão",L_summer,"Não Trocar",-;
    	close;
    
    L_Normal:
    	sc_end SC_Xmas;
    	setoption Option_Wedding,0;
    	sc_end SC_Summer;
    	close;
    
    L_Formal:
    	sc_end SC_Xmas;
    	sc_end SC_Summer;
    	setoption Option_Wedding,1;
    	close;
    
    L_Abrigo:
    	setoption Option_Wedding,0;
    	sc_start SC_Xmas,600000,0;
    	close;
    L_summer:
    	sc_end SC_Xmas;
    	setoption Option_Wedding,0;
    	sc_start SC_Summer,600000,0;
    	close;
    }

    image.thumb.png.8f7ecca2a1b99a300d44b841b5cf289b.png

    • Like 1
×
×
  • Create New...