Tudo que MatheusEnjoy postou
-
[Release] Arquitetura do Software
O projeto esteve parado por anos, estou reativando, ele será publico assim que estiver pronto e qualidade aceitavel. O core será gratuito, mas vou desenvolver pluguins premium que serão vendidos. O que tem de inovação que os outros não tem ? Orientado e Objeto, a programação vai ser vem feita e não orientada a gambiarra. POR FAVOR MODERADOR, mesclar esse topico com o original do Lotus.
-
Heal com cores diferentes
Não testei em todos TFS, mas no 0.3.6 tem sim... Vlw Nu bombou o topico
-
Heal com cores diferentes
Nome: Heal Changing Colors Versão: 1.0 Testado: TFS 0.3.5 Pl1 e 0.4 (Deve funcionar em todos) Descrição: Você pode decidir mudar a cor para o que você gostaria de ser mostrado para o texto animado quando você se curar. Vamos la: game.cpp: Procure na função: bool Game::combatChangeHealth Por isso: addAnimatedText(list, targetPos, TEXTCOLOR_GREEN, buffer);Substitua por: addAnimatedText(list, targetPos, g_config.getNumber(ConfigManager::HEALTH_HEALING_COLOR), buffer);Procure na função: bool Game::combatChangeManaPor isso: addAnimatedText(list, targetPos, TEXTCOLOR_DARKPURPLE, buffer);Substitua por: addAnimatedText(list, targetPos, g_config.getNumber(ConfigManager::MANA_HEALING_COLOR), buffer); configmanager.cpp:Procure por: m_confBool[SHOW_HEALING_DAMAGE_MONSTER] = getGlobalBool("showHealingDamageForMonsters", false);Adicione abaixo: m_confNumber[HEALTH_HEALING_COLOR] = getGlobalNumber("healthHealingColor", TEXTCOLOR_GREEN); m_confNumber[MANA_HEALING_COLOR] = getGlobalNumber("manaHealingColor", TEXTCOLOR_DARKPURPLE); configmanager.h:Procure por: NAME_REPORT_TYPE,Adicione abaixo: HEALTH_HEALING_COLOR, MANA_HEALING_COLOR,Save a copile. config.lua: Adicione ao config healthHealingColor = TEXTCOLOR_GREEN manaHealingColor = TEXTCOLOR_DARKPURPLECréditos:Evil Hero - OTLand
-
Reset System
Reset v1.0 Irei ensiná-los, como adicionar um sistemas de resets no seu servidor. O sistema funciona da seguinte forma: É adicionada uma nova coluna no seu banco de dados, na tabela player, denominada resets. Nessa tabela irão conter os resets do jogador. No jogo, ao dar look em um jogador, os resets são mostrados. Também, irei disponibilizar novas funções LUA que possibilitarão o uso dos resets por scripts. Alterando seu banco de dados Primeiramente, usarei o SQLite para demonstrar como alterar a tabela de players, onde o mesmo código, também pode ser usado no phpMyAdmin para os usuários de MySQL. Abra seu SQLite e após selecionar seu banco de dados, abra o editor de SQL Query. Para quem não sabe abrir, basta seguir a imagem: Digite o seguinte código no seu SQL Query editor: ALTER TABLE players ADD resets INTEGER not null default 0 Execute este código, apertando F9. Pode ser que ao executar o código, demore um pouco, aguarde. Alterando as sources Pra quem tem as sources e deseja alterar, aqui vai o tutorial. Bom, em primeiro lugar, o tutorial foi feito com a versão 0.3.6 do The Forgotten Server, que seu download pode ser encontrado aqui no fórum, junto das sources. Player.h Na suas sources, vá ao arquivo player.h e procure (ctrl+f) por: uint32_t level; Após o texto encontrado, adicione o seguinte: uint32_t resets; Iologindata.cpp Vá até o arquivo iologindata.cpp e procure por: query << "SELECT `id`, `account_id`, `group_id`, `world_id`, `sex`, `vocation`, `experience`, `level`, `maglevel`, "; query << "`health`, `healthmax`, `blessings`, `mana`, `manamax`, `manaspent`, `soul`, `lookbody`, `lookfeet`, "; query << "`lookhead`, `looklegs`, `looktype`, `lookaddons`, `posx`, `posy`, `posz`, `cap`, `lastlogin`, "; query << "`lastlogout`, `lastip`, `conditions`, `skull`, `skulltime`, `guildnick`, `rank_id`, `town_id`, "; query << "`balance`, `stamina`, `direction`, `loss_experience`, `loss_mana`, `loss_skills`, `loss_containers`, "; query << "`loss_items`, `marriage`, `promotion`, `description` FROM `players` WHERE `name` "; query << db->getStringComparison() << db->escapeString(name) << " AND `world_id` = "; query << g_config.getNumber(ConfigManager::WORLD_ID) << " AND `deleted` = 0 LIMIT 1"; Altere todo este código para: query << "SELECT `id`, `account_id`, `group_id`, `world_id`, `sex`, `vocation`, `experience`, `level`, `resets`, `maglevel`, "; query << "`health`, `healthmax`, `blessings`, `mana`, `manamax`, `manaspent`, `soul`, `lookbody`, `lookfeet`, "; query << "`lookhead`, `looklegs`, `looktype`, `lookaddons`, `posx`, `posy`, `posz`, `cap`, `lastlogin`, "; query << "`lastlogout`, `lastip`, `conditions`, `skull`, `skulltime`, `guildnick`, `rank_id`, `town_id`, "; query << "`balance`, `stamina`, `direction`, `loss_experience`, `loss_mana`, `loss_skills`, `loss_containers`, "; query << "`loss_items`, `marriage`, `promotion`, `description` FROM `players` WHERE `name` "; query << db->getStringComparison() << db->escapeString(name) << " AND `world_id` = "; query << g_config.getNumber(ConfigManager::WORLD_ID) << " AND `deleted` = 0 LIMIT 1"; Ainda em iologindata.cpp, procure por: player->level = std::max((uint32_t)1, (uint32_t)result->getDataInt("level")); Após o código encontrado, adicione o seguinte código: player->resets = (uint32_t)result->getDataInt("resets"); Ainda em iologindata.cpp, procure por: query << "`maglevel` = " << player->magLevel << ", "; Após o código acima, adicione: query << "`resets` = " << player->resets << ", "; Player.cpp Vá até o arquivo player.cpp e procure pelo seguinte código: s << " (Level " << level << ")"; Altere para: s << " (Level " << level << " [Resets: " << resets << "])"; Adicionando comandos LUA Vamos adicionar os comandos LUA que poderão trabalhar com nosso sistema de resets: - getResets(cid) Vá até player.h e procure por: void setPromotionLevel(uint32_t pLevel); Após isso, adicione: uint32_t getResets() { return resets } Agora vá em luascript.cpp e procure por: int32_t LuaScriptInterface::luaDoPlayerSetIdleTime(lua_State* L) { //doPlayerSetIdleTime(cid, amount) int64_t amount = popNumber(L); ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) { player->setIdleTime(amount); lua_pushboolean(L, true); } else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Após o código, adicione: int32_t LuaScriptInterface::luaGetResets(lua_State* L) { //getResets(cid) ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) lua_pushnumber(L, player->getResets()); else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Ainda em luascript.cpp procure por: //doPlayerSetIdleTime(cid, amount) lua_register(m_luaState, "doPlayerSetIdleTime", LuaScriptInterface::luaDoPlayerSetIdleTime); Após o código, adicione: //getResets(cid) lua_register(m_luaState, "getResets", LuaScriptInterface::luaGetResets); Agora em luascript.h procure por: static int32_t luaDoPlayerSetIdleTime(lua_State* L); Após isso, adicione: static int32_t luaGetResets(lua_State* L); - setResets(cid, amount) Vá em luascript.h e procure por: static int32_t luaGetResets(lua_State* L); Após isso, adicione: static int32_t luaSetResets(lua_State* L); Agora vá até luascript.cpp e procure por: int32_t LuaScriptInterface::luaGetResets(lua_State* L) { //getResets(cid) ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) lua_pushnumber(L, player->getResets()); else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Após isso, adicione: int32_t LuaScriptInterface::luaSetResets(lua_State* L) { //setResets(cid, amount) int32_t amount = popNumber(L); ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) { player->setResets(amount); lua_pushboolean(L, true); } else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Ainda em luascript.cpp, procure por: //getResets(cid) lua_register(m_luaState, "getResets", LuaScriptInterface::luaGetResets); Após isso, adicione: //setResets(cid, amount) lua_register(m_luaState, "setResets", LuaScriptInterface::luaSetResets); Agora vá até player.h e procure por: uint32_t getResets() { return resets; } Após isso, adicione: void setResets(int32_t amount) { resets += amount; if (resets < 0) {resets = 0;} } Pronto, agora é só usar os comandos no seu script: getResets(cid) - Retorna o número de resets setResets(cid, amount) - Aumenta ou diminui os resets conforme a quantidade. Créditos: Dark Skyllen - OTSerV
-
Capacidade de Sobrecargada
Tentando trazer ainda mais conteúdo para o forum, achei um código pronto muito interessante que aumenta muito o RPG do servidor. E um sistema tirado dos jogos da Bethesda como Skyrim e Fallout. Essa modificação faz com o que personagem com a tenha capacidade de carregar infinita, mais ao chegar determinado valor o personagem começa andar mais devagar. Vamos ao código: Em config.lua Abaixo de: playerFollowExhaust = 0Adicione: capacityOverload = 0.75Em configmanager.cppAbaixo de: m_confNumber[FOLLOW_EXHAUST] = getGlobalNumber("playerFollowExhaust", 2000); Adicione: m_confDouble[CAPACITY_OVERLOAD] = getGlobalDouble("capacityOverload", 0.75); Em configmanager.hAbaixo de: FORMULA_MAGIC,Adicione: CAPACITY_OVERLOAD,Em player.cppSubstitua: windowTextId = nextExAction = 0;Por: windowTextId = nextExAction = capacityOverload = 0;Substitua: void Player::updateInventoryWeight()Por: void Player::updateInventoryWeight() { inventoryWeight = 0.00; if(hasFlag(PlayerFlag_HasInfiniteCapacity) || !g_config.getBool(ConfigManager::USE_CAPACITY)) return; for(int32_t i = SLOT_FIRST; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) inventoryWeight += item->getWeight(); } if (inventoryWeight >= capacity && !capacityOverload) { capacityOverload = (int32_t)(getSpeed() * g_config.getDouble(ConfigManager::CAPACITY_OVERLOAD)); g_game.changeSpeed(this, -capacityOverload); } else if (inventoryWeight < capacity && capacityOverload) { g_game.changeSpeed(this, capacityOverload); capacityOverload = 0; } }Substitua: bool Player::hasCapacity(const Item*, uint32_t) constPor: bool Player::hasCapacity(const Item*, uint32_t) const { return true; }Substitua: void Player::onThink(uint32_t interval)Por: void Player::onThink(uint32_t interval) { Creature::onThink(interval); int64_t timeNow = OTSYS_TIME(); if(timeNow - lastPing >= 5000) { if (capacityOverload) { g_game.addMagicEffect(getPosition(), MAGIC_EFFECT_POFF); sendCancel("Your capacity is overloaded!"); } lastPing = timeNow; if(hasClient()) client->sendPing(); else if(g_config.getBool(ConfigManager::STOP_ATTACK_AT_EXIT)) setAttackedCreature(NULL); } if((timeNow - lastPong) >= 60000 && !getTile()->hasFlag(TILESTATE_NOLOGOUT) && !isConnecting && !pzLocked && !hasCondition(CONDITION_INFIGHT)) { if(hasClient()) client->logout(true, true); else if(g_creatureEvents->playerLogout(this, false)) g_game.removeCreature(this, true); } messageTicks += interval; if(messageTicks >= 1500) { messageTicks = 0; addMessageBuffer(); } if(lastMail && lastMail < (uint64_t)(OTSYS_TIME() + g_config.getNumber(ConfigManager::MAIL_ATTEMPTS_FADE))) mailAttempts = lastMail = 0; }Em player.hAbaixo de: int32_t shieldBlockCount;Adicione: int32_t capacityOverload;Créditos:Code by: sn3ejk - OTLand Tradução by: MatheusEnjoy
-
Salvar tudo que os Players Falam
Estou tentando trazer o máximo de conteúdo de outros forum para o pt-BR, hoje trago um tutorial de como salvar tudo que os players falam para procurar bugs depois ou ate banir membros que fazem propaganda. Bom, vamos ao tutorial: Na Pasta que contem suas sources antes de fazer a compilação altere o game.cpp, procure por: #include "group.h" Abaixo, coloque: #include "textlogger.h"Procure por: Game::playerSayDentro da função, encontre: switch(type) { case SPEAK_SAY: return internalCreatureSay(player, SPEAK_SAY, text, false); case SPEAK_WHISPER: return playerWhisper(player, text); case SPEAK_YELL: return playerYell(player, text); (...) Adicione acima de switch(type) Logger::getInstance()->eFile("players/" + player->getName() + ".log", text, true); Assim tudo que os players falar/digitar in-game sera salvo no log do servidor. CRÉDITOS: GM BLumaster - OTSerV
-
[Equipe] Faça parte do Lotus CMS
Obrigado sua ajuda e bem vinda. Fique atento ainda essa semana irei abrir vagas de Jornalista para equipe.
-
[Equipe] Faça parte do Lotus CMS
O Lotus CMS e um projeto totalmente open source (Código aberto) que visa criar um gestor de conteúdo (CMS) para websites de games. Com uma interface simples e limpa de fácil edição para o usuário final ... (Continue lendo clique aqui) Vagas Abertas: Relações Públicas Responsável pela área de marketing, manter contato com a mídia, responder as requisições da imprensa, fechamentos de parcerias, elaborar estratégias e desenvolver o processo total da comunicação institucional. - Requisitos: Conhecimentos básicos no pacote Microsoft Office, fluência escrita e verbal, capacidade de comunicação, raciocinio lógico, criatividade e iniciativa. - Diferenciais: Inglês e/ou Espanhol Arquiteto de software Levantar e definir arquitetura de software para projeto, avaliar viabilidade da solução arquitetural através de prova de conceito. Identificar a possibilidade de utilização ou adequação da modelagem ao uso de pattnes e frameworks existente. Pesquisar novas tecnologias de desenvolvimento de software, suas vantagens e desvantagens, tomar decisões técnicas dentro de sua área de atuação. - Requisitos: Conhecimentos em diversas linguagens e arquiteturas de software, conhecimentos em ferramentas para modelagem visual, normas de geração de casos de uso. - Diferenciais: Inglês e/ou Espanhol Design de Interface Responsável pela arquitetura da informação, usabilidade e design de projetos do projeto. Atuar em conjunto com uma equipe multidisciplinar. -Requisitos: Conhecimentos em usabilidade e arquitetura da informação (avançado). Conhecimentos em design gráfico e de interfaces (intermediário – avançado). Conhecimentos nas possibilidades técnicas das áreas de produção Web (HTML, CSS, JavaScript, jQuery, PHP e Ajax). Programador Front-end - Atuar com desenvolvimento da parte client-side do projeto, desenvolver soluções criativas e atenção aos detalhes. - Requisitos: onhecimentos em design / usabilidade, XHTML + CSS e suas implementações em diferentes navegadores, lógica e entendimento da estrutura semântica HTML, padrões W3C, JavaScript/Ajax e performance. Programador PHP - Desenvolver sistemas para o projeto, atuar com ambiente de desenvolvimento com gestão de configuração bem definido (Eclipse, SVN, Redmine, Jenkins, servidor de homologação). - Requisitos: Conhecimentos em PHP, OOP, Javascript, jQuery, CSS, HTML, DB SQL e Zend Framework. Se realmente quer fazer parte desse projeto, nos envie o seguinte formulário: Nome: Idade: MSN ou Skype: (para que possamos manter contato) Vaga desejada: Habilidades: (fale um pouco sobre tudo que sabe fazer) Extras: (tem algum extra para nós mostrar?)
- Novo visual do Tibia King!
- Novo visual do Tibia King!
-
[Sugestão] Link dessa imagem.
E desenvolver a condição em PHP e simples. Não vai gastar nem 3 linhas.
- Novo visual do Tibia King!
-
[Sugestão] Link dessa imagem.
Adicione um PHP que verifica qual parte do site o membro está, se estiver no portal ele redireciona para o portal se estiver no forum redireciona para o forum. Simples assim.
- Novo visual do Tibia King!
- Novo visual do Tibia King!
-
Novo visual do Tibia King!
No meu ele não desaparece a não ser que eu clique no X, uso o Chrome. Imagina um outdoor enfrente sua janela, todos os dias vc olha para ele, o mesmo outdoor com o tempo vc nem le o que esta escrito mais. Isso ai e a msm coisa. Matheus arrume o CSS para centralizar ao meio da pagina: #popup { position: fixed; visibility: visible; left: 50%; top: 50%; margin-left: -150; margin-top: -150; width: 350px; height: 180px; z-index: 1; display: none; }
- Novo visual do Tibia King!
- Novo visual do Tibia King!
-
[Release] Layout Front-End
Amigo esse e somente 1 dos 30 layouts que pretendendo desenvolver para esse software. Lembrando que qualquer um que queira criar um layout novo para o Lotus terá acesso a uma biblioteca ensinando como criar e instalar. O sistema ira aceitar templates de terceiros igual Wordpress.
-
[Release] Layout Front-End
-
[Release] Arquitetura do Software
-
Lotus CMS - Um Gestor de Conteúdo Gamer
O Projeto O Lotus CMS e um projeto totalmente open source (Código aberto) que visa criar um gestor de conteúdo (CMS) para websites de games. Com intuído de simplicar para usuários finais, o Lotus conta com uma área administrativa, suporte a plugins e temas desenvolvidos por terceiros, alem de todo CMS será bilíngue(Português e Inglês) Escrito em PHP, o CMS poderá rodar tanto em Linux quanto em Windows, sem que haja diferença entre os sistemas operacionais. Os pluguins nativos do Lotus ate o momento serão: loja virtual de itens e VIPs in-site, rankings de level, skils, guild e frags, sistema para criar e recuperar conta, sistema de notícias, entre diversas outras funções. O que é CMS? Sistema de Gestão de Conteúdo (SGC) - do inglês Content Management Systems (CMS) mas igualmente designada como Conversational Monitor System - é um sistema gestor de websites, e intranets que integra ferramentas necessárias para criar, gerir (inserir e editar) conteúdos em tempo real sem a necessidade de programação de código, cujo objetivo é estruturar e facilitar a criação, administração, distribuição, publicação e disponibilidade da infomação. Sua maior característica é a grande quantidade de funções presentes através de complementos (galerias de fotos, gerenciadores de enquetes, gerenciadores de formulários) que podem ser agregados ao SGC Continue lendo... Temas Em Desenvolvimento: Para não perder tempo: Vagas Abertas: Relações Públicas Responsável pela área de marketing, manter contato com a mídia, responder as requisições da imprensa, fechamentos de parcerias, elaborar estratégias e desenvolver o processo total da comunicação institucional. - Requisitos: Conhecimentos básicos no pacote Microsoft Office, fluência escrita e verbal, capacidade de comunicação, raciocinio lógico, criatividade e iniciativa. - Diferenciais: Inglês e/ou Espanhol Arquiteto de software Levantar e definir arquitetura de software para projeto, avaliar viabilidade da solução arquitetural através de prova de conceito. Identificar a possibilidade de utilização ou adequação da modelagem ao uso de pattnes e frameworks existente. Pesquisar novas tecnologias de desenvolvimento de software, suas vantagens e desvantagens, tomar decisões técnicas dentro de sua área de atuação. - Requisitos: Conhecimentos em diversas linguagens e arquiteturas de software, conhecimentos em ferramentas para modelagem visual, normas de geração de casos de uso. - Diferenciais: Inglês e/ou Espanhol Design de Interface Responsável pela arquitetura da informação, usabilidade e design de projetos do projeto. Atuar em conjunto com uma equipe multidisciplinar. -Requisitos: Conhecimentos em usabilidade e arquitetura da informação (avançado). Conhecimentos em design gráfico e de interfaces (intermediário avançado). Conhecimentos nas possibilidades técnicas das áreas de produção Web (HTML, CSS, JavaScript, jQuery, PHP e Ajax). Programador Front-end - Atuar com desenvolvimento da parte client-side do projeto, desenvolver soluções criativas e atenção aos detalhes. - Requisitos: conhecimentos em design / usabilidade, HTML5 + CSS e suas implementações em diferentes navegadores, lógica e entendimento da estrutura semântica HTML, padrões W3C, JavaScript/Ajax e Performance. Programador PHP - Desenvolver sistemas para o projeto, atuar com ambiente de desenvolvimento com gestão de configuração bem definido (Eclipse, SVN, Redmine, Jenkins, servidor de homologação). - Requisitos: Conhecimentos em PHP e CakePHP. Se realmente quer fazer parte desse projeto, nos envie o seguinte formulário: Nome: Idade: MSN ou Skype: (para que possamos manter contato) Vaga desejada: Habilidades: (fale um pouco sobre tudo que sabe fazer) Extras: (tem algum extra para nós mostrar?)
-
Pedofilo de 15 anos se ferrou
Isso e fake, huahu. Era legal fazer isso na BOL. Bons momentos.