Jump to content
  • Similar Content

    • By Mor3nao
      Eu procurei aqui no TK um sistema pra vc "desativar" o proprio pvp, te impedindo de pegar pk e nao encontrei um bacana, os que encontrei nao serviram no meu server, entao tentei fazer um, e bom, eis o resultado:
       
      Como funciona: O jogador usa um comando(!pvp) e então, ele fica impossibilitado de causar dano à outro player, a não ser, que o outro player esteja com alguma skull(obs: isso não impede que ele seja atacado, só que pegue pz)
       
      Para adicionar: 
      Abra o seu Combat.cpp e procure por
          if (attacker->getSkull() == SKULL_BLACK && attacker->getSkullClient(target) == SKULL_NONE) {         return true;     }     return false;  
      e troque por:
          if (attacker->getSkull() == SKULL_BLACK && attacker->getSkullClient(target) == SKULL_NONE) {         return true;     }     int32_t value;     if (attacker->getStorageValue(77777412, value) && attacker->getSkullClient(target) == SKULL_NONE) {         if (value == 1) {             return RETURNVALUE_TURNSECUREMODETOATTACKUNMARKEDPLAYERS;         }     }     return false;  
      Então vá para seu /data/talkactions/talkactions.xml e adicione a tag:
       
      <talkaction words="!pvp" script="pvp.lua"/>  
      Aí no /data/talkactions/scripts/pvp.lua e coloque:
      function onSay(player)     local switch = player:getStorageValue(77777412) == -1 and 1 or -1     player:sendTextMessage(MESSAGE_INFO_DESCR, 'PVP: (' .. (switch == 1 and 'OFF' or 'ON') .. ')')     player:setStorageValue(77777412, switch) end  
      obs: Não sei em quais versões isso funciona, no meu caso, eu usei no otservbr-global 12.31 e dá certo.
       
      E bom, é isso, espero que gostem, façam bom proveito 😃
       
    • By L3K0T
      Bom galera hoje vou ensinar a vocês como acelerar as Sprites do seu jogo pra ficar como do Tíbia Global, assista o vídeo abaixo que você vai entender.
       
       
       
      Primeiramente vá na source do seu OTClient 0.6.6 "otclient-0.6.6\src\client"ou superior e abre o game.cpp depois de aberto procure.
       
      if(version >= 1050) mude para 
      if(version <= 1050) Salve e Agora vá em const.h e procure.
       
      INVISIBLE_TICKS_PER_FRAME = 500, ITEM_TICKS_PER_FRAME = 500, mude para
      INVISIBLE_TICKS_PER_FRAME = 100, ITEM_TICKS_PER_FRAME = 100,  
      Feito isso salve e da Rebuild no compilador do otcliente que voce usa "recompilação limpa"
       

       
      Depois de compilar vá no seu Object Builder e compile seu cliente pra "Improved Animations"
       

       
      pronto, agora só usar  
       
       
      ATENÇÃO
      USE SOMENTE EM CASO DE ERROS DO OTCLIENT, CASO NÃO LER SEU CLIENTE;
       
      ache
      function load() local version = g_game.getClientVersion() em baixo coloca
       
      g_game.enableFeature(GameSpritesU32)  
    • By mjokreaxasa
      https://gyazo.com/9339df0b4b4b2fe412b09a049dc1c42e
       
       
                                          /\
                                       GIFT
       
      Como posso solucionar?
    • By Yan Liima
      Salve meus queridos, tudo bom? Hoje decidi trazer uma pequena alteração na source. Vi que muita galera tem problemas com o limite do caracter da função doShowTextDialog, pois se excender o limite maximo de caractere da debug no client.
      Isso ocorre principalmente pra galera do derivado que costuma utilizar !spells/!tecnicas/!jutsu para checar os ataques disponiveis que existe pra tal personagem. 
      Se você é GOD, você consegue visualizar todas as spells do servidor , e se no servidor existir muitas, irá causar debug.
      Diferente do doPlayerPopupFYI, não há uma proteção de limite para TextDialog...
       
      Primeiramente, como que eu descobri?
      Seguinte, eu coloquei o máximo de spells possiveis, ou seja, o máximo de caracteres possiveis na caixinha de texto.
      Quando eu vi que começou dar debug no cliente, eu retirei alguns caracteres e fui testando.

      Até que consigui achar o valor máximo!
      Eu copiei tudo que estava na janela, e em um site online colei todo o conteúdo de lá para saber quantos caracteres existiam ali.
      E esse foi o resultado:

       
      8192, descobrimos o máximo de caracteres no doShowTextDialog.
      Após descobrir este valor, eu procurei nas sources e achei!
       
      ENTÃO VAMOOOS LÁ!
      TFS
       
      OTX
       
      Prontinho! Simples, não? haha
    • By L3K0T
      L3K0Ttfs 0.4
       
      Bom galera hoje vim trazer para aqueles que não tem em seu tfs a função DoSetCreatureLight, é uma função de LUZ, alguns tfs tem e outros não tem então resolvi compartilhar.
       
      abra seu luascript.cpp e procure por:
       
      lua_register(m_luaState, "getCreatureHealth", LuaInterface::luaGetCreatureHealth); em baixo add
      //doSetCreatureLight(cid, lightLevel, lightColor, time) lua_register(m_luaState, "doSetCreatureLight", LuaInterface::luaDoSetCreatureLight); Procure;;
      int32_t LuaInterface::luaGetThingFromPos(lua_State* L) { //getThingFromPos(pos[, displayError = true]) //Note: // stackpos = 255- top thing (movable item or creature) // stackpos = 254- magic field // stackpos = 253- top creature bool displayError = true; if(lua_gettop(L) > 1) displayError = popNumber(L); PositionEx pos; popPosition(L, pos); ScriptEnviroment* env = getEnv(); Thing* thing = NULL; if(Tile* tile = g_game.getMap()->getTile(pos)) { if(pos.stackpos == 255) { if(!(thing = tile->getTopCreature())) { Item* item = tile->getTopDownItem(); if(item && item->isMovable()) thing = item; } } else if(pos.stackpos == 254) thing = tile->getFieldItem(); else if(pos.stackpos == 253) thing = tile->getTopCreature(); else thing = tile->__getThing(pos.stackpos); if(thing) pushThing(L, thing, env->addThing(thing)); else pushThing(L, NULL, 0); return 1; } if(displayError) errorEx(getError(LUA_ERROR_TILE_NOT_FOUND)); pushThing(L, NULL, 0); return 1; } em baixo add;;
       
      int32_t LuaInterface::luaDoSetCreatureLight(lua_State* L) { //doSetCreatureLight(cid, lightLevel, lightColor, time) uint32_t time = popNumber(L); uint8_t color = (uint8_t)popNumber(L); uint8_t level = (uint8_t)popNumber(L); uint32_t cid = popNumber(L); ScriptEnviroment* env = getEnv(); Creature* creature = env->getCreatureByUID(cid); if(creature) { Condition* condition = Condition::createCondition(CONDITIONID_COMBAT, CONDITION_LIGHT, time, level | (color << 8)); creature->addCondition(condition); lua_pushboolean(L, true); } else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1; }  
      Agora em Luascript.h procure por:;;
      static int32_t luaCanPlayerWearOutfit(lua_State* L); em baixo add;;
      static int32_t luaDoSetCreatureLight(lua_State *L);  
      salva tudo em compila no modo rebuild.
       
       
      Usando em Summons;;
      doSetCreatureLight(getCreatureSummons(cid)[1], 10, 215, 60*1000) Usando em players;;
      doSetCreatureLight(cid, 9, 65, 10*60*1000) usando em Equipe;;
      function onEquip(cid, item, slot) doSetCreatureLight(cid, 9, 65, 10*60*1000) end function onDeEquip(cid, item, slot) doSetCreatureLight(cid, 7, 215, 1*1000) end Espero que gostem  
  • Recently Browsing   0 members

    No registered users viewing this page.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

×
×
  • Create New...