Ir para conteúdo

carlosmagnox

Membro
  • Registro em

  • Última visita

Tudo que carlosmagnox postou

  1. boa tarde TK estou com um problema para adicionar um sistema de rowlet no meu servidor 8.60 OTX2 erro abaixo se puderem ajudar tmj local config = { actionId = 1495, -- ID DA LAVANCA lever = { left = 1945, right = 1946 }, playItem = { itemId = 2160, -- item necessário para puxar a alavanca count = 10 }, rouletteOptions = { rareItemChance_broadcastThreshold = 500, ignoredItems = {1617,1485}, -- se você tiver mesas/contadores/outros itens nas peças da roleta, adicione-os aqui winEffects = {CONST_ANI_FIRE, CONST_ME_SOUND_YELLOW, CONST_ME_SOUND_PURPLE, CONST_ME_SOUND_BLUE, CONST_ME_SOUND_WHITE}, -- o primeiro efeito precisa ser o efeito de distância effectDelay = 33, spinTime = {min = 8, max = 12}, -- segundos spinSlowdownRamping = 5, rouletteStorage = 48550 -- storage necessário para evitar abuso do jogador (se ele sair/morrer antes do final da roleta.. eles podem girar novamente de graça) }, prizePool = { {itemId = 2160, count = {1, 10}, chance = 100}, -- {itemId = itemid, count = {min, max}, chance = chance/10000} (crystal coins) {itemId = 13752, count = {1, 1}, chance = 9000 }, -- crown legs {itemId = 13753, count = {1, 1}, chance = 8500 }, -- boots of haste {itemId = 13754, count = {1, 1}, chance = 7500 }, -- royal helmet {itemId = 13755, count = {1, 1}, chance = 6500 }, -- old sudden death rune -- runes are given as stackable items, even tho they have 'charges' {itemId = 13756, count = {1, 100}, chance = 5000 }, -- loot seller chest -- items with 'charges' and have 'showCharges' in items.xml will be given charges {itemId = 13749, count = {1, 3}, chance = 4000 }, -- roulette token {itemId = 13751, count = {1, 1}, chance = 3000 }, -- golden legs {itemId = 13600, count = {1, 1}, chance = 1500 }, -- magic plate armor {itemId = 13604, count = {1, 1}, chance = 500 }, -- golden boots {itemId = 13604, count = {1, 1}, chance = 500 }, -- golden boots {itemId = 13604, count = {1, 1}, chance = 500 } -- golden boots }, roulettePositions = { -- 7 positions. Position(72, 168, 8), Position(73, 168, 8), Position(74, 168, 8), Position(78, 168, 8), --a posição 4 nesta lista é codificada para ser o local da recompensa, que é o item dado ao jogador Position(75, 168, 8), Position(76, 168, 8), Position(77, 168, 8), Position(78, 168, 8), Position(79, 168, 8), Position(80, 168, 8), Position(81, 168, 8), Position(82, 168, 8), } } local chancedItems = {} -- used for broadcast. don't edit local function resetLever(position) local lever = Tile(position):getItemById(config.lever.right) lever:transform(config.lever.left) end local function updateRoulette(newItemInfo) local positions = config.roulettePositions for i = #positions, 1, -1 do local item = Tile(positions[i]):getTopVisibleThing() if item and item:getId() ~= Tile(positions[i]):getGround():getId() and not table.contains(config.rouletteOptions.ignoredItems, item:getId()) then if i ~= 12 then item:moveTo(positions[i + 1]) else item:remove() end end end if ItemType(newItemInfo.itemId):hasShowCharges() then local item = Game.createItem(newItemInfo.itemId, 1, positions[1]) item:setAttribute("charges", newItemInfo.count) else Game.createItem(newItemInfo.itemId, newItemInfo.count, positions[1]) end end local function clearRoulette(newItemInfo) local positions = config.roulettePositions for i = #positions, 1, -1 do local item = Tile(positions[i]):getTopVisibleThing() if item and item:getId() ~= Tile(positions[i]):getGround():getId() and not table.contains(config.rouletteOptions.ignoredItems, item:getId()) then item:remove() end if newItemInfo == nil then positions[i]:sendMagicEffect(CONST_ME_POFF) else if ItemType(newItemInfo.itemId):hasShowCharges() then local item = Game.createItem(newItemInfo.itemId, 1, positions[i]) item:setAttribute("charges", newItemInfo.count) else Game.createItem(newItemInfo.itemId, newItemInfo.count, positions[i]) end end end end local function chanceNewReward() local newItemInfo = {itemId = 0, count = 0} local rewardTable = {} while #rewardTable < 1 do for i = 1, #config.prizePool do if config.prizePool[i].chance >= math.random(10000) then rewardTable[#rewardTable + 1] = i end end end local rand = math.random(#rewardTable) newItemInfo.itemId = config.prizePool[rewardTable[rand]].itemId newItemInfo.count = math.random(config.prizePool[rewardTable[rand]].count[1], config.prizePool[rewardTable[rand]].count[2]) chancedItems[#chancedItems + 1] = config.prizePool[rewardTable[rand]].chance return newItemInfo end local function initiateReward(leverPosition, effectCounter) if effectCounter < #config.rouletteOptions.winEffects then effectCounter = effectCounter + 1 if effectCounter == 1 then config.roulettePositions[1]:sendDistanceEffect(config.roulettePositions[4], config.rouletteOptions.winEffects[1]) config.roulettePositions[7]:sendDistanceEffect(config.roulettePositions[4], config.rouletteOptions.winEffects[1]) else for i = 1, #config.roulettePositions do config.roulettePositions[i]:sendMagicEffect(config.rouletteOptions.winEffects[effectCounter]) end end if effectCounter == 2 then local item = Tile(config.roulettePositions[4]):getTopVisibleThing() local newItemInfo = {itemId = item:getId(), count = item:getCount()} clearRoulette(newItemInfo) end addEvent(initiateReward, config.rouletteOptions.effectDelay, leverPosition, effectCounter) return end resetLever(leverPosition) end local function rewardPlayer(playerId, leverPosition) local player = Player(playerId) if not player then return end local item = Tile(config.roulettePositions[4]):getTopVisibleThing() if ItemType(item:getId()):hasShowCharges() then local addedItem = player:addItem(item:getId(), 1, true) addedItem:setAttribute("charges", item:getCharges()) else player:addItem(item:getId(), item:getCount(), true) end player:setStorageValue(config.rouletteOptions.rouletteStorage, -1) if chancedItems[#chancedItems - 3] <= config.rouletteOptions.rareItemChance_broadcastThreshold then Game.broadcastMessage("The player " .. player:getName() .. " has won " .. item:getName() .. " from the roulette!", MESSAGE_EVENT_ADVANCE) end end local function roulette(playerId, leverPosition, spinTimeRemaining, spinDelay) local player = Player(playerId) if not player then resetLever(leverPosition) return end local newItemInfo = chanceNewReward() updateRoulette(newItemInfo) if spinTimeRemaining > 0 then spinDelay = spinDelay + config.rouletteOptions.spinSlowdownRamping addEvent(roulette, spinDelay, playerId, leverPosition, spinTimeRemaining - (spinDelay - config.rouletteOptions.spinSlowdownRamping), spinDelay) return end initiateReward(leverPosition, 0) rewardPlayer(playerId, leverPosition) end local casinoRoulette = Action() function casinoRoulette.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item:getId() == config.lever.right then player:sendTextMessage(MESSAGE_STATUS_SMALL, "A Roleta do Cassino está em andamento. Por favor, aguarde.") return true end if player:getItemCount(config.playItem.itemId) < config.playItem.count then if player:getStorageValue(config.rouletteOptions.rouletteStorage) < 1 then player:sendTextMessage(MESSAGE_STATUS_SMALL, "A Roleta do Cassino requer " .. config.playItem.count .. " " .. (ItemType(config.playItem.itemId):getName()) .. " usar.") return true end -- player:sendTextMessage(MESSAGE_STATUS_SMALL, "Free Spin being used due to a previous unforeseen error.") end item:transform(config.lever.right) clearRoulette() chancedItems = {} player:removeItem(config.playItem.itemId, config.playItem.count) player:setStorageValue(config.rouletteOptions.rouletteStorage, 1) local spinTimeRemaining = math.random((config.rouletteOptions.spinTime.min * 1000), (config.rouletteOptions.spinTime.max * 1000)) roulette(player:getId(), toPosition, spinTimeRemaining, 100) return true end casinoRoulette:aid(config.actionId) casinoRoulette:register() local disableMovingItemsToRoulettePositions = EventCallback disableMovingItemsToRoulettePositions.onMoveItem = function(self, item, count, fromPosition, toPosition, fromCylinder, toCylinder) for v, k in pairs(config.roulettePositions) do if toPosition == k then return false end end return true end disableMovingItemsToRoulettePositions:register()

Informação Importante

Confirmação de Termo