Ir para conteúdo

Featured Replies

Postado
5 horas atrás, ZikaLord disse:

if isPremium(player) and getName(player) == "Jorge" then -- caso player for vip e tiver o nome de "jorge" então execute abaixo
	print('você é premium.') -- mensagem para o CONSOLE

if isPremium(player) or getName(player) == "Jorge" then -- caso player for premium ira executar abaixo; se ele não for vip e tiver o nome == jorge então vai executar
	print('você é premium.') -- mensagem para o CONSOLE

está certo? coloquei esses "textos" para melhorar meu compreendimento.

Está certo sim, você só esqueceu de fechar o escopo com um end. Sempre que você declarar um if, terá que fechá-lo em algum momento, escopo é o espaço que fica entre o if e o end.

 

5 horas atrás, ZikaLord disse:

if item.itemid == needItemId then -- porque item.itemid ? porque foi necessario esse (".") entre os items? return false end

o ponto foi necessário para acessar a variável itemid que fica dentro de item, no caso, o argumento item não é um inteiro(número), é tipo uma tabela.

 

5 horas atrás, ZikaLord disse:

e percebi que você não últilizou elseifporque você não ultilizou elseif?

Neste caso, não é necessário utilizar elseif a ponto de manter as 3 verificações independentes, digamos que, separadinhas facilitando a leitura. Mas dependendo, dar pra utilizar elseif sim.

 

5 horas atrás, ZikaLord disse:

igual as tabelas lá encima não entendi o porque do uso desse (".") entre as variaveis.

o ponto é para você acessar variáveis dentro de uma tabela, porque se usar somente variavel = 5, estará declarando uma variável global e não terá relação alguma com a variável que está dentro da tabela.

  • Respostas 9
  • Visualizações 2.9k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Opa meu querido, que bom que se interessou pela linguagem LUA, tenho certeza que irá gostar bastante daqui pra frente ao decorrer de seu aprendizado. Então, vamos lá! Irei tentar resumir algumas coi

  • Muito bem amigo, continue assim, se esforce e pratique bastante que isso é o que dar resultado no aprendizado.  O seu script está ficando interessante, porém possui alguns probleminhas, mas é NORMAL

  • Vou tentar explicar essa parte do CID de uma forma mais prática, demonstrando diferenças entre C e C++ e você pode tirar suas conclusões.   Considere o pedaço de código abaixo, escrito na li

Postado
  • Autor

sobre o if eu que não fechei mesmo,era só pra ver se estava certo,mas obrigado por lembrar.

 

eu tentei fazer um script com tabela mas não sei se foi muito certo

 

item = 3124
itemtable = {
	[1] = { -- index 1 //  não mudar

	health = 50,
	stamina = 100,
	forca = 10,
},
	[2] = { -- index 2 // não mudar

	health = 100, -- pode ser alterado
	stamina = 200, -- pode ser alterado
	forca = 20 -- pode ser alterado

	}

}

function OnUse(cid, item)
	if getPlayerLevel(cid) == 100 then
		setCreatureMaxHealth(cid, itemtable[1].health)
		setCreatureMaxMana(cid, itemtable[1].stamina)
		setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, itemtable[1].forca) -- mude SWORD para uma dessas = AXE,CLUB,DISTANCE,FIST,SHIELD
	else
		doPlayerSendMessage(cid, 21, "Você não tem level 100 para usar esse item") -- mensagem que ira retornar caso não tenha level
	end

	if getPlayerLevel(cid) == 200 then
		setCreatureMaxHealth(cid, itemtable[2].health)
		setCreatureMaxMana(cid, itemtable[2].stamina)
		setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, itemtable[2].forca) -- não troque CONDITION_PARAM_SKILL // apenas oque foi dito a cima!!!!!
	else
		doPlayerSendMessage(cid, 21, "Você não tem level 200 para usar esse item") -- mensagem que ira retornar caso não tenha level
	end
	---------------- mensagem carinhosa para o retardado que queira usar isso depois do level necessario ----------------------------

	if getPlayerLevel(cid) == 101 then
	   doPlayerSendMessage(cid, 21, "TROUXA NÃO VOU DEIXAR VOCÊ QUERER USAR NO LEVEL 101")

	elseif getPlayerLevel(cid) == 201 then
	   doPlayerSendMessage(cid, 21, "TROUXA NÃO VOU DEIXAR VOCÊ QUERER USAR NO LEVEL 201")
	end

	-------------- apenas para checar se não foi outro item que deu essas skills em um possivel bug ----------------------------

	if item ~= 3214 then
		print("checar item 3214")
		end
	return true 
end

@Lyu

Editado por ZikaLord (veja o histórico de edições)

O rei de seu proprio destino é aquele que luta pela gloria do amanhã!
Discord : ZoR#9373


 

  • 4 weeks later...
Postado

Alguém sabe se existe um tutorial que ensinar a usar funções do LUA do zero?? porque eu não sei muita como como cid, setConditionParam() e outras funções

eu só sei que cid referece ao player/jogador mais não entendi o real sentido de usar cid

Postado
  • Autor
1 hora atrás, hallanehallex disse:

Alguém sabe se existe um tutorial que ensinar a usar funções do LUA do zero?? porque eu não sei muita como como cid, setConditionParam() e outras funções

eu só sei que cid referece ao player/jogador mais não entendi o real sentido de usar cid

 

Primeiro aprende a LUA mesmo, depois aplique as funçoes de tibia.

O rei de seu proprio destino é aquele que luta pela gloria do amanhã!
Discord : ZoR#9373


 

Postado
6 horas atrás, hallanehallex disse:

Alguém sabe se existe um tutorial que ensinar a usar funções do LUA do zero?? porque eu não sei muita como como cid, setConditionParam() e outras funções

eu só sei que cid referece ao player/jogador mais não entendi o real sentido de usar cid

 

Vou tentar explicar essa parte do CID de uma forma mais prática, demonstrando diferenças entre C e C++ e você pode tirar suas conclusões.

 

Considere o pedaço de código abaixo, escrito na linguagem C (usaremos short em vez de bool, porque é C)

struct Player {
  	int id;
	short isPremmium;
};

Nesse caso temos um tipo de dado Player, com um id e uma flag indicando se o jogador possui premmium.

Vamos agora declarar uma variável de tipo player:

struct Player jogador;
jogador.id = 0;
jogador.isPremmium = 0;

Agora, uma função que verificaria se esse jogador possui premmium ou não, ficaria mais ou menos assim:

short isPremmium(struct Player jogador) {
	return jogador.isPremmium;
}

Por que o jogador foi passado como parâmetro? Oras, porque a função precisa dele para ter o acesso, variáveis globais não são uma boa prática!

 

 

Agora, vamos levar para um caso que não precisaria, na linguagem C++

Considere o código abaixo, correspondente ao anterior:

class Player {
private:
  int id;
  bool isPremmium;  
public:
  Player(int id, bool isPremmy);
  bool isPremmium() {
	return this->isPremmium;
  }
};

Nesse caso, para criar um jogador e verificar se ele tem premmium, teriamos o seguinte pedaço de código:

// Criando jogador de id=0 e não tem premmy
Player* player = new Player(0, false);

if (player->isPremmy()) {
	// Código
}

Note que, apesar de isPremmy não ter parâmetro, ainda temos a referência do objeto player criado na linha 2, anterior ao "isPremmy".

 

De uma forma ou outra, você precisa especificar qual é o jogador em questão, isso vem das próprias linguagens de programação!

Caso não tenha entendido muito bem algumas expressões utilizadas, recomendo dar uma estudada no básico de algumas linguagens como C/C++/LUA e ver outras partes teóricas como Programação Orientada a Objetos (é um conceito bem fácil de ser compreendido, depois que você entendeu o básico).

Editado por marcot (veja o histórico de edições)

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 520.1k

Informação Importante

Confirmação de Termo