kurashima

Oque faze quando tiver dois If?

18 posts neste tópico

To com um problema, to criando um Npc ai fiz um If pra coloca uma restrição nele, porem gostaria que se a restrição não fosse comprida abrisse outro dialogo, porem essa mesma If joga dentro de outra e se eu coloca o Else nele não da continuidade ao Npc. Gostaria de uma ajuda como proceder.

Citar

geffen_in,164,124,4    script    Instrutora    2_F_MAGICMASTER,{

set    @npc$,"[ ^ff0000Instrutora^000000 ]";

if (Class ==2) {
    mes @npc$;
    mes "Continuação para Mago.";
    close;

}else if (countitem(607) & Class ==0 & JobLevel ==10) {
    mes @npc$;
    mes "Vejo que você tem ^ff8c00"+getitemname(607)+"^000000, este e um item bastante especial.";
    mes "Com ele você pode se torna um mago da guild";
        if(select("Se torna um mago:Fale-me mais sobra...")== 1){
    next;

    mes @npc$;
    mes "Para se torna um mago responde as perguntas que irei faze corretamente.";
    mes "Qual e o status que ira lhe conceder um aumento de nivel de ataque magico?";
    input @resp1$;
    if (@resp1$ == $resp1$) {
    close2;

    mes @npc$;
    mes "Muito bem";
    close;

}else{

    close2;
    mes @npc$;
    mes "Sinto muito mas você errou.";
    close;

OnInit:

set $resp1$, "Int";

            }
        }
    }
}
 

Este e o Npc pretendo faze uma quest de perguntas e respostas porem to com esse empecilho ai, não da pra coloca o:

Citar

}else{
    mes @npc$;
    mes "Sinto muito não posso te ajudar.";
    close;

Caso o player não tenha os requezitos.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma explicada melhor ai pra eu ver no que eu posso te ajudar.

Editado por pandax
Erro Ortográfico
0

Compartilhar este post


Link para o post
Compartilhar em outros sites

O comando para caso a condição não seja seguida é "else", e não "else if"



if (Class ==2) {
    mes @npc$;
    mes "Continuação para Mago.";
    close;

}else (countitem(607) & Class ==0 & JobLevel ==10) {
    mes @npc$;
    mes "Vejo que você tem ^ff8c00"+getitemname(607)+"^000000, este e um item bastante especial.";
    mes "Com ele você pode se torna um mago da guild";
        if(select("Se torna um mago:Fale-me mais sobra...")== 1){
    next;

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sei eu usei  "else if"  porque quando tava lendo a Doc dizia que servia pra termina um if e começa o outro mais agora eu acho que sei como aplicar ele melhor. Já arrumei o Npc. Ficou assim:

Citar

geffen_in,164,124,4    script    Instrutora    2_F_MAGICMASTER,{

set @npc$,"[ ^ff0000Instrutora^000000 ]";

if (Class ==2) {
    mes @npc$;
    mes "Continuação para Mago.";
    close;
}

if (countitem(607) && Class ==0 && JobLevel ==10) {
    mes @npc$;
    mes "Vejo que você tem ^ff8c00"+getitemname(607)+"^000000, este e um item bastante especial.";
    mes "Com ele você pode se torna um mago da guild";
    
        switch(select("Se torna um mago:Fale-me mais sobra...")){
        
            case 1:
                next;
                mes @npc$;
                mes "Para se torna um mago responde as perguntas que irei faze corretamente.";
                mes "Qual e o status que ira lhe conceder um aumento de nivel de ataque magico?";
                input @resp1$;
                
                    if (@resp1$ == $resp1$){
                    next;
                    mes @npc$;
                    mes "Muito bem";
                    close;
                    }
                    
                next;        
                mes @npc$;
                mes "Sinto muito mas você errou.";
                close;
            
            case 2:
                 next;
                 mes @npc$;
                 mes "Informações sobre a classe.";
                 close;
        }
}

mes @npc$;
mes "Sinto muito não posso te ajudar.";
close;

OnInit:
set $resp1$, "Int";
end;
}

 

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você tem uma condição de escolha, utiliza-se o comando "case" em C e C++. No caso de scripts o comando que eu utilizo é o switch select, o mesmo que você usou.

 

Como são várias escolhas, não há a necessidade de colocar vários ifs pois o código fica sujo. Caso existam condições dentro das condições de escolha, você pode adicionar um if dentro dos cases, conforme a necessidade. 

A condição que nega a condição anterior é o else e caso você queira fazer uma condição posterior a outra, utiliza-se o else if.

3

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 18/10/2017 at 10:59, SyncMaster disse:

O comando para caso a condição não seja seguida é "else", e não "else if"

 

 

else if lol?

 

IF = SE

ELSE = SENÂO

 

Se tiver mais comparações tem que ter um if depois do else, será outro operador, caso o primeiro seja válido os demais que contenha a clausula else definida antes serão ignorados, otimizando ação do código.

Isto evita que o script fique lendo condição por condição já que tem uma válida.

 

set [email protected],3;

if( [email protected] == 1 )
 mes "Primeira instrução";
else if( [email protected] == 2 )
 mes "Segunda instrução";
else if( [email protected] == 3 )
 mes "Terceira instrução";
else if( [email protected] == 4 )
 mes "Quarta instrução";

Tecnicamente, iria ser avaliado pela execução apenas até a terceira instrução, validando a mesma e ignorando a quarta instrução (por completo) já que dentro do conjunto de instruções já encontrou uma condição válida.

Caso você não se beneficie dos else, todas condições seriam checadas para validação sem exceções.

Compradores dentro são outras execuções, embora seja um algorítimo dentro daquele bloco de instrução será tratado de forma separada, em caso de switchs por exemplo é muito comum você criar uma condição para que ele "pule" o bloco de instrução do switch caso seja necessário, indo direto ao final da operação, (mesma coisa com for, whiles...)

 

if( select("Pular Execução?","Não pular.")  == 1)

 break;

 

Agora não sei dizer qual o gasto de memória dentre de cada instrução para pode dizer qual é melhor usar o switch ou o if, com ou sem else, ou se você quer deixar seu código bonitinho ou um código sujo porém funcional.

 

Lembro que no Cronus o pessoal tinha mania de chamarem nego de power scripters por criar npcs dinâmicos, cheio de códigos malucos e loops abusivos, que deixava o npc bonitinho porém não era nada otimizado, o que a programação de hoje dia tenta trazer, instruções simples para execuções totalmente otimizadas.

Editado por SoulBlaker
2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom fiz um npc basico aqui para vc ter uma noçao, voce pode testar ele no seu servidor.

nesse meu script, ele primeiro faz as todas as verificações necessarias caso seja falso ele ira para a aba do else, bom sou pessimo em explicações, mas testando vc irar entender melhor, no meu caso eu uso o else if  como uma segunda verificação depois do if.

Citar
prontera,160,191,4	script	Mestre Shion#02	102,{
		
	if (elemento == 3) {
		mes "[^EEAD2D Mestre Shion ^000000]";
		mes "Seu grosso mudou de ideia?";
		close;
	}
	else if (elemento == 2) {
		mes "Voce pertence ao elemento Agua";
		mes "deseja resetar?";
		next;
		if(select("Sim:Não")==2){mes "Volte quando quiser."; close; }
		mes "Muito bem elemento Agua resetado.";
		set elemento,elemento-1;
		close;
	}
	else if (elemento == 1) {
		mes "Voce pertence ao elemento Fogo";
		mes "deseja resetar?";
		next;
		if(select("Sim:Não")==2){mes "Volte quando quiser."; close; }
		mes "Muito bem elemento Fogo resetado.";
		set elemento,elemento-1;
		close;
	}
	else {
		mes "[^EEAD2D Mestre Shion ^000000]";
		mes "Olá~";
		mes "Bem-vindo ao";
		mes "Bem vindo a cidade dos aprendizes.";
		next;
		mes "[^EEAD2D Mestre Shion ^000000]";
		mes "Seu nome é...";
		mes "" + strcharinfo(0) + ".";
		next;
		mes "[^EEAD2D Mestre Shion ^000000]";
		mes "Meu nome é Shion.";
		mes "Sim, essa é a primeira vez que nos falamos, é claro. Hahahaha~!";
		next;
		mes "[^EEAD2D Mestre Shion ^000000]";
		mes "Agora que nos conhecemos, escolha o seu elemento!";
		next;
		switch(select("- Fogo:- Agua:- Quem diabos é você?")) {
		case 1:
			mes "[^EEAD2D Mestre Shion ^000000]";
			mes "voce escolheu o elemento Fogo!";
			set elemento,1;
			close;
			
		case 2:
			mes "[^EEAD2D Mestre Shion ^000000]";
			mes "voce escolheu o elemento Agua!";
			set elemento,2;
			close;
			
		case 3:
			mes "[^EEAD2D Mestre Shion ^000000]";
			mes "Eu? Eu sou Shion!";
			mes "Mas que modo rude de se perguntar! Estou aqui dando meu tempo e esforço aqui como voluntária, então você deveria mostrar-me um pouco de respeito pelo menos!";
			set elemento,3;
			close;
		}
	}
}

 

 

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

@clold eu ja usaria o NPC assim:

prontera,160,191,4	script	Mestre Shion#02	102,{
	
	switch(elemento)
	{
		case 1:	// Elemento 1
				mes "Voce pertence ao elemento Fogo";
				mes "deseja resetar?";
				next;
				if(select("Sim:Não")==2){mes "Volte quando quiser."; close; }
				mes "Muito bem elemento Fogo resetado.";
				elemento=0;
				close;
				
		case 2: // Elemento 3
				mes "Voce pertence ao elemento Agua";
				mes "deseja resetar?";
				next;
				if(select("Sim:Não")==2){mes "Volte quando quiser."; close; }
				mes "Muito bem elemento Agua resetado.";
				elemento=0;
				close;

		case 3: // Elemento 3
				mes "[^EEAD2D Mestre Shion ^000000]";
				mes "Seu grosso mudou de ideia?";
				close;
	}
	
	mes "[^EEAD2D Mestre Shion ^000000]";
	mes "Olá~";
	mes "Bem-vindo ao";
	mes "Bem vindo a cidade dos aprendizes.";
	next;
	mes "[^EEAD2D Mestre Shion ^000000]";
	mes "Seu nome é...";
	mes "" + strcharinfo(0) + ".";
	next;
	mes "[^EEAD2D Mestre Shion ^000000]";
	mes "Meu nome é Shion.";
	mes "Sim, essa é a primeira vez que nos falamos, é claro. Hahahaha~!";
	next;
	mes "[^EEAD2D Mestre Shion ^000000]";
	mes "Agora que nos conhecemos, escolha o seu elemento!";
	next;
	switch(select("- Fogo:- Agua:- Quem diabos é você?"))
	{
		case 1:
			mes "[^EEAD2D Mestre Shion ^000000]";
			mes "voce escolheu o elemento Fogo!";
			elemento=1;
			close;
			
		case 2:
			mes "[^EEAD2D Mestre Shion ^000000]";
			mes "voce escolheu o elemento Agua!";
			elemento=2;
			close;
			
		case 3:
			mes "[^EEAD2D Mestre Shion ^000000]";
			mes "Eu? Eu sou Shion!";
			mes "Mas que modo rude de se perguntar! Estou aqui dando meu tempo e esforço aqui como voluntária, então você deveria mostrar-me um pouco de respeito pelo menos!";
			elemento=3;
			close;
	}
}

o if já é uma condição sendo assim ele vai executar o que esta dentro do if para ser executado. Não significa que vc tem que ficar colocando um MONTER de else ou else if.

Por ex, no Exemplo que @SoulBlaker deu:

set [email protected],3;

if( [email protected] == 1 )
 mes "Primeira instrução";
else if( [email protected] == 2 )
 mes "Segunda instrução";
else if( [email protected] == 3 )
 mes "Terceira instrução";
else if( [email protected] == 4 )
 mes "Quarta instrução";

poderia ter ficado assim:

set [email protected],3;

if( [email protected] == 1 )mes "Primeira instrução";
if( [email protected] == 2 )mes "Segunda instrução";
if( [email protected] == 3 )mes "Terceira instrução";
if( [email protected] == 4 )mes "Quarta instrução";

ou assim como o @Protimus sugeriu:

[email protected]=3;

switch([email protected])
{
	case 1: mes "Primeira instrução"; close;
	case 2: mes "Segunda instrução"; close;
	case 3: mes "Terceira instrução"; close;
	case 4: mes "Quarta instrução"; close;
}

 

@kurashima 

no primeiro exemplo que você citou tem algumas coisas a se considerar:

Não é necessário setar um OnInit para uma variável que vai ser usada em apenas um NPC. E mesmo que essa variável você ser usada em outro NPC da para fazer um NPC pegar uma variável de outro.
Esse exemplo que vc sitou eu faria assim:

geffen_in,164,124,4    script    Instrutora    2_F_MAGICMASTER,{

	[email protected]$="[ ^ff0000Instrutora^000000 ]";

	if (Class ==2)
	{
		mes [email protected]$;
		mes "Continuação para Mago.";
		close;
	}
	
	if (countitem(607) && Class ==0 && JobLevel ==10)
	{
		mes [email protected]$;
		mes "Vejo que você tem ^ff8c00"+getitemname(607)+"^000000, este e um item bastante especial.";
		mes "Com ele você pode se torna um mago da guild";
		switch(select("Se torna um mago:Fale-me mais sobre..."))
		{
			case 1:
					.resp1$="INT";
					mes [email protected]$;
					mes "Para se torna um mago responde as perguntas que irei faze corretamente.";
					mes "Qual e o status que ira lhe conceder um aumento de nivel de ataque magico?";
					input @int$;
					if (@int$ != .resp1$)
					{
						mes [email protected]$;
						mes "Sinto muito mas você errou.";
						close;
					}

					mes [email protected]$;
					mes "Muito bem";
					close;
					
			case 2:
					mes [email protected]$;
					mes "Magos são muitos intelgigentes.";
					mes "blablbla bla bla bla blabla...'";
					close;
		}
    }
	
	mes [email protected]$;
	mes "Um belo dia não?";
	mes "Vejo que falta algo para sua evolução.";
	mes "Será que você é digno?";
	close;
}

 

Para fazer uma programação necessita de 2 coisas.
Coerência nas ações que vão ser executadas e conhecimento das funções para que o código seja limpo, seguro e pratico.

Este mesmo código que executei pode ser executado de outras formas. Vai depender da lógica, interpretação e conhecimento da linguagem de outra pessoa. Um exemplo disso é as diversas formas e opiniões que tivemos aqui como resposta.
 

1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sobre a utilização de memória e otimização é importante salientar o que o SoulBlaker citou.

 

A linguagem de script do emulador não é uma linguagem padrão, ela foi "criada" para uso exclusivo do próprio npc de jogo. Utiliza-se a base de código do C, então muitas coisas são importadas do próprio C. É muito mais interessante e rápido você usar tudo que é padrão dele do que usar macros que foram definidas pelo próprio emulador. Quando você acessa uma macro, você terá que fazer consulta direta do código inteiro da macro/comando de script para coisas que você pode fazer na própria mão...

Obviamente os comandos foram feitos pra ajudar não ter que fazer tudo na mão, então não há motivo para não usá-los, mesmo que isso consuma mais do desempenho, coisa que é mínima na maioria dos casos.

 

Entretanto o uso abusivo de estruturas de repetição para estilizar o npc ou então de variáveis temporárias, faz com que o código fique mais demorado ou dependendo do tipo de npc e a quantidade de requisições que são feitas por jogadores nele, o consumo seja maior.

 

Ou seja: Nem sempre um código bonito e enxuto é um código verdadeiramente eficaz, podendo ser um código de várias linhas mais rápido e com menos consumo que um menor

0

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Orce disse:

@clold eu ja usaria o NPC assim:

prontera,160,191,4	script	Mestre Shion#02	102,{
	
	switch(elemento)
	{
		case 1:	// Elemento 1
				mes "Voce pertence ao elemento Fogo";
				mes "deseja resetar?";
				next;
				if(select("Sim:Não")==2){mes "Volte quando quiser."; close; }
				mes "Muito bem elemento Fogo resetado.";
				elemento=0;
				close;
				
		case 2: // Elemento 3
				mes "Voce pertence ao elemento Agua";
				mes "deseja resetar?";
				next;
				if(select("Sim:Não")==2){mes "Volte quando quiser."; close; }
				mes "Muito bem elemento Agua resetado.";
				elemento=0;
				close;

		case 3: // Elemento 3
				mes "[^EEAD2D Mestre Shion ^000000]";
				mes "Seu grosso mudou de ideia?";
				close;
	}
	
	mes "[^EEAD2D Mestre Shion ^000000]";
	mes "Olá~";
	mes "Bem-vindo ao";
	mes "Bem vindo a cidade dos aprendizes.";
	next;
	mes "[^EEAD2D Mestre Shion ^000000]";
	mes "Seu nome é...";
	mes "" + strcharinfo(0) + ".";
	next;
	mes "[^EEAD2D Mestre Shion ^000000]";
	mes "Meu nome é Shion.";
	mes "Sim, essa é a primeira vez que nos falamos, é claro. Hahahaha~!";
	next;
	mes "[^EEAD2D Mestre Shion ^000000]";
	mes "Agora que nos conhecemos, escolha o seu elemento!";
	next;
	switch(select("- Fogo:- Agua:- Quem diabos é você?"))
	{
		case 1:
			mes "[^EEAD2D Mestre Shion ^000000]";
			mes "voce escolheu o elemento Fogo!";
			elemento=1;
			close;
			
		case 2:
			mes "[^EEAD2D Mestre Shion ^000000]";
			mes "voce escolheu o elemento Agua!";
			elemento=2;
			close;
			
		case 3:
			mes "[^EEAD2D Mestre Shion ^000000]";
			mes "Eu? Eu sou Shion!";
			mes "Mas que modo rude de se perguntar! Estou aqui dando meu tempo e esforço aqui como voluntária, então você deveria mostrar-me um pouco de respeito pelo menos!";
			elemento=3;
			close;
	}
}


 

Bom, eu ainda nao sou expert em script, e nao sei qual diferença daria deste geito que vc fez, pelo geito que eu fiz. tudo bem que quanto mais otimizados os codigo for melhor é,  mas daria mt diferença do seu geito pelo meu?

Prot

Editado por clold
0

Compartilhar este post


Link para o post
Compartilhar em outros sites

@clold ai cai no que o @SoulBlaker e o @Protimus comentou.

Você tem que evitar fazer verificações desnecessárias. Você cria um código em que ele tem que rodar TODAS as FUNÇÕES ate achar a que vai ser executada.

Por exemplo no seu NPC, vamos supor que o cara ainda não tenha elemento. Ai ele verifica se ele é elemento 3 (a não é 3), depois verifica se ele é 2 (a não é 2) depois verifica se ele é 1 (a não é 1), hmmmmmmmmmmm ele é zero ( que coisa não?) então vamos fazer isso. Ele passa por TODAS as verificações do NPC ate chegar na parte em que ele realmente cabe.

No exemplo que dei ele já faz uma verificação,

 tem elemento? qual é? então já joga na área que trata o elemento. No caso o switch(1, 2 ou 3). Se o switch=1 ja joga na case 1, se for 2 na 2 e assim vai. 

1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 23/10/2017 at 11:19, SoulBlaker disse:

else if lol?

 

IF = SE

ELSE = SENÂO

 

Se tiver mais comparações tem que ter um if depois do else, será outro operador, caso o primeiro seja válido os demais que contenha a clausula else definida antes serão ignorados, otimizando ação do código.

Isto evita que o script fique lendo condição por condição já que tem uma válida.

 

set [email protected],3;

if( [email protected] == 1 )
 mes "Primeira instrução";
else if( [email protected] == 2 )
 mes "Segunda instrução";
else if( [email protected] == 3 )
 mes "Terceira instrução";
else if( [email protected] == 4 )
 mes "Quarta instrução";

Tecnicamente, iria ser avaliado pela execução apenas até a terceira instrução, validando a mesma e ignorando a quarta instrução (por completo) já que dentro do conjunto de instruções já encontrou uma condição válida.

Caso você não se beneficie dos else, todas condições seriam checadas para validação sem exceções.

Compradores dentro são outras execuções, embora seja um algorítimo dentro daquele bloco de instrução será tratado de forma separada, em caso de switchs por exemplo é muito comum você criar uma condição para que ele "pule" o bloco de instrução do switch caso seja necessário, indo direto ao final da operação, (mesma coisa com for, whiles...)

 

if( select("Pular Execução?","Não pular.")  == 1)

 break;

 

Agora não sei dizer qual o gasto de memória dentre de cada instrução para pode dizer qual é melhor usar o switch ou o if, com ou sem else, ou se você quer deixar seu código bonitinho ou um código sujo porém funcional.

 

Lembro que no Cronus o pessoal tinha mania de chamarem nego de power scripters por criar npcs dinâmicos, cheio de códigos malucos e loops abusivos, que deixava o npc bonitinho porém não era nada otimizado, o que a programação de hoje dia tenta trazer, instruções simples para execuções totalmente otimizadas.

Continua um garoto, pena q já morreu e tá falando do céu

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Orce Achei interresante usar o switch fiz uns testes aqui, e percebi que é bem mais facil usar eles, mas tenho uma duvida quanto as variavel setada, por exemplo elemento=1; no caso isso seria uma variavel permanente ? 

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

neste caso ficou uma variável permanente de personagem

As variáveis são dividas em:

prefixo -> Determina o alcance e o tempo de vida da variável (você já vai entender! ^^)
name -> Um identificador podendo ser palavras ou números
postfix -> Determina o tipo de variável... determines the type of the variable: palavras ou numéricas

O alcance da variável como já disse acima, pode ser definido em:

global -> É mostrada a todos do servidor. Não muda de um char para outro. É a "$"
conta -> É referente a cada conta. É utilizada por todos os characters da conta. É a "#"
jogador -> Referente a cada personagem. É identificada pelo ID do char. Não há prefixo.
npc -> Referente ao NPC. É uma variável de npc. É a "."

O tempo de vida da variável pode ser definido em:

permanente - Uma variável que permanece enquanto o servidor está rodando.

temporária - Uma variável que permanece enquanto o script está rodando. Algumas só zeram quando o char reloga.

Prefixos:

Nada - Uma variável do tipo permanente referente ao personagem. 
Ex.: Pontos
"@" - Uma variável temporária referente ao personagem. Quando o personagem relogar essa variável é zerada.
Ex.: @Pontos
"$" - Uma variável global e permanente. Ou seja, é a mesma para todos do servidor e é permanente. 
Ex.: $Kills
"[email protected]" - Uma variável global e temporária. Ou seja, assim como a "$", é a mesma para todas do servidor, mas ela zera quando o servidor reiniciar, ou seja, não é permanente. 
Ex.:[email protected]
"." - Uma variável que fica no NPC enquanto o servidor estiver rodando. 
Ex.: .npc$(Variável que irá ser gravada o nome do npc)
"[email protected]" - Uma variável temporária que só é acessível enquanto o npc estiver rodando. Quando o script finaliza ela zera.

"#" - Uma variável permanente de conta. Mais utilizada em scripts de Bancos pra gravar o dinheiro que fica em cada conta. Assim serve para todos os chars daquela conta.

"##" - Uma variável global permanente de conta. Só é utilizada quando vc tem sub-servidores... essa variável vai servir para os dois servidores que vc tiver.

Sufixos:

Nada - Serve para armazenar números, sejam positivos ou negativos, mas nunca fracionários. 
Ex.: @Pontos
' - Serve para armazenar textos, e pode ser armazenados números também. 
Ex.: @npc$

Exemplos:

name - Variável permanente de números para cada jogador.
name$ - Variável permanente de textos para cada jogador.
@name - Variável temporária de números para cada jogador.
@name$ - Variável temporária de textos para cada jogador.
$name - Variável permanente global de números para todos os jogadores.
$name$ - Variável permanente global de textos para todos os jogadores.
[email protected] - Variável temporária global de números para todos os jogadores.
[email protected]$ - Variável temporária global de textos para todos os jogadores.
.name - Variável permanente de números de npc.
.name$ - Variável permanente de textos de npc.
.@name - Variável temporária de números de npc.
.@name$ - Variável temporária de textos de npc.
#name - Variável permanente de números para cada conta.
#name$ - Variável permanente de textos para cada conta.
##name - Variável permanente global de números para cada conta em dois servidores ou mais.
##name$ - Variável permamente global de textos para cada conta em dois servidores ou mais.

Ufa..
Virou um tutprial...rsrs

1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Orce Ata, isso já sabia das variáveis, é que eu não entendo de C# e nem de C++ então pensei que teria alguma mudança nas variáveis, porque trocou a , por = pensei q afetaria alguma outra coisa, então neste caso eu posso usar as outras variáveis normais , as de npc e as de jogador caso eu queira, era só isso mesmo matou minha curiosidade kkk

Obrigado @Orce

 

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

NPC's desse tipo onde o jogador deve escolher uma opção que o vinculada a um ID de certo coisa é aconselhável fazer de uma forma que fique fácil adicionar novas opções sem dar dor cabeça. Em qualquer linguagem de baixo nível você deve pensar na manutenibilidade do código. Você não vai querer ficar perdido em um script que precisa modificar. Você se lembra de onde modificar onde sem gerar nenhum impacto agora, mas e daqui alguns meses?

Neste código que passei parece estar maior ou mais complexo do que deveria, porém caso você precise de mais de 5 elementos já torna mais viável o uso dele. Claro, isto é supondo que todos os textos de aquisição do elemento serão os mesmos, caso contrário o uso de um switch talvez lhe sirva melhor para poucos elementos.

Mas desta forma que exemplifiquei podemos até adicionar itens que cada elemento ganharia ao vincular de forma fácil. Até mesmo os textos diferentes.


https://pastebin.com/raw/ZW6zRuaU

Editado por Zell
0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar Agora