Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Olá, eu estou querendo dar Coach para servidores, explicar como as coisas funcionam na programação, melhorar a comunidade de Open Tibia e também ajudar, caso você esteja interessado entre em contato comigo via Discord.

 

Tem algumas regras:
- Só usaremos Discord.
- Respeito acima de tudo.
- Só entrar em contato caso você já possua um servidor online.
- Já saiba sobre a lógica de programação (porque se não, se torna MUITO difícil de ajudar)

- Eu tentarei te responder o mais rápido possível, não seja uma criança mimada.
- Você querer aprender.
- Se eu perceber que você está sendo Leecher, e não está querendo aprender, eu não vou responder mais.

No primeiro contato você responderá algumas perguntas minhas para saber quem que você é - e nos conhecermos melhor, claro.
E não, eu não vou fazer um script para você, vou tentar te explicar a lógica do que você quer! E você vai tentar fazer! Sim, você vai aprender!


Tá, .. mas quem eu sou? Me conhecem como vankk, e sou dono do AuraOT.  Eu jogo Tibia a 14 anos, e programo OTS a 9 anos. Atualmente eu sou um contribuidor do The Forgotten Server, e também faço trabalhos para diversos servidores com bastante jogadores online. Possuo conhecimentos em PHP, Lua, Python, Java, JavaScript.

Resumidamente é isso, não gosto de enrolar muito, gosto de ser direito.

Meu discord é vankk#7765

 

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

discord.pngDiscord: vankk #7765

Precisando de ajuda? Entre em contato comigo via Discord.

 

Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por Cat
      Quer saber como eu fiz esses banners e quadros em menos de 1 hora?
       
      (tópico original: https://tibiaking.com/forums/topic/104074-banners-e-pinturas/)
       
       
      - ○ -
       
      Bom, a verdade é que não precisa saber pixel art para produzir peças como estas. Mas se você souber, agrega muito a qualidade das peças, uma vez que você queira melhorar a moldura ou até mesmo aplicar retoques na imagem reduzida.
       
      Este tutorial é bem simples, iremos trabalhar com resize (redução de imagens), distorção, nitidez e ruídos.
      Foram utilizados: Paint e Photoshop 2019 (se você não tiver condições financeiras para comprar Photoshop, recomendo a versão 2019 cracked, você encontra facilmente na internet, apenas cuide com vírus, escaneie tudo certinho, etc)
       
      1 - Escolha uma imagem de sua preferência, leve em consideração que quanto mais detalhes estiverem próximos uns dos outros, mais elementos aparecerão no resultado final, eu escolhi estas abaixo:

       

       
      2 - O segundo passo é determinar a área da imagem que será utilizada, e redimensioná-la para 128x128, 128x64, 64x64, 64x32, ou 32x32. (leve em consideração que um tamanho 128x128 precisara de 3x3 paredes para encaixá-la no mapa, e 32x32 apenas 1 parede)

       
         
       

       
      3 - Agora, utilizando o Photoshop irei melhorar a qualidade dessas imagens reduzidas, usando as ferramentas redução de ruído e aplicação inteligente de nitidez. Também mudarei para uma cor de minha preferência. Veja: 
       
       
       

       
      4 - Agora utilizaremos as seguintes ferramentas do Paint, nesta ordem:
       
       
       
      O resultado será este:
       

       
      Agora basta aplicar a moldura e pronto, está feito!
       
       
       
       
       
       
       
       
       
    • Por Wise
      Notei que alguns membros precisavam desse creature event pra desenvolver alguns sistemas, então eu resolvi compartilhá-lo com vocês.



      Na source, em creatureevent.cpp



      Abaixo de:
      else if(tmpStr == "preparedeath") m_type = CREATURE_EVENT_PREPAREDEATH;
       
      Adicione:
      else if(tmpStr == "moveitem") m_type = CREATURE_EVENT_MOVEITEM;
       
      Abaixo de:
      case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath";
       
      Adicione:
      case CREATURE_EVENT_MOVEITEM: return "onMoveItem";
       
      Abaixo de:
      case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList";
       
      Adicione:
      case CREATURE_EVENT_MOVEITEM: return "cid, item, count, toContainer, fromContainer, fromPos, toPos";
       
      Antes de:
      bool CreatureEvents::playerLogout(Player* player, bool forceLogout)
       
      Adicione:
      uint32_t CreatureEvent::executeMoveItem(Player* player, Item* item, uint8_t count, const Position& fromPos, const Position& toPos, Item* toContainer, Item* fromContainer, int16_t fstack) { //onMoveItem(cid, item, count, toContainer, fromContainer, fromPos, toPos) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(player->getPosition()); std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(player) << std::endl; env->streamThing(scriptstream, "item", item, env->addThing(item)); scriptstream << "local count = " << count << std::endl; env->streamThing(scriptstream, "toContainer", toContainer, env->addThing(toContainer)); env->streamThing(scriptstream, "fromContainer", fromContainer, env->addThing(fromContainer)); env->streamPosition(scriptstream, "fromPos", fromPos, fstack); env->streamPosition(scriptstream, "toPos", toPos, 0); scriptstream << m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ char desc[30]; sprintf(desc, "%s", player->getName().c_str()); env->setEvent(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(player->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(player)); LuaInterface::pushThing(L, item, env->addThing(item)); lua_pushnumber(L, count); LuaInterface::pushThing(L, toContainer, env->addThing(toContainer)); LuaInterface::pushThing(L, fromContainer, env->addThing(fromContainer)); LuaInterface::pushPosition(L, fromPos, fstack); LuaInterface::pushPosition(L, toPos, 0); bool result = m_interface->callFunction(7); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::executeMoveItem] Call stack overflow." << std::endl; return 0; } }

       
      Agora, em creatureevent.h


      Abaixo de:
      uint32_t executePrepareDeath(Creature* creature, DeathList deathList);
       
      Adicione:
      uint32_t executeMoveItem(Player* player, Item* item, uint8_t count, const Position& fromPos, const Position& toPos, Item* toContainer, Item* fromContainer, int16_t fstack);
       
      Procure por:
      CREATURE_EVENT_PREPAREDEATH
       
      Substitua por:
      CREATURE_EVENT_PREPAREDEATH, CREATURE_EVENT_MOVEITEM

       
      E em game.cpp


      Depois de:
      if(!canThrowObjectTo(mapFromPos, mapToPos) && !player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere)) { player->sendCancelMessage(RET_CANNOTTHROW); return false; }
       
      Adicione:
      bool success = true; CreatureEventList moveitemEvents = player->getCreatureEvents(CREATURE_EVENT_MOVEITEM); for(CreatureEventList::iterator it = moveitemEvents.begin(); it != moveitemEvents.end(); ++it) { Item* toContainer = toCylinder->getItem(); Item* fromContainer = fromCylinder->getItem(); if(!(*it)->executeMoveItem(player, item, count, fromPos, toPos, (toContainer ? toContainer : 0), (fromContainer ? fromContainer : 0), fromStackpos) && success) success = false; } if(!success) return false;

       
      Um exemplo BEM simples do uso desse creature event:



      Tag:
      <event type="moveitem" name="MoveItem" event="script" value="moveitem.lua"/>

       
      moveitem.lua
      function onMoveItem(cid, item, count, toContainer, fromContainer, fromPos, toPos) local item = 12345 if item.itemid == item and getPlayerAccess(cid) < 4 then return doPlayerSendCancel(cid, 'You are not allowed to move this item.') and false end return true end Nessa estrutura de controle, se o item for o de ID 12345 e o cid tiver acesso menor do que 4, retornará false e ele não poderá mover o item.
      Se não for o caso, a checagem feita será false e retornará true, então o cid poderá mover o item.




      Esse callback registra creature event?
      Sim:
      registerCreatureEvent(cid, "MoveItem")  
      Créditos: Summ.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo