Jump to content

Olá Tibiano! Notamos que você está com um adblocker ligado... 

Nós promovemos servidores dentro da comunidade, para que eles tenham visibilidade.

Por favor, nos ajude a continuar promovendo esses servidores. Adicione nosso domínio na whitelist de seu adblocker, ok? :)

Tony Araujo

Visconde
  • Content Count

    438
  • Joined

  • Last visited

  • Days Won

    19
  • xPoints

    0 [ Donate ]

Reputation Activity

  1. Upvote
    Tony Araujo got a reaction from FlamesAdmin in [C++] Unique Item System - ATUALIZADO! (No-bugs)   
    [C++] Unique Item System
    testado: TFS - 0.3.6 (porém acredito que funcione em outros)
    autor: Tony Araújo (OrochiElf)
    contribuição: gristony
     
     
    Olá galera, beleza? Então, tem tanto tempo que eu não faço minhas contribuições e hoje eu resolvi postar um sistema bastante simples, porém de extrema necessidade e importância nos servidores que dão items iniciais aos jogadores, especialmente os poketibias. Então com esse sistema o jogador fica impossibilitado de jogar o item fora e também de fazer trocas com outros jogadores, sendo literalmente únicos. Eu criei ele em cima do código do TFS 0.3.6, porém é um sistema com o código completamente simples, então acredito que se instalado atentamente em outras versões, funcione sem problemas.
    Bom, sem mais delongas vamos ao que interessa.
     
     
    Vá ao game.cpp e procure por esta função:
    bool Game::playerMoveItem(uint32_t playerId, const Position& fromPos, uint16_t spriteId, int16_t fromStackpos, const Position& toPos, uint8_t count)  
    Então, dentro desta mesma função, você procura por esta condição aqui.
    if(!player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere)) { if((std::abs(playerPos.x - mapToPos.x) > item->getThrowRange()) || (std::abs(playerPos.y - mapToPos.y) > item->getThrowRange()) || (std::abs(mapFromPos.z - mapToPos.z) * 4 > item->getThrowRange())) { player->sendCancelMessage(RET_DESTINATIONOUTOFREACH); return false; } }  
     E logo abaixo adicione esta condição:
    Item* tmpItem = NULL; Container* tmpContainer = NULL; if(tmpContainer = item->getContainer()) { for(ContainerIterator it = tmpContainer->begin(); it != tmpContainer->end(); ++it) { if(tmpItem = (*it)->getItem()) { boost::any value = tmpItem->getAttribute("unique"); if(!value.empty() && getMap()->getTile(toPos)) { player->sendCancel("Has a unique item in this bag, you can't drop this item."); return false; } } } } boost::any value = item->getAttribute("unique"); if(!value.empty() && (!toCylinder->getItem() && toCylinder != player && toCylinder->getParent() != player || toCylinder->getItem() && toCylinder->getItem()->isGroundTile() || toCylinder->getItem() && toCylinder->getItem()->getContainer() && !toCylinder->getItem()->getContainer()->getDepot() && toCylinder->getItem()->getParent() != player)) { player->sendCancel("It is a unique item, you can't drop this item."); return false; }  
    Certo. Continuando no game.cpp, você vai procurar pela função:
    ReturnValue Game::internalMoveItem(Creature* actor, Cylinder* fromCylinder, Cylinder* toCylinder, int32_t index, Item* item, uint32_t count, Item** _moveItem, uint32_t flags /*= 0*/)  
    Dentro da função, você procura pela condição:
    //update item(s) if(item->isStackable())  
    E troque por esta:
    //update item(s) if(item->isStackable()) { if(toItem && toItem->getID() == item->getID()) { boost::any item_value = item->getAttribute("unique"); boost::any toItem_value = toItem->getAttribute("unique"); if(!item_value.empty() && !toItem_value.empty() || item_value.empty() && toItem_value.empty()) { n = std::min((uint32_t)100 - toItem->getItemCount(), m); toCylinder->__updateThing(toItem, toItem->getID(), toItem->getItemCount() + n); updateItem = toItem; } } if(m - n > 0) { moveItem = Item::CreateItem(item->getID(), m - n); boost::any value = item->getAttribute("unique"); if(!value.empty()) moveItem->setAttribute("unique", 1); } else moveItem = NULL; if(item->isRemoved()) freeThing(item); }  
    Sem sair do game.cpp, você procura pela função:
    bool Game::playerRequestTrade(uint32_t playerId, const Position& pos, int16_t stackpos, uint32_t tradePlayerId, uint16_t spriteId)  
    Dentro dela, você procura pela condição:
    if(!tradeItem || tradeItem->getClientID() != spriteId || !tradeItem->isPickupable() || (tradeItem->isLoadedFromMap() && (tradeItem->getUniqueId() != 0 || (tradeItem->getActionId() != 0 && tradeItem->getContainer())))) { player->sendCancelMessage(RET_NOTPOSSIBLE); return false; }  
    E logo abaixo você adiciona a condição:
    boost::any value = tradeItem->getAttribute("unique"); if(!value.empty()) { player->sendTextMessage(MSG_INFO_DESCR, "It is a unique item, you can't trade this item."); return false; } Item* tmpItem = NULL; Container* tmpContainer = NULL; if(tmpContainer = tradeItem->getContainer()) { for(ContainerIterator it = tmpContainer->begin(); it != tmpContainer->end(); ++it) { if(tmpItem = (*it)->getItem()) { boost::any value = tmpItem->getAttribute("unique"); if(!value.empty()) { player->sendTextMessage(MSG_INFO_DESCR, "Has a unique item in this bag, you can't trade this item."); return false; } } } }  
    Pronto, seu sistema de unique está instalado e pronto para ser utilizado. Para você setar o item unique, basta:
    doItemSetAttribute(item.uid, "unique", 1)  
    Algumas imagens
    Please login or register to see this spoiler.
     
    Bom, é isso galera, espero que gostem e façam bom proveito. ;D
     

    Please login or register to see this attachment.
  2. Thanks
    Tony Araujo got a reaction from ricardok10 in [C++] Unique Item System - ATUALIZADO! (No-bugs)   
    [C++] Unique Item System
    testado: TFS - 0.3.6 (porém acredito que funcione em outros)
    autor: Tony Araújo (OrochiElf)
    contribuição: gristony
     
     
    Olá galera, beleza? Então, tem tanto tempo que eu não faço minhas contribuições e hoje eu resolvi postar um sistema bastante simples, porém de extrema necessidade e importância nos servidores que dão items iniciais aos jogadores, especialmente os poketibias. Então com esse sistema o jogador fica impossibilitado de jogar o item fora e também de fazer trocas com outros jogadores, sendo literalmente únicos. Eu criei ele em cima do código do TFS 0.3.6, porém é um sistema com o código completamente simples, então acredito que se instalado atentamente em outras versões, funcione sem problemas.
    Bom, sem mais delongas vamos ao que interessa.
     
     
    Vá ao game.cpp e procure por esta função:
    bool Game::playerMoveItem(uint32_t playerId, const Position& fromPos, uint16_t spriteId, int16_t fromStackpos, const Position& toPos, uint8_t count)  
    Então, dentro desta mesma função, você procura por esta condição aqui.
    if(!player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere)) { if((std::abs(playerPos.x - mapToPos.x) > item->getThrowRange()) || (std::abs(playerPos.y - mapToPos.y) > item->getThrowRange()) || (std::abs(mapFromPos.z - mapToPos.z) * 4 > item->getThrowRange())) { player->sendCancelMessage(RET_DESTINATIONOUTOFREACH); return false; } }  
     E logo abaixo adicione esta condição:
    Item* tmpItem = NULL; Container* tmpContainer = NULL; if(tmpContainer = item->getContainer()) { for(ContainerIterator it = tmpContainer->begin(); it != tmpContainer->end(); ++it) { if(tmpItem = (*it)->getItem()) { boost::any value = tmpItem->getAttribute("unique"); if(!value.empty() && getMap()->getTile(toPos)) { player->sendCancel("Has a unique item in this bag, you can't drop this item."); return false; } } } } boost::any value = item->getAttribute("unique"); if(!value.empty() && (!toCylinder->getItem() && toCylinder != player && toCylinder->getParent() != player || toCylinder->getItem() && toCylinder->getItem()->isGroundTile() || toCylinder->getItem() && toCylinder->getItem()->getContainer() && !toCylinder->getItem()->getContainer()->getDepot() && toCylinder->getItem()->getParent() != player)) { player->sendCancel("It is a unique item, you can't drop this item."); return false; }  
    Certo. Continuando no game.cpp, você vai procurar pela função:
    ReturnValue Game::internalMoveItem(Creature* actor, Cylinder* fromCylinder, Cylinder* toCylinder, int32_t index, Item* item, uint32_t count, Item** _moveItem, uint32_t flags /*= 0*/)  
    Dentro da função, você procura pela condição:
    //update item(s) if(item->isStackable())  
    E troque por esta:
    //update item(s) if(item->isStackable()) { if(toItem && toItem->getID() == item->getID()) { boost::any item_value = item->getAttribute("unique"); boost::any toItem_value = toItem->getAttribute("unique"); if(!item_value.empty() && !toItem_value.empty() || item_value.empty() && toItem_value.empty()) { n = std::min((uint32_t)100 - toItem->getItemCount(), m); toCylinder->__updateThing(toItem, toItem->getID(), toItem->getItemCount() + n); updateItem = toItem; } } if(m - n > 0) { moveItem = Item::CreateItem(item->getID(), m - n); boost::any value = item->getAttribute("unique"); if(!value.empty()) moveItem->setAttribute("unique", 1); } else moveItem = NULL; if(item->isRemoved()) freeThing(item); }  
    Sem sair do game.cpp, você procura pela função:
    bool Game::playerRequestTrade(uint32_t playerId, const Position& pos, int16_t stackpos, uint32_t tradePlayerId, uint16_t spriteId)  
    Dentro dela, você procura pela condição:
    if(!tradeItem || tradeItem->getClientID() != spriteId || !tradeItem->isPickupable() || (tradeItem->isLoadedFromMap() && (tradeItem->getUniqueId() != 0 || (tradeItem->getActionId() != 0 && tradeItem->getContainer())))) { player->sendCancelMessage(RET_NOTPOSSIBLE); return false; }  
    E logo abaixo você adiciona a condição:
    boost::any value = tradeItem->getAttribute("unique"); if(!value.empty()) { player->sendTextMessage(MSG_INFO_DESCR, "It is a unique item, you can't trade this item."); return false; } Item* tmpItem = NULL; Container* tmpContainer = NULL; if(tmpContainer = tradeItem->getContainer()) { for(ContainerIterator it = tmpContainer->begin(); it != tmpContainer->end(); ++it) { if(tmpItem = (*it)->getItem()) { boost::any value = tmpItem->getAttribute("unique"); if(!value.empty()) { player->sendTextMessage(MSG_INFO_DESCR, "Has a unique item in this bag, you can't trade this item."); return false; } } } }  
    Pronto, seu sistema de unique está instalado e pronto para ser utilizado. Para você setar o item unique, basta:
    doItemSetAttribute(item.uid, "unique", 1)  
    Algumas imagens
    Please login or register to see this spoiler.
     
    Bom, é isso galera, espero que gostem e façam bom proveito. ;D
     

    Please login or register to see this attachment.
  3. Upvote
    Tony Araujo got a reaction from lSainty in [OFFICIAL!] oldPokemon.online (SvkE ~ PxG 2012 fully based)   
    É com grande honra que tenho o prazer de anunciar que o servidor oldPokemon online está oficialmente lançado, trazendo consigo toda a nostalgia do poketibia oldschool e com muitas outras novidades em sua essência. Eu convido-os para viajar ao passado, mais especificadamente 2009 onde todo esse sonho começou e onde teve seus dias mais gloriosos. Vamos nessa?
     
     
    Bom, junto ao servidor, como lançamos juntos ao feriado de páscoa, estamos com um singelo evento de páscoa ativo. Para todos os jogadores que criarem suas contas e logarem pelos próximos 15 dias, automaticamente ganharão a outfit exclusiva de páscoa.
     
    Site: Please login or register to see this link.

    Discord: Please login or register to see this link.

    Facebook: Please login or register to see this link.

    Instagram: Please login or register to see this link.

  4. Upvote
    Tony Araujo got a reaction from nociam in [BETA-TEST] oldPokemon (SvkE based) - Online Now!   
    Fala galera, tranquilão? Bom, hoje eu to aqui pra apresentar pra vocês o meu xodó. O projeto no qual já trabalho tem 4 anos, e de muita luta e sofrimento kkkkkkk, afinal, passamos por trancos e barrancos. Foi um servidor que eu pensei em fazer diferente, a forma que ele funcionava. Trabalhei em cima de uma source até eu criar a minha própria, voltada completamente para pokémon, para ter um melhor desempenho, tirando todas as funções do tibia e deixando o servidor bem mais leve. 
     
    Bom, vamos falar exatamente o que é o oldPokemon. Eu criei esse servidor, junto com meu primo João, na ideia de trazer o oldschool do poketibia de volta a vida. Eu vejo muita gente comentando em vários forums / canais de poketibia / grupos do fb, que sentem saudades do antigo SvkE, e olha, eu também sentia, então foi de onde partimos nessa dura jornada de trazer um servidor que fosse fielmente o SvkE, porém com vários sistemas novos e funções inovadoras em nosso client e servidor. É com grande alegria que compartilho com vocês o Beta Test deste servidor, após uma longa caminhada.
     
     
    Algumas imagens do servidor:
    Please login or register to see this spoiler.
     
    E MUITO MAIS!
     
     
     
    Para criar a conta, basta entrar no 1/1 e criar pelo Account Manager.
     
    Discord Link:

    Please login or register to see this link.
     
    Download Link (Atualizado 10/04): 
    [MEGA.NZ]: https://mega.nz/#!hltigY4Z!CEncVtvPfuUzATIgK6Y9rPbrXGsCJ2xR6GxnCuWC_Dg [MEDIAFIRE]: https://www.mediafire.com/file/cbe23xa63trdc7t/oldPokemon_%2802.04%29.rar/file [DROPBOX]: https://www.dropbox.com/s/frcj0fotzfp2k56/oldPokemon%20%2802.04%29.rar?dl=0 SCAN DO CLIENT: https://www.virustotal.com/gui/file/64cb6d5bb3896fba98408336d4671e61b6c49bb57faf782f3f9bcfd393880f8d/detection  

     
  5. Upvote
    Tony Araujo got a reaction from KarlKalvin in [BETA-TEST] oldPokemon (SvkE based) - Online Now!   
    Fala galera, tranquilão? Bom, hoje eu to aqui pra apresentar pra vocês o meu xodó. O projeto no qual já trabalho tem 4 anos, e de muita luta e sofrimento kkkkkkk, afinal, passamos por trancos e barrancos. Foi um servidor que eu pensei em fazer diferente, a forma que ele funcionava. Trabalhei em cima de uma source até eu criar a minha própria, voltada completamente para pokémon, para ter um melhor desempenho, tirando todas as funções do tibia e deixando o servidor bem mais leve. 
     
    Bom, vamos falar exatamente o que é o oldPokemon. Eu criei esse servidor, junto com meu primo João, na ideia de trazer o oldschool do poketibia de volta a vida. Eu vejo muita gente comentando em vários forums / canais de poketibia / grupos do fb, que sentem saudades do antigo SvkE, e olha, eu também sentia, então foi de onde partimos nessa dura jornada de trazer um servidor que fosse fielmente o SvkE, porém com vários sistemas novos e funções inovadoras em nosso client e servidor. É com grande alegria que compartilho com vocês o Beta Test deste servidor, após uma longa caminhada.
     
     
    Algumas imagens do servidor:
    Please login or register to see this spoiler.
     
    E MUITO MAIS!
     
     
     
    Para criar a conta, basta entrar no 1/1 e criar pelo Account Manager.
     
    Discord Link:

    Please login or register to see this link.
     
    Download Link (Atualizado 10/04): 
    [MEGA.NZ]: https://mega.nz/#!hltigY4Z!CEncVtvPfuUzATIgK6Y9rPbrXGsCJ2xR6GxnCuWC_Dg [MEDIAFIRE]: https://www.mediafire.com/file/cbe23xa63trdc7t/oldPokemon_%2802.04%29.rar/file [DROPBOX]: https://www.dropbox.com/s/frcj0fotzfp2k56/oldPokemon%20%2802.04%29.rar?dl=0 SCAN DO CLIENT: https://www.virustotal.com/gui/file/64cb6d5bb3896fba98408336d4671e61b6c49bb57faf782f3f9bcfd393880f8d/detection  

     
  6. Upvote
    Tony Araujo got a reaction from FlamesAdmin in [ACTION] Auto Loot - Coletando ao abrir corpo   
    Eai galera do Eks, tudo bão? Quanto tempo que eu não venho por esses lados, saudades xD
    Bom, sem muita enrolação, eu vim postar pra vocês o sistema de auto loot que eu fiz aqui rapidinho (literalmente, 10 mins), porém que ficou bem bacana. É aquele esquema, você coleta o loot quando abre o corpo do bicho morto. Está bem simples, porém funcional. Eu pesquisei a respeito, pra ter uma ideia e não encontrei nenhum que tivesse com um código legal, todos estavam bem antigos.
     
    Eu não tive muito tempo testando, então caso encontrem qualquer bug, me avise pfv.
     
    function onUse(cid, item, fromPosition, itemEx, toPosition) if getItemAttribute(item.uid, "corpseowner") ~= cid then return doPlayerSendCancel(cid, "You're not the owner.") end local items = {} for i = 0, getContainerSize(item.uid) do local it = getContainerItem(item.uid, i) if it.uid > 0 then table.insert(items, {it.itemid, it.type}) doRemoveItem(it.uid) end end if #items > 0 then for k = 1, #items do local playerItem = getPlayerItemById(cid, true, items[k][1]) if playerItem.uid > 0 then if (playerItem.type + items[k][2]) > 100 then doPlayerAddItem(cid, items[k][1], (playerItem.type + items[k][2]) - 100) doTransformItem(playerItem.uid, items[k][1], 100) else doTransformItem(playerItem.uid, items[k][1], playerItem.type + items[k][2]) end else doPlayerAddItem(cid, items[k][1], items[k][2]) end end return true end return false end  
  7. Upvote
    Tony Araujo got a reaction from gabriel28 in [ACTION] Auto Loot - Coletando ao abrir corpo   
    Eai galera do Eks, tudo bão? Quanto tempo que eu não venho por esses lados, saudades xD
    Bom, sem muita enrolação, eu vim postar pra vocês o sistema de auto loot que eu fiz aqui rapidinho (literalmente, 10 mins), porém que ficou bem bacana. É aquele esquema, você coleta o loot quando abre o corpo do bicho morto. Está bem simples, porém funcional. Eu pesquisei a respeito, pra ter uma ideia e não encontrei nenhum que tivesse com um código legal, todos estavam bem antigos.
     
    Eu não tive muito tempo testando, então caso encontrem qualquer bug, me avise pfv.
     
    function onUse(cid, item, fromPosition, itemEx, toPosition) if getItemAttribute(item.uid, "corpseowner") ~= cid then return doPlayerSendCancel(cid, "You're not the owner.") end local items = {} for i = 0, getContainerSize(item.uid) do local it = getContainerItem(item.uid, i) if it.uid > 0 then table.insert(items, {it.itemid, it.type}) doRemoveItem(it.uid) end end if #items > 0 then for k = 1, #items do local playerItem = getPlayerItemById(cid, true, items[k][1]) if playerItem.uid > 0 then if (playerItem.type + items[k][2]) > 100 then doPlayerAddItem(cid, items[k][1], (playerItem.type + items[k][2]) - 100) doTransformItem(playerItem.uid, items[k][1], 100) else doTransformItem(playerItem.uid, items[k][1], playerItem.type + items[k][2]) end else doPlayerAddItem(cid, items[k][1], items[k][2]) end end return true end return false end  
  8. Thanks
    Tony Araujo got a reaction from jeanflamengo in [ACTION] Auto Loot - Coletando ao abrir corpo   
    Eai galera do Eks, tudo bão? Quanto tempo que eu não venho por esses lados, saudades xD
    Bom, sem muita enrolação, eu vim postar pra vocês o sistema de auto loot que eu fiz aqui rapidinho (literalmente, 10 mins), porém que ficou bem bacana. É aquele esquema, você coleta o loot quando abre o corpo do bicho morto. Está bem simples, porém funcional. Eu pesquisei a respeito, pra ter uma ideia e não encontrei nenhum que tivesse com um código legal, todos estavam bem antigos.
     
    Eu não tive muito tempo testando, então caso encontrem qualquer bug, me avise pfv.
     
    function onUse(cid, item, fromPosition, itemEx, toPosition) if getItemAttribute(item.uid, "corpseowner") ~= cid then return doPlayerSendCancel(cid, "You're not the owner.") end local items = {} for i = 0, getContainerSize(item.uid) do local it = getContainerItem(item.uid, i) if it.uid > 0 then table.insert(items, {it.itemid, it.type}) doRemoveItem(it.uid) end end if #items > 0 then for k = 1, #items do local playerItem = getPlayerItemById(cid, true, items[k][1]) if playerItem.uid > 0 then if (playerItem.type + items[k][2]) > 100 then doPlayerAddItem(cid, items[k][1], (playerItem.type + items[k][2]) - 100) doTransformItem(playerItem.uid, items[k][1], 100) else doTransformItem(playerItem.uid, items[k][1], playerItem.type + items[k][2]) end else doPlayerAddItem(cid, items[k][1], items[k][2]) end end return true end return false end  
  9. Thanks
    Tony Araujo got a reaction from jeanflamengo in [C++] Unique Item System - ATUALIZADO! (No-bugs)   
    Muito bem lembrado, vou adicionar a condição pertencente a isso. Muito obrigado brow!
     
    @Tópico
    Editado e adicionado a condição.
    Adicionado imagens do funcionamento.
  10. Upvote
    Tony Araujo got a reaction from Dipirona SZ in [BETA-TEST] oldPokemon (SvkE based) - Online Now!   
    Fala galera, tranquilão? Bom, hoje eu to aqui pra apresentar pra vocês o meu xodó. O projeto no qual já trabalho tem 4 anos, e de muita luta e sofrimento kkkkkkk, afinal, passamos por trancos e barrancos. Foi um servidor que eu pensei em fazer diferente, a forma que ele funcionava. Trabalhei em cima de uma source até eu criar a minha própria, voltada completamente para pokémon, para ter um melhor desempenho, tirando todas as funções do tibia e deixando o servidor bem mais leve. 
     
    Bom, vamos falar exatamente o que é o oldPokemon. Eu criei esse servidor, junto com meu primo João, na ideia de trazer o oldschool do poketibia de volta a vida. Eu vejo muita gente comentando em vários forums / canais de poketibia / grupos do fb, que sentem saudades do antigo SvkE, e olha, eu também sentia, então foi de onde partimos nessa dura jornada de trazer um servidor que fosse fielmente o SvkE, porém com vários sistemas novos e funções inovadoras em nosso client e servidor. É com grande alegria que compartilho com vocês o Beta Test deste servidor, após uma longa caminhada.
     
     
    Algumas imagens do servidor:
    Please login or register to see this spoiler.
     
    E MUITO MAIS!
     
     
     
    Para criar a conta, basta entrar no 1/1 e criar pelo Account Manager.
     
    Discord Link:

    Please login or register to see this link.
     
    Download Link (Atualizado 10/04): 
    [MEGA.NZ]: https://mega.nz/#!hltigY4Z!CEncVtvPfuUzATIgK6Y9rPbrXGsCJ2xR6GxnCuWC_Dg [MEDIAFIRE]: https://www.mediafire.com/file/cbe23xa63trdc7t/oldPokemon_%2802.04%29.rar/file [DROPBOX]: https://www.dropbox.com/s/frcj0fotzfp2k56/oldPokemon%20%2802.04%29.rar?dl=0 SCAN DO CLIENT: https://www.virustotal.com/gui/file/64cb6d5bb3896fba98408336d4671e61b6c49bb57faf782f3f9bcfd393880f8d/detection  

     
  11. Upvote
    Tony Araujo got a reaction from XZero in [C++] Monsters Passive System (No-bugs)   
    É aquela tag <flag hostile="0"/> do monster, se for 0, ele é passivo
  12. Upvote
    Tony Araujo got a reaction from Shiroe in [BETA-TEST] oldPokemon (SvkE based) - Online Now!   
    Fala galera, tranquilão? Bom, hoje eu to aqui pra apresentar pra vocês o meu xodó. O projeto no qual já trabalho tem 4 anos, e de muita luta e sofrimento kkkkkkk, afinal, passamos por trancos e barrancos. Foi um servidor que eu pensei em fazer diferente, a forma que ele funcionava. Trabalhei em cima de uma source até eu criar a minha própria, voltada completamente para pokémon, para ter um melhor desempenho, tirando todas as funções do tibia e deixando o servidor bem mais leve. 
     
    Bom, vamos falar exatamente o que é o oldPokemon. Eu criei esse servidor, junto com meu primo João, na ideia de trazer o oldschool do poketibia de volta a vida. Eu vejo muita gente comentando em vários forums / canais de poketibia / grupos do fb, que sentem saudades do antigo SvkE, e olha, eu também sentia, então foi de onde partimos nessa dura jornada de trazer um servidor que fosse fielmente o SvkE, porém com vários sistemas novos e funções inovadoras em nosso client e servidor. É com grande alegria que compartilho com vocês o Beta Test deste servidor, após uma longa caminhada.
     
     
    Algumas imagens do servidor:
    Please login or register to see this spoiler.
     
    E MUITO MAIS!
     
     
     
    Para criar a conta, basta entrar no 1/1 e criar pelo Account Manager.
     
    Discord Link:

    Please login or register to see this link.
     
    Download Link (Atualizado 10/04): 
    [MEGA.NZ]: https://mega.nz/#!hltigY4Z!CEncVtvPfuUzATIgK6Y9rPbrXGsCJ2xR6GxnCuWC_Dg [MEDIAFIRE]: https://www.mediafire.com/file/cbe23xa63trdc7t/oldPokemon_%2802.04%29.rar/file [DROPBOX]: https://www.dropbox.com/s/frcj0fotzfp2k56/oldPokemon%20%2802.04%29.rar?dl=0 SCAN DO CLIENT: https://www.virustotal.com/gui/file/64cb6d5bb3896fba98408336d4671e61b6c49bb57faf782f3f9bcfd393880f8d/detection  

     
  13. Upvote
    Tony Araujo got a reaction from Wase Wiss in [BETA-TEST] oldPokemon (SvkE based) - Online Now!   
    Fala galera, tranquilão? Bom, hoje eu to aqui pra apresentar pra vocês o meu xodó. O projeto no qual já trabalho tem 4 anos, e de muita luta e sofrimento kkkkkkk, afinal, passamos por trancos e barrancos. Foi um servidor que eu pensei em fazer diferente, a forma que ele funcionava. Trabalhei em cima de uma source até eu criar a minha própria, voltada completamente para pokémon, para ter um melhor desempenho, tirando todas as funções do tibia e deixando o servidor bem mais leve. 
     
    Bom, vamos falar exatamente o que é o oldPokemon. Eu criei esse servidor, junto com meu primo João, na ideia de trazer o oldschool do poketibia de volta a vida. Eu vejo muita gente comentando em vários forums / canais de poketibia / grupos do fb, que sentem saudades do antigo SvkE, e olha, eu também sentia, então foi de onde partimos nessa dura jornada de trazer um servidor que fosse fielmente o SvkE, porém com vários sistemas novos e funções inovadoras em nosso client e servidor. É com grande alegria que compartilho com vocês o Beta Test deste servidor, após uma longa caminhada.
     
     
    Algumas imagens do servidor:
    Please login or register to see this spoiler.
     
    E MUITO MAIS!
     
     
     
    Para criar a conta, basta entrar no 1/1 e criar pelo Account Manager.
     
    Discord Link:

    Please login or register to see this link.
     
    Download Link (Atualizado 10/04): 
    [MEGA.NZ]: https://mega.nz/#!hltigY4Z!CEncVtvPfuUzATIgK6Y9rPbrXGsCJ2xR6GxnCuWC_Dg [MEDIAFIRE]: https://www.mediafire.com/file/cbe23xa63trdc7t/oldPokemon_%2802.04%29.rar/file [DROPBOX]: https://www.dropbox.com/s/frcj0fotzfp2k56/oldPokemon%20%2802.04%29.rar?dl=0 SCAN DO CLIENT: https://www.virustotal.com/gui/file/64cb6d5bb3896fba98408336d4671e61b6c49bb57faf782f3f9bcfd393880f8d/detection  

     
  14. Upvote
    Tony Araujo got a reaction from gabriel28 in [C++] Unique Item System - ATUALIZADO! (No-bugs)   
  15. Upvote
    Tony Araujo reacted to gabriel28 in [C++] Unique Item System - ATUALIZADO! (No-bugs)   
    No 0.4 só deu um erro na hora de compilar, mas foi uma besteirinha e falta de atenção minha:
    Na hora de substituir essa função: 
    if(item->isStackable()) Você poem essa:
    Código:
    Please login or register to see this spoiler.

    Também, na hora de copiar e colar, prestem atenção se não tem nenhum sinal de interrogação '?' no código.
    Ainda não testei pra ver se está 100% funcional na versão 0.4, mas creio que está sem problema. Depois edito o comentário dizendo.
  16. Upvote
    Tony Araujo got a reaction from gabrielzika in [C++] Monsters Passive System (No-bugs)   
    [C++] Monsters Passive System
    testado: TFS - 0.3.6 (porém acredito que funcione em outros)
    autor: Tony Araújo (OrochiElf)
     
    Eai galera, tranquilão? Estou eu aqui novamente, e hoje eu vou compartilhar com vocês um sistema que eu vejo muitas pessoas pedindo e buscando ajuda (principalmente no meu inbox kkkkk), seria ele o sistema de monstros passivos, que consiste naquela criatura que só ataca o jogador que o atacou, caso contrário ele fica andando normalmente. O sistema foi desenvolvido em cima do código do TFS 0.3.6, porém caso instale prestando bastante atenção em outras versões, funcione, talvez seja necessário mudar algum código, porém bem simples.
    Bom, vamos ao sistema.
     
    Em creature.cpp, procure pela função:
    bool Creature::setAttackedCreature(Creature* creature)  
     
    E altere esta condição:
        if(attackedCreature)     {         onAttackedCreature(attackedCreature);         attackedCreature->onAttacked();     }  
    Por esta:
        if(attackedCreature)     {         onAttackedCreature(attackedCreature);         attackedCreature->onAttacked();         attackedCreature->addDamagePoints(this, 0);     }  
     
    Procure pela função:
    void Creature::addDamagePoints(Creature* attacker, int32_t damagePoints)  
     
    E troque por esta:
    Please login or register to see this spoiler.
     
    Bom galera, espero que gostem e que façam bom uso. Qualquer bug ou problema, comenta aí pra eu resolver.
     

  17. Upvote
    Tony Araujo got a reaction from XZero in [C++] Monsters Passive System (No-bugs)   
    [C++] Monsters Passive System
    testado: TFS - 0.3.6 (porém acredito que funcione em outros)
    autor: Tony Araújo (OrochiElf)
     
    Eai galera, tranquilão? Estou eu aqui novamente, e hoje eu vou compartilhar com vocês um sistema que eu vejo muitas pessoas pedindo e buscando ajuda (principalmente no meu inbox kkkkk), seria ele o sistema de monstros passivos, que consiste naquela criatura que só ataca o jogador que o atacou, caso contrário ele fica andando normalmente. O sistema foi desenvolvido em cima do código do TFS 0.3.6, porém caso instale prestando bastante atenção em outras versões, funcione, talvez seja necessário mudar algum código, porém bem simples.
    Bom, vamos ao sistema.
     
    Em creature.cpp, procure pela função:
    bool Creature::setAttackedCreature(Creature* creature)  
     
    E altere esta condição:
        if(attackedCreature)     {         onAttackedCreature(attackedCreature);         attackedCreature->onAttacked();     }  
    Por esta:
        if(attackedCreature)     {         onAttackedCreature(attackedCreature);         attackedCreature->onAttacked();         attackedCreature->addDamagePoints(this, 0);     }  
     
    Procure pela função:
    void Creature::addDamagePoints(Creature* attacker, int32_t damagePoints)  
     
    E troque por esta:
    Please login or register to see this spoiler.
     
    Bom galera, espero que gostem e que façam bom uso. Qualquer bug ou problema, comenta aí pra eu resolver.
     

  18. Upvote
    Tony Araujo got a reaction from Drenks in [C++] Monsters Passive System (No-bugs)   
    [C++] Monsters Passive System
    testado: TFS - 0.3.6 (porém acredito que funcione em outros)
    autor: Tony Araújo (OrochiElf)
     
    Eai galera, tranquilão? Estou eu aqui novamente, e hoje eu vou compartilhar com vocês um sistema que eu vejo muitas pessoas pedindo e buscando ajuda (principalmente no meu inbox kkkkk), seria ele o sistema de monstros passivos, que consiste naquela criatura que só ataca o jogador que o atacou, caso contrário ele fica andando normalmente. O sistema foi desenvolvido em cima do código do TFS 0.3.6, porém caso instale prestando bastante atenção em outras versões, funcione, talvez seja necessário mudar algum código, porém bem simples.
    Bom, vamos ao sistema.
     
    Em creature.cpp, procure pela função:
    bool Creature::setAttackedCreature(Creature* creature)  
     
    E altere esta condição:
        if(attackedCreature)     {         onAttackedCreature(attackedCreature);         attackedCreature->onAttacked();     }  
    Por esta:
        if(attackedCreature)     {         onAttackedCreature(attackedCreature);         attackedCreature->onAttacked();         attackedCreature->addDamagePoints(this, 0);     }  
     
    Procure pela função:
    void Creature::addDamagePoints(Creature* attacker, int32_t damagePoints)  
     
    E troque por esta:
    Please login or register to see this spoiler.
     
    Bom galera, espero que gostem e que façam bom uso. Qualquer bug ou problema, comenta aí pra eu resolver.
     

  19. Upvote
    Tony Araujo got a reaction from FlamesAdmin in [C++] Monsters Passive System (No-bugs)   
    [C++] Monsters Passive System
    testado: TFS - 0.3.6 (porém acredito que funcione em outros)
    autor: Tony Araújo (OrochiElf)
     
    Eai galera, tranquilão? Estou eu aqui novamente, e hoje eu vou compartilhar com vocês um sistema que eu vejo muitas pessoas pedindo e buscando ajuda (principalmente no meu inbox kkkkk), seria ele o sistema de monstros passivos, que consiste naquela criatura que só ataca o jogador que o atacou, caso contrário ele fica andando normalmente. O sistema foi desenvolvido em cima do código do TFS 0.3.6, porém caso instale prestando bastante atenção em outras versões, funcione, talvez seja necessário mudar algum código, porém bem simples.
    Bom, vamos ao sistema.
     
    Em creature.cpp, procure pela função:
    bool Creature::setAttackedCreature(Creature* creature)  
     
    E altere esta condição:
        if(attackedCreature)     {         onAttackedCreature(attackedCreature);         attackedCreature->onAttacked();     }  
    Por esta:
        if(attackedCreature)     {         onAttackedCreature(attackedCreature);         attackedCreature->onAttacked();         attackedCreature->addDamagePoints(this, 0);     }  
     
    Procure pela função:
    void Creature::addDamagePoints(Creature* attacker, int32_t damagePoints)  
     
    E troque por esta:
    Please login or register to see this spoiler.
     
    Bom galera, espero que gostem e que façam bom uso. Qualquer bug ou problema, comenta aí pra eu resolver.
     

  20. Upvote
    Tony Araujo got a reaction from nociam in [C++] Monsters Passive System (No-bugs)   
    [C++] Monsters Passive System
    testado: TFS - 0.3.6 (porém acredito que funcione em outros)
    autor: Tony Araújo (OrochiElf)
     
    Eai galera, tranquilão? Estou eu aqui novamente, e hoje eu vou compartilhar com vocês um sistema que eu vejo muitas pessoas pedindo e buscando ajuda (principalmente no meu inbox kkkkk), seria ele o sistema de monstros passivos, que consiste naquela criatura que só ataca o jogador que o atacou, caso contrário ele fica andando normalmente. O sistema foi desenvolvido em cima do código do TFS 0.3.6, porém caso instale prestando bastante atenção em outras versões, funcione, talvez seja necessário mudar algum código, porém bem simples.
    Bom, vamos ao sistema.
     
    Em creature.cpp, procure pela função:
    bool Creature::setAttackedCreature(Creature* creature)  
     
    E altere esta condição:
        if(attackedCreature)     {         onAttackedCreature(attackedCreature);         attackedCreature->onAttacked();     }  
    Por esta:
        if(attackedCreature)     {         onAttackedCreature(attackedCreature);         attackedCreature->onAttacked();         attackedCreature->addDamagePoints(this, 0);     }  
     
    Procure pela função:
    void Creature::addDamagePoints(Creature* attacker, int32_t damagePoints)  
     
    E troque por esta:
    Please login or register to see this spoiler.
     
    Bom galera, espero que gostem e que façam bom uso. Qualquer bug ou problema, comenta aí pra eu resolver.
     

  21. Upvote
    Tony Araujo got a reaction from Ayron5 in [C++] Monsters Passive System (No-bugs)   
    [C++] Monsters Passive System
    testado: TFS - 0.3.6 (porém acredito que funcione em outros)
    autor: Tony Araújo (OrochiElf)
     
    Eai galera, tranquilão? Estou eu aqui novamente, e hoje eu vou compartilhar com vocês um sistema que eu vejo muitas pessoas pedindo e buscando ajuda (principalmente no meu inbox kkkkk), seria ele o sistema de monstros passivos, que consiste naquela criatura que só ataca o jogador que o atacou, caso contrário ele fica andando normalmente. O sistema foi desenvolvido em cima do código do TFS 0.3.6, porém caso instale prestando bastante atenção em outras versões, funcione, talvez seja necessário mudar algum código, porém bem simples.
    Bom, vamos ao sistema.
     
    Em creature.cpp, procure pela função:
    bool Creature::setAttackedCreature(Creature* creature)  
     
    E altere esta condição:
        if(attackedCreature)     {         onAttackedCreature(attackedCreature);         attackedCreature->onAttacked();     }  
    Por esta:
        if(attackedCreature)     {         onAttackedCreature(attackedCreature);         attackedCreature->onAttacked();         attackedCreature->addDamagePoints(this, 0);     }  
     
    Procure pela função:
    void Creature::addDamagePoints(Creature* attacker, int32_t damagePoints)  
     
    E troque por esta:
    Please login or register to see this spoiler.
     
    Bom galera, espero que gostem e que façam bom uso. Qualquer bug ou problema, comenta aí pra eu resolver.
     

  22. Upvote
    Tony Araujo got a reaction from boxxer321 in [C++] Monsters Passive System (No-bugs)   
    [C++] Monsters Passive System
    testado: TFS - 0.3.6 (porém acredito que funcione em outros)
    autor: Tony Araújo (OrochiElf)
     
    Eai galera, tranquilão? Estou eu aqui novamente, e hoje eu vou compartilhar com vocês um sistema que eu vejo muitas pessoas pedindo e buscando ajuda (principalmente no meu inbox kkkkk), seria ele o sistema de monstros passivos, que consiste naquela criatura que só ataca o jogador que o atacou, caso contrário ele fica andando normalmente. O sistema foi desenvolvido em cima do código do TFS 0.3.6, porém caso instale prestando bastante atenção em outras versões, funcione, talvez seja necessário mudar algum código, porém bem simples.
    Bom, vamos ao sistema.
     
    Em creature.cpp, procure pela função:
    bool Creature::setAttackedCreature(Creature* creature)  
     
    E altere esta condição:
        if(attackedCreature)     {         onAttackedCreature(attackedCreature);         attackedCreature->onAttacked();     }  
    Por esta:
        if(attackedCreature)     {         onAttackedCreature(attackedCreature);         attackedCreature->onAttacked();         attackedCreature->addDamagePoints(this, 0);     }  
     
    Procure pela função:
    void Creature::addDamagePoints(Creature* attacker, int32_t damagePoints)  
     
    E troque por esta:
    Please login or register to see this spoiler.
     
    Bom galera, espero que gostem e que façam bom uso. Qualquer bug ou problema, comenta aí pra eu resolver.
     

  23. Thanks
    Tony Araujo got a reaction from Walox in [C++] Monsters Passive System (No-bugs)   
    [C++] Monsters Passive System
    testado: TFS - 0.3.6 (porém acredito que funcione em outros)
    autor: Tony Araújo (OrochiElf)
     
    Eai galera, tranquilão? Estou eu aqui novamente, e hoje eu vou compartilhar com vocês um sistema que eu vejo muitas pessoas pedindo e buscando ajuda (principalmente no meu inbox kkkkk), seria ele o sistema de monstros passivos, que consiste naquela criatura que só ataca o jogador que o atacou, caso contrário ele fica andando normalmente. O sistema foi desenvolvido em cima do código do TFS 0.3.6, porém caso instale prestando bastante atenção em outras versões, funcione, talvez seja necessário mudar algum código, porém bem simples.
    Bom, vamos ao sistema.
     
    Em creature.cpp, procure pela função:
    bool Creature::setAttackedCreature(Creature* creature)  
     
    E altere esta condição:
        if(attackedCreature)     {         onAttackedCreature(attackedCreature);         attackedCreature->onAttacked();     }  
    Por esta:
        if(attackedCreature)     {         onAttackedCreature(attackedCreature);         attackedCreature->onAttacked();         attackedCreature->addDamagePoints(this, 0);     }  
     
    Procure pela função:
    void Creature::addDamagePoints(Creature* attacker, int32_t damagePoints)  
     
    E troque por esta:
    Please login or register to see this spoiler.
     
    Bom galera, espero que gostem e que façam bom uso. Qualquer bug ou problema, comenta aí pra eu resolver.
     

  24. Upvote
    Tony Araujo reacted to gristony in [C++] Unique Item System - ATUALIZADO! (No-bugs)   
    em game.cpp em baixo de 
    if(!player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere)) { if((std::abs(playerPos.x - mapToPos.x) > item->getThrowRange()) || (std::abs(playerPos.y - mapToPos.y) > item->getThrowRange()) || (std::abs(mapFromPos.z - mapToPos.z) * 4 > item->getThrowRange())) { player->sendCancelMessage(RET_DESTINATIONOUTOFREACH); return false; } } coloque isso:
    if(item->getContainer())     {         Container* container = item->getContainer();         for(ContainerIterator sb = container->begin(), end = container->end(); sb != end; ++sb)         {             Item* ballSLot = (*sb)->getItem();             boost::any valueU = (ballSLot)->getAttribute("unique");             if(valueU.type() == typeid(int32_t))             {                 if(boost::any_cast<int32_t>(valueU) == 1)                 {                     Thing* thingT = internalGetThing(player, toPos, toIndex, spriteId, STACKPOS_MOVE);                     if(getMap()->getTile(toPos))                     {                          player->sendTextMessage(MSG_INFO_DESCR, "A item in this container is a Unique Item. You can't throw away this item!");                         return false;                     }                 }             }                   }     } OBS: isso é só para não poder rebolar a bag com item unique no chão, a outra parte estou com preguiça. quem sabe, mais tarde eu resolva fazer, se ninguém ainda tiver feito, até lá. kkkk
  25. Thanks
    Tony Araujo got a reaction from Wase Wiss in [C++] Unique Item System - ATUALIZADO! (No-bugs)   
    [C++] Unique Item System
    testado: TFS - 0.3.6 (porém acredito que funcione em outros)
    autor: Tony Araújo (OrochiElf)
    contribuição: gristony
     
     
    Olá galera, beleza? Então, tem tanto tempo que eu não faço minhas contribuições e hoje eu resolvi postar um sistema bastante simples, porém de extrema necessidade e importância nos servidores que dão items iniciais aos jogadores, especialmente os poketibias. Então com esse sistema o jogador fica impossibilitado de jogar o item fora e também de fazer trocas com outros jogadores, sendo literalmente únicos. Eu criei ele em cima do código do TFS 0.3.6, porém é um sistema com o código completamente simples, então acredito que se instalado atentamente em outras versões, funcione sem problemas.
    Bom, sem mais delongas vamos ao que interessa.
     
     
    Vá ao game.cpp e procure por esta função:
    bool Game::playerMoveItem(uint32_t playerId, const Position& fromPos, uint16_t spriteId, int16_t fromStackpos, const Position& toPos, uint8_t count)  
    Então, dentro desta mesma função, você procura por esta condição aqui.
    if(!player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere)) { if((std::abs(playerPos.x - mapToPos.x) > item->getThrowRange()) || (std::abs(playerPos.y - mapToPos.y) > item->getThrowRange()) || (std::abs(mapFromPos.z - mapToPos.z) * 4 > item->getThrowRange())) { player->sendCancelMessage(RET_DESTINATIONOUTOFREACH); return false; } }  
     E logo abaixo adicione esta condição:
    Item* tmpItem = NULL; Container* tmpContainer = NULL; if(tmpContainer = item->getContainer()) { for(ContainerIterator it = tmpContainer->begin(); it != tmpContainer->end(); ++it) { if(tmpItem = (*it)->getItem()) { boost::any value = tmpItem->getAttribute("unique"); if(!value.empty() && getMap()->getTile(toPos)) { player->sendCancel("Has a unique item in this bag, you can't drop this item."); return false; } } } } boost::any value = item->getAttribute("unique"); if(!value.empty() && (!toCylinder->getItem() && toCylinder != player && toCylinder->getParent() != player || toCylinder->getItem() && toCylinder->getItem()->isGroundTile() || toCylinder->getItem() && toCylinder->getItem()->getContainer() && !toCylinder->getItem()->getContainer()->getDepot() && toCylinder->getItem()->getParent() != player)) { player->sendCancel("It is a unique item, you can't drop this item."); return false; }  
    Certo. Continuando no game.cpp, você vai procurar pela função:
    ReturnValue Game::internalMoveItem(Creature* actor, Cylinder* fromCylinder, Cylinder* toCylinder, int32_t index, Item* item, uint32_t count, Item** _moveItem, uint32_t flags /*= 0*/)  
    Dentro da função, você procura pela condição:
    //update item(s) if(item->isStackable())  
    E troque por esta:
    //update item(s) if(item->isStackable()) { if(toItem && toItem->getID() == item->getID()) { boost::any item_value = item->getAttribute("unique"); boost::any toItem_value = toItem->getAttribute("unique"); if(!item_value.empty() && !toItem_value.empty() || item_value.empty() && toItem_value.empty()) { n = std::min((uint32_t)100 - toItem->getItemCount(), m); toCylinder->__updateThing(toItem, toItem->getID(), toItem->getItemCount() + n); updateItem = toItem; } } if(m - n > 0) { moveItem = Item::CreateItem(item->getID(), m - n); boost::any value = item->getAttribute("unique"); if(!value.empty()) moveItem->setAttribute("unique", 1); } else moveItem = NULL; if(item->isRemoved()) freeThing(item); }  
    Sem sair do game.cpp, você procura pela função:
    bool Game::playerRequestTrade(uint32_t playerId, const Position& pos, int16_t stackpos, uint32_t tradePlayerId, uint16_t spriteId)  
    Dentro dela, você procura pela condição:
    if(!tradeItem || tradeItem->getClientID() != spriteId || !tradeItem->isPickupable() || (tradeItem->isLoadedFromMap() && (tradeItem->getUniqueId() != 0 || (tradeItem->getActionId() != 0 && tradeItem->getContainer())))) { player->sendCancelMessage(RET_NOTPOSSIBLE); return false; }  
    E logo abaixo você adiciona a condição:
    boost::any value = tradeItem->getAttribute("unique"); if(!value.empty()) { player->sendTextMessage(MSG_INFO_DESCR, "It is a unique item, you can't trade this item."); return false; } Item* tmpItem = NULL; Container* tmpContainer = NULL; if(tmpContainer = tradeItem->getContainer()) { for(ContainerIterator it = tmpContainer->begin(); it != tmpContainer->end(); ++it) { if(tmpItem = (*it)->getItem()) { boost::any value = tmpItem->getAttribute("unique"); if(!value.empty()) { player->sendTextMessage(MSG_INFO_DESCR, "Has a unique item in this bag, you can't trade this item."); return false; } } } }  
    Pronto, seu sistema de unique está instalado e pronto para ser utilizado. Para você setar o item unique, basta:
    doItemSetAttribute(item.uid, "unique", 1)  
    Algumas imagens
    Please login or register to see this spoiler.
     
    Bom, é isso galera, espero que gostem e façam bom proveito. ;D
     

    Please login or register to see this attachment.
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...