Jump to content

Como começar a mexer em source #1 - exercicio da aula passada resolvido[explicado]


GODSPEED
 Share

Recommended Posts

Boas pessoal, hoje vou trazer um novo tópico sobre como mexer em Source, para quem não viu está aqui o tópico #0 - link : https://tlthings.net/index.php?/topic/1013-como-começar-a-mexer-em-source-0/&tab=comments#comment-3970

a aula passada tinha o objetivo de fornecer algumas bases em c++, como por exemplo uma estrutura de um programa em c++, o que são variaveis, condições if etc coisas muito simples.

Neste tópico vou resolver o exercicio que foi proposto na aula anterior que foi :

exercicio basico : adicionem nível minimo para negociar

então vamos lá, Primeiramente abram o arquivo exchange.cpp , este arquivo é cerebro da negociação na Server side

Procuramos a função : bool CHARACTER::ExchangeStart(LPCHARACTER victim)

na aula anterior foi deixado um item onde falava sobre funções e sobre funções com múltiplos parâmetros, aconselho a darem uma olhada para ficaram a saber melhor o que são funções com parâmetros.

Se repararmos a função está a usar um parâmetro que é LPCHARACTER victim, LPCHARACTER podemos considerar como um objecto da class CHARACTER, que foi definido no ficheiro typedef.h

nesta função não é 100% obrigatório o uso do obj victim.

todas as funções acabam quando o função retorna algo assim : return returnvalue;

o returnvalue depende do tipo da função se a função for bool como esse caso o returnvalue será true or false, se for void a função não retorna nada, se for int retorna um valor inteiro por assim adiante. neste caso a função bool CHARACTER::ExchangeStart(LPCHARACTER victim) irá retornar ou true ou false então a abaixo de :

bool CHARACTER::ExchangeStart(LPCHARACTER victim), iremos abrir uma condição se, que irá verificar se o level dos chares é inferior a nivel desejado, se for a função acaba, pois ira retornar falso, basicamente a logica é essa, para verificar o level do char não iremos usar nenhum objecto, mas para ver o level da vitima iremos usar um objecto, e a função que verifica o level é GetLevel() então vamos por as mãos na massa

bool CHARACTER::ExchangeStart(LPCHARACTER victim)
{
	if (this == victim)	// ÀÚ±â ÀڽŰú´Â ±³È¯À» ¸øÇÑ´Ù.
		return false;

	if (IsObserverMode())
	{
		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("°üÀü »óÅ¿¡¼­´Â ±³È¯À» ÇÒ ¼ö ¾ø½À´Ï´Ù."));
		return false;
	}
  	const int nivel_minimo_negociar = 15;
  	if(GetLevel()<nivel_minimo_negociar || victim->GetLevel()<nivel_minimo_negociar)
    {
      ChatPacket(CHAT_TYPE_INFO, LC_TEXT("nivel necessário para negociar %d"),nivel_minimo_negociar);
      return false;
    }

e depois o resto do codigo

 

como podem ver eu criei uma variavel do tipo inteiro(a parte 0 tem um vídeo a falar sobre variaveis), mas como podem ver antes do tipo eu adicionei const, que significa constante

agora a variavel nivel_minimo_negociar é uma variavel do tipo inteiro ainda é uma constante, como por exemplo o número de avogadro na quimica

Pessoal esta fui a aula qualquer dúvida comentem que eu vou responder, ou se não entenderam algo digam ai em baixo que eu explico 

Link to comment
Share on other sites

  • 3 months later...
Em 20/08/2017 em 22:07, GODSPEED disse:

Boas pessoal, hoje vou trazer um novo tópico sobre como mexer em Source, para quem não viu está aqui o tópico #0 - link : https://tlthings.net/index.php?/topic/1013-como-começar-a-mexer-em-source-0/&tab=comments#comment-3970

a aula passada tinha o objetivo de fornecer algumas bases em c++, como por exemplo uma estrutura de um programa em c++, o que são variaveis, condições if etc coisas muito simples.

Neste tópico vou resolver o exercicio que foi proposto na aula anterior que foi :

exercicio basico : adicionem nível minimo para negociar

então vamos lá, Primeiramente abram o arquivo exchange.cpp , este arquivo é cerebro da negociação na Server side

Procuramos a função : bool CHARACTER::ExchangeStart(LPCHARACTER victim)

na aula anterior foi deixado um item onde falava sobre funções e sobre funções com múltiplos parâmetros, aconselho a darem uma olhada para ficaram a saber melhor o que são funções com parâmetros.

Se repararmos a função está a usar um parâmetro que é LPCHARACTER victim, LPCHARACTER podemos considerar como um objecto da class CHARACTER, que foi definido no ficheiro typedef.h

nesta função não é 100% obrigatório o uso do obj victim.

todas as funções acabam quando o função retorna algo assim : return returnvalue;

o returnvalue depende do tipo da função se a função for bool como esse caso o returnvalue será true or false, se for void a função não retorna nada, se for int retorna um valor inteiro por assim adiante. neste caso a função bool CHARACTER::ExchangeStart(LPCHARACTER victim) irá retornar ou true ou false então a abaixo de :

bool CHARACTER::ExchangeStart(LPCHARACTER victim), iremos abrir uma condição se, que irá verificar se o level dos chares é inferior a nivel desejado, se for a função acaba, pois ira retornar falso, basicamente a logica é essa, para verificar o level do char não iremos usar nenhum objecto, mas para ver o level da vitima iremos usar um objecto, e a função que verifica o level é GetLevel() então vamos por as mãos na massa


bool CHARACTER::ExchangeStart(LPCHARACTER victim)
{
	if (this == victim)	// ÀÚ±â ÀڽŰú´Â ±³È¯À» ¸øÇÑ´Ù.
		return false;

	if (IsObserverMode())
	{
		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("°üÀü »óÅ¿¡¼­´Â ±³È¯À» ÇÒ ¼ö ¾ø½À´Ï´Ù."));
		return false;
	}
  	const int nivel_minimo_negociar = 15;
  	if(GetLevel()<nivel_minimo_negociar || victim->GetLevel()<nivel_minimo_negociar)
    {
      ChatPacket(CHAT_TYPE_INFO, LC_TEXT("nivel necessário para negociar %d"),nivel_minimo_negociar);
      return false;
    }

e depois o resto do codigo

 

como podem ver eu criei uma variavel do tipo inteiro(a parte 0 tem um vídeo a falar sobre variaveis), mas como podem ver antes do tipo eu adicionei const, que significa constante

agora a variavel nivel_minimo_negociar é uma variavel do tipo inteiro ainda é uma constante, como por exemplo o número de avogadro na quimica

Pessoal esta fui a aula qualquer dúvida comentem que eu vou responder, ou se não entenderam algo digam ai em baixo que eu explico 

Continua assim e obg pela partilha de conhecimento e ajuda!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...