Jump to content

L3K0T

Visconde
  • Posts

    304
  • Joined

  • Last visited

  • Days Won

    12

L3K0T last won the day on August 29

L3K0T had the most liked content!

6 Followers

About L3K0T

Perfil

  • Gênero
    Outro

Informações

  • Char no Tibia
    Psy Skyline
  • Forma que conheci o xTibia
    Outros Sites
  • Sou
    OT-Admin

Recent Profile Visitors

30246 profile views

L3K0T's Achievements

  1. 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
  2. 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
  3. L3K0T

    Magic Wall

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

    Action scripts 7.81

    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())
  5. <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
  6. 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()
  7. 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)"/>
  8. L3K0T

    gold direto no bank

    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
  9. 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())
  10. 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
  11. eu tinha colocado cip soft mais alterei
  12. 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+
  13. tem torneio ss, cast system vou ver se coloco tbm obrigado pelo feed back ^^
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...