Ir para conteúdo

Muvukaa

Membro
  • Registro em

  • Última visita

  1. O Windows requer C++ ou Lua 0.3.6 8.60 A cada 1 hora ou 60 segundos Limpar log MENUITEM "&Limpar log", ID_MENU_MAIN_CLEARLOG eu quero sistema que limpe log a cada 1 minuto pode ser globalevents onThink ou pela SOURCE
  2. IMORTALIDADE local config = { storage = 13546, effect1 = 2 --- efeito ao ser atacado estando invulnerável } function onStatsChange(cid, attacker, type, combat, value) if value >= 1 and (type == STATSCHANGE_HEALTHLOSS or (getCreatureCondition(cid, CONDITION_MANASHIELD) and type == STATSCHANGE_MANALOSS)) then if getPlayerStorageValue(cid,config.storage) - os.time() > 0 and isCreature(attacker) then doSendMagicEffect(getCreaturePosition(cid), config.effect1) doSendAnimatedText(getCreaturePosition(cid), "0", 180) return false end end return true end CREATURESCRIPT REFLECTION function onLogin(cid) -- Verificar se o Reflection ainda está ativo if getPlayerStorageValue(cid, 12789) > os.time() then -- Registrar o evento statschange novamente registerCreatureEvent(cid, "Reflection/statschange") else -- Remover o armazenamento caso o efeito tenha expirado setPlayerStorageValue(cid, 12789, -1) end return true end IMORTALIDADE local config = { storage = 13546, cooldown = 3, --- tempo entre um uso e outro duration = 86400, --- duração effect1 = 26 -- efeito que sai ao falar a spell } function onCastSpell(cid, var) if getPlayerStorageValue(cid, 13546) < 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você precisa ser DONATE para usar esta Magia.") doSendMagicEffect(getThingPos(cid), 2) return true end if os.time() - getPlayerStorageValue(cid, 13546) >= config.cooldown then setPlayerStorageValue(cid, 13546, os.time()) doSendMagicEffect(getCreaturePosition(cid), config.effect1) setPlayerStorageValue(cid, config.storage, os.time() + config.duration) doCreatureSay(cid,"24 HORAS DE INVENCIBILIDADE!!!", 19) doPlayerSendTextMessage(cid, 26, "You have now ".. config.duration .." seconds of invulnerability.") else doPlayerSendCancel(cid, "Your skill is in cooldown, you must wait "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, 13546))).." seconds.") return false end return true end REFLECTION function onCastSpell(cid, var) -- Check if the player has the required storage for the spell if getPlayerStorageValue(cid, 12789) < 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You need storage spell donate.") doSendMagicEffect(getThingPosition(cid), CONST_ME_POFF) return false end -- Register the statschange event registerCreatureEvent(cid, "Reflection/statschange") -- Registers the statschange event -- Set the duration for the Reflection effect (24 hours) setPlayerStorageValue(cid, 12789, os.time() + 86400) -- Sets the duration (24 hours) -- Apply the visual effect doSendMagicEffect(getThingPosition(cid), CONST_ME_HOLYDAMAGE) -- Inform the player that they have gained the Reflection effect doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "You have 24 hours of Reflection.") return true end
  3. EU USO TFS 0.3.6 ESSE SISTEMA NÃO PEGA NESSA VERÇÃO. const Item* rightItem = inventory[SLOT_RIGHT]; WeaponType_t type = item->getWeaponType(), rightType = rightItem->getWeaponType(); if(rightItem->getSlotPosition() & SLOTP_TWO_HAND) ret = RET_DROPTWOHANDEDITEM; else if(item == rightItem && count == item->getItemCount()) ret = RET_NOERROR; else if(rightType == WEAPON_SHIELD && type == WEAPON_SHIELD) ret = RET_CANONLYUSEONESHIELD; else if(!rightItem->isWeapon() || !item->isWeapon() || rightType == WEAPON_SHIELD || rightType == WEAPON_AMMO || type == WEAPON_SHIELD || type == WEAPON_AMMO) ret = RET_NOERROR; else ret = RET_CANONLYUSEONEWEAPON; const Item* leftItem = inventory[SLOT_LEFT]; WeaponType_t type = item->getWeaponType(), leftType = leftItem->getWeaponType(); if(leftItem->getSlotPosition() & SLOTP_TWO_HAND) ret = RET_DROPTWOHANDEDITEM; else if(item == leftItem && count == item->getItemCount()) ret = RET_NOERROR; else if(leftType == WEAPON_SHIELD && type == WEAPON_SHIELD) ret = RET_CANONLYUSEONESHIELD; else if(!leftItem->isWeapon() || !item->isWeapon() || leftType == WEAPON_SHIELD || leftType == WEAPON_AMMO || type == WEAPON_SHIELD || type == WEAPON_AMMO) ret = RET_NOERROR; else ret = RET_CANONLYUSEONEWEAPON; Player.cpp: https://pastebin.com/xdGg6zj0 Ele só calcula o dano de uma arma não calcula nas duas e o shield tambémsó calcula uma sword esse ---> só calcula 1 shield
  4. C++ TFS 0.3.6 - TIBIA - 8.60 - COMO USO ARMAS E ESCUDOS NAS DUAS MÃOS.
  5. TFS 0.3.6 - 8.60 Eu queria clean console script limpa concole semprecisa da clean com mause.
  6. adminLogsEnabled = true displayPlayersLogging = true prefixChannelLogs = "" runFile = "" outLogName = "" errorLogName = "" truncateLogsOnStartup = false -D__ENABLE_SERVER_LOGS__ -D__GUI_LOGS__ Já Adicionei Essas Flag Pra Compila Mais Mesmo Assim eu Aperto CTRL +Z ou CTRL + J Reporto Mais Não Aparece Nada Nos na Pasta Logs adminLogsEnabled = true displayPlayersLogging = true prefixChannelLogs = "" runFile = "logs/run.log" outLogName = "logs/out.log" errorLogName = "logs/error.logs" truncateLogsOnStartup = false Mais não Funciona
  7. Poção Bônus: 0%. aumenta a cura de poções para 1000000000 Alguém tem o código? local configPotion = { effectOnUse = 61, -- Efeito visual ao usar o item maxPotionBoost = 100, -- Máximo de aumento no efeito das potions (%) storagePotionBoost = 14786, -- Storage para rastrear o aumento boostPerUse = 1, -- Aumento percentual por uso itemId = 5879, -- ID do item usado para aumentar o boost potionIds = {7591, 8704, 7588, 7589, 7620, 7618, 8473, 8472, 7590} -- IDs das potions afetadas }
  8. [TFS 0.3.6 - 8.60] - COMO DEIXO AUTOMAP FORMATO .map COMPLETO PRO MEU OTSERV
  9. Olha Como o Meu Tá e Não ta Funcionando Olha Mapa: ONDE EU TO É A POS: x266 y233 z15 <action actionid="4725" script="roulette.lua"/> <action actionid="4571" script="roulette.lua"/> <action actionid="4545" script="roulette.lua"/> <action actionid="4478" script="roulette.lua"/> --[[ ================================================================================ = ROULETTE SYSTEM FOR TFS = = = = Author: Neutras = = Version: 2.1 = = Description: Gacha-style roulette system with dynamic speed mechanics = = and multi-key feature. = = = = Features: = = - Multi-key support (1-4 keys per spin). = = - Dynamic speed animation with configurable initial and final speeds. = = - Persistent "Winner Slot" effects and animated texts. = = - Configurable rewards with reroll chances. = = - Logging system to track player rewards. = = = = Compatible with TFS 0.3.7 (Tibia 8.6). = ================================================================================ --]] --[[ ================================================================================ = ROULETTE SYSTEM FOR TFS = = = = Author: Neutras = = Version: 2.1 = = Description: Gacha-style roulette system with dynamic speed mechanics = = and multi-key feature. = = = = Features: = = - Multi-key support (1-4 keys per spin). = = - Dynamic speed animation with configurable initial and final speeds. = = - Persistent "Winner Slot" effects and animated texts. = = - Configurable rewards with reroll chances. = = - Logging system to track player rewards. = = = = Compatible with TFS 0.3.7 (Tibia 8.6). = ================================================================================ --]] -- ================= LOGGING SYSTEM ================= -- local logPath = "data/logs/" local logFileName = "roulette.log" -- Logs player rewards to a file. -- @param cid: Player ID. -- @param keyName: Name of the key used. -- @param items: Table of items won. -- @param keyCount: Number of keys used. local function logEntry(cid, keyName, items, keyCount) local file = io.open(logPath .. logFileName, "a") if file then local itemStrings = {} for _, item in ipairs(items) do table.insert(itemStrings, string.format("x%d %s", item.count, getItemNameById(item.id))) end file:write(string.format("[%s] %s used %d '%s' and won: %s\n", os.date("%Y-%m-%d %H:%M:%S"), getPlayerName(cid), keyCount, keyName, table.concat(itemStrings, ", "))) file:close() end end -- ================= BASE CONFIGURATION ================= -- -- Levers Action IDs to key item IDs. local keyByAid = { [1354] = 9971, -- Key for reward level 1 (Copper) [1355] = 9972, -- Key for reward level 2 (Silver) [1356] = 9973 -- Key for reward level 3 (Golden) } -- Levers Action IDs to reward levels. local rewardByAid = { [1354] = 1, -- Reward level 1 (Copper) [1355] = 2, -- Reward level 2 (Silver) [1356] = 3 -- Reward level 3 (Golden) } -- Relative positions of the slots in the roulette. local rouletteSpinOffset = { {1, -4}, {2, -4}, {3, -4}, {3, -3}, {4, -3}, {4, -2}, {4, -1}, {5, -1}, {5, 0}, {5, 1}, {4, 1}, {4, 2}, {4, 3}, {3, 3}, {3, 4}, {2, 4}, {1, 4}, {0, 4}, {-1, 4}, {-2, 4}, {-3, 4}, {-3, 3}, {-4, 3}, {-4, 2}, {-4, 1}, {-5, 1}, {-5, 0}, {-5, -1},{-4, -1},{-4, -2}, {-4, -3},{-3, -3},{-3, -4},{-2, -4},{-1, -4}, {0, -4} } -- ================= MAIN CONFIGURATION ================= -- local config = { rouletteCD = 30, -- Global cooldown in seconds. globalStoCd = 22600, -- Storage ID for cooldown. globalStoKeyCount = 22601, -- Storage ID for key count. maxLoops = 100, -- Maximum iterations per spin. initialSpeed = 50, -- Initial speed in milliseconds. finalSpeed = 400, -- Final speed in milliseconds. effectLever = 35, -- Effect when activating the lever. effectRewardPlayer = 28, -- Effect on the player when winning. effectReward = 28, -- Effect on the winning slot. -- Reward table by level. -- Formula: Real Probability = (Item Chance / Total Chances) * (1 - (Reroll % / 100)) items = { [1] = { {id = 4871, chance = 100, count = 1}, }, [2] = { {id = 4872, chance = 100, count = 1}, }, [3] = { {id = 4870, chance = 100, count = 1}, }, [4] = { {id = 5899, chance = 100, count = 1}, }, [5] = { {id = 2349, chance = 100, count = 1}, }, [6] = { {id = 9003, chance = 100, count = 1}, }, [7] = { {id = 2300, chance = 100, count = 1}, }, [8] = { {id = 2309, chance = 100, count = 1}, }, [9] = { {id = 2272, chance = 100, count = 1}, }, [10] = { {id = 2306, chance = 100, count = 1}, }, [11] = { {id = 2447, chance = 100, count = 1}, }, [12] = { {id = 7739, chance = 100, count = 1}, }, [13] = { {id = 7737, chance = 100, count = 1}, }, [14] = { {id = 5805, chance = 100, count = 1}, }, [15] = { {id = 2446, chance = 100, count = 1} } } } -- ================= PROBABILITY CACHING ================= -- -- Precalculates cumulative probabilities for each reward level. local cumulativeChanceCache = {} for rewardId, items in pairs(config.items) do local total = 0 local cumulative = {} for _, item in ipairs(items) do total = total + item.chance table.insert(cumulative, {item = item, threshold = total}) end cumulativeChanceCache[rewardId] = {total = total, items = cumulative} end -- ================= UTILITY FUNCTIONS ================= -- -- Calculates the speed of the roulette animation based on progress. -- @param progress: Current progress (0 to 1). -- @return: Speed in milliseconds. local function calculateSpeed(progress) return config.initialSpeed + (config.finalSpeed - config.initialSpeed) * progress^3 end -- Selects a random item from the reward table, considering reroll chances. -- @param rewardId: Reward level ID. -- @return: Selected item. local function chooseRouletteItem(rewardId) local cache = cumulativeChanceCache[rewardId] local roll = math.random(cache.total) for _, entry in ipairs(cache.items) do if roll <= entry.threshold then if entry.item.porc_cambio and math.random(100) <= entry.item.porc_cambio then return chooseRouletteItem(rewardId) end return entry.item end end return cache.items[#cache.items].item end -- Rotates the slots in the roulette. -- @param slots: Table of slots. local function rotateSlots(slots) local last = slots[36] for i = 36, 2, -1 do slots[i] = slots[i-1] end slots[1] = last end -- Updates the visual display of the roulette. -- @param cpos: Center position of the roulette. -- @param slots: Table of slots. -- @param isFillingPhase: Whether the slots are being filled for the first time. local function updateRouletteDisplay(cpos, slots, isFillingPhase) for i = 1, 36 do local pos = { x = cpos.x + rouletteSpinOffset[i][1], y = cpos.y + rouletteSpinOffset[i][2], z = cpos.z } doCleanTile(pos) if slots[i] then doCreateItem(slots[i].id, slots[i].count, pos) -- Show puff effect only during the initial filling phase. if isFillingPhase then doSendMagicEffect(pos, 14) end end end end -- ================= WINNER SLOTS AND EFFECTS ================= -- -- Shows "Winner Slot" animated text on winning slots. -- @param cpos: Center position of the roulette. -- @param keyCount: Number of keys used. local function showWinnerSlots(cpos, keyCount) local winningSlots = {} if keyCount == 1 then winningSlots = {36} elseif keyCount == 2 then winningSlots = {36, 18} elseif keyCount == 3 then winningSlots = {36, 18, 9} elseif keyCount == 4 then winningSlots = {36, 18, 9, 27} else winningSlots = {36} -- Default to one winning slot if keyCount is invalid. end for _, slot in ipairs(winningSlots) do local pos = { x = cpos.x + rouletteSpinOffset[slot][1], y = cpos.y + rouletteSpinOffset[slot][2], z = cpos.z } doSendAnimatedText(pos, "Winner", TEXTCOLOR_YELLOW) end end -- Shows the number of keys in use. -- @param cpos: Center position of the roulette. local function showKeyCount(cpos) local keyCount = getGlobalStorageValue(config.globalStoKeyCount) keyCount = (keyCount < 1 or keyCount > 4) and 1 or keyCount local pos = {x = 266, y = 233, z = 15} doSendAnimatedText(pos, string.format("Keys: %d", keyCount), TEXTCOLOR_LIGHTBLUE) end -- ================= MAIN ROULETTE LOGIC ================= -- -- Main animation function, recursively called to simulate the roulette spin. -- @param cid: Player ID. -- @param cpos: Center position of the roulette. -- @param rewardId: ID of the reward level. -- @param nloop: Current iteration number. -- @param slots: Table of slots (items). -- @param keyName: Name of the key used. -- @param keyCount: Number of keys used. local function shuffle(cid, cpos, rewardId, nloop, slots, keyName, keyCount) if nloop > config.maxLoops then if isPlayer(cid) then -- Determine winning slots based on the number of keys used. local winningSlots = {} if keyCount == 1 then winningSlots = {36} elseif keyCount == 2 then winningSlots = {36, 18} elseif keyCount == 3 then winningSlots = {36, 18, 9} elseif keyCount == 4 then winningSlots = {36, 18, 9, 27} else winningSlots = {36} -- Default to one winning slot if keyCount is invalid. end -- Get the winning items and their positions. local wonItems = {} local winPositions = {} for _, slot in ipairs(winningSlots) do if slots[slot] then table.insert(wonItems, slots[slot]) local pos = { x = cpos.x + rouletteSpinOffset[slot][1], y = cpos.y + rouletteSpinOffset[slot][2], z = cpos.z } table.insert(winPositions, pos) end end -- Award the items and display visual effects. if #wonItems > 0 then for _, pos in ipairs(winPositions) do doSendAnimatedText(pos, "Winner Slot", TEXTCOLOR_YELLOW) doSendMagicEffect(pos, config.effectReward) end for _, item in ipairs(wonItems) do doPlayerAddItem(cid, item.id, item.count) end doSendMagicEffect(getCreaturePosition(cid), config.effectRewardPlayer) -- Display a message to the player with all the rewards. local itemList = {} for _, item in ipairs(wonItems) do table.insert(itemList, string.format("x%d %s", item.count, getItemNameById(item.id))) end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[ROULETTE] You won: " .. table.concat(itemList, ", ")) -- Log the player's rewards. logEntry(cid, keyName, wonItems, keyCount) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[ROULETTE] No items won.") end setGlobalStorageValue(config.globalStoCd, 0) end return end -- Initial filling phase of the roulette slots. if nloop <= 36 then slots[nloop] = chooseRouletteItem(rewardId) updateRouletteDisplay(cpos, slots, true) else -- Rotate the slots and update the display. rotateSlots(slots) updateRouletteDisplay(cpos, slots, false) -- Show effects on the winning slots every 5 iterations. if nloop % 5 == 0 then local winningSlots = {} if keyCount == 1 then winningSlots = {36} elseif keyCount == 2 then winningSlots = {36, 18} elseif keyCount == 3 then winningSlots = {36, 18, 9} elseif keyCount == 4 then winningSlots = {36, 18, 9, 27} else winningSlots = {36} -- Default to one winning slot if keyCount is invalid. end for _, slot in ipairs(winningSlots) do local pos = { x = cpos.x + rouletteSpinOffset[slot][1], y = cpos.y + rouletteSpinOffset[slot][2], z = cpos.z } doSendMagicEffect(pos, config.effectReward) end end end -- Schedule the next iteration with dynamic speed. local progress = nloop / config.maxLoops addEvent(shuffle, calculateSpeed(progress), cid, cpos, rewardId, nloop + 1, slots, keyName, keyCount) end -- ================= PERIODIC EFFECTS AND TEXTS ================= -- -- Shows effects and texts periodically. -- @param cpos: Center position of the roulette. local function showEffectsAndTexts(cpos) local keyCount = getGlobalStorageValue(config.globalStoKeyCount) keyCount = (keyCount < 1 or keyCount > 4) and 1 or keyCount -- Ensure keyCount is within range. -- Show "Winner Slot" on the winning slots. showWinnerSlots(cpos, keyCount) -- Show the number of keys in use. showKeyCount(cpos) -- Schedule the next execution. addEvent(showEffectsAndTexts, 1500, cpos) end -- ================= EFFECT SCRIPT INITIALIZATION ================= -- -- Start the periodic effects and texts when the script is loaded. local cpos = {x = 266, y = 233, z = 15} -- Center position of the roulette. addEvent(function() showEffectsAndTexts(cpos) end, 5000) -- 5 seconds delay since server start. -- ================= MAIN OBJECT USE FUNCTION ================= -- -- Called when the roulette object is used. function onUse(cid, item, frompos, item2, topos) -- Handle the key change lever. if item.aid == 1360 then local current = getGlobalStorageValue(config.globalStoKeyCount) current = (current < 1 or current > 4) and 1 or (current % 4) + 1 setGlobalStorageValue(config.globalStoKeyCount, current) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string.format("Now using %d keys per spin.", current)) doSendMagicEffect(getThingPos(item.uid), CONST_ME_MAGIC_GREEN) return true end -- Handle the roulette levers. if not keyByAid[item.aid] then return false end local key = keyByAid[item.aid] local keyName = getItemNameById(key) local requiredKeys = getGlobalStorageValue(config.globalStoKeyCount) requiredKeys = (requiredKeys < 1 or requiredKeys > 4) and 1 or requiredKeys if getPlayerAccess(cid) < 5 and getPlayerItemCount(cid, key) < requiredKeys then doPlayerSendCancel(cid, string.format("You need %d %s to play!", requiredKeys, keyName)) doSendMagicEffect(topos, 14) return true end local rewardId = rewardByAid[item.aid] or 1 -- Get the reward level based on the lever. Default to 1 if not found. local pos = {x = 266, y = 233, z = 15} -- Center position of the roulette. if getGlobalStorageValue(config.globalStoCd) > os.time() and getPlayerAccess(cid) < 5 then local remaining = getGlobalStorageValue(config.globalStoCd) - os.time() doPlayerSendCancel(cid, "Wait " .. remaining .. " seconds to play again.") return true end setGlobalStorageValue(config.globalStoCd, os.time() + config.rouletteCD) -- Set the cooldown. doTransformItem(item.uid, item.itemid == 9825 and 9826 or 9825) -- Change the lever's appearance. -- Clear the tiles around the roulette and add magic effects. for i = 1, 36 do local rpos = { x = pos.x + rouletteSpinOffset[i][1], y = pos.y + rouletteSpinOffset[i][2], z = pos.z } doCleanTile(rpos) doSendMagicEffect(rpos, config.effectReward) end if key > 0 then doPlayerRemoveItem(cid, key, requiredKeys) end -- Remove the keys from the player's inventory. doSendMagicEffect(pos, config.effectLever) -- Play the lever activation effect. math.randomseed(os.time() + getPlayerGUID(cid)) -- Seed the random number generator. addEvent(shuffle, config.initialSpeed, cid, pos, rewardId, 1, {}, keyName, requiredKeys) -- Start the roulette animation. return true end
  10. [TFS - 0.3.6 - 8.60] Tibia 8.60 Client Clássico Como criar automap do meu servidor completo coloque o arquivo automap em %appdata% file.map
  11. Muvukaa postou uma resposta no tópico em Suporte Tibia OTServer
    Aqui Esta 100% Funcionando. local distance = 25 -- Distance to move (in sqm) local speed = 100 -- Milliseconds between each step (lower values = faster) local invisible = createConditionObject(CONDITION_GAMEMASTER) setConditionParam(invisible, CONDITION_PARAM_TICKS, (speed * distance) + 50) local outfit = createConditionObject(CONDITION_INVISIBLE) setConditionParam(outfit, CONDITION_PARAM_TICKS, (speed * distance) + 50) -- Function to check if a position is "walkable" local function isWalkable(pos, creature, proj, pz) local tile = getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}) if tile.itemid == 0 then return false end local creature = getTopCreature(pos) if creature.type > 0 then return false end if getTilePzInfo(pos) and not pz then return false end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local item = getTileThingByPos(pos) if item.itemid ~= 0 and not isCreature(item.uid) then if hasProperty(item.uid, n) or hasProperty(item.uid, 7) then return false end end end return true end -- Function to find an alternative direction local function getAlternativeDirection(pos) local directions = { {x = pos.x + 1, y = pos.y, z = pos.z}, -- East {x = pos.x - 1, y = pos.y, z = pos.z}, -- West {x = pos.x, y = pos.y + 1, z = pos.z}, -- South {x = pos.x, y = pos.y - 1, z = pos.z}, -- North } for _, dirPos in ipairs(directions) do if isWalkable(dirPos, false, false, false) then return dirPos end end return nil -- No alternative path found end function onWalk(cid) local poslook = getCreaturePosition(cid) poslook.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE if isWalkable(poslook, false, false, false) then doMoveCreature(cid, getPlayerLookDirection(cid)) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) else local alternativePos = getAlternativeDirection(getPlayerPosition(cid)) if alternativePos then local direction = getDirectionTo(getPlayerPosition(cid), alternativePos) doMoveCreature(cid, direction) doSendMagicEffect(alternativePos, CONST_ME_MAGIC_BLUE) else doSendMagicEffect(getPlayerPosition(cid), CONST_ME_BLOCKHIT) -- Indicates a block end end end function onCastSpell(cid, var) if exhaustion.get(cid, 13118) then doPlayerSendCancel(cid, "You can use this spell again in " .. exhaustion.get(cid, 13118) .. " seconds.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_BLOCKHIT) return false end exhaustion.set(cid, 13118, 15) doAddCondition(cid, invisible) doAddCondition(cid, outfit) for i = 0, distance do addEvent(onWalk, speed * i, cid) end return true end
  12. [13/02/2025 15:26:16] [Error - CreatureScript Interface] [13/02/2025 15:26:16] In a timer event called from: [13/02/2025 15:26:16] buffer:onKill [13/02/2025 15:26:16] Description: [13/02/2025 15:26:16] not enough memory [13/02/2025 15:26:27] [Error - CreatureScript Interface] [13/02/2025 15:26:27] In a timer event called from: [13/02/2025 15:26:27] buffer:onKill [13/02/2025 15:26:27] Description: [13/02/2025 15:26:27] not enough memory [13/02/2025 15:26:38] [Error - CreatureScript Interface] [13/02/2025 15:26:38] In a timer event called from: [13/02/2025 15:26:38] buffer:onKill [13/02/2025 15:26:38] Description: [13/02/2025 15:26:38] not enough memory LaaTiDo RESOLVE O PROBLEMA??? https://www.mediafire.com/file/g4nfuo4fhmssm87/LaaTiDo.rar/file
  13. @WakeSoft EU NÃO ACHEI ESSE SISTEMA EM NENHUM FORUM DE TIBIA.
  14. @FeeTads FAZ TUTORIAL ENSINANDO PASSO A PASSO
  15. https://forums.otserv.com.br/index.php?/forums/topic/169735-revscript-sistema-guild-level/

Informação Importante

Confirmação de Termo