Postado Outubro 29, 2017 7 anos Fala galera, tudo certo? Então, a um tempo atras, criei um tópico aqui no fórum pedindo uma ajuda sobre como alterar algumas coisas dentro de um servidor de poketibia, porém, não encontrei a resposta. [Duvida] Cores de mensagem Depois de um longo tempo procurando as informações dentro da source do cliente, consegui finalmente resolver o meu problema e me senti com uma divida no fórum, graças ao @Brunds que mesmo não resolvendo o meu problema, estava respondendo as minhas mensagens. Com isso venho compartilhar a minha solução. Servidor utilizado para base: [DxP] Exclusivo Poketibia OpenSource+Cliente+Site+DB Musica utilizada: Tech N9ne - Come Gangsta (Izzamuzzic Remix) Tutorial Como alterar a cor do texto Antes de encontrar a solução, tentei criar um novo tipo de talktype, estava conseguindo, o servidor estava enviando as mensagens corretamente, mas o problema estava no cliente, então mudei a estrategia e tentei usar o que já estava funcionando, lembrei que atualmente existe dois tipo de monster talktype: data/lib/000-constant.lua TALKTYPE_MONSTER = 19 TALKTYPE_MONSTER_YELL = 20 O talktype 19 é usado normalmente para os monstros "falarem" e o outro valor não estava sendo usando, pensando nisso peguei esse valor para a minha função de texto. Obs.: Não vou ensinar como compilar o cliente - Compilando OTC - CodeBlocks - Windows - Vídeo Aula Primeiro passo Alterei a linha 142 otclient/source/client/statictext.cpp } else if(m_mode == Otc::MessageMonsterSay || m_mode == Otc::MessageSpell || m_mode == Otc::MessageBarkLow || m_mode == Otc::MessageBarkLoud) { m_color = Color(254, 101, 0); } else if(m_mode == Otc::MessageMonsterYell ){ m_color = Color(255,165,0); } Com isso, estou definindo em m_color que, quando o valor de m_mode for igual a MessageMonsterYell, m_color receba a cor especificada em RGB. Alterando isso eu já consigo modificar a cor, porem, ainda não tem um limite de mensagens que aparecem quando o player "fala", continue pesquisando e encontrei uma "meia" solução, adaptei e consegui o resultado que eu estava buscando. Dentro do mesmo arquivo. Alterei a linha 74 else if(m_name != name || m_mode != mode) { return false; } else if(mode == Otc::MessageMonsterYell){ if(m_messages.size() > 2) { m_messages.pop_front(); m_updateEvent->cancel(); m_updateEvent = nullptr; } } // too many messages else if(m_messages.size() > 10) { m_messages.pop_front(); m_updateEvent->cancel(); m_updateEvent = nullptr; } Adicionei um else if para o mode de MessageMonsterYell, que é o valor estamos utilizando para a comunicação do player, verificando a quantidade de mensagens e limitando em até 3 mensagens. Apos essas alterações, basta apenas compilar o cliente, porem, ainda não esta pronto . Segundo passo Agora precisamos alterar o script do nosso servidor para "falar" da maneira correta, pois atualmente o player envia mensagens ao cliente com outro valor, vamos alterar. Lembrando dos valores que estão definidos no data/lib/000-constant.lua existe outro dois valores para representar a mesma coisa, porem, apenas com o nome diferente, acredito eu que é para facilitar, dentro do arquivo data/lib/100-compat.lua TALKTYPE_ORANGE_1 = TALKTYPE_MONSTER TALKTYPE_ORANGE_2 = TALKTYPE_MONSTER_YELL Não muda nada, apenas o nome da "variavel". Alterei a linha 39 data/lib/120-goback.lua doCreatureSay(cid, mbk, TALKTYPE_ORANGE_2) Alterei a linha 228 data/actions/scripts/Basic/goback.lua doCreatureSay(cid, mgo, TALKTYPE_ORANGE_2) Alterei as linhas: 22, 69, 83, 85, 107, 186, 204, 222, 241, 248, 258, 263 data/actions/scripts/Basic/order.lua -- linha 22 doPlayerSay(cid, getCreatureNick(getCreatureSummons(cid)[1]) .. orderTalks["downability"].talks[math.random(#orderTalks["downability"].talks)], TALKTYPE_ORANGE_2) -- linha 69 doPlayerSay(cid, pokeName..orderTalks["ride"].talks[math.random(#orderTalks["ride"].talks)], TALKTYPE_ORANGE_2) -- linhas 83 e 85 if string.find(habilidades, "levitate") then doPlayerSay(cid, pokeName..orderTalks["levitate"].talks[math.random(#orderTalks["levitate"].talks)], TALKTYPE_ORANGE_2) else doPlayerSay(cid, pokeName..orderTalks["fly"].talks[math.random(#orderTalks["fly"].talks)], TALKTYPE_ORANGE_2) end -- linha 107 doPlayerSay(cid, getCreatureNick(getCreatureSummons(cid)[1])..", reverta-se.", TALKTYPE_ORANGE_2) -- linha 186 doPlayerSay(cid, getCreatureNick(poke)..orderTalks["dig"].talks[math.random(#orderTalks["dig"].talks)], TALKTYPE_ORANGE_2) -- linha 204 doPlayerSay(cid, getCreatureNick(poke)..orderTalks["cut"].talks[math.random(#orderTalks["cut"].talks)], TALKTYPE_ORANGE_2) -- linha 222 doPlayerSay(cid, getCreatureNick(poke)..orderTalks["rock"].talks[math.random(#orderTalks["rock"].talks)], TALKTYPE_ORANGE_2) -- linha 241 doPlayerSay(cid, getCreatureNick(poke)..orderTalks["headbutt"].talks[math.random(#orderTalks["headbutt"].talks)], TALKTYPE_ORANGE_2) -- linha 248 doPlayerSay(cid, getCreatureNick(poke)..orderTalks["move"].talks[math.random(#orderTalks["move"].talks)], TALKTYPE_ORANGE_2) -- linha 258 doPlayerSay(cid, getCreatureNick(poke)..orderTalks["move"].talks[math.random(#orderTalks["move"].talks)], TALKTYPE_ORANGE_2) -- linha 263 doPlayerSay(cid, getCreatureNick(poke)..orderTalks["move"].talks[math.random(#orderTalks["move"].talks)], TALKTYPE_ORANGE_2) Apos esse processo todo, salva e abre o serve. Créditos @Banker @Brunds kyogron -- outro forum Me Obs.: Aceito pagamento no PicPay para aula de programação Obs.2: Não sou bom professor Obs.3: Ajuda a comprar um Mc Lanche Feliz
Postado Outubro 29, 2017 7 anos Bem legal mesmo cara, mas dava para fazer pelo otc mesmo, mas mesmo assim ótima contribuição
Postado Novembro 1, 2017 7 anos Ótimo Tutorial, eu estava precisando disto, que bom que meu Tutorial também ajudou!
Postado Fevereiro 21, 2018 7 anos Em 29/10/2017 em 00:30, gustavof disse: Fala galera, tudo certo? Então, a um tempo atras, criei um tópico aqui no fórum pedindo uma ajuda sobre como alterar algumas coisas dentro de um servidor de poketibia, porém, não encontrei a resposta. [Duvida] Cores de mensagem Depois de um longo tempo procurando as informações dentro da source do cliente, consegui finalmente resolver o meu problema e me senti com uma divida no fórum, graças ao @Brunds que mesmo não resolvendo o meu problema, estava respondendo as minhas mensagens. Com isso venho compartilhar a minha solução. Servidor utilizado para base: [DxP] Exclusivo Poketibia OpenSource+Cliente+Site+DB Musica utilizada: Tech N9ne - Come Gangsta (Izzamuzzic Remix) Tutorial Como alterar a cor do texto Antes de encontrar a solução, tentei criar um novo tipo de talktype, estava conseguindo, o servidor estava enviando as mensagens corretamente, mas o problema estava no cliente, então mudei a estrategia e tentei usar o que já estava funcionando, lembrei que atualmente existe dois tipo de monster talktype: data/lib/000-constant.lua TALKTYPE_MONSTER = 19 TALKTYPE_MONSTER_YELL = 20 O talktype 19 é usado normalmente para os monstros "falarem" e o outro valor não estava sendo usando, pensando nisso peguei esse valor para a minha função de texto. Obs.: Não vou ensinar como compilar o cliente - Compilando OTC - CodeBlocks - Windows - Vídeo Aula Primeiro passo Alterei a linha 142 otclient/source/client/statictext.cpp } else if(m_mode == Otc::MessageMonsterSay || m_mode == Otc::MessageSpell || m_mode == Otc::MessageBarkLow || m_mode == Otc::MessageBarkLoud) { m_color = Color(254, 101, 0); } else if(m_mode == Otc::MessageMonsterYell ){ m_color = Color(255,165,0); } Com isso, estou definindo em m_color que, quando o valor de m_mode for igual a MessageMonsterYell, m_color receba a cor especificada em RGB. Alterando isso eu já consigo modificar a cor, porem, ainda não tem um limite de mensagens que aparecem quando o player "fala", continue pesquisando e encontrei uma "meia" solução, adaptei e consegui o resultado que eu estava buscando. Dentro do mesmo arquivo. Alterei a linha 74 else if(m_name != name || m_mode != mode) { return false; } else if(mode == Otc::MessageMonsterYell){ if(m_messages.size() > 2) { m_messages.pop_front(); m_updateEvent->cancel(); m_updateEvent = nullptr; } } // too many messages else if(m_messages.size() > 10) { m_messages.pop_front(); m_updateEvent->cancel(); m_updateEvent = nullptr; } Adicionei um else if para o mode de MessageMonsterYell, que é o valor estamos utilizando para a comunicação do player, verificando a quantidade de mensagens e limitando em até 3 mensagens. Apos essas alterações, basta apenas compilar o cliente, porem, ainda não esta pronto . Segundo passo Agora precisamos alterar o script do nosso servidor para "falar" da maneira correta, pois atualmente o player envia mensagens ao cliente com outro valor, vamos alterar. Lembrando dos valores que estão definidos no data/lib/000-constant.lua existe outro dois valores para representar a mesma coisa, porem, apenas com o nome diferente, acredito eu que é para facilitar, dentro do arquivo data/lib/100-compat.lua TALKTYPE_ORANGE_1 = TALKTYPE_MONSTER TALKTYPE_ORANGE_2 = TALKTYPE_MONSTER_YELL Não muda nada, apenas o nome da "variavel". Alterei a linha 39 data/lib/120-goback.lua doCreatureSay(cid, mbk, TALKTYPE_ORANGE_2) Alterei a linha 228 data/actions/scripts/Basic/goback.lua doCreatureSay(cid, mgo, TALKTYPE_ORANGE_2) Alterei as linhas: 22, 69, 83, 85, 107, 186, 204, 222, 241, 248, 258, 263 data/actions/scripts/Basic/order.lua -- linha 22 doPlayerSay(cid, getCreatureNick(getCreatureSummons(cid)[1]) .. orderTalks["downability"].talks[math.random(#orderTalks["downability"].talks)], TALKTYPE_ORANGE_2) -- linha 69 doPlayerSay(cid, pokeName..orderTalks["ride"].talks[math.random(#orderTalks["ride"].talks)], TALKTYPE_ORANGE_2) -- linhas 83 e 85 if string.find(habilidades, "levitate") then doPlayerSay(cid, pokeName..orderTalks["levitate"].talks[math.random(#orderTalks["levitate"].talks)], TALKTYPE_ORANGE_2) else doPlayerSay(cid, pokeName..orderTalks["fly"].talks[math.random(#orderTalks["fly"].talks)], TALKTYPE_ORANGE_2) end -- linha 107 doPlayerSay(cid, getCreatureNick(getCreatureSummons(cid)[1])..", reverta-se.", TALKTYPE_ORANGE_2) -- linha 186 doPlayerSay(cid, getCreatureNick(poke)..orderTalks["dig"].talks[math.random(#orderTalks["dig"].talks)], TALKTYPE_ORANGE_2) -- linha 204 doPlayerSay(cid, getCreatureNick(poke)..orderTalks["cut"].talks[math.random(#orderTalks["cut"].talks)], TALKTYPE_ORANGE_2) -- linha 222 doPlayerSay(cid, getCreatureNick(poke)..orderTalks["rock"].talks[math.random(#orderTalks["rock"].talks)], TALKTYPE_ORANGE_2) -- linha 241 doPlayerSay(cid, getCreatureNick(poke)..orderTalks["headbutt"].talks[math.random(#orderTalks["headbutt"].talks)], TALKTYPE_ORANGE_2) -- linha 248 doPlayerSay(cid, getCreatureNick(poke)..orderTalks["move"].talks[math.random(#orderTalks["move"].talks)], TALKTYPE_ORANGE_2) -- linha 258 doPlayerSay(cid, getCreatureNick(poke)..orderTalks["move"].talks[math.random(#orderTalks["move"].talks)], TALKTYPE_ORANGE_2) -- linha 263 doPlayerSay(cid, getCreatureNick(poke)..orderTalks["move"].talks[math.random(#orderTalks["move"].talks)], TALKTYPE_ORANGE_2) Apos esse processo todo, salva e abre o serve. Créditos @Banker @Brunds kyogron -- outro forum Me Obs.: Aceito pagamento no PicPay para aula de programação Obs.2: Não sou bom professor Obs.3: Ajuda a comprar um Mc Lanche Feliz oi, poderia me ajudar tipo baixei essa base porem não sei compilar Client nem source, você poderia me fala como faço para o servidor, Client, Source, e site, trabalharem juntos ? [DxP] Exclusivo Poketibia OpenSource+Cliente+Site+DB
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.