Histórico de Curtidas
-
HenriqueZoldyck deu reputação a Dieguiin XP em [Link Quebrado] IceWars Baiak (8.60)Fala galera, hoje venho trazer um mapa editado por mim umpouco parecido com o "BaiakWars" vamos lá oque contem nesse baiak? -Novo Templo -Castle 24HRS (Unico) com aviso de invasores -Paladin arrumado, agóra pode healar com potion e atacar ao mesmo tempo -Utito Tempo San Arrumado Agóra não da mais Exausted em outras magias -Dodge System -Critical System -Itens Donates para vender no Site ou no Jogo -Itens VIP a mostra no templo -Todos itens DONATES dando as skills normalmente -Vários Teleports -Novas Hunts -Look Frags -Potions Editadas -War System -Muitas quests -City editada para um PvP muito melhor -Arena PVP -Fast Attack ROX Para melhor PvP -Quest de set free para Pally/Kinas -Quest de set free para Mages -quest para armas editadas -Treiners com novos visual -30% a mais de experiencia para players donates -10% a mais de experiencia para guild que domina o Castle 24HRS E muito mais! Comandos principais: !dodoge !critical !stamina !aol !bless !notice. Vamos as imagens: templo http://imgur.com/eY4hWyI teleports http://imgur.com/Xd8YUg8 Quests http://imgur.com/o9beGwi castle http://imgur.com/CfAiSBI hunts do castle http://imgur.com/4ix1RD7 area donate http://imgur.com/NGWOA7H Acc do GOD: 5/god Download :http://www.4shared.com/rar/hlajskCyce/DiegoWars.html Scan: https://www.virustotal.com/pt/file/7585ec4867213d5f9230eb1f554a4f320756c37db53406f2b9b80e1d75037cbf/analysis/1413409264/ Créditos Dieguiin XP Marcos Vinicius OBS: Decupem se o tópico ficou meio bagunçado Gostou? Da um Rep+
-
HenriqueZoldyck deu reputação a Under em 🔥 [Atualização 04/06/2025] | Revolução no Desenvolvimento de Servidores Tibia – Conheça o Tibia-AI! 🔥Apresentando o Tibia-IA: A IA para Desenvolvimento de Servidores Tibia!
O que é o Tibia-IA?
Um modelo de IA especializado para Tibia! Ele está atualmente em teste gratuito, e eu adoraria que vocês o experimentassem. Basta acessar https://ai.tibiaking.com, criar uma conta e começar a usar totalmente de graça!
Versão Experimental Fechada
Atualmente, algumas funcionalidades ainda estão em desenvolvimento. No momento, apenas a geração de scripts está disponível para o público.
Se encontrarem qualquer problema nos scripts gerados, me avisem! Vamos juntos construir a IA mais poderosa para ajudar no desenvolvimento de servidores Tibia!
Contato direto discord : underewar
Acesse agora: https://ai.tibiaking.com
Como funciona?
Geração automática de scripts LUA para TFS Suporte a diferentes eventos, criaturas, NPCs, magias, etc. Ferramenta em constante evolução para aprimorar o desenvolvimento Novidades em breve confira no site. O acesso ao Tibia-IA está disponível para testes GRATUITOS! Até dia 05/05/2025
Basta criar uma conta em: https://ai.tibiaking.com
Utilize a IA para gerar seus scripts de forma simples e rápida
Envie feedbacks para ajudarmos a tornar a ferramenta ainda melhor!
Problemas relatar diretamente no meu discord pessoal : underewar
-
HenriqueZoldyck deu reputação a GM Antica em Mapa "Training Room" 8.60Olá galera tudo bem?
Achei esse mapa aqui no fórum, porém ele nao estava funcional. Foi retirado alguns bugs visuais, e certificado que não ocorra PVP dentro dos Treiners:
Modificações:
● Capacidade total = 76 players
● Treiners divididos com "Wall" para o bom funcionamento e evitar que ocorra mortes dentro dos Treiners...
● Paisagens refeitas, um andar "Lobby" foi adicionado para interação e comércio
● Teleport adicionado no final de cada corredor para uma possível extensão
CRÉDITOS: Alissow + GM Antica
Segue alguns Prints:
Scan Vírus Total: https://www.virustotal.com/gui/file/456c5959bd38bd7bd61f8c46af1117e0425963da0f8e5afce0bf411bdd366171?nocache=1
Download:
Training Room 8.60 - by Alissow & GM Antica.rar
-
HenriqueZoldyck deu reputação a Mateus Robeerto em Reset System OTX 2Bom Dia. finalmente, encontrei uma solução para o aumento de dano por reset, sem precisar de muitas modificações na source ou libs adicionais. É simples de implementar, basta adicionar e usar um comando ou NPC com um storage. foi testado e está funcionando corretamente.
OTX 2 ou 3.
combat.cpp
procure esta linha.
bool Combat::CombatHealthFunc(Creature* caster, Creature* target, const CombatParams& params, void* data) Basta substituir todo o código aqui.
bool Combat::CombatHealthFunc(Creature* caster, Creature* target, const CombatParams& params, void* data) { int32_t change = 0; if (Combat2Var* var = (Combat2Var*)data) { change = var->change; if (!change) change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL); } if (g_game.combatBlockHit(params.combatType, caster, target, change, params.blockedByShield, params.blockedByArmor, params.itemId != 0)) return false; CombatParams _params = params; if (_params.element.damage && _params.element.type != COMBAT_NONE) g_game.combatBlockHit(_params.element.type, caster, target, _params.element.damage, params.blockedByShield, params.blockedByArmor, params.itemId != 0, true); if (g_config.getBool(ConfigManager::USE_BLACK_SKULL)) { if (caster && caster->getPlayer() && target->getPlayer() && target->getSkull() != SKULL_BLACK) { _params.element.damage /= 2; if (change < 0) change /= 2; } } else { if (caster && caster->getPlayer() && target->getPlayer()) { _params.element.damage /= 2; if (change < 0) change /= 2; } } { std::string value; caster->getStorage("14335", value); int32_t plus = (int32_t)(atoi(value.c_str())); double resetpower = plus * 2.0; if (plus > 0 && params.combatType != COMBAT_HEALING) change = (int32_t)std::ceil(change + change * resetpower / 100); } if (!g_game.combatChangeHealth(_params, caster, target, change, false)) return false; CombatConditionFunc(caster, target, params, NULL); CombatDispelFunc(caster, target, params, NULL); return true; } mais uma vez procure essa linha.
bool Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, void* data) Basta substituir todo o código aqui.
bool Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, void* data) { int32_t change = 0; if (Combat2Var* var = (Combat2Var*)data) { change = var->change; if (!change) change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL); } if (g_game.combatBlockHit(COMBAT_MANADRAIN, caster, target, change, false, false, params.itemId != 0)) return false; if (g_config.getBool(ConfigManager::USE_BLACK_SKULL)) { if (change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getSkull() != SKULL_BLACK) change /= 2; } else { if (change < 0 && caster && caster->getPlayer() && target->getPlayer()) change /= 2; } { std::string value; caster->getStorage("14335", value); int32_t plus = (int32_t)(atoi(value.c_str())); double resetpower = plus * 2.0; if (plus > 0 && params.combatType != COMBAT_MANADRAIN) change = (int32_t)std::ceil(change + change * resetpower / 100); } if (!g_game.combatChangeMana(caster, target, change)) return false; CombatConditionFunc(caster, target, params, NULL); CombatDispelFunc(caster, target, params, NULL); return true; } Apenas compile, então vamos adicionar um npc reset.
npc reset
local config = { minlevel = 3500, --- initial level to reset price = 100000000, ---initial price to reset newlevel = 20, --- level after reset priceByReset = 100000000, --- price added per reset percent = 40, ---- percentage of health/mana you will have upon reset (relative to your old total health) maxresets = 20, levelbyreset = 100 --- how much more level will you need in the next reset } function getResets(uid) resets = getPlayerStorageValue(uid, 14335) if resets < 0 then resets = 0 end return resets end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if not npcHandler:isFocused(cid) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid function addReset(cid) if(npcHandler:isFocused(cid)) then npcHandler:releaseFocus(cid) end talkState[talkUser] = 0 resets = getResets(cid) setPlayerStorageValue(cid, 14335, resets+1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) local hp = getCreatureMaxHealth(cid) local resethp = hp*(config.percent/100) setCreatureMaxHealth(cid, resethp) local differencehp = (hp - resethp) doCreatureAddHealth(cid, -differencehp) local mana = getCreatureMaxMana(cid) local resetmana = mana*(config.percent/100) setCreatureMaxMana(cid, resetmana) local differencemana = (mana - resetmana) doCreatureAddMana(cid, -differencemana) doRemoveCreature(cid) local description = resets+1 db.query("UPDATE `players` SET `description` = ' [Reset: "..description.."]' WHERE `players`.`id`= ".. playerid .."") db.query("UPDATE `players` SET `level`="..config.newlevel..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."") return true end local newPrice = config.price + (getResets(cid) * config.priceByReset) local newminlevel = config.minlevel + (getResets(cid) * config.levelbyreset) if msgcontains(msg, 'reset') then if getResets(cid) < config.maxresets then selfSay('Voce gostaria de resetar? Isso vai custar '..newPrice..' gp\'s!', cid) talkState[talkUser] = 1 else selfSay('Voce ja atingiu o nivel maximo de resets!', cid) end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if getPlayerMoney(cid) < newPrice then selfSay('E necessesario ter '..newPrice..' gp\'s para resetar!', cid) elseif getPlayerLevel(cid) < newminlevel then selfSay('O level minimo para resetar e '..newminlevel..'!', cid) else doPlayerRemoveMoney(cid,newPrice) playerid = getPlayerGUID(cid) addEvent(function() if isPlayer(cid) then addReset(cid) end end, 3000) local number = getResets(cid)+1 local msg ="---[Reset: "..number.."]-- Voce resetou! Voce sera disconectado em 3 segundos." doPlayerPopupFYI(cid, msg) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no')) and isInArray({1}, talkState[talkUser]) == TRUE then talkState[talkUser] = 0 npcHandler:releaseFocus(cid) selfSay('Ok.', cid) elseif msgcontains(msg, 'quantity') then selfSay('You have a total of '..getResets(cid)..' reset(s).', cid) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) #OBS: 2,0 é igual a duas vezes o valor original, não vinte vezes. Então quando você multiplica algo por 2,0 você está duplicando o valor original.
double resetpower = plus * 2.0;
Eu recomendo definir o valor para 1,5, pois aumentará o dano a cada reset.
Qualquer reset do sistema que use storage, basta alterar o valor da reset do sistema.
caster->getStorage("14335", value);
Obs: Peguei o código do @Underwar e fiz algumas alterações, então compilei sem erro...
https://tibiaking.com/forums/topic/104756-aumentar-dano-por-reset/
@MokkEste usuário do TibiaKing testou e aprovou..
-
HenriqueZoldyck deu reputação a Kizuno18 em Baiak Hyper [8.60][TFS 0.3] ~ King-Baiak (atualizado 20/03/23)@Bielzinks para ajudar você, leia o numero 1 da lista abaixo.
@Digigi tem varias questões atém compilar:
0. obviamente instalar os pacotes necessários.
apt-get update apt-get install git autoconf build-essential pkg-config libboost-dev libgmp3-dev libxml2-dev sqlite3 libsqlite3-dev libtcmalloc-minimal4 liblua5.1 libmysqlclient-dev ccache libboost-filesystem-dev libboost-regex-dev libboost-system-dev libboost-thread-dev screen libboost-iostreams-dev
1. você precisa corrigir um erro de syntax no makefile
pesquisa por weapons.cpp no Makefile tem uma \ incorreta na sintaxe 2. criar a pasta objects
3. remover o sendPlayers do status.cpp como já mencionado aqui no tópico
Eu trabalhei em cima desse ot sem mexer na source por 1 mês, depois percebi que a source que ja ta compilada na pasta (seja de linux ou a kingv2.exe) não é a mesma que o @Nolangg postou aqui, até porque essa aqui, quando compilei, o servidor aparece offline na otservlist se tiver 1 ou mais players.
to aguardando o @Nolangg dar o suporte que ele disse que ajudaria em relação a source, mas claro, respeitando o tempo dele.
-
HenriqueZoldyck deu reputação a FeeTads em Correções gesior/myacc + configurações + proteções (ddos?)Salve rapaziada do TK e da comunidade de tibia Otserv.
Recentemente alguns invejosos estão atacando servidores (DDoS), bugando o guilds de varios sites (tirando o lider e membros), assim buga a guild e muita coisa no OT.
Eles vão até o teu servidor e se passam por "adm do deletebra", já ouvi a uns tempos algumas pessoas falando disso, mas como eu tinha contato isso caiu por terra facilmente, um deles foi o ADM brendo, dono do antigo strongerFusion, onde ele me contou toda essa história, essa foi a primeira vez que me foi relatado sobre isso, hoje vejo que está parecendo ser mais frequente.
Caso qualquer pessoa entre no seu OT se passando pelo ADM do deletebra, favor entrar em contato comigo via discord: FeeTads#0246 Te ajudarei a resolver problemas que eles exploram sem cobrar nada por isso, para provar que não necessito atacar outros OT's para ter algum publico. Já tenho em mente quem pode ser essas pessoas, caso alguém tenha numero de telefone, nome real, ou alguma informação a mais dessas pessoas atacando e se passando por mim ou meu sócio, favor enviar no discord, irei atrás de resolver isso.
Vou deixar aqui alguns tutoriais de coisas básicas para você conseguir proteger o seu site desses SQL injections, e mais algumas coisinhas, caso futuramente eu resolva outros bugs explorados, vou postar aqui as correções.
Configurando CloudFlare (SSL) E subDominio (sv.seuIP)
Após isso para que a pessoa não entre no site pelo (sv.seudominio.com.br)
abra o index.php da pasta raiz (está dentro da pasta html)
if($_SERVER['HTTP_HOST'] == 'sv.seuDominio.com.br') { header("Location: https://seuDominio.com.br"); } if($_SERVER['HTTP_HOST'] == 'IP NUMÉRICO') { header("Location: https://seuDominio.com.br"); }
Isso fará que quando a pessoa tente entrar no seu site usando meios não seguros (DNS only) ele redirecione pro seguro > proxiado pela cloudflare
_________________________________________________________________________________________________________________________________________
CORREÇÃO GUILDS.PHP / INJECTION SQL TIRANDO LIDER DA GUILD
PROTEÇÕES PARA DIMINUIR EFEITOS DE DDoS
Espero que isso ajude a muitos, a se prevenir de pessoas que tentam atacar OT's se passando por outros, ou até que vão la pedir pontos para jogar se não eles irão atacar, se prevenir de pessoas mal intencionadas.
PS: Caso você tenha no seu site a pagine "house" e "tickets" recomendo retirar do seu site, pois há maneira de injetar SQL por esses arquivos.
Vou postar em breve o tickets arrumado.
Boa sorte rapaziada, se cuidem, e caso alguém faça isso, por favor entre em contato comigo.