-
Total de itens
304 -
Registro em
-
Última visita
-
Dias Ganhos
13
L3K0T venceu a última vez em Dezembro 4
L3K0T had the most liked content!
Sobre L3K0T
Perfil
-
Gênero
Outro
Informações
-
Char no Tibia
Psy Skyline
-
Forma que conheci o xTibia
Outros Sites
-
Sou
OT-Admin
Últimos Visitantes
33055 visualizações
L3K0T's Achievements
-
chateadoagr reagiu a uma resposta no tópico: Compilando o OTClient Mehah no Visual Studio 2022
-
wesleyt10 reagiu a uma resposta no tópico: Dragon Ball Evolution + Source (Linux Ubuntu 12.04 e Windows)
-
Frenvius reagiu a uma resposta no tópico: Compilando o OTClient Mehah no Visual Studio 2022
-
L3K0T começou a seguir Compilando o OTClient Mehah no Visual Studio 2022
-
Compilando o OTClient Mehah no Visual Studio 2022
um tópico no fórum postou L3K0T Tutoriais para Iniciantes
Bem-vindo ao tutorial sobre como compilar o OTClient Mehah no Visual Studio 2022! Neste tutorial, vou guiá-lo pelo processo de configuração do ambiente de desenvolvimento e compilação do OTClient Mehah no Visual Studio 2022 Tutorial: Compilando o OTClient Mehah no Visual Studio 2022 Passo 1: Downloads necessários baixe todos primeiro Visual Studio 2022 Comunidade: Faça o download: https://visualstudio.microsoft.com/pt-br/downloads/ Microsoft Visual C++ Redistributable 2015-2022: Download: 32bits: https://aka.ms/vs/17/release/vc_redist.x86.exe ou 64 bits: https://aka.ms/vs/17/release/vc_redist.x64.exe Git: Se ainda não tiver o Git instalado, faça o download: https://git-scm.com/download/win Passo 2: Instalando abra o visual studio 22 ai quando chegar nessa tela você marca essas opções e desmarca as outras: instalando o git, pode só dar next até o final... instalando o Microsoft Visual C++ Redistributable 2015-2022 abra seu powershell digite os comando 1 por vez: git clone https://github.com/Microsoft/vcpkg cd vcpkg .\bootstrap-vcpkg.bat bibliotecas 64bits referente ao seus sistema .\vcpkg install boost-iostreams:x64-windows boost-asio:x64-windows boost-system:x64-windows boost-variant:x64-windows boost-lockfree:x64-windows luajit:x64-windows glew:x64-windows boost-filesystem:x64-windows boost-uuid:x64-windows physfs:x64-windows openal-soft:x64-windows libogg:x64-windows libvorbis:x64-windows zlib:x64-windows opengl:x64-windows openssl:x64-windows liblzma:x64-windows nlohmann-json:x64-windows protobuf:x64-windows bibliotecas 32bits referente ao seus sistema .\vcpkg install boost-iostreams:x86-windows boost-asio:x86-windows boost-system:x86-windows boost-variant:x86-windows boost-lockfree:x86-windows luajit:x86-windows glew:x86-windows boost-filesystem:x86-windows boost-uuid:x86-windows physfs:x86-windows openal-soft:x86-windows libogg:x86-windows libvorbis:x86-windows zlib:x86-windows opengl:x86-windows openssl:x86-windows liblzma:x86-windows nlohmann-json:x86-windows protobuf:x86-windows por final: .\vcpkg integrate install Download cliente mehah versão nova: https://github.com/mehah/otclient/archive/refs/tags/3.1.zip Agora só abrir o projeto pelo visual studio e clica compilar que vai configura tudo certinho e vai compilar -
L3K0T alterou sua foto pessoal
-
killerbean reagiu a uma resposta a uma pergunta: [PEDIDO] SEQUÊNCIA DE ACTION E SER TELEPORTADO
-
local runes = { [2260] = {id = 2296, charges = 100, value = 20}, -- Light Magic Missile [2273] = {id = 2306, charges = 100, value = 45}, -- Heavy Magic Missile [2277] = {id = 2311, charges = 100, value = 80}, -- Great Fireball -- Adicione mais runas aqui conforme necessário } function onUse(player, item, fromPosition, target, toPosition, isHotkey) local rune = runes[item.actionid] if not rune then return false end local runeId = ItemType(rune.id) local itemWeight = runeId:getWeight() * rune.charges if player:getFreeCapacity() < itemWeight then player:sendCancelMessage("You don't have enough capacity.") player:getPosition():sendMagicEffect(CONST_ME_POFF) return true end if not player:removeMoney(rune.value) then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "You don't have enough gold coins to buy ".. rune.charges .." ".. runeId:getName() .." runes.") player:getPosition():sendMagicEffect(CONST_ME_POFF) return true end player:getPosition():sendMagicEffect(CONST_ME_DRAWBLOOD) player:addItem(rune.id, rune.charges) item:transform(item.itemid == 1945 and 1946 or 1945) return true end
-
Actions local duration = 20000 -- Duração total em milissegundos local warningTime = 5000 -- 5 segundos antes do fim function onUse(cid, item, fromPosition, itemEx, toPosition) item:setAttribute(ITEM_ATTRIBUTE_DURATION, duration) -- Define a duração inicial da Magic Wall Rune addEvent(function(item) local remainingTime = item:getAttribute(ITEM_ATTRIBUTE_DURATION) - warningTime if remainingTime > 0 then item:setAttribute(ITEM_ATTRIBUTE_DURATION, remainingTime) -- Reduz a duração em 5 segundos item:getPosition():sendMagicEffect(CONST_ME_POFF) -- Efeito visual indicando o tempo restante else item:remove() -- Remove a Magic Wall Rune quando o tempo acabar aleatoriamente end end, warningTime, item) -- Restante do código da função onUse, se houver... end
-
Clicando via item no action: function onUse(cid, item, fromPosition, itemEx, toPosition) local playerGUID = getPlayerGUID(cid) if playerGUID ~= 0 then doCreatureAddHealth(cid, 10) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_BLUE) addEvent(function(playerGUID) local player = getPlayerByGUID(playerGUID) if player then player:addHealth(10) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) end end, 2000, playerGUID) -- Aumenta a vida após 2 segundos addEvent(function(playerGUID) local player = getPlayerByGUID(playerGUID) if player then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Sua vida continua aumentando!") end end, 10000, playerGUID) -- Mensagem após 10 segundos return true end return false end Npc: 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 onUse(cid, item, fromPosition, itemEx, toPosition) local playerGUID = getPlayerGUID(cid) if playerGUID ~= 0 then doCreatureAddHealth(cid, 10) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_BLUE) selfSay("Você recuperou 10 pontos de vida.", cid) addEvent(function(playerGUID) local player = getPlayerByGUID(playerGUID) if player then player:addHealth(10) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Sua vida continua aumentando!") end end, 2000, playerGUID) -- Aumenta a vida após 2 segundos addEvent(function(playerGUID) local player = getPlayerByGUID(playerGUID) if player then player:removeHealth(10) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED) end end, 12000, playerGUID) -- Reduz a vida após 12 segundos selfSay("Você sente sua vida enfraquecendo...", cid) return true end return false end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
-
<event type="combat" name="onAttack" script="custom_attack.lua" /> function onAttack(cid, target) local mainPlayer = Player(cid) local followers = mainPlayer:getFollowers() -- Verifica se o jogador possui mais de um seguidor (MC) if followers and #followers > 0 then for _, follower in ipairs(followers) do -- Impede que o seguidor do jogador ataque outros jogadores if target:isPlayer() then mainPlayer:say("Desculpe, mas você não pode atacar outros jogadores com dois personagens simultaneamente.", TALKTYPE_PRIVATE) return false end end end -- Permite o ataque se não houver restrições return true end
-
local config = { teleportId = 27723, days = { ["Tuesday"] = {Position(998, 996, 7), Position(1487, 308, 13)}, }, bossPosition = Position(1507, 309, 14), bossName = "Gaz'haragoth", spawnTime = '18:43:00', teleportDuration = 5 * 60 * 1000, } local Gazharagoth = GlobalEvent("Gazharagoth") local function removeTeleport() local teleportItem = Tile(config.days["Tuesday"][1]):getItemById(config.teleportId) if teleportItem then teleportItem:remove() end end function Gazharagoth.onTime(interval) local day = config.days[os.date("%A")] if day then Game.broadcastMessage(config.bossName .. ' Em vingança pela morte do meu irmão, eu devastarei este continente!', MESSAGE_GAME_HIGHLIGHT) Game.broadcastMessage(config.bossName .. ' Em vingança pela morte do meu irmão, eu devastarei este continente!', MESSAGE_EVENT_ADVANCE) local item = Game.createItem(config.teleportId, 1, day[1]) if item and item:isTeleport() then item:setDestination(day[2]) addEvent(function() Game.createMonster(config.bossName, config.bossPosition, false, true) addEvent(removeTeleport, config.teleportDuration) end, 5000) end end return true end Gazharagoth:time(config.spawnTime) Gazharagoth:register()
-
Quando o jogador completar a sequência correta clicando, ele será teleportado para a posição do boss. Se o jogador clicar nos pilares fora da ordem correta, a sequência do jogador será reiniciada e uma mensagem de erro será exibida. local bossPosition = {x = 100, y = 200, z = 10} -- Posição do boss local sequence = {} -- Sequência correta de IDs dos pilares sequence[1] = 1 sequence[2] = 2 sequence[3] = 3 sequence[4] = 4 local playerSequence = {} -- Sequência de IDs dos pilares que o jogador ativou function onUse(cid, item, fromPosition, itemEx, toPosition) if isInArray(sequence, itemEx.itemid) then local playerId = getPlayerGUID(cid) if not isInArray(playerSequence, itemEx.itemid) then table.insert(playerSequence, itemEx.itemid) end if #playerSequence == #sequence then local correctSequence = true for i = 1, #sequence do if sequence[i] ~= playerSequence[i] then correctSequence = false break end end if correctSequence then doTeleportThing(cid, bossPosition, false) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você foi teleportado para o boss!") playerSequence = {} -- Reinicia a sequência do jogador else doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Sequência incorreta!") playerSequence = {} -- Reinicia a sequência do jogador end end end return true end Xml Actions itemid é o pilar e actionid é que vai no pilar pelo rme <action itemid="1" actionid="1000" script="activatePillar(1)"/> <action itemid="2" actionid="1001" script="activatePillar(2)"/> <action itemid="3" actionid="1002" script="activatePillar(3)"/> <action itemid="4" actionid="1003" script="activatePillar(4)"/>
-
terra = {1285} levels = { [-1] = 2148 } local config = { storage = 19333, chance = 50, --- chance de achar um item ou não k = 50, --- constante de level.. quanto maior, mais fácil é upar. (a fórmula é level ao quadrado dividido pela constante) experience = 19334 } function onUse(cid, item, fromPosition, itemEx, toPosition) local drops = {} function getDrops(cid) for i = -1, getPlayerStorageValue(cid, config.storage) do if levels[i] then table.insert(drops, levels[i]) end end return true end if isInArray(terra, itemEx.itemid) then getDrops(cid) doPlayerSetStorageValue(cid, config.experience, getPlayerStorageValue(cid, config.experience) + 1) local experience = getPlayerStorageValue(cid, config.experience) if experience >= (8 + (getPlayerStorageValue(cid, config.storage) ^ 2)) / config.k then doPlayerSetStorageValue(cid, config.storage, getPlayerStorageValue(cid, config.storage) + 1) doPlayerSendTextMessage(cid, 27, "Parabens, voce subiu de nivel! Seu nivel atual e " .. getPlayerStorageValue(cid, config.storage) .. ".") if getPlayerStorageValue(cid, config.storage) == 1000 then -- Aqui, o ouro (gold) é adicionado diretamente ao banco doPlayerAddBankBalance(cid, 100 * 10000) -- 100 golds convertidos para gp (cada gold = 10000 gp) end end if config.chance >= math.random(1, 150) then if #drops >= 1 then local item = drops[math.random(1, #drops)] doPlayerSendTextMessage(cid, 27, "Voce encontrou um gold") doSendAnimatedText(toPosition, "gold", 210) -- Aqui, o ouro (gold) é adicionado diretamente ao banco doPlayerAddBankBalance(cid, 1 * 10000) -- 1 gold convertido para gp (cada gold = 10000 gp) end doSendMagicEffect(toPosition, 3) else doSendAnimatedText(toPosition, "batebate", 180) doSendMagicEffect(toPosition, 2) end elseif itemEx.itemid == item.itemid then doPlayerSendTextMessage(cid, 27, "Voce esta atualmente no nivel " .. getPlayerStorageValue(cid, config.storage) .. ".") else return false end return true 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 local config = { item1 = { name = "Mana Fluid", -- Nome do item necessário para a troca (5x) id = 8976 -- ID do item necessário para a troca }, item2 = { name = "Health Fluid", -- Nome do item necessário para a troca (5x) id = 8978 -- ID do item necessário para a troca }, item3 = { name = "Life Fluid", -- Nome do item que será dado em troca id = 8980 -- ID do item que será dado em troca }, item4 = { name = "Blank Rune", -- Nome do item necessário para a troca (1x) id = 4863 -- ID do item necessário para a troca }, item5 = { name = "Ultimate Healing Rune", -- Nome do item que será dado em troca id = 4864 -- ID do item que será dado em troca }, item6 = { name = "Great Mana Potion", -- Nome do item necessário para a troca (10x) id = 5894 -- ID do item necessário para a troca }, item7 = { name = "Strong Mana Potion", -- Nome do item necessário para a troca (10x) id = 5898 -- ID do item necessário para a troca }, item8 = { name = "Ultimate Mana Potion", -- Nome do item que será dado em troca id = 5904 -- ID do item que será dado em troca }, sto = 6464 -- Storage } if (msgcontains(msg, 'yes')) then if (getPlayerStorageValue(cid, config.sto) == -1) then if (getPlayerItemCount(cid, config.item1.id) >= 5 and getPlayerItemCount(cid, config.item2.id) >= 5) then selfSay(cid, 'Você trocou 5 ' .. config.item1.name .. ' e 5 ' .. config.item2.name .. ' por um ' .. config.item3.name .. '.') doPlayerAddItem(cid, config.item3.id, 1) doPlayerRemoveItem(cid, config.item1.id, 5) doPlayerRemoveItem(cid, config.item2.id, 5) setPlayerStorageValue(cid, config.sto, 1) elseif (getPlayerItemCount(cid, config.item4.id) >= 1) then selfSay(cid, 'Você trocou um ' .. config.item4.name .. ' por um ' .. config.item5.name .. '.') doPlayerAddItem(cid, config.item5.id, 1) doPlayerRemoveItem(cid, config.item4.id, 1) setPlayerStorageValue(cid, config.sto, 1) elseif (getPlayerItemCount(cid, config.item6.id) >= 10 or getPlayerItemCount(cid, config.item7.id) >= 10) then selfSay(cid, 'Qual item você deseja trocar? Digite "' .. config.item6.name .. '" ou "' .. config.item7.name .. '".') talkState[talkUser] = 1 else selfSay(cid, 'Você não possui os itens necessários para a troca.') end else selfSay(cid, 'Você já realizou essa troca.') end return true elseif (talkState[talkUser] == 1) then if (msgcontains(msg, config.item6.name)) then if (getPlayerItemCount(cid, config.item6.id) >= 10) then selfSay(cid, 'Você trocou 10 ' .. config.item6.name .. ' por um ' .. config.item8.name .. '.') doPlayerAddItem(cid, config.item8.id, 1) doPlayerRemoveItem(cid, config.item6.id, 10) setPlayerStorageValue(cid, config.sto, 1) else selfSay(cid, 'Você não possui os itens necessários para a troca.') end talkState[talkUser] = 0 elseif (msgcontains(msg, config.item7.name)) then if (getPlayerItemCount(cid, config.item7.id) >= 10) then selfSay(cid, 'Você trocou 10 ' .. config.item7.name .. ' por um ' .. config.item8.name .. '.') doPlayerAddItem(cid, config.item8.id, 1) doPlayerRemoveItem(cid, config.item7.id, 10) setPlayerStorageValue(cid, config.sto, 1) else selfSay(cid, 'Você não possui os itens necessários para a troca.') end talkState[talkUser] = 0 else selfSay(cid, 'Opção inválida. Digite "' .. config.item6.name .. '" ou "' .. config.item7.name .. '".') end return true end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
-
'-'
-
L3K0T reagiu a uma resposta no tópico: [Removido á pedido do Dono] otPokémon AMV Completo
-
robsonsiilva reagiu a uma resposta no tópico: Passagem apenas pra staff
-
DarkWore reagiu a uma resposta no tópico: GRAMA - SPRITE - REPINTADA (VERDE)
-
Retirando o Debug de cancel target da rev 3884 protocoll 8.60 0.4
um tópico no fórum postou L3K0T Lixeira Pública
bom resolvi mexer um pouco com a rev 3884 e encontrei com um bug na que estou mexendo, que seria o seguinte, tudo que vc dar target ao cancelar vc toma DC, seja em monstros ou npc pra resolver segue essas alterações na source: protocollgame.cpp ache: void ProtocolGame::sendCancelTarget() { NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); msg->put<char>(0xA3); msg->put<uint32_t>(0); //? creatureId? } } altere para: void ProtocolGame::sendCancelTarget() { NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); msg->put<char>(0xA3); } } de rebuild e compile.. problema resolvido -
eu tinha colocado cip soft mais alterei
-
Crypter reagiu a uma resposta no tópico: GRAMA - SPRITE - REPINTADA (VERDE)
-
Olá galera esses dias repintei uma grama que no caso era amarela, deixei ela num tom verde que ficou muito bonita no mapa e não quebrava a cor das arvores etc... essa é do tibia global, então só mudei a cor dela. espero que gostem algumas imagens abaixo junto a meu jogo . grama >> scan da sprite de montar: https://www.virustotal.com/#/file/c80fbe750939ce45bfedccbfc81dbe76032ef5c760146607b6c29263cffb6cc1/detection scan da sprite OBD: https://www.virustotal.com/#/file/9c4cef388da4a8c19e45c8eb4aa85ba7d376103ffdcabd157f43e1929979e618/detection Download da sprite pra montar: http://www.mediafire.com/file/eep0s1a5gd8fn5n/grama 1.zip Download da sprite em OBD: http://www.mediafire.com/file/fr3db9ctmt44dam/sprite+em+obd.zip senha: pokemonpwo créditos: cipsoft e a mim por mudar a cor pra verde como na imagem. Ajudei?? REP+
-
L3K0T reagiu a uma resposta no tópico: Show Off - Web
-
TOP!!!!
-
tem torneio ss, cast system vou ver se coloco tbm obrigado pelo feed back ^^
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.