Jump to content
Close

Search the Community

Showing results for tags 'tfs 1.2'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Community
    • Rules
    • Portal
    • Resources
    • Commerce
    • Clubs
  • OTServers
    • Discussion
    • Support
    • Tutorial
    • Download
    • Code Development
    • Contests and Events
    • Form Team
    • Advertise your Server
  • Tibia and Bots
    • Discussion
  • Others
    • Playground (Off-topic)
    • Other Games
    • Advertising
    • Graphics and Design
    • Development and Programming
  • League of Legends's Geral
  • League of Legends's Suporte
  • Nto New Season's Tópicos
  • Fakes's Fakes
  • Tibia's Geral
  • Tibia's Notícias
  • Tibia's Media
  • Tibia's Life Thread
  • Computação's Geral
  • Computação's Dicas e Tutoriais
  • Computação's Suporte
  • Roleplaying's Roleplaying
  • Academia de Mapping's Quadro da Clopin
  • Academia de Mapping's Dev Area
  • Academia de Mapping's Quadro do Nolis
  • Academia de Mapping's Quadro do Namikaze
  • Styller's Tópicos

Calendars

  • Official Calendar
  • OTServs Calendar
  • Several Calendars

Product Groups

  • Advertisements in Top
  • Advertisements In Signatures
  • Advertisements in Topics
  • Others Advertisements

Categories

  • Sales Section
    • Scripting Sales
    • Codes Sales
    • Mapping Sales
    • Websites Sales
    • Design/Sprites Sales
    • Bots Sales
  • Look Jobs
  • Looking for Freelancers
  • Team Formation

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Localization


My character


Favorite OTServ


Bot preferred


Interests

Found 38 results

  1. O Tutorial foi feito por mim, qualquer dúvida pode postar nos comentários. 1. Instale o Xampp atual e instale https://www.apachefriends.org/pt_br/index.html 2. Va em C:\xampp e abra o xampp-control.exe 3. Inicie o Apache e o MySQL 4. Baixe o Znote AAC (É o mais fácil de usar) https://github.com/Znote/ZnoteAAC 5. Va até C:\xampp\htdocs e apague tudo que está la dentro 6. Extraia o site Znote AAC que voce baixou, copia todo o conteúdo e cola dentro da pasta htdocs. Ficando assim: 7. Acesse http://127.0.0.1/phpmyadmin e clique em Novo 8. Escreva o nome do banco de dados, eu escolhi Tibia e no lado direito escolha Agrupamento (Collation) e clique em Criar. 9. Clique no banco de dados que voce criou no menu esquerdo (Tibia) e clique em Importar. 10. Clique em escolher arquivo e selecione o arquivo de banco de dados no seu computador 11. Escolha o arquivo schema.sql que está na pasta tfs 1.2 do servidor do link e clique em Executar (ta no final da página o botão) Linhas 33 $config['sqlUser'] = 'tfs13'; Troca tfs13 por root Linha 36 $config['sqlPassword'] = 'tfs13'; Apague tfs13 Linha 39 $config['sqlDatabase'] = 'tfs13'; Troque tfs13 por Tibia (É o banco de dados que criamos) 17. O site ja está funcionando, agora va na pasta do servidor e abra o config.lua e deixe igual está embaixo e salve. 18. Pronto! Agora seu site vai usar o banco de dados para criar contas e seu servidor está preparado para reconhecer as contas e personagens criados.
  2. Olá a todos, atualmente estou aprendendo programação e desenvolvendo um Servidor, uma das coisas chatas a se fazer era ficar alternando entre um Personagem PLAYER e outro GOD para testar algumas coisas, com esses 2 scripts eu resolvi esse problema.É um script simples que eu pretendo futuramente melhorá-lo.What does the command do? /adm - Transforma seu personagem em GOD e kika ele/player - Transforma seu personagem em PLAYER e kika ele LEMBRANDO QUE: Não é qualquer que consegue usar esse comando, você precisa ter dado a sua conta o acesso de god, assim podendo ter esse comando num Servidor Online com outros jogadores sem que os mesmos possam usar. \data\talkactions talkactions.xml Code: <talkaction words="/player" script="player.lua" /> <talkaction words="/adm" script="adm.lua" /> \data\talkactions\scripts adm.lua Code: function onSay(player, words, param) if player:getAccountType() < ACCOUNT_TYPE_GOD then return false end local position = player:getPosition() player:setGroup(Group(3)) position:sendMagicEffect(14) player:remove() return false end \data\talkactions\scripts player.lua function onSay(player, words, param) if player:getAccountType() < ACCOUNT_TYPE_GOD then return false end local position = player:getPosition() player:setGroup(Group(1)) position:sendMagicEffect(13) player:remove() return false end
  3. Olá galera, como estão as festas? Muito tempo que não posto nada aqui pois estou meio desligado desse meio, mas venho trazer pra vocês, preguiçosos, um "pacote" All-In-One, com vários programas de edição (já compilados), o cliente 10.98 e um servidor TFS 1.2, VIRGEM. Lembrando que todos esses foram programas testados e alguns compilados em Windows 8.1 (x64), com Visual Studio 2017 RC. O pacote contém: Ferramentas: Dat_Spr Editor (Object Builder 0.3.3) Item Editor (0.4) Pic Editor Map Editor (RME 3.2) Client: Tibia 10.98 Server: OTX Server 3.7 (TFS 1.2) OBS: Nenhum desses programas são de minha autoria, a maioria é do "Mignari" ou otimizado por ele. OBS²:Vou disponibilizar um link de um tutorial de como colocar um servidor online nas versões atuais, ele é bem prático e objetivo: Tutorial OBS³: Eu recomendo fortemente vocês extraírem esse pacote no diretório raiz do seu computador (geralmente C:/). Download: Mediafire Scan: VirusTotal Obrigado e até um dia!
  4. Bem procurei aqui na comunidade um VIP System mais informativo e nada, além de ter tido problema com os que estão aqui e acabei achando em outro lugar um que funcionou perfeitamente para mim. Usando tfs disponibilizado neste tópico http://www.tibiaking.com/forum/topic/53099-1078-tfs-12-cast-system-novos-outfits-mounts/ Só estou trazendo o conteúdo e por não conhecer bem não posso dar suporte mas do jeito que está é só 'instalar' e vai funcionar. Creditos.: Summ Sistema Vip Talkaction !checkvip para todos os players Talkaction /vip para membros da staff - /vip adddays, NomedoPlayer, 5 --> Adiciona 5 dias vip para o Player. - /vip removedays, NomedoPlayer, 5 --> Remove 5 dias vip do Player. - /vip remove, PlayerName --> Remove todos os dias vip do Player. - /vip check, NomedoPlayer --> Checa quantos dias vip o Player tem. - /vip addinfinite, NomedoPlayer --> Adiciona tempo vip infinito para o Player. Tiles VIP Portas VIP / Actions Items que adicionam dias VIP ItemId 10135 adiciona 10 dias vip. ItemId 10134 adiciona 30 dias vip. ItemId 10133 adiciona 90 dias vip. Imagens Comando !checkvip mas sem ter vip Comando /vip adddays, dracoknight, 5 Comando !checkvip após adicionar 5 dias Comando /vip addinfinite, dracoknight Comando !checkvip após usar infinite Comando /vip remove, dracoknight
  5. Opa galera beleza? Eu estava aqui olhando outros fóruns e percebi que postaram esse sistema, porém os links estavam todos off Resolvi desenvolver o sistema pra vocês TFS usado: 1.2 (Não testado em versões anteriores) * Bom o sistema funciona basicamente assim: Ao clicar na alavanca, abrirá um Modal com todas as opções de compra na tela do jogador ! O jogador poderá selecionar entre a compra de 1x / 50x / 100x itens ! Adicionado venda só para player que possuírem ''Cap'' na bag. * Foto: Simples não? Então vamos ao que interessa ! Em data/actions/scripts Crie um arquivo com o nome de compra_modal.lua e coloque isso dentro : Em data/actions adicione a linha: Em data/creaturescripts/scripts Crie um arquivo com o nome de potions.lua e coloque isso dentro : Em data/creaturescripts/creaturescripts.xml adicione a linha: Créditos: EU (100% pelo script) Strutz (Pela ideia do sistema) Rep+ para me motivar Obs: Testem o Script antes da aprovação pois estou sem PC agora e a verificação de cap foi feita sem teste !
  6. Tudo bem Galerinha do TIBIAKING? Bom eu tava com um projeto (Global 10.90) mais ai desisti (Pois Não teria tempo pra poder ta mexendo no servidor) Bom vamos la Antes de mais nada vou começar dizendo que o servidor ele e 100% (Lembrando que ta com todas as Mission) Bom oque o servidor contem ? -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- •Pythius The Rotten Quest 100% •Task system, com bosses e (Com ranks) •Bank System (Funcionando) •Monstros 100% •Trainer Offline 100% •Todas montarias; (Incluindo Montaria 10.82 e 10.90) •aming system funcionando 100% •Wrath of Emperor Quest •War System 100% (Só- Precisa ativar) •Market System 100% •War Anti-Entrosa (So Precisa Configurar) •POI 100% •Roshamull Completa100% •Varios bugs de mapas removidos •Blood Herb Quest 100% • Npc Addoner •Chayenne Realm Quest •Warzone 1, 2 e 3 •NPC dos Barcos (Cobrando Igual do global) •Lembrando que Todas as Quest ta funcionando •Todas as mission ta funcionando... (Quem não Gostar das mission, e só arrancar) •Adicionei Recompensa por Level (Só começa ganhar depois do level 30) (Cidades) •Ankrahmun (100%) •Ab'Dendriel (100%) •Carlin (100%) •Cormaya (100%) •Darashia (100%) •Edron (100%) •Farmine (100%) •Fibula (100%) •Greenshore (100%) •Kazordoon (100%) •Liberty Bay (100%) •Meluna (100%) •Mintwallin(100%) •Northport (100%) •Orc Land (Orc Fortress) (100%) •Outlaw Camp (100%) •Port Hope (100%) •Plains of Havoc (100%) •Rookgaard (100%) •Shadowthorn (Elven Village) (100%) •Svargrond (100%) •Thais (100%) •Venore(100%) •Yalahar(100%) •Gray Beach(100%) •Zao (100%) •Oramond Full(100%) •Entre varias outras que estão 100%• Bom aqui vai umas Imagem do Servidor Bom assim que você Complete RookGaard (Vai la no Oracle ele vai te manda) Aqui (Quem não gostar basta mudar no NPC - Oracle, para da a vocação e levar para cidade que bem quiser) Essa Mount so adicionei no servidor, Por adicionar então quem quiser restirar, e não souber como retira me diz que eu ajudo. Bom proveito ! Download Creditos Servidor ta em LINUX! Não esta compilado pra WIN Gostou da um REP+ AI
  7. Sorry I don't speak spanish so you will have to bare with me. This is a new way for people to create npc's which use different types of currency, rather than a coming up with different items to trade with the npc or trying to edit the npc modules this method simplifies everything by providing the npc with a npc currency id. All this npc currency id is, is a storage value.. pretty simple eh? If the npc doesn't have a currency id then it will use the normal currency e.g. gold, plat, cc etc.. I originally posted this on otland, but fuck them xD Using Lailene here you can see she has a currency attribute with id of 123456 <?xml version="1.0" encoding="UTF-8"?> <npc name="Lailene" currency="123456" script="lailene.lua" walkinterval="2000" floorchange="0" speechbubble="2"> <health now="100" max="100"/> <look type="279" head="114" body="94" legs="113" feet="114" addons="0"/> </npc> Now any player who has a storage value of 123456 can purchase things from her shop provided they have enough value stored within the storage, similar to having money in the bank. The money or in this case the storage value is added and removed from the player in real time. Lets get to the code game.cpp Find this bool Game::removeMoney(Cylinder* cylinder, uint64_t money, uint32_t flags /*= 0*/) Replace the whole function with this. bool Game::removeMoney(Cylinder* cylinder, uint64_t money, uint32_t flags /*= 0*/) { if (cylinder == nullptr) { return false; } if (money == 0) { return true; } uint32_t currencyId = 0; Player* player; if (Creature* creature = cylinder->getCreature()) { if (Player* p = creature->getPlayer()) { currencyId = p->getNpcCurrencyId(); player = p; } } if (!currencyId) { std::vector<Container*> containers; std::multimap<uint32_t, Item*> moneyMap; uint64_t moneyCount = 0; for (size_t i = cylinder->getFirstIndex(), j = cylinder->getLastIndex(); i < j; ++i) { Thing* thing = cylinder->getThing(i); if (!thing) { continue; } Item* item = thing->getItem(); if (!item) { continue; } Container* container = item->getContainer(); if (container) { containers.push_back(container); } else { const uint32_t worth = item->getWorth(); if (worth != 0) { moneyCount += worth; moneyMap.emplace(worth, item); } } } size_t i = 0; while (i < containers.size()) { Container* container = containers[i++]; for (Item* item : container->getItemList()) { Container* tmpContainer = item->getContainer(); if (tmpContainer) { containers.push_back(tmpContainer); } else { const uint32_t worth = item->getWorth(); if (worth != 0) { moneyCount += worth; moneyMap.emplace(worth, item); } } } } if (moneyCount < money) { return false; } for (const auto& moneyEntry : moneyMap) { Item* item = moneyEntry.second; if (moneyEntry.first < money) { internalRemoveItem(item); money -= moneyEntry.first; } else if (moneyEntry.first > money) { const uint32_t worth = moneyEntry.first / item->getItemCount(); const uint32_t removeCount = (money / worth) + 1; addMoney(cylinder, (worth * removeCount) - money, flags); internalRemoveItem(item, removeCount); break; } else { internalRemoveItem(item); break; } } } else { int32_t value; player->getStorageValue(currencyId, value); if (value < money) { return false; } player->addStorageValue(currencyId, value - money); } return true; } Next find this void Game::addMoney(Cylinder* cylinder, uint64_t money, uint32_t flags /*= 0*/) Replace the whole function with this void Game::addMoney(Cylinder* cylinder, uint64_t money, uint32_t flags /*= 0*/) { if (money == 0) { return; } if (Creature* creature = cylinder->getCreature()) { if (Player* player = creature->getPlayer()) { if(uint32_t currencyId = player->getNpcCurrencyId()){ int32_t value; player->getStorageValue(currencyId, value); player->addStorageValue(currencyId, value + money); return; } } } uint32_t crystalCoins = money / 10000; money -= crystalCoins * 10000; while (crystalCoins > 0) { const uint16_t count = std::min<uint32_t>(100, crystalCoins); Item* remaindItem = Item::CreateItem(ITEM_CRYSTAL_COIN, count); ReturnValue ret = internalAddItem(cylinder, remaindItem, INDEX_WHEREEVER, flags); if (ret != RETURNVALUE_NOERROR) { internalAddItem(cylinder->getTile(), remaindItem, INDEX_WHEREEVER, FLAG_NOLIMIT); } crystalCoins -= count; } uint16_t platinumCoins = money / 100; if (platinumCoins != 0) { Item* remaindItem = Item::CreateItem(ITEM_PLATINUM_COIN, platinumCoins); ReturnValue ret = internalAddItem(cylinder, remaindItem, INDEX_WHEREEVER, flags); if (ret != RETURNVALUE_NOERROR) { internalAddItem(cylinder->getTile(), remaindItem, INDEX_WHEREEVER, FLAG_NOLIMIT); } money -= platinumCoins * 100; } if (money != 0) { Item* remaindItem = Item::CreateItem(ITEM_GOLD_COIN, money); ReturnValue ret = internalAddItem(cylinder, remaindItem, INDEX_WHEREEVER, flags); if (ret != RETURNVALUE_NOERROR) { internalAddItem(cylinder->getTile(), remaindItem, INDEX_WHEREEVER, FLAG_NOLIMIT); } } } npc.cppLook for this pugi::xml_attribute attr; if ((attr = npcNode.attribute("speed"))) { baseSpeed = pugi::cast<uint32_t>(attr.value()); } else { baseSpeed = 100; } Right underneath that you are going to place this. if ((attr = npcNode.attribute("currency"))) { currency = pugi::cast<uint32_t>(attr.value()); } npc.hLook for this bool isPushable() const final { return walkTicks > 0; } Place this right underneath uint32_t getCurrencyId() const { return currency; } Look for this uint32_t walkTicks; Place this right underneath uint32_t currency; player.cppFind this void Player::openShopWindow(Npc* npc, const std::list<ShopInfo>& shop) Replace that function with this void Player::openShopWindow(Npc* npc, const std::list<ShopInfo>& shop) { shopItemList = shop; sendShop(npc); sendSaleItemList(npc); } Next find this bool Player::updateSaleShopList(const Item* item) Replace that function with this bool Player::updateSaleShopList(const Item* item) { uint16_t itemId = item->getID(); if (itemId != ITEM_GOLD_COIN && itemId != ITEM_PLATINUM_COIN && itemId != ITEM_CRYSTAL_COIN) { auto it = std::find_if(shopItemList.begin(), shopItemList.end(), [itemId](const ShopInfo& shopInfo) { return shopInfo.itemId == itemId && shopInfo.sellPrice != 0; }); if (it == shopItemList.end()) { const Container* container = item->getContainer(); if (!container) { return false; } const auto& items = container->getItemList(); return std::any_of(items.begin(), items.end(), [this](const Item* containerItem) { return updateSaleShopList(containerItem); }); } } if (client) { client->sendSaleItemList(shopOwner, shopItemList); } return true; } Next you are going to look for uint64_t Player::getMoney() const Now right underneath that function you are going to place these. uint64_t Player::getMoney(Npc* npc) const { uint64_t cash; setNpcCurrencyId(npc); uint32_t currencyId = getNpcCurrencyId(); if (currencyId) { int32_t value; getStorageValue(currencyId, value); cash = (uint64_t)value; } else { cash = getMoney(); } return cash; } void Player::setNpcCurrencyId(Npc* npc) const{ currencyId = npc->getCurrencyId(); } uint32_t Player::getNpcCurrencyId() const { return currencyId; } player.hLook for this uint64_t getMoney() const; Place this right underneath uint64_t getMoney(Npc*) const; void setNpcCurrencyId(Npc*) const; uint32_t getNpcCurrencyId() const; Find this void sendShop(Npc* npc) const { if (client) { client->sendShop(npc, shopItemList); } } Place this right underneath void sendSaleItemList(Npc* npc) const { if (client) { client->sendSaleItemList(npc, shopItemList); } } Find this uint32_t manaMax; Place this right underneath mutable uint32_t currencyId; protocolgame.cpp Now find this function void ProtocolGame::sendSaleItemList(const std::list<ShopInfo>& shop) Place this right underneath void ProtocolGame::sendSaleItemList(Npc* npc, const std::list<ShopInfo>& shop) { NetworkMessage msg; msg.addByte(0x7B); msg.add<uint64_t>(player->getMoney(npc)); std::map<uint16_t, uint32_t> saleMap; if (shop.size() <= 5) { // For very small shops it's not worth it to create the complete map for (const ShopInfo& shopInfo : shop) { if (shopInfo.sellPrice == 0) { continue; } int8_t subtype = -1; const ItemType& itemType = Item::items[shopInfo.itemId]; if (itemType.hasSubType() && !itemType.stackable) { subtype = (shopInfo.subType == 0 ? -1 : shopInfo.subType); } uint32_t count = player->getItemTypeCount(shopInfo.itemId, subtype); if (count > 0) { saleMap[shopInfo.itemId] = count; } } } else { // Large shop, it's better to get a cached map of all item counts and use it // We need a temporary map since the finished map should only contain items // available in the shop std::map<uint32_t, uint32_t> tempSaleMap; player->getAllItemTypeCount(tempSaleMap); // We must still check manually for the special items that require subtype matches // (That is, fluids such as potions etc., actually these items are very few since // health potions now use their own ID) for (const ShopInfo& shopInfo : shop) { if (shopInfo.sellPrice == 0) { continue; } int8_t subtype = -1; const ItemType& itemType = Item::items[shopInfo.itemId]; if (itemType.hasSubType() && !itemType.stackable) { subtype = (shopInfo.subType == 0 ? -1 : shopInfo.subType); } if (subtype != -1) { uint32_t count; if (!itemType.isFluidContainer() && !itemType.isSplash()) { count = player->getItemTypeCount(shopInfo.itemId, subtype); // This shop item requires extra checks } else { count = subtype; } if (count > 0) { saleMap[shopInfo.itemId] = count; } } else { std::map<uint32_t, uint32_t>::const_iterator findIt = tempSaleMap.find(shopInfo.itemId); if (findIt != tempSaleMap.end() && findIt->second > 0) { saleMap[shopInfo.itemId] = findIt->second; } } } } uint8_t itemsToSend = std::min<size_t>(saleMap.size(), std::numeric_limits<uint8_t>::max()); msg.addByte(itemsToSend); uint8_t i = 0; for (std::map<uint16_t, uint32_t>::const_iterator it = saleMap.begin(); i < itemsToSend; ++it, ++i) { msg.addItemId(it->first); msg.addByte(std::min<uint32_t>(it->second, std::numeric_limits<uint8_t>::max())); } writeToOutputBuffer(msg); } protocolgame.h Find this void sendSaleItemList(const std::list<ShopInfo>& shop); Place this right underneath void sendSaleItemList(Npc* npc, const std::list<ShopInfo>& shop); luascript.cpp Find int LuaScriptInterface::luaPlayerAddMoney(lua_State* L) Replace that whole function with this int LuaScriptInterface::luaPlayerAddMoney(lua_State* L) { // player:addMoney(money[, currencyId]) uint64_t money = getNumber<uint64_t>(L, 2); uint32_t currencyId = getNumber<uint32_t>(L, 3); Player* player = getUserdata<Player>(L, 1); if (player) { if (currencyId) { int32_t value; player->getStorageValue(currencyId, value); player->addStorageValue(currencyId, value + money); } else { g_game.addMoney(player, money); } pushBoolean(L, true); } else { lua_pushnil(L); } return 1; } Next find this function which should be right below it. int LuaScriptInterface::luaPlayerRemoveMoney(lua_State* L) Replace that whole function with this int LuaScriptInterface::luaPlayerRemoveMoney(lua_State* L) { // player:removeMoney(money[, currencyId]) Player* player = getUserdata<Player>(L, 1); if (player) { uint64_t money = getNumber<uint64_t>(L, 2); uint32_t currencyId = getNumber<uint32_t>(L, 3); if (currencyId) { int32_t value; player->getStorageValue(currencyId, value); if (value < money) { pushBoolean(L, false); return 1; } player->addStorageValue(currencyId, value - money); pushBoolean(L, true); } else { pushBoolean(L, g_game.removeMoney(player, money)); } } else { lua_pushnil(L); } return 1; }
  8. Resumo A maneira atual para implementar Modal Window é um pouco complicada. Atualmente precisamos cria-la em algum lugar, registrar o evento, adicionar os botões em uma ordem específica, definir o ID da janela, dos botões e da escolha. Isso não é o ideal, então esta biblioteca foi criada pelo Non Sequitur para ajudar nisso. E eu estou trazendo para a OtServBrasil. Exemplo/ Tutorial Usando Modal Window Instalando Adicionar em data/lib/lib.lua dofile('data/lib/modalwindow.lua') Crie o arquivo modalwindow.lua com o seguinte conteúdo em data/lib if not modalWindows then modalWindows = { modalWindowConstructor = ModalWindow, nextFreeId = 500, windows = {} } end local MT = {} MT.__index = MT function ModalWindow(...) local args = {...} if type(args[1]) == 'table' then local self = setmetatable(args[1], MT) local id = modalWindows.nextFreeId self.id = id self.buttons = {} self.choices = {} self.players = {} self.created = false modalWindows.nextFreeId = id + 1 table.insert(modalWindows.windows, self) return self end return modalWindows.modalWindowConstructor(...) end function MT:setDefaultCallback(callback) self.defaultCallback = callback end function MT:addButton(text, callback) local button = {text = tostring(text), callback = callback} table.insert(self.buttons, button) return button end function MT:addButtons(...) for _, text in ipairs({...}) do table.insert(self.buttons, {text = tostring(text)}) end end function MT:addChoice(text) local choice = {text = tostring(text)} table.insert(self.choices, choice) return choice end function MT:addChoices(...) for _, text in ipairs({...}) do table.insert(self.choices, {text = tostring(text)}) end end function MT:setDefaultEnterButton(text) self.defaultEnterButton = text end function MT:setDefaultEscapeButton(text) self.defaultEscapeButton = text end function MT:setTitle(title) self.title = tostring(title) end function MT:setMessage(message) self.message = tostring(message) end local buttonOrder = { [4] = {3, 4, 2, 1}, [3] = {2, 3, 1}, [2] = {1, 2}, [1] = {1} } function MT:create() local modalWindow = modalWindows.modalWindowConstructor(self.id, self.title, self.message) local order = buttonOrder[math.min(#self.buttons, 4)] if order then for _, i in ipairs(order) do local button = self.buttons[i] modalWindow:addButton(i, button.text) button.id = i if button.text == self.defaultEnterButton then modalWindow:setDefaultEnterButton(i) elseif button.text == self.defaultEscapeButton then modalWindow:setDefaultEscapeButton(i) end end end for _, choice in ipairs(self.choices) do modalWindow:addChoice(_, choice.text) choice.id = _ end self.modalWindow = modalWindow end function MT:sendToPlayer(player) if not self.modalWindow then self:create() end player:registerEvent('ModalWindowHelper') self.players[player:getId()] = true return self.modalWindow:sendToPlayer(player) end Adicionar em data/creaturescripts/craturescripts.xml <event type="modalwindow" name="ModalWindowHelper" script="modalwindowhelper.lua" /> Crie o arquivo modalwindowhelper.lua com o seguinte conteúdo em data/creaturescripts/scripts/ function onModalWindow(player, modalWindowId, buttonId, choiceId) local modalWindow for _, window in ipairs(modalWindows.windows) do if window.id == modalWindowId then modalWindow = window break end end if not modalWindow then return true end local playerId = player:getId() if not modalWindow.players[playerId] then return true end modalWindow.players[playerId] = nil local choice = modalWindow.choices[choiceId] for _, button in ipairs(modalWindow.buttons) do if button.id == buttonId then local callback = button.callback or modalWindow.defaultCallback if callback then callback(button, choice) break end end end return true end Pronto! Espero que gostem. Posteriormente irei postar um tutorial de como usar/ aplicar e alguns scripts utilizando a Biblioteca.
  9. Opa galera blz? Então, estou precisando do script de Double Exp para tfs 1.1, 1.2. Pra quem não sabe é um item que você da use e fica com o dobro de xp por um certo tempo
  10. 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
  11. Estarei postando Downloads das Distros [TFS 1.0 e 1.2]-[10.78] x86 e x64, para aqueles que estão tendo problemas na hora de compilar. Bom vamos lá : 1º- TFS 1.2 - 10.78 x86 ------------------- DOWNLOAD - SCANN - Novos OutFits & Mounts 2º- TFS 1.2 - 10.78 x64 ------------------- DOWNLOAD - SCANN - Novos OutFits & Mounts 3º- TFS 1.2 - 10.78 x64 Ubuntu 14.04 - DOWNLOAD - SCANN - Novos OutFits & Mounts 4º- TFS 1.0 - 10.78 x86 ------------------- DOWNLOAD - SCANN - V13 5º- TFS 1.0 - 10.78 x64 ------------------- DOWNLOAD - SCANN - V13 6º- TFS 1.0 - 10.78 x64 Ubuntu 14.04 - DOWNLOAD - SCANN - V13 Sources : Source TFS 1.0 - V13 Source TFS 1.2 - 10.78 Novos Outfits & Mounts Créditos : Bruno Minervino Mitsuig Tiroleivi Fireelement
  12. Bem, esse é mais um sistema do RazorBlade, assim como no outro, pedi autorização para estar trazendo para cá. Esse sistema é bem complexo e enorme e, claro, pode ser alterado da maneira que lhe convir. Espero que quem usar e testar de um rep, pois traduzir, ajeitar o conteúdo, testar para ver se tem erros e reportar demora né.. estou trazendo pois sei que muitos brs não sabem o mínimo de inglês e acho que esses deveriam ao menos agradecer pelo trabalho de disponibilizar aqui.. Enfim.. novamente, Vamos começar Esse sistema é composto de 3 ferramentas distintas.: Smith(forja de items), Smelt(derretimento de items), tanning (tratar a pele) Caracteristicas Bem são mais de 2mil linhas de códigos vamos realmente começar?!?! -- ACTIONS Em actions.xml adicione isto Crie um arquivo scripts/crafting/smith.lua e adicione isso Crie um arquivo scripts/crafting/smelt.lua e adicione isso Crie um arquivo scripts/crafting/tan.lua e adicione isso -- CREATURESCRIPTS Em creaturescripts.xml adicione isso Crie um arquivo em creaturescripts/scripts/smith.lua e adicione isso Crie um arquivo em creaturescripts/scripts/smelt.lua e adicione isso Crie um arquivo em creaturescripts/scripts/tan.lua e adicione isso Em creaturescripts/scripts/login.lua adicione isso em qualquer area que seja depois da primera sessão de login e registre os eventos no final -- SESSÃO DATA Em global.lua adicione Crie o arquivo smith.lua e adicione isso Crie o arquivo smelt.lua e adicione isso Crie o arquivo tan.lua e adicione isso Crie o arquivo skills.lua e adicione isso -- SESSÃO DATA 1 Caso pretenda usar achievement para os sets é necessário adicionar mais 2 linhas ao global.lua Crie o arquivo achievements.lua e adicione isso Crie o arquivo sets.lua e adicione isso -- CONSIDERAÇÕES FINAIS O sistema foi testado em TFS 1.1 e 1.2 e esta funcionando sem problemas. Eu fiz testes usando o tfs 1.2 mas não usei o sistema de achievements, o resto todo que testei esta funcionando perfeitamente.. Por favor, antes de qualquer pergunta leia atentamente todas as informações.. Obs.: Curtiu, usou, testou.. da um rep ae.. isso mostra que valeu a pena gastar o tempo procurando algo interessante, pedindo autorização e tudo mais para trazer para cá.. além de não arrancar pedaço..
  13. Estou com o seguinte erro : Gravidade Código Descrição Projeto Arquivo Linha Estado de Supressão Erro MSB8036 The Windows SDK version 8.1 was not found. Install the required version of Windows SDK or change the SDK version in the project property pages or by right-clicking the solution and selecting "Retarget solution". theforgottenserver C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Platforms\x64\PlatformToolsets\v141\Toolset.targets 36 Para Compilar estou usando o MSV 2017 // tfs-sdk-3.2 // boost_1_62_0. Agradeço des de já...
  14. Venho através deste informa a abertura de vagas para programador de jogos virtuais. Requisitos: Ter no minimo 18 anos de idade. Saber programar em Lua,C++, PhP,Html Proativo Caso seja efetivado recebera uma ajuda ( valor a combinar) no final de cada mês* O projeto se segue através da base atual do The Forgotten Server. Apresentara características de um MMORPG em um mundo fictício. Não apresentará nenhuma ligação a qualquer forma de ocultismo que a presente no jogo de origem "Tibia". Ira conter um historia e se desenrolara através de episódios. O mapa vem sendo desenvolvido desde Abril de 2016. Os candidatos poderão enviar o currículo para o e-mail: andersonvsc1998@gmail.com *O valor será depositado na conta bancaria do colaborador mas ele só recebera caso o projeto já esteja em fase de execução ( online para o publico) poderá haver adicionais caso ele deseje trabalhar a partir das 20:00 horas. ( Um acréscimo de R$ 4.34 por hora a partir das 20:00)
  15. Como usar o store in game no TFS 1.2 ? Server 10.60+ Como posso adicionar items ali? Home/Data/Store ? #Meu sistema não é OTX ou sejan não funciona pela pasta modules...
  16. Olá, esse script é usada para que o player que fique offline pelo tempo editado, perca a house automaticamente. Em globalevents/scripts/ crie um arquivo chamado doCheckHouses.lua e coloque esse código dentro: -- <globalevent type="startup" name="doCheckHouses" script="doCheckHouses.lua" /> local function doCheckHouses() local dias = 3 local tempo = os.time() - (dias * 24 * 60 * 60) local registros = db.storeQuery("SELECT `houses`.`owner`, `houses`.`id` FROM `houses`,`players` WHERE `houses`.`owner` != 0 AND `houses`.`owner` = `players`.`id` AND `players`.`lastlogin` <= " .. tempo .. ";") if registros ~= false then local count = 0 print('house leave code') repeat count = count + 1 local owner = result.getNumber(registros, "owner") local houseId = result.getNumber(registros, "id") local house = House(houseId) if house and (owner > 0) then print(house:getName()) house:setOwnerGuid(0) end until not result.next(registros) print('house leave house count:' .. count) result.free(registros) end end function onStartup() addEvent(doCheckHouses, 60 * 1000) return true end A tag do globalevents.xml esta no script como comentário, é só adiciona-lá. Para editar o tempo (em dias) que se o jogador ficar offline ele perderá a house é nessa linha: local dias = 3 OBS: Esse script é iniciado junto com o servidor, logo após aparecerá na distro as houses removidas e a quantidade total. Créditos: Luan e Cristofer.
  17. Bom dia queridos amigos do Tibia King, estou voltando ao fórum e desta vez irei trazer bastante conteúdo novo e ajudar bastante, para começar trarei o DotA Event para TFS 1.x, ele funciona exatamente igual o antigo do TFS 0.4. Segue download de scripts + mapa, o script globalevents está todo comentado para você conseguir configura-lo corretamente caso queira mudar a posição do mapa. Imagens: Download em anexo no tópico. Gostou? deixe seu rep+ para que eu traga mais conteúdo. DotA Event.zip
  18. Capernia Datapack: making the ultimate datapack for OTS (Open Tibia Server) Bom dia a todos, considerando que todas as datapacks presentes nesse fórum contém bugs absurdos e estão longe de serem confiáveis para um servidor final, eu convido todos a participarem e colaborarem nesse projeto chamado Capernia. O objetivo é unificar as ações em um único projeto e permitir que as correções realizadas isoladamente se propaguem para todos em tempo real. Vários problemas já foram corrigidos como a replicação de cristal coins da ferumbras e queda de servidor pelo método da parcel. Novos problemas são reportados diariamente e eu farei o possível para atender a todos. Se você tem interesse em contribuir ou utilizar o projeto Capernia acesse: https://github.com/gordonbay/capernia-ots-datapack Estabilidade: Como todos sabem não existe projeto "Full" ou "100%" e o mesmo está longe de existir porém você pode fazer a diferença agora reportando erros encontrados ou enviando as suas atualizações, entretanto tudo é realizado utilizando o idioma inglês e sem customizações. A build está marcada como buggy, o que significa que você deve utilizar esse projeto assumindo o risco, não me responsabilizo por falhas encontradas ou exploradas. Compilações: As compilações executáveis são fornecidas com a intenção de facilitar o processo para o usuário, em nenhum momento serão fornecidos os códigos de fontes considerando que o foco desse projeto é a datapack e as mesmas podem ser acessadas pelo projeto responsável pelo seu desenvolvimento nesse link: https://github.com/otland/forgottenserver Ferramentas Compatíveis: Para edição do mapa: http://www.tibiaking.com/forum/topic/22469-1091-remeres-map-editor/ Para edição de itens: https://github.com/ottools/ItemEditor Bugs Encontrados: Nenhum bug referente ao projeto será respondido nesse fórum sendo que o procedimento correto para o mesmo é através do link: https://github.com/gordonbay/capernia-ots-datapack/issues porém leia esse artigo antes de postar: https://github.com/gordonbay/capernia-ots-datapack/wiki/Issues Últimas atualizações: 0.0.9 (17/05/2016) Bugfixes: fix wrong monsters corpses as requested here #17 fix missing Yalahar gates and Captain Max not checking mission status in order to teleport a character. As described here #16 fix Edron's Bog Raider's missing spaws and wrong map textures as requested here #14 0.0.8 (14/05/2016) Enhancements: added 10.92 new itens and potions 0.0.7 (13/05/2016) Bugfixes: fix a bug on Ferumbras' Ascendant Quest as requested here #13 Enhancements: Reward Chest has been removed from Thais due violations of Capernia rules about custom content
  19. Instale as lib # apt-get install git cmake build-essential liblua5.2-dev libgmp3-dev libmysqlclient-dev libboost-system-dev execute os comandos $ cd /pasta_do_tfs $ mkdir build && cd build $ cmake .. $ make pronto sua distro esta na pasta build nomeada de tfs
  20. Bem bem bem bem.. venho trazer aqui um sistema/script seja la como quiser chamar que me chamou bema a tenção por ser bem interessante.. Feito pelo Karain (qual pedi autorização para repostar).. inicialmente havia sido feito para 0.4, inspirado num mini game para mc mas com a tendência de mudança e pedidos da comunidade o mesmo foi atualizado.. Não me peçam 0.4 pois ele não disponibilizou.. e bem.. atualizem-se né... eu não suporto 0.4 (para quem não entende, não suporto de não apóio) .~> Sobre o sistema - Como funciona <~. Primeiramente, se o jogador decidir se juntar a lista de espera do evento ele irá utilizar o comando !join hunger games e pronto.. estará na lista de espera. Depois de um tempo e quantidade de players para o evento (ambos configuráveis), assim que o evento começar eles serão teleportados para um local; terão todos seus items removidos de forma segura para um depot (configurável) Em cada mapa haverá chests que tem uma chance (random) de conter alguns items, o player precisa encontrar e coletar com intenção de sobreviver e ser o último player vivo. Premio configurável .~> Mapa<~. o mapa não foi feito pelo Karain, caso você seja dono do mapa e tenha como provar, por favor informe para que seu nome seja colocado nos créditos Download Do Mapa Aqui P.s.: não sei colocar scan nem como faz, se for preciso scan alguém faz por favor que eu edito o post Bug conhecido (mas acho que para server que não fique reiniciando isso não venha a ser um problema..) não testei essa parte para ver o que realmente ocorre - alguns items podem não retornar ao player após o evento, mesmo que tenha sido carregado no mapa e nos scripts, no entanto, irá funcionar se o player tiver visitado o depot ao menos uma vez na em que o server ficou online Changelog 1.0.0 23 de julho 2015 : Liberado 1.0.1 29 de julho 2015 : Arrumado a atualziaçãod e items no chest após um player o abrir. 1.0.2 30 de julho 2015 : - Corrigido um erro fatal que acontecia quando um player morria ou dava logout enquanto no evento. - Adicionado o comando !ragequit que faz o jogador se matar enquanto no evento. 1.0.3 8 de agosto 2015: Corrigido bug que fazia o evento death ser executado em qualquer situação pvp, arquivos alterados: - creaturescripts/scripts/hunger.lua 1.0.4 9 de agosto 2015: Corrigido um debug no client por conta de broadcasts, obrigado ao silveralol, arquivos alterados: - globalevents/scripts/hunger.lua - creaturescripts/scripts/hunger.lua - creaturescripts/scripts/eventlogout.lua .~> Códigos <~. Em globalevents/globalevents.xml <globalevent type="startup" name="hunger" script="hunger.lua"/> Crie um arquivo chamado hunger.lua em globalevents/scripts e cole isso Em creaturescripts/creaturescripts.xml <event type="logout" name="eventlogout" script="eventlogout.lua"/> <event type="death" name="hunger" script="hunger.lua"/> Em creaturescripts/scripts/login.lua antes do return true player:registerEvent("hunger") Em creaturescripts/scripts/eventlogout.lua Em creaturescripts/scripts/hunger.lua Em talkactions/talkactions.xml <talkaction words="!join" separator=" " script="join.lua"/> <talkaction words="!ragequit" separator=" " script="leave.lua"/> Em talkactions/scripts/join.lua Em talkactions/scripts/leave.lua Em actions/actions.xml <!-- Hunger Games Chests --> <action fromaid="60101" toaid="60499" script="games/hunger.lua"/> <action fromaid="61101" toaid="61499" script="games/hunger.lua"/> <action fromaid="62101" toaid="62499" script="games/hunger.lua"/> Em actions/scripts/hunger.lua Curtiu da um rep ae né.. não arranca pedaço da mão e incentiva a trazer mais.. se você for sovina e n gostar de dar rep, ao menos um obrigado ja ta bom.. pelo menos mostra que esta valendo a pena ficar procurando sistemas maneiros para trazer, pedir autorização e traduzir as informações... [edit 08/08] Alteração no scriot - vide Changelog [edit 09/08] Alteração no script - vide Changelog
  21. E aí galera do TK.... Estou passando meu OT para TFS 1.2 (OTXSERVER) e estou criando algumas funções para suprir a necessidade de alguns scripts, quando me deparei com o problema de listar as cidades no meu comando fly, não existia a função getTownList(), se existe alguma função que faça isso, me desculpe eu não encontrei, então segue o código: function townExists(townId) local t = Town(townId) return t ~= nil and true or false end function getTownList() local listtowns = {} setmetatable(listtowns, {__index=table}) local town while townExists(#listtowns+1) do town = Town(#listtowns+1) listtowns:insert({id=town:getId(), name=town:getName()}) end return listtowns end Para os novatos (não que eu não seja rs), você pode utilizar da seguinte forma: local str = "Cidades disponiveis para viajar: \n" for i, town in ipairs(getTownList()) do str = str .. town.name .. "\n" end player:showTextDialog(1950, str) Vai ser printado algo como isto: Por hoje é só pessoal, beijos!
  22. premia-global.net 7171~*Client*~Tibia 10.90 / owned client~*Uptime*~24/7~*Hosted in*~Canada~*Website*~http://premia-global.net~*Exp rate*~Stages xxx~*Map*~Custom, Home made. RL MAP~*Runes*~Infinite charges, normal Pots~*Loot rate*~4x~*Server type*~Pvp-Rpg~*Skills & Magic rates*~10x Skill and 5x MagicLET'S STARTNice Thais - (Magic light for VIPS)TEMPLE!FOOTBALL!!! (You dont need move the ball! just run)Trainers.... NICE RESPONSIVE WEBPAGE UNIQUE! DEATHS NOTIFICATIONS ON DESKTOP! (keep open site )The cast online... (boring well.. )VIPS! ( more exp, loot, and fun! )Many Items for you.. ( in this pic only 3 xD.. look shop)WarZones, Raids, Events AND MUCH MORE! We speak : English - Español - Portugues and the rest google traslator I HOPE YOU ENJOY MY WORK! ALL FOR YOU. THANKS!
  23. Olá, procurei em vários lugares para TFS 1.2 e não encontrei, um script/npc/baú/comando que adicione uma certa quantidade de pontos x todos os dias para gastar no shop do site, obrigado
  24. Olá, Estou com problemas nesse systema de teleport TFS 1.0: Estou usando: The Forgotten Server - Versao 1.2 Compilado com GNU C++ version 4.8.4 Compilado em Dec 18 2015 14:39:12 para plataforma x64 Este servidor foi desenvolvido por Mark Samman e editado por Bruno Minervino Visite nosso forum para updates, suporte e pedidos: http://xtibia.com/. Um oferecimento ServerSoft, tecnologia ao seu alcance. E estou com o seguinte erro: Lua Script Error: [TalkAction Interface] data/talkactions/scripts/teleport.lua:onSay data/talkactions/scripts/teleport.lua:3: attempt to index global 'teleport' (a nil value) stack traceback: [C]: in function '__index' data/talkactions/scripts/teleport.lua:3: in function imagino que o problema venha do seguinte script: global.lua na pasta talkactions. teleport = { maxPortPoints = 10, canTeleportWhileInfight = false, premiumOnly = false } function savePortPosition(cid, description) local playerGuid = getPlayerGUID(cid) local pos = getCreaturePosition(cid) local port = 0 for i = 1, teleport.maxPortPoints do local slot = db.storeQuery("SELECT `name` FROM `player_teleport` WHERE `player_id` = " .. playerGuid .." AND slot = ".. i .."") if slot == false then port = i ret = true break end result.free(slot) end if ret then db.query("INSERT INTO `player_teleport` (`player_id`, `slot`, `posx`, `posy`, `posz`, `name`) VALUES (".. playerGuid ..", ".. port ..", ".. pos.x ..", ".. pos.y ..", ".. pos.z ..", '".. description .."');") doPlayerSendTextMessage(cid, 22, "Voce salvou o local de teleporte. ".. description ..".") doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE) else doPlayerSendCancel(cid, "Voce nao pode ter mais que ".. teleport.maxPortPoints .." locais salvos.") end end Alguem se oferece a judar ? Rep++
  25. Boa tarde ... Estou tentando usar esse script so para testes ,porem quando tento usar ele não da erro nenhum. Não tem erro no console . Só que não acontece nada ,único erro, é na alavanca que ela não puxa para nenhum lado. o Script é esse ,alguém que entenda poderia dizer aonde esta o erro que faz a alavanca não dar use?

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...