Jump to content
  • 0

[NPC] - Jogo da forca Duvida sobre função


Kassio Felix

Question


  • Group:  Members
  • Topic Count:  8
  • Topics Per Day:  0.01
  • Content Count:  20
  • Reputation:   1
  • Joined:  10/24/20
  • Last Seen:  

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$;

	}

}

 

 

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  2
  • Topics Per Day:  0.00
  • Content Count:  3
  • Reputation:   0
  • Joined:  11/04/12
  • Last Seen:  

prontera,147,197,5    script    Jogo da Forca    767,{

    //=== Configuração ========================================================================

        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, 99;                // 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)
    //=========================================================================================

    //=== Funções =============================================================================
        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 emplode;               // Alterar uma variável para uma string.
        function load_cutin;
    //=========================================================================================


        switch( ( ! .block && .@rungame > getgmlevel() ) ? 2 : .block ){
            case 0:
                    do{
                        if ( ! .Init )
                            donpcevent strnpcinfo(0) + "::OnInit";
                        set .block,  1;  // Não bloquear o NPC.
                        set .@string$, "";    // init the var.
                        initnpctimer;       // Timer para depurar.
                        mes .@npc$;
                        mes "Eu cobro uma taxa de 5000000z.";
                        mes "Deseja continuar mesmo assim????";
                        menu "Sim",Lsim,"Não",Lnao2;
                        
                    Lnao2:
                        next;
                        mes "Ah então não me aborrece";
                        close;
                    
                    
                    Lnao:
                        next;
                        mes "Você não possui Zenys o suficiente";
                        mes "volte quando tiver zenys.";
                        close;
                    
                    Lsim:
                        if (Zeny < 5000000) goto Lnao;
                        Zeny-= 5000000;
                        next;
                        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 inválido.";
                            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() ){
                        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 ) {
                        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$, emplode( "", ".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 "Alguém está a iniciar 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();
                        //Mostramos a lista.
                        mes "Letras já utilizadas: " + .@color$ + ( emplode( " ", ".blacklist$" ) ) + "^000000.";
                        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$ + " e ganhou 5kk em Zenys!", bc_blue | bc_map;
                                Zeny+= 5000000;
                                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" ){
                            mes .@npc$;
                            mes "Caracteres Proibido.";
                            next;
                            continue;
                        }else if ( array_search ( @string$, ".blacklist$") + 1 ){
                                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 ){
                            heal - MaxHp / 5, 0;
                            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$, emplode( " ", ".letterhide$" );
                            delwaitingroom;   // devemos atualizar o chat-room nome 
                            waitingroom .wordfind$, 0;

                            if ( array_search( " _", ".letterhide$" ) == -1 ) {
                                announce strcharinfo( 0 ) + " descobriu a palavra: " + .wordsearch$ + " e ganhou 5kk em zenys !", bc_blue | bc_map;
                                Zeny+= 5000000;
                                donpcevent strnpcinfo( 0 ) + "::OnInit";
                                close2;
                                cutin "", 255;
                                end;
                            }
                            next;
                            if ( select( " -  Continuar: -  Sair" ) - 1 ){
                                close2;
                                cutin "", 255;
                                end;
                            }
                        }

                    } while( Hp );
    
                    mes .@npc$;
                    mes "Ahhhh, Você Perdeu...";
                    announce "|Jogo da Forca| " + strcharinfo( 0 ) + " Perdeu! e acabou morrendo", 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],
        "aprendiz",
        "historia",
        "esmeralda",
        "sacerdotiza",
        "cavaleiro",
        "ragmaniacos",
        "poporing",
        "andarilho",
        "maniacos",
        "assessoria",
        "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;
    }

    OnTimer120000:

        if ( .block - 1 )
            end;
        else{
            set .block, 0;
            stopnpctimer;
        }


    OnTimer600000:

        donpcevent strnpcinfo(0) + "::OnInit";
        stopnpctimer;
        end;

    //=== FUNÇÃO ===========================================================================

    function    load_cutin    {
    
        if ( getarg( 0, 0 ) )
            set .stat, .stat + 1;
        
        cutin "hangman_" + .stat, .cutinposition;
        
        if ( .stat >= 10 )
        {
            announce "|Jogo da Forca| Ninguém encontrará 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;

                }

            }

            if ( .@i == getarraysize( .@char$ ) )
                return 0;

            if ( .@j >= .check_gotocount / getarraysize(.@char$) - 1 ){
                sleep2( 1 );
                set .@j, 0;
            }

        }

        return 1;

    }

    function    emplode    {
        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$;

    }

}

Usa essa talvez te ajude!

Edited by Emistry
codebox
Link to comment
Share on other sites

Join the conversation

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

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

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

×   Your previous content has been restored.   Clear editor

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

×
×
  • Create New...