BA

BananaFight Free Codes

Por BananaFight, 28 de set. de 2017 em Programming Show-Off

poketibia
12
5.1k
BananaFightB
28 de setembro de 2017 às 14:11

Fala galera, a algum tempo eu venho organizando algumas idéias e melhorando alguns sistemas que eu faço no meu tempo livre, e depois de muito pensar eu resolvi postar eles para vocês.

 

Meu objetivo é compartilhar conhecimento de programação com vocês, e espero conseguir contribuir muito com isso.

 

Infelizmente esses 2 sistemas iniciais que irei postar aqui não foram gravados em videos pelo fato de ser um aprimoramento de coisas que eu ja fiz, MAS para os próximos sistemas que eu criar irei fazer um videos ensinado como eu crio meus sistemas e como editar a source de modo simples e fácil.

 

Para esses 2 primeiros sistemas estarei apenas disponibilizando o DIFF, não vou ensinar como instalar na source porque não é meu objetivo, com o DIFF disponivel e um pouco de esforço vocês conseguirão seguir e implementar nos seus próprios servidores.

 

OS SISTEMAS A BAIXO ESTÃO NA VERSÃO DE DESENVOLVIMENTO PODENDO APRESENTAR FALHAS E NÃO ESTÃO 100% FINALIZADOS.

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Monster System V 1.0

O sistema não é aprova de falhas e não foi bem testado, essa é a versão 1.0 e pode conter bugs.

 

Esse sistema foi feito para dar vida aos monstros do jogo, adicionando status e level para aumentar a dificuldade e a diversidade de coisas a se fazerem dentro do jogo adicionando mais RPG e dinâmica ao mesmo.

 

Monster System DIFF

https://pastebin.com/zZjHPMLR

 

O sistema conta com um sistema de level ja funcionando para os monstros do jogo aonde eles ganham experiencia ao matar outros monstros, quando passam de level eles tem seus status base aumentados.

 

Esse é um sistema mais complexo e por isso não vou dar muita descrição dele, pois ainda esta na V1 e tem muita coisa que não esta pronta, mas ja é um bom começo para dar uma diversificada nos monstros do seu servidor. 

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Pokeball System V 1.0

O sistema não é aprova de falhas e não foi bem testado, essa é a versão 1.0 e pode conter bugs.

 

Esse sistema foi feito criando uma nova classe chamada "Pokeball" e ela estende a classe "Item", o Objetivo dessa classe é organizar e facilitar a manutenção do código, e agilizar futuras interações do cliente com o servidor ( Enviar para o client a vida do pokemon que esta na ball e etc. )

 

Pokeball System DIFF

https://pastebin.com/F36pcf5Y

 

O Sistem conta com os seguintes atributos

 

std::string name = "";
std::string nick = ""; < Não esta sendo usado Ainda

uint32_t level = 1;
uint64_t experience = 100;

int32_t health = 100;
int32_t healthMax = 100;

PokemonStatus status; < Não esta sendo usado Ainda

 

E foram criados os seguintes métodos para serem usados no Lua

 

// Pokeball
static int luaPokeballCreate(lua_State* L);

static int luaPokeballGetPokemonName(lua_State* L);
static int luaPokeballSetPokemonName(lua_State* L);    

static int luaPokeballGetLevel(lua_State* L);
static int luaPokeballSetLevel(lua_State* L);      

static int luaPokeballGetExperience(lua_State* L);
static int luaPokeballSetExperience(lua_State* L);

static int luaPokeballGetHealth(lua_State* L);
static int luaPokeballSetHealth(lua_State* L);

static int luaPokeballGetMaxHealth(lua_State* L);
static int luaPokeballSetMaxHealth(lua_State* L);

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Proximo Passo:

 

Reformular formulas de ataques e spells

 

Editado Setembro 28 por BananaFight

kttallanK
28 de setembro de 2017 às 15:25

Parabéns cara acho muito foda seu trabalho. Sempre fiquei admirado pelo seu sistema de monster é algo inovador que pode melhorar muito o desenvolvimento de derivados como pokétibia.

BananaFightB
28 de setembro de 2017 às 15:36
8 minutos atrás, kttallan disse:

Parabéns cara acho muito foda seu trabalho. Sempre fiquei admirado pelo seu sistema de monster é algo inovador que pode melhorar muito o desenvolvimento de derivados como pokétibia.

 

Eu estou refazendo ele, ja postei a versão 2.0 dele em outro tópico aqui hoje, mas agora vou refazer tudo e postar aqui nesse tópico, arrumando bugs e fazendo da forma mais limpa possível.

DarkWoreD
28 de setembro de 2017 às 16:09

Obrigado pela contribuição, vlw suggest, o Xtibia Agradece e fico feliz em ver o povo voltando.

Editado Novembro 5 por DarkWore

nociamN
28 de setembro de 2017 às 21:09

Se eu falar pra vc que estava fazendo esses atributo nas sources que tem um limite da porra imagina 100 atributos para cada atributo do pokemon eu ja estava em

ITEM_ATTRIBUTE_POKEMON_NICK = (0x1EC | (static_cast<uint64_t>(1) << 43)),

ai o dalvorsn falo para eu fazer pro serialize me explico tudo mais não consegui implementar muito bom mano isso e muito muito foda.

MudrockM
28 de setembro de 2017 às 22:59

Cara obrigado por compartilhar com o Ékz, reputado!

BananaFightB
29 de setembro de 2017 às 00:22
3 horas atrás, nociam disse:

Se eu falar pra vc que estava fazendo esses atributo nas sources que tem um limite da porra imagina 100 atributos para cada atributo do pokemon eu ja estava em

ITEM_ATTRIBUTE_POKEMON_NICK = (0x1EC | (static_cast<uint64_t>(1) << 43)),

ai o dalvorsn falo para eu fazer pro serialize me explico tudo mais não consegui implementar muito bom mano isso e muito muito foda.

 

Foi exatamente por isso que resolvi criar o pokeball por classe, era muito ruim ter que usar os atributos dos itens.

nociamN
29 de setembro de 2017 às 21:53

tenho uma duvida o que seria exatamente essa a parte do 6 o que faz e um limite?

 

  case ATTR_POKEBALLINFO: {
   if (!propStream.skip(6)) {
    return ATTR_READ_ERROR;
   }
   break;
  }

BananaFightB
29 de setembro de 2017 às 22:23
26 minutos atrás, nociam disse:

tenho uma duvida o que seria exatamente essa a parte do 6 o que faz e um limite?

 

  case ATTR_POKEBALLINFO: {
   if (!propStream.skip(6)) {
    return ATTR_READ_ERROR;
   }
   break;
  }

 

Cara isso é para ele não tentar ler os atributos do pokeball pelo item, basicamente isso é para evitar bugs com o getAttribute. 

nociamN
29 de setembro de 2017 às 22:45

Ajustado o erro era em outro get set que coloquei do tipo strings  dava conflito sei lá porque ai ajustei utilizando  Const.

Editado Novembro 6 por nociam

Luga03L
06 de outubro de 2017 às 15:54
Em 29/09/2017 at 22:45, nociam disse:

Só uma pergunta esse sistema se fez no tfs 1.2 eu adicionei no 1.3 mas o servidor crash quanto desloga isso será e o tfs não compatível?

Má instalação de algum sistema, por isso é sempre bom fazer backups, eu, por exemplo, faço backup a cada virgula alterada askpask

 

Esses dias tava mexendo mó empolgado, fiz mts alterações, sem backups, quando fui compilar deu mó treta, nem ligava e já crashava KKKKKKK Mas graça a meu backup anterior consegui recuperar 90% do que tinha feito e ainda corrigi o problema hehe

 

Em 29/09/2017 at 00:22, BananaFight disse:

 

Foi exatamente por isso que resolvi criar o pokeball por classe, era muito ruim ter que usar os atributos dos itens.

Essa ideia de utilizar o pokeball por class é muito boa... Não tinha pensado nisso akspaks Mas, mesmo se eu tivesse pensado não conseguiria fazer por falta de conhecimento ... Vou estudar classes do C++ para poder desenvolver uns sistemas bem legais baseado nesse teu Pokeball Class ;) 

nociamN
06 de outubro de 2017 às 19:05

Como faço para ter acesso a por exemplo item:getId() == 22 porque não estou com acesso por pokeball:getId()?

Editado Novembro 6 por nociam