Ir para conteúdo
  • Cadastre-se

Histórico de Edições

Please note that revisions older than 15 days are pruned and will no longer show here

Não há histórico de edição para mostrar, ou este comentário foi editado por um moderador.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por kk4444
      Se eu não poder fazer isso por favor me avisem aqui no tópico que eu retiro.   Créditos SOMENTE do: cbrm (OTLand) Tópico Oficial:https://otland.net/threads/reward-chest-boss-reward-tfs-1-2.233397/   Tested on TFS 1.2, 10.77/78
      Based on http://www.tibia.com/news/?subtopic=newsarchive&id=2486   Oque tem?  
       
      To-do
       
        Changelog  
       
      Comentários
       
          Agradecimentos especiais para  
      Instruções de instalação
      Execute a query na database
       
      CREATE TABLE IF NOT EXISTS `player_rewardchest` ( `id` int(11) NOT NULL AUTO_INCREMENT, `player_id` int(11) NOT NULL, `reward` text NOT NULL, `date` bigint(20) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`), FOREIGN KEY (`player_id`) REFERENCES `players` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB; src/const.h
      Abaixo...
      ITEM_MARKET = 14405 ...Adicione:
      ITEM_REWARD_CHEST = 21584, REWARD_CHEST_DEPOT = 99, src/depotchest.h
      Abaixo...
      explicit DepotChest(uint16_t _type);  
      ...Adicione:
      uint32_t getDepotId() const { return depotId; } void setDepotId(uint32_t id) { depotId = id; }  
      Abaixo...
      uint32_t maxDepotItems; ...Adicione:
      uint32_t depotId; src/depotchest.cpp
      Abaixo...
      maxDepotItems = 1500; ...Adicione:
      depotId = 0; Acima...
      return Container::queryAdd(index, thing, count, flags, actor); ...Adicione:
      if (actor != nullptr && getDepotId() == REWARD_CHEST_DEPOT) { return RETURNVALUE_NOTPOSSIBLE; } src/depotlocker.h
      Acima...
      //cylinder implementations ...Adicione:
      void setMaxLockerItems(uint32_t maxitems) { maxSize = maxitems; } src/luascript.h
      Acima...
      static int luaContainerGetSize(lua_State* L); ...Adicione:
      static int luaContainerGetContentDescription(lua_State* L); src/luascript.cpp
      Acima...
      registerMethod("Container", "getSize", LuaScriptInterface::luaContainerGetSize); ...Adicione:
      registerMethod("Container", "getContentDescription", LuaScriptInterface::luaContainerGetContentDescription); Acima...
      int LuaScriptInterface::luaContainerGetSize(lua_State* L) ...Adicione:
      int LuaScriptInterface::luaContainerGetContentDescription(lua_State* L) { // container:getContentDescription() Container* container = getUserdata<Container>(L, 1); if (container) { std::ostringstream ss; ss << container->getContentDescription(); pushString(L, ss.str()); } else { lua_pushnil(L); } return 1; } src/actions.cpp
      Troque:
      //depot container if (DepotLocker* depot = container->getDepotLocker()) { DepotLocker* myDepotLocker = player->getDepotLocker(depot->getDepotId()); myDepotLocker->setParent(depot->getParent()->getTile()); openContainer = myDepotLocker; player->setLastDepotId(depot->getDepotId()); } else { openContainer = container; } Por:
      //reward chest and depot container if (item->getID() == ITEM_REWARD_CHEST) { DepotLocker* myRewardChest = player->getRewardChest(); myRewardChest->setParent(item->getTile()); openContainer = myRewardChest; player->setLastDepotId(REWARD_CHEST_DEPOT); } else if (DepotLocker* depot = container->getDepotLocker()) { DepotLocker* myDepotLocker = player->getDepotLocker(depot->getDepotId()); myDepotLocker->setParent(depot->getParent()->getTile()); openContainer = myDepotLocker; player->setLastDepotId(depot->getDepotId()); } else { openContainer = container; } src/player.h
      Abaixo...
      DepotLocker* getDepotLocker(uint32_t depotId); ...Adicione:
      DepotLocker* getRewardChest(); src/player.cpp
      Abaixo...
      DepotChest* depotChest = new DepotChest(ITEM_DEPOT); ...Adicione:
      depotChest->setDepotId(depotId); Acima...
      void Player::sendCancelMessage(ReturnValue message) const ...Adicione:
      DepotLocker* Player::getRewardChest() { auto it = depotLockerMap.find(REWARD_CHEST_DEPOT); if (it != depotLockerMap.end()) { inbox->setParent(it->second); return it->second; } DepotLocker* rewardChest = new DepotLocker(ITEM_LOCKER1); rewardChest->setDepotId(REWARD_CHEST_DEPOT); rewardChest->setMaxLockerItems(1); rewardChest->internalAddThing(getDepotChest(REWARD_CHEST_DEPOT, true)); depotLockerMap[REWARD_CHEST_DEPOT] = rewardChest; return rewardChest; } On player.cpp, container.cpp, inbox.cpp
      Change:
      if (!item->isPickupable()) {  Por:
      if (item->getID() != 21518 && !item->isPickupable()) { Adicione em @ data/actions/actions.xml
      <!-- Reward Chest System --> <action itemid="21584" script="reward_chest.lua"/> <action actionid="21584" script="reward_chest.lua"/> Crie @ data/actions/scripts/reward_chest.lua
      function onUse(player, item, fromPosition, target, toPosition, isHotkey) --Reward Chest if item:getId() == 21584 then if player:getExhaustion(REWARD_CHEST.STORAGE) > 0 then return player:sendCancelMessage('You need to wait ' .. string.diff(player:getStorageValue(REWARD_CHEST.STORAGE)-os.time()) .. ' before using this chest again.') end player:updateRewardChest() --Boss Corpse elseif item:getActionId() == 21584 then local reward = REWARD_CHEST.LOOT[tonumber(item:getAttribute('text'))][player:getGuid()] if reward ~= nil then local rewardBag = Container(doCreateItemEx(REWARD_CHEST.CONTAINER, 1)) addContainerItems(rewardBag, reward) if player:getCapacity() < rewardBag:getCapacity() then return player:sendCancelMessage(RETURNVALUE_NOTENOUGHCAPACITY) end if player:addItemEx(rewardBag, false) == RETURNVALUE_NOERROR then REWARD_CHEST.LOOT[tonumber(item:getAttribute('text'))][player:getGuid()] = nil player:sendCancelMessage('You have picked up a reward container.') else player:sendCancelMessage(RETURNVALUE_NOTENOUGHROOM) return true end end end return false end Adicione @ data/creaturescripts/creaturescripts.xml
      <event type="kill" name="RewardChest" script="reward_chest.lua"/> Registre em @data/creaturescripts/scripts/login.lua
      player:registerEvent("RewardChest") Adicione @ data/items/items.xml
      <item id="21518" article="a" name="reward container"> <attribute key="weight" value="1800" /> <attribute key="containersize" value="24" /> <attribute key="slotType" value="backpack" /> </item> <item id="21584" article="a" name="reward chest"> <attribute key="type" value="depot" /> <attribute key="containerSize" value="1" /> <attribute key="description" value="This chest contains your rewards earned in battles." /> </item> Add @ data/lib/core/player.lua
      function Player.setExhaustion(self, value, time) return self:setStorageValue(value, time + os.time()) end function Player.getExhaustion(self, value) local storage = self:getStorageValue(value) if storage <= 0 then return 0 end return storage - os.time() end Crie em @ data/creaturescripts/scripts/reward_chest.lua
      (download anexado nesse post)
       
      Download
       
      RELEMBRANDO CRÉDITOS APENAS DO CBRM DA OTLAND
    • Por luanluciano93
      Olá pessoal, resolvi criar um sistema de recompensa parecido com o sistema do tibia global para a versão 8.60, mas tie que fazer varias "gambiarras" para ele funcionar nesta versão.

      Para quem não conhece: http://www.tibiawiki.com.br/wiki/Loot#Sistema_de_Recompensas

      Basicamente meu sistema funciona da seguinte forma:
      • você determina as criaturas que irão funcionar com esse sistema (normalmente bosses).
      • durante a batalha com a criatura o sistema conta pontos aos jogadores por ataque, bloqueio e suporte ("healar" quem esta na batalha).
      • quando a criatura é morta o sistema cria um "loot" de acordo com os pontos e envia-o ao depot do jogador em uma bag determinada nas configurações.

      Primeiramente vamos criar o arquivo das configurações gerais, crie uma pasta dentro do "data" com o nome de sistemas e dentro cria um arquivo rewardchest.lua: 

      Depois em creaturescript crie dois arquivos:
      rewardchest_boss.lua:

      e rewardchest_pontos.lua: 

      Lembrando que em todas as criaturas que forem adicionadas ao sistema além de coloca-las no rewarchest.lua você deve add isso no xml do monstro: 
      <script> <event name="RewardChestDeath"/> <event name="RewardChestMonster"/> </script> E isso no creaturescript.xml: 
      <!-- Sistema de recompensa criado por luanluciano93 --> <event type="login" name="RewardChestLogin" event="script" value="rewardchest_pontos.lua"/> <event type="statschange" name="RewardChestStats" event="script" value="rewardchest_pontos.lua"/> <event type="death" name="RewardChestDeath" event="script" value="rewardchest_boss.lua"/> <event type="statschange" name="RewardChestMonster" event="script" value="rewardchest_boss.lua"/>
      Basicamente é isso, qualquer dúvida postem aqui ... abraços!

      LINK DO SCRIPT NO GITHUB: https://github.com/luanluciano93/ESTUDOS/tree/master/LUA/REWARD_SYSTEM_860
    • Por Qwizer
      Global 11/12x [v32]
       

       
       
      - New Falcons
      - New Asuras
      - Warzone 4,5,6
      - Exercise Training
      - Raids 100%
      - Monstros 100%
      - Trainer Offline 100%
      - Trainer Online 100%
      - Taming system funcionando 100%;
      - Database completa
      - War System 100%
      - Global MAP Full
      - Store 100%
      - Imbuement
      - Prey System
      - Entre outros sistemas.
       
      Projeto no: GITHUB

      Scan Vírus Total
       
      IMAGES
       
      Créditos:
       
       











    • Por Fausto32
      Então meu server tá praticamente terminado preciso apenas arrumar 5 Scripts q não consegui até agr de geito nem um '-' tenho todos falta apenas adapta-los ao meu server algum scripter c candidata? '-' nada demorado apenas pra isso
    • Por Fausto32
      Tenho varios mais nem um funciona \: Alguém ae sabe um funcionando perfeitamente ?
      Ahh é Hearth System eh aquele sisteminha de que quando um player mata o outro ele ganha o coração dele saka? com level q o cara morreu nome do carea pra quem ele morreu e o level de quem mato ele '-' então e isso ae
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo