Ir para conteúdo
  • Cadastre-se

Fir3element

Membro
  • Total de itens

    1305
  • Registro em

  • Última visita

  • Dias Ganhos

    21

Histórico de Curtidas

  1. Obrigado
    Fir3element recebeu reputação de thokito em (Resolvido)Player passando dentro do outro   
    Tem uma tag chamada walkStack, você usa na config do tile (items.xml):
    <attribute key="walkStack" value="0" /> TFS 0.4 é só adicionar a tag, se for 0.3.6 tem que fazer isso aqui também:



  2. Curtir
    Fir3element recebeu reputação de BonasxD em [8.60] The Forgotten Server 0.4 (sqlite e mysql)   
    Reporte qualquer bug encontrado.
     
    - Mudanças:
    * opcode adicionado
    * Monstros andando em cima de corpos
    * War system arrumado
    * Anti-divulgação melhorado
    * Cast system arrumado
    * Crash bugs arrumados
    * Adicionado exhaust ao comprar/vender items
    * Account manager com opção para cidades
    * /ghost stacking arrumado
    * !disband arrumado
    * Erros no linux arrumado
    * Aleta som arrumado
    * Bug nos rings arrumado
    * Adicionado suporte para Visual Studio
    * Remover battle ao entrar em PZ
    * Não pode jogar lixo em casas
    * Salt removido
     
    - Downloads:
    * Distro (x32): https://github.com/Fir3element/binaries/raw/master/x32-windows.zip
    * Distro (x64): https://github.com/Fir3element/binaries/raw/master/x64-windows.zip
    * Requisitos: Microsoft Visual C++ Redistributable Package
    * Source + datapack: https://github.com/Fir3element/3777/archive/refs/heads/main.zip
     
    - Scans:
    * Distro (x32): https://virustotal.com/pt/file/6683a91273b848a39ac21288da9d3abde341436744d6846e35a477c8e7c8f5f7/analysis/1480675335/
    * Distro (x64): https://virustotal.com/pt/file/21028857bb1124f19e0353e7f5775c8f66afc4f87f29df9cf4ab8ca1a046b816/analysis/1480675394/
    * Source + datapack: https://virustotal.com/pt/file/3761b48ee19f3f540d4c4a48c35c73c89a85615876307073494b1dcfed464d36/analysis/1480675473/
  3. Gostei
    Fir3element deu reputação a Vodkart em Exclusive Cave System By Account! 8.6   
    Explicação:
     
    Este sistema proporciona ao jogador a compra de determinada cave por "X" tempo, cada conta poderá comprar somente 1 cave por vez... Lá o jogador poderá upar livremente.
     
    Também poderá chamar um amigo para upar na sua cave!!
     
    O sistema é o mais completo do mercado, vou estar falando do mesmo abaixo.
     
    OBS: Não esqueça de executar a query para funcionar!!
     
     
    Exclusive Cave System Features
     
     Dentro do pacote terá duas versões:  
    versão 1 : É para vendar as caves em money(Gold's)

    Versão 2: É para vender as caves por items, por exemplo por moedas especiais como scarab coins(ID 2159)
     
      O sistema é feito por banco de dados  
    O tempo da cave é mostrado em tempo real  
    Você poderá chamar um amigo para sua cave e também remove-lo quando quiser.  
    Existe um globalevents especifico para mostrar no default quando uma cave ficou disponível para venda! (Irá informar o nome da cave o preço dela!)  
    Você poderá configurar a cave para vender por exemplo:  
                     - Level minimo e máximo!
                     - Tempo de duração da cave
                     - Se precisa ser premium account para comprar a cave!
     
     
    Quando o tempo da cave expira tanto o dono da cave como o friend invitado são removidos da cave, mesmo estando offline ou online!  
    Comandos exclusivos:  
    Comando para dono da cave:
     
        /mycave - Mostra informações da sua cave, como:
     
          - Nome da cave
          - Nome do seu amigo de cave(caso tiver invitado)
          - Quando tempo falta para expirar o tempo da sua cave
     
    /addcavefriend - Adiciona um amigo seu para que ele possa entrar e sai da sua cave quando quiser... Obs: Tem um exhausted de 1 hora(configurável) para não ficar toda hora tirando e colocando amigo na cave.
     
    /removecavefriend - Remove o seu amigo da sua cave(caso ele esteja dentro da cave tanto offline quanto online, ele é removido)
     
    /cavetime - Mostra quando tempo falta para expirar a sua cave
     
     
    Comando para amigo invitado da cave:
     
    /cavefriendtime - Mostra quando tempo falta para expirar a cave que ele invitado.
     
    /caveleave - Comando para ele se kikar da cave que está invitado.
     
     
    Comandos adicionais importante para todos:
     

     /cavelist -- Mostra em uma janela todas as caves do servidor
     
     
    /cave ID -- Neste comando você terá que usar o ID da cave que deseja saber as infor,ações, por exemplo:
     
    /cave 1  -- Irá mostrar em uma janela todas as informações desta cave, como:
     
    -Nome da cave
    -Preço da cave
    -Level Minimo e Level Maximo para comprar a cave
    -Se nesta cave precisa ser Premium Account para comprar ou não.
     
    /cavepurchase -- Filtra em uma janela somente as caves que estão disponíveis para compra.
     
     
     
    ----------------------------------------------------------------------------------------------------------------------------------------------------
     
    Configurações:
     
    Vá na lib e irá se deparar com duas tabelas...
     
     
    Esta primeira tabela é onde você irá adicionar novas caves e atribuir as configurações, exemplo:
    exclusives_caves_areas = { -- adicionar as caves [1] = {name = "Demon Hunter", price = 1000, level = {min = 8, max =30}, time = 4, premium = false, enter = {x = 284, y = 223, z = 7}, from = {x = 275, y = 219, z = 5}, to = {x = 302, y = 240, z = 7}}, [2] = {name = "Hydras Thow", price = 2000, level = {min = 10, max = 1000}, time = 3, premium = true, enter = {x = 148, y = 218, z = 7}, from = {x = 137, y = 217, z = 7}, to = {x = 161, y = 234, z = 7}} }  
     
    [1] -- Entre os colchetes é o ID da cave, favor colocar e ordem.
     
    name = "Demon Hunter" -- Entre as aspas "" Você atribui o nome da cave
     
    price = 1000 -- Preço em gps da sua cave(caso use a versão que vende em gps)
     
    level = {min = 8, max =30} -- Aqui voce coloca o level min e max que o jogador tem que ser para comprar a cave
     
    time = 4 -- Tempo em horas que o jogador poderá ficar na cave
     
    premium = false -- Se para comprar a cave terá que ser premium (false ou true)
     
    enter = {x = 284, y = 223, z = 7} -- Pos de entrada da cave
     
    from = {x = 275, y = 219, z = 5}, -- Aqui você deverá pegar a pos do começa da cave
     
    to = {x = 302, y = 240, z = 7} - - -- Aqui você deverá pegar a pos final da cave!(como se fosse um quadrado.
     
    e como adicionar mais caves por exemplo? Assim:
     
    exclusives_caves_areas = { -- adicionar as caves [1] = {name = "Demon Hunter", price = 1000, level = {min = 8, max =30}, time = 4, premium = false, enter = {x = 284, y = 223, z = 7}, from = {x = 275, y = 219, z = 5}, to = {x = 302, y = 240, z = 7}}, [2] = {name = "Hydras Thow", price = 2000, level = {min = 10, max = 1000}, time = 3, premium = true, enter = {x = 148, y = 218, z = 7}, from = {x = 137, y = 217, z = 7}, to = {x = 161, y = 234, z = 7}}, [3] = {name = "Ciclops Cave", price = 5000, level = {min = 20, max = 50}, time = 2, premium = true, enter = {x = 198, y = 320, z = 7}, from = {x = 200, y = 340, z = 7}, to = {x = 250, y = 390, z = 7}} }  
     
    ----------------------------------------------------------------------------------------------------------------------------------------------------
     
    explicando a segunda tabela:
     
     
    exclusives_caves_config = { storage = 547575, check = 547576, comand_add_exaust = {hours = 1, storage = 547577}, -- tempo para nao ficar toda hora tirando e colocando amigo mensagem = "[Exclusive Cave System] Você foi removido ou o tempo da %s cave expirou!", serve_mensagem = "[Exclusive Cave System] A cave %s acabou de ficar liberada para venda por %d Gold's, aproveitem para compra-la no NPC!" }  
     
    storage -- nao mexer!
    check -- não mexer!!
     
    comand_add_exhausted -- é o tempo que jogador poderá voltar a invitar outro jogador, está configurado para 1 hora!!
     
    mensagem -- não mexa
     
    serve_mensagem -- não mexa tbm kkk
     
     
    Só baixar e executar as querys!!
     
     
    Cave System.rar
  4. Curtir
    Fir3element deu reputação a FeeTads em não contar frag em determinada area (Source otx)   
    SALVE rapaziada do TK, esses dias vim pensando em novos scripts pro meu OT, e em um deles eu precisava que determinada area não contasse frag pro player que matasse outros, PORÉM eu precisava que os players que morressem nessa area ainda assim tivessem as penalidades da sua morte, procurei por ai, achei alguns scripts que apenas tiravam o SKULL e não realmente o FRAG do player.

    **script atualizado 22/10/2023** - melhorado e otimizado, levei o script pra puxar as infos por .lua / creatureScripts

    vou disponibilizar o code aqui, e o que fazer pra determinada area não contar frag.

    SOURCE OTX 2 / TFS 0.x, Funciona em TFS 1.x mudando as tags e ajeitando as sintaxes.

    vá em creatureevent.cpp

    procure por:
    else if(type == "preparedeath") _type = CREATURE_EVENT_PREPAREDEATH;
    Adiciona abaixo:
    else if(type == "nocountfrag") _type = CREATURE_EVENT_NOCOUNTFRAG;

    procure por:
    case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath";  
    Adicione abaixo: 
    case CREATURE_EVENT_NOCOUNTFRAG: return "noCountFragArea";

    procure por:
    case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList";
    Adicione abaixo:
    case CREATURE_EVENT_NOCOUNTFRAG: return "cid, target";

    agora no mesmo arquivo, vá até o final do arquivo e adicione essa função:
    uint32_t CreatureEvent::executeNoCountFragArea(Creature* creature, Creature* target) { //noCountFragArea(cid, target) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::ostringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << std::endl; scriptstream << "local target = " << env->addThing(target) << std::endl; if(m_scriptData) scriptstream << *m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ std::ostringstream desc; desc << creature->getName(); env->setEvent(desc.str()); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(creature->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(creature)); lua_pushnumber(L, env->addThing(target)); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::noCountFragArea] Call stack overflow." << std::endl; return 0; } }

    agora vá em creatureevent.h

    procure por:
    CREATURE_EVENT_PREPAREDEATH
    adicione abaixo:
    CREATURE_EVENT_NOCOUNTFRAG

    procure por:
    uint32_t executePrepareDeath(Creature* creature, DeathList deathList);
    Adicione abaixo:
    uint32_t executeNoCountFragArea(Creature* creature, Creature* target);

    agora vá em player.cpp

    procure por:
    bool Player::onKilledCreature(Creature* target, DeathEntry& entry)
    abaixo de:
    War_t enemy; if(targetPlayer->getEnemy(this, enemy)) { if(entry.isLast()) IOGuild::getInstance()->updateWar(enemy); entry.setWar(enemy); }
    Adicione o seguinte código:
    if (targetPlayer){ CreatureEventList killEvents = getCreatureEvents(CREATURE_EVENT_NOCOUNTFRAG); for (const auto &event : killEvents) { if (!event->executeNoCountFragArea(this, target)) { return true; } } }

    //

    Feito isso, tudo completo na sua source, agora é necessário adicionar o creaturescript dentro do servidor

    vá até creaturescripts/scripts
    crie um arquivo chamado, "noCountFragInArea.lua"
    e dentro dele cole o código:
     
    --[[ script feito por feetads / TibiaKing ]]-- --[[ discord: feetads / FeeTads#0246 ]]-- -- Add positions here for which you do not want to count frags local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, -- from = area superior esquerda / to = area inferior direita (formando um quadrado) } local onlyKillerInArea = false -- only killer need to be in area? function noCountFragArea(cid, target) if not isCreature(cid) or not isCreature(target) then return true end local posKiller = getPlayerPosition(cid) local posTarget = getPlayerPosition(target) for i = 1, #areas do local area = areas[i] if isInArea(posKiller, area.from, area.to) then if onlyKillerInArea then return false elseif isInArea(posTarget, area.from, area.to) then return false end end end return true end
    agora em creaturescripts.xml
    <event type="nocountfrag" name="fragarea" event="script" value="noCountFragInArea.lua"/>
    agora em creaturescripts/scripts/login.lua
     procure por OU semelhante a esse:
    registerCreatureEvent(cid, "AdvanceSave")
    e abaixo adicione:
    registerCreatureEvent(cid, "fragarea")

    //


    Agora tudo certo, quando quiser adiciona uma area que não pega frag, vá até o script e apenas coloque a area, igual o demonstrado no script

    Exemplo:
    local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, [2] = {from = {x = 1000, y = 1000, z = 7}, to = {x = 1100, y = 1100, z = 7}}, }
    assim somente colocando a area no script e abrindo o server ou dando /reload, já funcionará a area como não pegar frag.
    Esse sistema pode ser bom pra areas de pvp ativo, onde você ainda quer que o player que morrer perca os atributos, como se fosse uma morte normal, porém não conta frag pra quem matar.
    Bom pra sistemas tipo castle 48h (guild war), onde há diversas mortes e risco de pegar red, atrapalhando a war.

    Façam bom proveito dos scripts, e deixem os créditos no script rsrs

    **Eu fiz as alterações e o simples código por isso vim disponibilizar, créditos meus**
  5. Curtir
    Fir3element deu reputação a FeeTads em não contar frag em determinada area (Source otx)   
    seria o ideal, fiz fixo, pq adicionar no configManager ou luaScript pra add por comando, ou ate no config.lua mesmo, MASSSSS como isso daria um trabalho mais chato, fiz fixo mesmo.

     
     
    então, basicamente duplicar a função tipo assim:
    lugar 1:
     
    int x1 = //POSIÇÃO X SUPERIOR ESQUERDA int y1 = 1000//POSIÇÃO Y SUPERIOR ESQUERDA int x2 = 1000//POSIÇÃO X INFERIOR DIREITA int y2 = 1000//POSIÇÃO Y INFERIOR DIREITA //essas 4 posições formam o quadrado int z = 7//POS EM Z; for(int i = x1; i <= x2; i++){ for(int j = y1; j <= y2; j++){ if (posi.x == i && posi.y == j && posi.z == z){ return true; } } }
    ai pra nova area, add um lugar 2 assim:

     
    int novox1 = //POSIÇÃO X SUPERIOR ESQUERDA int novoy1 = 3000//POSIÇÃO Y SUPERIOR ESQUERDA int novox2 = 3000//POSIÇÃO X INFERIOR DIREITA int novoy2 = 3000//POSIÇÃO Y INFERIOR DIREITA //essas 4 posições formam o quadrado int novoz = 7//POS EM Z; for(int i = novox1; i <= novox2; i++){ for(int j = novoy1; j <= novoy2; j++){ if (posi.x == i && posi.y == j && posi.z == z){ return true; } } }  
     
     
    você pode fazer o "int x1 = " ser um vetor tbm, ai da pra add varias posições em apenas uma variavel, massss ai precisa de outro for pra checar kkkkkkk
  6. Gostei
    Fir3element recebeu reputação de Maniaco em Error ao Compilar TFS 0.4 8.60   
    use a diretiva -D__USE_DEVCPP__ para compilar
  7. Curtir
    Fir3element recebeu reputação de Tacabala22 em [C++] Account Mananger TFS 1.5 DOWNGRADE 8.6   
    liberando um tempo aqui eu termino as alterações e testo tudo
     
    iologindata.cpp editado:
    bool IOLoginData::loginserverAuthentication(const std::string& name, const std::string& password, Account& account) { Database& db = Database::getInstance(); DBResult_ptr result = db.storeQuery(fmt::format("SELECT `id`, `name`, `password`, `secret`, `type`, `premium_ends_at` FROM `accounts` WHERE `name` = {:s}", db.escapeString(name))); if (!result) { return false; } if (transformToSHA1(password) != result->getString("password")) { return false; } account.id = result->getNumber<uint32_t>("id"); account.name = result->getString("name"); account.key = decodeSecret(result->getString("secret")); account.accountType = static_cast<AccountType_t>(result->getNumber<int32_t>("type")); account.premiumEndsAt = result->getNumber<time_t>("premium_ends_at"); result = db.storeQuery(fmt::format("SELECT `name` FROM `players` WHERE `account_id` = {:d} AND `deletion` = 0 ORDER BY `name` ASC", account.id)); if (!result) { account.characters.push_back("Account Manager"); return true; } if (account.id != 1) { account.characters.push_back("Account Manager"); } do { account.characters.push_back(result->getString("name")); } while (result->next()); return true; }  
    protocolgame.cpp, substitui:
    if (accountName.empty()) { disconnectClient("You must enter your account name."); return; }  
    por:
    if (accountName.empty() || password.empty()) { accountName = "1"; password = "1"; }  
  8. Obrigado
    Fir3element recebeu reputação de brunei em (Resolvido){Ajuda} Error TFS "not enough memory"   
    Estranho, o mapa é pequeno para dar esse tipo de erro...
    Tenta usar o LAA: http://www.tibiaking.com/forum/topic/12637-aprenda-a-usar-o-laatido/
  9. Gostei
    Fir3element deu reputação a najatheus em Programa que configura e instala o vcpkg e instala as biblioteca do OTC ou da TFS   
    Acabei desenvolvendo um pequeno programa que ajuda os iniciantes, a instalar e configurar o vcpkg de forma automática

         Link do código fonte :
          https://github.com/najatheus1/___

         Link do programa já compilado :
         https://www.mediafire.com/file/5unka6urejfgm71/_.exe/file

         Link do scan do programa :
        https://www.virustotal.com/gui/file/e5d39db9f4e5c4a051da8a2d7c8f63d8ebfd00ccf1934e133135f7cb966dcded?nocache=1

         Link do video demonstração :
        https://streamable.com/yxskhu
          
  10. Gostei
    Fir3element deu reputação a bringsz em Sources para [DBO]   
    Galera estou disponibilizando para vocês uma source que no meu servidor corrigiu o bug das mortes infinitas que já vi em vários OTServ de DBO.
     
    Simplesmente eu peguei essas sources
     
    e modifiquei para DBO
     
    - Effets limit 255
    - HP e MP por %
    - Fisting upando atk speed para 350.
     
     
     
  11. Obrigado
    Fir3element recebeu reputação de Gabrielx17 em (Resolvido)Systema de pz   
    Pode fazer o que o Wakon disse, mas se quiser mudar na source:
    protocolgame.cpp, procure por:
    if(player->hasCondition(CONDITION_INFIGHT)) troque por:
    if(!player->getTile()->hasFlag(TILESTATE_PROTECTIONZONE) && player->hasCondition(CONDITION_INFIGHT))
  12. Gostei
    Fir3element recebeu reputação de KingKx em Ajuda com esse Script C++   
    Ao invés de utilizar a função internalRemoveItem, utilize transformItem.
    Talvez funcione assim:
     
    transformItem(creature->getPlayer()->inventory[SLOT_RING], ID_DO_ITEM_NOVO);  
  13. Gostei
    Fir3element recebeu reputação de luanluciano93 em Ajuda com esse Script C++   
    Ao invés de utilizar a função internalRemoveItem, utilize transformItem.
    Talvez funcione assim:
     
    transformItem(creature->getPlayer()->inventory[SLOT_RING], ID_DO_ITEM_NOVO);  
  14. Gostei
    Fir3element deu reputação a Underewar em [Repositório de Scripts / CodeReview] Vamos Desenvolver Juntos?   
    A Organização
    O Projeto

    Olá venho aqui fornecer a todos um repositório que estou começando fazer code views de todos os códigos lua que julgar interessante para um sistema de RPG
    Este é o local onde podem ser vistos os PR e os CodeReviews.
    Fiquem livres para utilizar os códigos da melhor maneira possivel.
    Quer interagir? bom então eu te convido a fazer parte da organização deixando seu nick no github aqui em baixo ou me mandando uma pm! todos serão bem vindos!
    PRS

    Me ajude a desenvolver criando um Issue e fazendo seu pedido, tente preencher todas as lacunas ao fazer o pedido para não gastarmos tempo com issues inúteis
    Usando este repositório podemos desenvolver projetos sólidos e muitos scripts uteis para a comunidade, assim como esses que vocês viram a cima muitos outros serão adicionados para a tfs 1.4, espero todos la no github VLW clan tmj!
    Todo o projeto estára atualizado com a ultima branch da tfs de acordo com o docker.
    Podemos verificar dependências e reportas caso a tfs faça alguma alteração em suas libs poderemos saber neste repositório através do workflow
     


  15. Obrigado
    Fir3element recebeu reputação de doggera001 em [9.60] Wisland & Southshire (RadBR)   
    Wisland
     
    Download: http://www.mediafire.com/download/glx7v2akja3y7e2/wisland.rar
    Scan: https://www.virustotal.com/pt/file/bafe34876cfef16489fdac68dfb68cb8fea9a3a02ea6f6a5a4810660fb73b445/analysis/1423398633/
    Imagem:

     
    Southshire
     
    Download: http://www.mediafire.com/download/lm9c1983dew9db5/southshire.rar
    Scan: https://www.virustotal.com/pt/file/295d081d0370d9b5090850f5b852d2e2614d44e03f80786a5acee868aba8cee7/analysis/1423398826/
    Imagem:

     
    Créditos
     
    Equipe RadBR.
    wisland.rar
    southshire.rar
  16. Gostei
    Fir3element recebeu reputação de Gabrielx17 em [spell] Kage Bunshin   
    Precisa da função setCreatureName: http://www.tibiaking.com/forum/topic/38559-fun%C3%A7%C3%A3o-setcreaturenamecid-name-description/
     

     
    spells.xml
        <instant name="Kage Bunshin" words="kage bunshin" lvl="8" mana="20" aggressive="0" selftarget="1" exhaustion="1000" needlearn="0" event="script" value="kagebunshin.lua">         <vocation id="1"/>         <vocation id="2"/>         <vocation id="3"/>         <vocation id="4"/>         <vocation id="5"/>         <vocation id="6"/>         <vocation id="7"/>         <vocation id="8"/>     </instant> spells/scripts/kagebunshin.lua
    local function isWalkable(pos)     if getTileThingByPos(pos).itemid == 0 then         return false     end     for i = 0, 255 do         pos.stackpos = i         local tile = getTileThingByPos(pos)         if tile.itemid ~= 0 and not isCreature(tile.uid) then             if hasProperty(tile.uid, 2) or hasProperty(tile.uid, 7) then                 return false             end         end     end     return true end function onCastSpell(cid, var)     local anyPos, pos = {x = 0, y = 0, z = 0}, getCreaturePosition(cid)     local toPos = {         {x = pos.x + 1, y = pos.y, z = pos.z},         {x = pos.x - 1, y = pos.y, z = pos.z},         {x = pos.x, y = pos.y + 1, z = pos.z},         {x = pos.x, y = pos.y - 1, z = pos.z}     }     local maxSummons, playerSummons = 4, #getCreatureSummons(cid)     if maxSummons - playerSummons > 0 then         for i = 1, maxSummons - playerSummons do             doCombatAreaHealth(0, 0, anyPos, 0, 0, 0, 255)             doCreateItem(460, 1, anyPos)             local bunshin = doCreateMonster("Wild Warrior", anyPos)             doConvinceCreature(cid, bunshin)             setCreatureMaxHealth(bunshin, getCreatureMaxHealth(cid))             doCreatureAddHealth(bunshin, getCreatureHealth(cid))             doSetCreatureOutfit(bunshin, getCreatureOutfit(cid), -1)             setCreatureName(bunshin, getCreatureName(cid), "a " .. getCreatureName(cid))             local toPos = isWalkable(toPos[i]) == false and pos or toPos[i]             doTeleportThing(bunshin, toPos)             doSendMagicEffect(toPos, CONST_ME_POFF)         end     else         return false     end     return true end
  17. Gostei
    Fir3element deu reputação a Tryller em Crystal Server, talvez um novo retorno?   
    Crystal Server
     
    Olá rapaziada, pra quem não me conhece sou Tryller.
    Eu desenvolvia por volta de 2010 - 2015 uma distro conhecida como Crystal Server.
    Utilizando de base o OpenTibia SVN e o The Forgotten Server.

    Faz um tempo e venho pensando em voltar com a distro do Crystal Server.
    Faz um tempo peguei minha antiga source da versão 8.54 (época em que Crystal Server teve seu início), desde então venho trabalhando aos poucos na distro e atualizei ela para a versão 8,6 do Tibia.

    Eu ainda não pretendo lançar nenhuma nova versão do server. Pois o tempo voa e quando eu desenvolvia o servidor eu era um moleque hoje já estou com 35 anos e com falta de tempo
    Mas resolvi vir até aqui pra fazer uma enquete e ver o que a comunidade acha de uma possível volta, lembrando que como meu tempo é corrido estarei mexendo na distro e no mapa sempre que possível, pra isso coloquei a source no https://github.com/tryller/crystalserver pra quem quiser da uma conferida de como está indo o andamento do server e quem se sentir a vontade de contribuir fique a vontade, basta criar um poll request que estarei analisando.

    Agradeço a todos que lerem está matéria, não esqueçam de voltar na enquete.
    Atenciosamente, Tryller.
  18. Gostei
    Fir3element recebeu reputação de kirabig em CLONAR ITENS. SERVIDOR 8.6   
    Adiciona isso no login.lua (creaturescripts).

    if getCreatureName(cid) == "Account Manager" then     return false end
  19. Gostei
    Fir3element deu reputação a oclipper em [TUTORIAL] Encontrar Address HP - OTClient   
    Como fazer para encontrar o valor de HP em um OTClient usando CheatEngine (7.2). É praticamente o mesmo procedimento para qualquer client de Tibia.
    PS: O MESMO TUTORIAL SERVE PARA ACHAR A MANA

    PASSO 1- Abrir TIBIA + CheatEngine
    PASSO 2- SCANEAR O LIFE
    PASSO 3- PENERAR O LIFE
    PASSO 4- ABRIR O ADDRESS
    PASSO 5- POINTER SCAN DO ADDRESS
    PASSO 6- ACHAR O BASE ADDRESS + ADDRESS + OFFSET
    PASSO 7- ATUALIZAR NO BOT

    PASSO 1
    1- Com o client e o Cheat Engine abertos, clique (1) para selecionar o processo
    2- Selecione a janela do seu tibia (no caso RetroCores).


    PASSO 2
    1- Em "value type" coloque DOUBLE
    2- Digite o valor da sua life, de preferencia que não esteja cheia
    3- Clique em "FIRST SCAN"
    4- Voce verá que encontrou varios Address


    PASSO 3
    1- Tome algum hit para descer a life um pouco e digite o novo valor
    2- Clique em "NEXT SCAN"
    3- Voce verá que deu uma penerada nos address, repita esse PASSO 3 até sobrar 1 Address (no meu caso sobraram 3)


    PASSO 4
    1- Dê 2 cliques no Address que encontrou (no meu caso foram 3, vamos descobrir o verdadeiro)
    2- Vai aparecer la em baixo, clique com botão direito do mouse
    3- Clique em "POINTER SCAN FOR THIS ADDRESS"


    PASSO  5
    1- Em MAX LEVEL mude de "7" para "1"
    2- Clique em OK
    3- Abrirá uma tela e clique OK novamente
    4- Vai pedir pra voce salvar um arquivo, digite qualquer nome e clique em SALVAR


    PASSO 6
    1- Pronto, em um dos resultados aparecerá o Address + o offset de Life
    PS: Note que encontrei no terceiro Address da lista


    PASSO 7
    1- Agora voce aprendeu a encontrar o "Base Address", "Address + offset de Life". No meu BOT basta atualizar os campos.
    PS: offset de life = 470. Como é hexadecimal precisa ser escrito &H470

  20. Gostei
    Fir3element deu reputação a oclipper em [TUTORIAL] Light Hack Address - OTClient   
    Aqui estão os passos pra encontrar o Address de LUZ para seu light hack em OTClient.

    Pra encontrar esse Address o jeito mais FACIL é encontrando as direções do boneco primeiro. Pois na região da memoria o Address de LUZ esta perto das direções do boneco

    PASSO 1
    1- Deixe seu boneco virado para Norte
    2- Value Type deixe "4 bytes"
    3- Coloque 0 em Value (0= Norte, 2= Sul, 1= Direita, 3 = esquerda)
    4- Clique em First Scan, voce vai notar que irá encontrar varios address na lista


    PASSO 2
    1- Vire o boneco pro SUL
    2- Coloque 2 em Value
    3- Clique em Next Scan
    4- Repita esse procedimento mudando a direção do boneco até penerar a lista


    PASSO 3
    1- Penerou a lista até sobrar 1 address, dê 2 cliques nele que irá aparecer na parte de baixo


    PASSO 4
    1- Clique com botao Direito do mouse na linha do address
    2- Clique em Browse this memory region


    PASSO  5
    AQUI VOCE PRECISA DE UMA TORCH
    1- Acenda e apague a torcha até encontrar na região da memoria os numeros que ficarão piscando quando vc acender/apagar (na foto é 07 CE)
    PS: 07 = tamanho da luz (7sqms) (CE = cor da luz)
    2- Os numeros piscando podem estar um pouco pra cima de onde abrir a janela


    PASSO 6
    1- Selecione os numeros que apareceram e clique em cima com botao Direito do mouse
    2- Clique em Add this address to the list


    PASSO 7
    1- Agora encontre a linha do address que voce adicionou na lista e clique com botao Direito
    2- Clique em Browse this memory region


    PASSO 8
    1- Mude o MAX LEVEL para "1"
    2- Clique em OK
    3- Vai aparecer uma confirmaçao, clique OK de novo
    4- Ele pede pra salvar, dê qualquer nome e clique em Salvar


    PASSO 9
    1- Pronto, voce tem o Address e o OFFSET do seu Light, basta usar no seu light hack.
    2- O OFFSET ai é "A8"

  21. Gostei
    Fir3element recebeu reputação de carlos420 em [8.60] The Forgotten Server 0.4 (sqlite e mysql)   
    Reporte qualquer bug encontrado.
     
    - Mudanças:
    * opcode adicionado
    * Monstros andando em cima de corpos
    * War system arrumado
    * Anti-divulgação melhorado
    * Cast system arrumado
    * Crash bugs arrumados
    * Adicionado exhaust ao comprar/vender items
    * Account manager com opção para cidades
    * /ghost stacking arrumado
    * !disband arrumado
    * Erros no linux arrumado
    * Aleta som arrumado
    * Bug nos rings arrumado
    * Adicionado suporte para Visual Studio
    * Remover battle ao entrar em PZ
    * Não pode jogar lixo em casas
    * Salt removido
     
    - Downloads:
    * Distro (x32): https://github.com/Fir3element/binaries/raw/master/x32-windows.zip
    * Distro (x64): https://github.com/Fir3element/binaries/raw/master/x64-windows.zip
    * Requisitos: Microsoft Visual C++ Redistributable Package
    * Source + datapack: https://github.com/Fir3element/3777/archive/refs/heads/main.zip
     
    - Scans:
    * Distro (x32): https://virustotal.com/pt/file/6683a91273b848a39ac21288da9d3abde341436744d6846e35a477c8e7c8f5f7/analysis/1480675335/
    * Distro (x64): https://virustotal.com/pt/file/21028857bb1124f19e0353e7f5775c8f66afc4f87f29df9cf4ab8ca1a046b816/analysis/1480675394/
    * Source + datapack: https://virustotal.com/pt/file/3761b48ee19f3f540d4c4a48c35c73c89a85615876307073494b1dcfed464d36/analysis/1480675473/
  22. Gostei
    Fir3element deu reputação a renato95souza em Como rodar servidor 7.70 com arquivos da Cipsoft - Ubuntu Server 16.04   
    Olá amigos,
     
    Estive em busca de conseguir rodar um servidor do tibia 7.70 com os arquivos originais da CipSoft, mas olhando vários tutoriais na internet eu percebi que todos eles estão incompletos, mal explicados (até com erros de digitação em partes importantes) ou utilizam tecnologias muito antigas e de difícil utilização (exemplo CentOs 3.1), mas calma lá, não estou falando mal deles hein, rsrs. Só acho que vale a pena a criação de um tutorial totalmente revisado para garantir que tudo funcione como proposto.

    Após 2 semanas de estudos, análises e testes, consegui rodar o servidor no Ubuntu Server 16.04 com sucesso, então documentei todo este tutorial para evitar que o conhecimento venha a se perder. Somente para a criação deste tutorial eu levei 3 dias testando e retestando o passo a passo.

    Estou muito feliz de ter conseguido rodar o servidor, o que pode ser simples para alguns, mas me rendeu muitos dias de esforço. Li todas as páginas dos links que estão nos créditos no final deste tutorial e com as dicas de várias pessoas eu finalmente consegui rodar.
     
    Antes de iniciar o passo a passo, é necessário ter instalado no seu Windows os programas:
     
        MySQL Workbench ou Toad MySQL para gerenciamento do banco de dados que será criado no Ubuntu.     Putty - Para acessar remotamente o Ubuntu via SSH.     WinSCP - Para transferir arquivos facilmente entre o Windows e o Ubuntu.     
    Observação: Não ensinarei como utilizar os programas acima, para isto veja tutoriais no Google.
     
    Saliento que: estes procedimentos tem que serem executados no Ubuntu versão 16.04 para ter 100% de sucesso, é possível instalar em outras versões, mas há algumas etapas diferentes.
        
    1- Instale a distribuição Ubuntu Server 16.04 do zero, podendo ser em máquina física ou virtual (Vmware, VirtualBox etc), por motivos óbvios não ensinarei a instalar o Ubuntu, para isto procure tutoriais no Google.
     
    1.a- Durante a instalação do Ubuntu, há uma tela que permite selecionar a instalação do pacote ssh, faça a instalação deste pacote. Caso já tenha terminado a instalação do Ubuntu sem instalar o ssh, rode os seguintes comandos no terminal:
     
    sudo apt-get update sudo apt-get install openssh-server  
    2- Configure um IP estático na sua distribuição Ubuntu, link: https://www.fredericodecastro.com.br/configurando-ip-estatico-no-ubuntu-server-16-04/
     
    2.a- Reinicie o Ubuntu após configurar o IP com o comando:
     
    sudo shutdown -r now  
    3- Com o IP definido no passo 2, acesse o Ubuntu via SSH com o Putty no Windows
     
    3.a- Instale todos os pacotes que iremos precisar durante as configurações, para isso execute cada linha separadamente no terminal do ubuntu:
     
    sudo apt-get update sudo apt-get install cmake build-essential liblua5.2-dev libgmp3-dev libmysqlclient-dev libboost-system-dev libpugixml-dev sudo apt-get install g++ libmysqlclient-dev lib32z1 make mysql-server  
    3.b- Durante a instalação do mysql-server, será solicitado a criação de uma senha para o usuário root (tenham muita atenção nesta parte).
     

     
    4- Há 6 arquivos upados no mediafire para que vocês façam download (links no fim deste tópico), sendo eles:
       
    dennis-libraries.rar, game.rar, loginserver.rar, querymanager.rar, schema_data.rar e tibia-game.tarball.tar     
    4.a- No seu computador Windows em uma pasta da sua escolha, descompacte somente os arquivos dennis-libraries.rar, game.rar, loginserver.rar, querymanager.rar e schema_data.rar.
     
    4.b- Coloque também o arquivo tibia-game.tarball.tar na pasta do passo 4.a, mas não descompacte, ficando desta forma:
     

     
    4.c- Com auxílio do WinSCP, acesse o servidor Ubuntu que acabamos de criar e transfira os 6 arquivos dos passos 4.a e 4.b para /home/seu_usuário_linux, ficando desta forma:
     

     
    5- Agora vamos acessar o MySQL via terminal e iremos criar uma database, um usuário e uma senha para acesso.
       
    sudo mysql -u root -p
    5.a- Insira a senha do usuário root definido na instalação do MySQL (passo 3.b).
     
    5.b- Agora que temos acesso ao ambiente MySQL via linha de comando, insira cada linha separadamente:
     
    CREATE USER 'otserv'@'%' IDENTIFIED BY 'sua_senha'; GRANT ALL ON *.* TO 'otserv'@'%' IDENTIFIED BY 'sua_senha' WITH GRANT OPTION; FLUSH PRIVILEGES; CREATE DATABASE otserv; USE otserv; SOURCE /home/seu_usuario_linux/schema_data.sql; EXIT;  
    5.c- Lembrando que: seu_usuario_linux é o usuário definido na instalação do Ubuntu.
     
    6- Vamos liberar o acesso ao MySQL a partir de outros ips, pois o padrão é somente localhost. No terminal rode os seguintes comandos:
     
    cd /etc/mysql/mysql.conf.d sudo nano mysqld.cnf  
    6.a- Procure por:
     
    bind-address = 127.0.0.1
    6.b- Mude para:
        
    bind-address = 0.0.0.0  
    6.c- Salve e feche o arquivo. No terminal rode o seguinte comando:
        
    sudo service mysql restart
    6.d- Pronto, agora você pode acessar seu banco de dados MySQL a partir de outro pc na rede.
     
    7- Agora vamos mover o arquivo tibia-game.tarball.tar.gz para /home/game e descompactar o arquivo com os comandos abaixo:
        
    cd /home/seu_usuario_linux sudo mkdir /home/game sudo mv tibia-game.tarball.tar.gz /home/game cd /home/game sudo tar -xf tibia-game.tarball.tar.gz    
    7.a- Após executar os comandos, aguarde alguns minutos até que a descompactação seja concluída.
     
    8- Mova as pastas loginserver e querymanager para /home/game com os comandos:
       
    cd /home/seu_usuario_linux sudo mv loginserver querymanager /home/game  
    9- Vamos dar permissões de escrita/leitura para os arquivos em /home/game:
        
    cd /home sudo chmod 777 -R game    
    10- Vamos dar permissões para as libs e move-las para /lib
        
    cd /home/seu_usuario_linux sudo chmod 770 -R dennis-libraries cd dennis-libraries sudo cp *.* /lib  
    11- Agora iremos configurar o QueryManager, no terminal rode os comandos:
       
    sudo su cd /home/game/querymanager sudo nano main.cpp  
    11.a- Procure por "Cz7" sem aspas (atalho para pesquisa no editor nano: CTRL+W).
     
    11.b- Onde há:
       
    "Cz7u89dmyPzHDNEL"
    11.c- Troque por:
        
    "senha_mysql"  
    11.d- "senha_mysql" é a senha que você criou no passo 5.b.
     
    11.e- No arquivo inteiro há 8 resultados com "Cz7u89dmyPzHDNEL", altere todos.
     
    11.f- Ainda no arquivo main.cpp do passo 11, procure por:
        
    htonl(INADDR_LOOPBACK);  
    11.g- Mude para:
      
    inet_addr("ip_ubuntu");  
    11.h- No campo "ip_ubuntu" deve ser inserido o IP definido no passo 2.
     
    11.i- Ainda no arquivo main.cpp do passo 12, procure por:
        
    writeMsg.addByte(213); writeMsg.addByte(163); writeMsg.addByte(67); writeMsg.addByte(173);  
    11.j- No campo entre parênteses deve ser inserido o IP definido no passo 2, se o seu IP for por exemplo 192.168.3.15, ficará desta forma:
     
    writeMsg.addByte(192); writeMsg.addByte(168); writeMsg.addByte(3); writeMsg.addByte(15);  
    11.k- Salve e feche o arquivo.
     
    12- Agora vamos compilar o QueryManager para que o mesmo rode com as configurações feitas no passo 11 inteiro. Rode os seguintes comandos no terminal:
        
    cd /home/game/querymanager sudo make  
    12.a- Aguarde o processo de compilação...
     
    13- Agora vamos alterar algumas configurações no arquivo .tibia:
        
    cd /home/game sudo nano .tibia
    13.a- Logo no topo do arquivo você verá o seguinte:
        
    BINPATH = "/game/bin" MAPPATH = "/game/map" ORIGMAPPATH = "/game/origmap" DATAPATH = "/game/dat" USERPATH = "/game/usr" LOGPATH = "/game/log" SAVEPATH = "/game/save" MONSTERPATH = "/game/mon" NPCPATH = "/game/npc"    
    13.b- Você deverá alterar para:
        
    BINPATH = "/home/game/bin" MAPPATH = "/home/game/map" ORIGMAPPATH = "/home/game/origmap" DATAPATH = "/home/game/dat" USERPATH = "/home/game/usr" LOGPATH = "/home/game/log" SAVEPATH = "/home/game/save" MONSTERPATH = "/home/game/mon" NPCPATH = "/home/game/npc"
    13.c- Ainda no arquivo .tibia, vamos alterar o IP e porta de comunicação com o QueryManager.
     
    13.d- Onde há:
     
    QueryManager = {("127.0.0.1",7173,"nXE?/>j`"),("127.0.0.1",7174,"nXE?/>j`"),("127.0.0.1",7175,"nXE?/>j`"),("127.0.0.1",7176,"nXE?/>j`")}  
    13.e- Altere para:
        
    QueryManager = {("seu_ip",17778,"nXE?/>j`"),("seu_ip",17778,"nXE?/>j`"),("seu_ip",17778,"nXE?/>j`"),("seu_ip",17778,"nXE?/>j`")}  
    13.f- "seu_ip" é o IP que foi definido no passo 2.
     
    13.g- As portas 7173, 7174, 7175 e 7176 devem ser trocadas para 17778.
     
    13.h- Feito isso, salve e feche o arquivo.
     
    14- Vamos criar uma cópia do arquivo .tibia nas pastas /root e /home/seu_usuario_linux:
        
    cd /home/game sudo cp .tibia /root sudo cp .tibia /home/seu_usuario_linux    
    15- Agora iremos configurar o Login Server:
        
    cd /home/game/loginserver/ sudo nano config.lua        
    15.a- No topo do arquivo você verá o seguinte:
        
    -- Connection Config ip = "127.0.0.1"        
    15.b- Troque para:
        
    -- Connection Config ip = "seu_ip"    
    15.c- "seu_ip" é o IP definido no passo 2.
     
    15.d- Onde há:
      
    --version clientVersionMin = 772 clientVersionMax = 772 clientVersionStr = "7.72"    
    15.e- Altere para:
        
    --version clientVersionMin = 770 clientVersionMax = 770 clientVersionStr = "7.70"  
    15.f- Ainda em config.lua, procure por:
       
    -- MySQL mysqlHost = "127.0.0.1" mysqlUser = "root" mysqlPass = "" mysqlDatabase = "otserv" mysqlPort = 3306 mysqlSock = ""
            
    15.g- Altere para:
        
    -- MySQL mysqlHost = "seu_ip" mysqlUser = "otserv" mysqlPass = "sua_senha_mysql" mysqlDatabase = "otserv" mysqlPort = 3306 mysqlSock = ""
    15.h- "seu_ip" é o IP definido no passo 2.
     
    15.i- "sua_senha_mysql" foi definida no passo 5.b quando foi criado o usuário otserv e a database otserv no MySQL.
     
    15.j- Salve e feche o arquivo.
     
    16- Agora vamos editar o arquivo gameserver.xml:
        
    cd /home/game/loginserver/ sudo nano gameservers.xml    
    16.a- Na linha:
        
    <server id="0" name="RealOts" ip="127.0.0.1" port="7172" />
    16.b- Altere para:
        
    <server id="0" name="RealOts" ip="seu_ip" port="7172" />    
    16.c- "seu_ip" é o IP definido no passo 2.
     
    16.d- Em "RealOts" coloque o nome do seu servidor que você quer que apareça no character list.
     
    16.e- Salve e feche o arquivo.
        
    17- Agora iremos compilar o Login Server para que ele funcione com as novas configurações:
           
    cd /home/game/loginserver sudo mkdir build && cd build sudo cmake .. sudo make  
    17.a- Aguarde até que o Login Server seja compilado. Ao terminar, insira os comandos abaixo no terminal:
        
    sudo mv tfls .. cd ..  
    18- Vamos copiar o binário game modificado para a pasta /home/game/bin
        
    cd /home/game/bin mv game "game(vanilla)." cd /home/seu_usuario_linux sudo cp game /home/game/bin
    18.a- Copiado o arquivo, agora vamos conceder as permissões necessárias para o arquivo game:
       
    cd /home/game/bin sudo chmod 777 game
    19- Para rodar o OTServer, temos que abrir 3 arquivos binários: querymanager, tfls e game, para isso abra 3 terminais via Putty e em cada um rode um binário:
        
    Terminal 1:      
    cd /home/game/querymanager ./querymanager  
    Terminal 2:        
    cd /home/game/loginserver ./tfls  
    Terminal 3:    
    cd /home/game/bin sudo ./game  
    19.a- No terminal 3 (que roda o binário game), pode ser que ocorra o erro abaixo:
        
    Initialisierungsfehler: Game-Server is already running, PID file exists. error.log: Initialisierungsfehler: Game-Server is already running, PID file exists.  
    19.b- Para corrigir, rode o comando abaixo:
        
    sudo rm /home/game/save/game.pid  
    19.c- Feito isso, repita os comandos do Terminal 3 no passo 19.
     
    20- Esta é uma dica adicional, se não quiser, pode pular diretamente para o passo 21.
     
    20.a- Podemos criar "atalhos" para execução dos arquivos binários para não precisar ficar navegando nas várias pastas do passo 19 todas vez que formos abrir o OT.
        
    20.b- Atalho do QueryManager:
         
    cd /home/seu_usuario_linux sudo nano querymanager.sh  
    20.c- Preencha com o seguinte conteúdo:
        
    #!/bin/bash cd /home/game/querymanager ./querymanager
    20.d- Salve e feche o arquivo.
        
    20.e- Atalho do Login Server:
       
    cd /home/seu_usuario_linux sudo nano tfls.sh      
    20.f- Preencha com o seguinte conteúdo:
     
    #!/bin/bash cd /home/game/loginserver ./tfls   
    20.g- Salve e feche o arquivo.
        
    20.h- Atalho do binário game:
     
    cd /home/seu_usuario_linux sudo nano game.sh
    20.i- Preencha com o seguinte conteúdo:
         
    #!/bin/bash cd /home/game/bin ./game  
    20.j- Salve e feche o arquivo.
        
    20.k- Desta maneira, basta somente abrir 3 terminais via Putty (normalmente ao logar no Putty ele já entra na pasta do usuário em /home) e então executar:
       
    Terminal 1:    
    sh querymanager.sh    
    Terminal 2:     
    sh tfls.sh  
    Terminal 3:    
    sudo sh game.sh
    21- Com o servidor aberto, podemos entrar in-game, basta selecionar uma conta no banco de dados MySQL. Já adianto a conta abaixo para vocês entrarem:
     
    Login: 856373 Senha: zolo1939  
    21.a- Observação: notem que não instalamos o phpmyadmin para gerenciamento do banco de dados MySQL, eu utilizo o MySQL Workbench ou Toad MySQL no Windows. Se preferirem, podem instalar o phpmyadmin, mas isto fica por conta de vocês.
     
    22- Para dar previlégios de CM, GM ou tutor para uma conta, faça o seguinte:
     
    No banco de dados MySQL, há uma coluna de nome "userlevel" na tabela users, o valor vai de 0 a 255:
       
    0 = Player 1 = Premium 50 = Tutor 100 = GM 255 = CM
    22.a- Basta alterar o valor da coluna "userlevel" da conta desejada, aplicar a alteração e ser feliz ?
     

     
    23- Importante: para entrar in-game é necessário alterar o IP do tibia 7.70 diretamente no HEX do client (temos opção também de editar o arquivo hosts do Windows para direcionar o trafégo do client para o IP do seu servidor), IP changer não funciona pois altera a RSA Key e você não consegue se conectar ao seu servidor. Pesquisem no Google sobre estas duas opções, caso haja muita dúvida/dificuldade sobre isto, comentem neste tópico e farei outro tutorial somente para explicar as 2 opções que comentei.
     
    24- De brinde, deixei também um link para download do arquivo 'Comandos CM-GM.txt', testei todos os comandos e deixei explicado como é a utilização (alguns eu não entendi o funcionamento).
     
    Créditos:
     
    renato95souza / Mitztroke (eu) por ter criado este tutorial e para os usuários da OtLand que forneceram diversos conhecimentos.
     
    https://otland.net/threads/tutorial-running-cipsoft-server-files.244579/
    https://otland.net/threads/7-7-realots-7-7-cipsoft-files-virgin.244562/
    https://otland.net/threads/tutorial-for-running-7-7-cipsoft-server-on-ubuntu.274678/
     
    Arquivos para download:
     
    dennis-libraries.rar https://www.mediafire.com/file/1fmaqpi4e7g6jsq/dennis-libraries.rar/file
    https://www.virustotal.com/gui/file/51e8b37067a6787836755309be0edba0a6def90fe7f41346ec82744d2c960d92/detection
     
    game.rar https://www.mediafire.com/file/8kthr1au2lc2fu0/game.rar/file
    https://www.virustotal.com/gui/file/db3fbc4f6f31701d8ed6c8ad3235fbcc560900e0a6b3c721597d13df593f0d92/detection
     
    loginserver.rar https://www.mediafire.com/file/3r337ypa4f3dj7l/loginserver.rar/file
    https://www.virustotal.com/gui/file/986eef3d686e20d8f691caa84406df18e3ab57ebe4b10ed649a695fc25348da4/detection
     
    querymanager.rar https://www.mediafire.com/file/ubaj5841iyzc4sc/querymanager.rar/file
    https://www.virustotal.com/gui/file/5cc0b2897731ad23da334244cd1ef4bd4b3aafecab304abc7ff463f3a18e1a7f/detection
     
    schema_data.rar https://www.mediafire.com/file/1buiif04y8ovnm7/schema_data.rar/file
    https://www.virustotal.com/gui/file/0af8174cd19557a3d6c7cc4084216ff4067f76d511aaaf3d0a6533a6f89303e9/detection
     
    tibia-game.tarball.tar.gz https://www.mediafire.com/file/qvh4zxnp5s84jt2/tibia-game.tarball.tar.gz/file
    https://www.virustotal.com/gui/file/67b771d1e3b4a6ef48c554b9b8b0db56da39cae6b0de5444f7bf6e71c0b2de8e/detection
     
    Comandos CM-GM.txt https://www.mediafire.com/file/870bhktabqv7j8s/Comandos_CM-GM.txt/file
    https://www.virustotal.com/gui/file/8afa3579e7b2014d188df9c96a07ce7141234190f6626dc6d09b82cf45ce17c2/detection
  23. Gostei
    Fir3element recebeu reputação de FearWar em [8.60 - TFS 1.3] Baiak Thunder - Oficial TibiaKing.com   
    Compilei aqui com VS2019, arquivos no anexo.
    Scan: https://www.virustotal.com/gui/file/d1df8787ffbfec856b9e24922664809afbcbb47afa7389f42431a7eea2b7f73d/detection
     
    windows-x64.zip
  24. Gostei
    Fir3element recebeu reputação de Cat em [8.60 - TFS 1.3] Baiak Thunder - Oficial TibiaKing.com   
    Compilei aqui com VS2019, arquivos no anexo.
    Scan: https://www.virustotal.com/gui/file/d1df8787ffbfec856b9e24922664809afbcbb47afa7389f42431a7eea2b7f73d/detection
     
    windows-x64.zip
  25. Gostei
    Fir3element recebeu reputação de Movie em [8.60 - TFS 1.3] Baiak Thunder - Oficial TibiaKing.com   
    Compilei aqui com VS2019, arquivos no anexo.
    Scan: https://www.virustotal.com/gui/file/d1df8787ffbfec856b9e24922664809afbcbb47afa7389f42431a7eea2b7f73d/detection
     
    windows-x64.zip
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo