Ir para conteúdo

El Rusher

Cavaleiro
  • Total de itens

    164
  • Registro em

  • Última visita

  • Dias Ganhos

    20

Tudo que El Rusher postou

  1. Bom dia, teste assim: ferumbras_lever local config = AscendingFerumbrasConfig local function clearFerumbrasRoom() local spectators = Game.getSpectators(config.bossPos, false, false, 20, 20, 20, 20) for i = 1, #spectators do local spectator = spectators[i] if spectator:isPlayer() then spectator:teleportTo(config.exitPosition) spectator:getPosition():sendMagicEffect(CONST_ME_TELEPORT) spectator:say("Time out! You were teleported out by strange forces.", TALKTYPE_MONSTER_SAY) elseif spectator:isMonster() then spectator:remove() end end end local ferumbrasAscendantLever = Action() function ferumbrasAscendantLever.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.itemid == 8911 then if player:getPosition() ~= config.leverPos then return true end for x = 33269, 33271 do for y = 31477, 31481 do local playerTile = Tile(Position(x, y, 14)):getTopCreature() if playerTile and playerTile:isPlayer() then if not playerTile:canFightBoss("Ferumbras Mortal Shell") then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format("You or a member in your team have to wait %d days to face Ferumbras again!", config.days)) item:transform(8912) return true end end end end local specs, spec = Game.getSpectators(config.centerRoom, false, false, 15, 15, 15, 15) for i = 1, #specs do spec = specs[i] if spec:isPlayer() then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "There's someone fighting with Ferumbras.") return true end end local spectators = Game.getSpectators(config.bossPos, false, false, 15, 15, 15, 15) for i = 1, #spectators do local spectator = spectators[i] if spectator:isMonster() then spectator:remove() end end for x = 33269, 33271 do for y = 31477, 31481 do local playerTile = Tile(Position(x, y, 14)):getTopCreature() if playerTile and playerTile:isPlayer() then playerTile:getPosition():sendMagicEffect(CONST_ME_POFF) playerTile:teleportTo(config.newPos) playerTile:getPosition():sendMagicEffect(CONST_ME_TELEPORT) playerTile:setBossCooldown("Ferumbras Mortal Shell", os.time() + config.days * 24 * 3600) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format("You have %d minutes to kill and loot this boss. Otherwise you will lose that chance and will be kicked out.", config.time)) addEvent(clearFerumbrasRoom, config.time * 60 * 1000, player:getId(), config.centerRoom, config.range, config.range, config.exitPosition) for b = 1, config.maxSummon do local xrand = math.random(-4, 4) local yrand = math.random(-4, 4) local position = Position(33392 + xrand, 31473 + yrand, 14) if not Game.createMonster(config.summonName, position) then logger.error("[ferumbrasAscendantLever.onUse] can't create monster {}, on position {}", config.summonName, position:toString()) end end Game.createMonster(config.bossName, config.bossPos, true, true) item:transform(8912) end end end elseif item.itemid == 8912 then item:transform(8911) return true end end ferumbrasAscendantLever:uid(1021) ferumbrasAscendantLever:register() rift_invader_death local crystals = { [1] = { fromPosition = Position(33389, 31467, 14), toPosition = Position(33391, 31469, 14), crystalPosition = Position(33390, 31468, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal1 }, [2] = { fromPosition = Position(33393, 31467, 14), toPosition = Position(33395, 31469, 14), crystalPosition = Position(33394, 31468, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal2 }, [3] = { fromPosition = Position(33396, 31470, 14), toPosition = Position(33398, 31472, 14), crystalPosition = Position(33397, 31471, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal3 }, [4] = { fromPosition = Position(33396, 31474, 14), toPosition = Position(33398, 31476, 14), crystalPosition = Position(33397, 31475, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal4 }, [5] = { fromPosition = Position(33393, 31477, 14), toPosition = Position(33395, 31479, 14), crystalPosition = Position(33394, 31478, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal5 }, [6] = { fromPosition = Position(33389, 31477, 14), toPosition = Position(33391, 31479, 14), crystalPosition = Position(33390, 31478, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal6 }, [7] = { fromPosition = Position(33386, 31474, 14), toPosition = Position(33388, 31476, 14), crystalPosition = Position(33387, 31475, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal7 }, [8] = { fromPosition = Position(33386, 31470, 14), toPosition = Position(33388, 31472, 14), crystalPosition = Position(33387, 31471, 14), globalStorage = GlobalStorage.FerumbrasAscendant.Crystals.Crystal8 }, } local config = AscendingFerumbrasConfig local riftInvaderDeath = CreatureEvent("RiftInvaderDeath") function riftInvaderDeath.onDeath(creature, corpse, lasthitkiller, mostdamagekiller, lasthitunjustified, mostdamageunjustified) local pos = Position(33392 + math.random(-4, 4), 31473 + math.random(-4, 4), 14) local name = creature:getName():lower() if name ~= "rift invader" then return true end Game.createMonster(name, pos) for i = 1, #crystals do local crystal = crystals[i] if creature:getPosition():isInRange(crystal.fromPosition, crystal.toPosition) then if Game.getStorageValue(crystal.globalStorage) > 6 then local item = Tile(crystal.crystalPosition):getItemById(14955) if not item then return true end item:transform(14961) Game.setStorageValue(GlobalStorage.FerumbrasAscendant.Crystals.AllCrystals, Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Crystals.AllCrystals) + 1) end if Game.getStorageValue(GlobalStorage.FerumbrasAscendant.Crystals.AllCrystals) == 8 then local creature = Tile(config.bossPos):getTopCreature() if creature then creature:say("NOOOOOOOOOOO!", TALKTYPE_MONSTER_YELL) creature:say("FERUMBRAS BURSTS INTO SOUL SPLINTERS!", TALKTYPE_MONSTER_YELL, nil, nil, Position(33392, 31475, 14)) creature:remove() end for a = 1, #crystals do local crystalEffect = crystals[a] crystalEffect.crystalPosition:sendMagicEffect(CONST_ME_FERUMBRAS) Game.createMonster("Ferumbras Soul Splinter", Position(33392, 31473, 14), false, true) end end Game.setStorageValue(crystal.globalStorage, Game.getStorageValue(crystal.globalStorage) + 1) lasthitkiller:say("The negative energy of the rift creature is absorbed by the crystal!", TALKTYPE_MONSTER_SAY, nil, nil, crystal.crystalPosition) lasthitkiller:say("ARGH!", TALKTYPE_MONSTER_SAY, nil, nil, Position(33392, 31473, 14)) end end local pool = Tile(creature:getPosition()):getItemById(2886) if pool then pool:remove() end local vortex = Game.createItem(config.vortex, 1, creature:getPosition()) if vortex then addEvent(function(creaturePos) local tile = Tile(creaturePos) if tile then local vortexItem = tile:getItemById(config.vortex) if vortexItem then vortexItem:remove(1) end end end, 10 * 1000, creature:getPosition()) end return true end riftInvaderDeath:register() Vortex: local vortex = MoveEvent() local config = AscendingFerumbrasConfig function vortex.onStepIn(creature, item, position, fromPosition) local monster = creature:getMonster() if not monster or monster:getName():lower() ~= "ferumbras essence" then return true end monster:remove() position:sendMagicEffect(CONST_ME_POFF) local essenceCount = Game.getStorageValue(GlobalStorage.FerumbrasAscendant.FerumbrasEssence) if essenceCount < 0 then essenceCount = 0 end Game.setStorageValue(GlobalStorage.FerumbrasAscendant.FerumbrasEssence, essenceCount + 1) if essenceCount + 1 >= 8 then Game.createMonster("Destabilized Ferumbras", config.bossPos, true, true) for i = 1, config.maxSummon do local summonPos = Position(math.random(33381, 33403), math.random(31462, 31483), 14) if not Game.createMonster("Rift Fragment", summonPos, true, true) then print(string.format("Error: Could not create Rift Fragment at position %s", summonPos)) end end end return true end vortex:type("stepin") vortex:id(config.vortex) vortex:register()
  2. preciso dos scripts pra poder alterar meu nobre,a Store que tu menciona fica em um NPC, MOD ou Site?
  3. testa assim: local lvlcrit = 48904 local lvlcritDanger = 48913 local multiplier = 1.5 function onCombat(cid, target) if isPlayer(cid) and isCreature(target) then local criticalChance = getPlayerStorageValue(cid, lvlcrit) or 0 local criticalDangerChance = getPlayerStorageValue(cid, lvlcritDanger) or 0 local chance = math.random(1, 1000) -- Mantém um intervalo razoável if chance <= (criticalChance * 3) then local damage = 100 -- Valor do dano crítico BOOSTER (ajuste conforme necessário) doTargetCombatHealth(cid, target, COMBAT_PHYSICALDAMAGE, -damage, -damage, 255) doSendAnimatedText(getCreaturePos(target), "+BOOSTER!", 31) doSendMagicEffect(getCreaturePosition(cid), 54) elseif chance <= (criticalDangerChance * 3) then local damage = 100 -- Valor do dano crítico DANGER (ajuste conforme necessário) doTargetCombatHealth(cid, target, COMBAT_PHYSICALDAMAGE, -damage, -damage, 255) doSendAnimatedText(getCreaturePos(target), "DANGER!", 190) doSendMagicEffect(getCreaturePosition(cid), 52) end end return true end
  4. se existe uma função no TFS pra alterar tamanho de fontes eu desconheço, entao vou usar a funçao doSendAnimatedText(position, text, color) e TEXTCOLOR_WHITE pra deixar o mais semelhante ao que parece, eu nao tenho mais computador hoje em dia devido a problemas economicos, mas por logica deve ficar +- assim: local colorMsg = "orange" local tableBoss = { ["[EXP] Statue"] = {seconds = 3600, newBoss = "[EXP] Statue"} } local function countdown(position) for i = 5, 0, -1 do addEvent(function() doSendAnimatedText(position, tostring(i), TEXTCOLOR_WHITE) end, (5 - i) * 1000) end end local function timer(position, duration) countdown(position) addEvent(function() for i = 0, (duration - 1) do addEvent(function() doSendAnimatedText(position, tostring(duration - i), TEXTCOLOR_WHITE) end, (i + 6) * 1000) end end, 6000) end local lastTarget = nil function onKill(cid, target, damage, flags) if lastTarget and lastTarget == target then return true end lastTarget = target if isPlayer(target) then return true end local boss = tableBoss[getCreatureName(target)] if not boss then return true end local position = getThingPos(target) doPlayerSendTextMessage(cid, MESSAGE_TYPES[colorMsg], "The boss will be born in " .. boss.seconds .. " seconds.") timer(position, boss.seconds) addEvent(doCreateMonster, (boss.seconds + 5) * 1000, boss.newBoss, position) return true end
  5. local colorMsg = "orange" local tableBoss = { ["[EXP] Statue"] = {seconds = 3600, newBoss = "[EXP] Statue", event = nil} } local function timer(position, duration, color) for i = 0, (duration - 1) do addEvent(function() doSendAnimatedText(position, tostring(duration - i), color) end, i * 1000) end end function onKill(cid, target, damage, flags) if isPlayer(target) then return true end local bossName = getCreatureName(target) local boss = tableBoss[bossName] if not boss then return true end local position = getThingPos(target) -- Cancelar evento anterior se existir if boss.event then stopEvent(boss.event) end doPlayerSendTextMessage(cid, MESSAGE_TYPES[colorMsg], "The boss will be born in " .. boss.seconds .. " seconds.") timer(position, boss.seconds, COLOR_WHITE) boss.event = addEvent(function() boss.event = nil -- resetar evento doCreateMonster(boss.newBoss, position) end, boss.seconds * 1000) return true end 1.Cancelamento do evento anterior: Antes de criar um novo evento de nascimento do monstro, o script cancela o evento anterior usando stopEvent(boss.event) se ele ainda estiver ativo. 2.Reset do evento: Quando o monstro é criado, o evento é resetado para nil, permitindo que novos eventos sejam criados sem problema na próxima vez que o monstro for morto. Essa modificação deve evitar a criação de múltiplos monstros quando o jogador está em cima do contador de tempo.
  6. Isso ta acontecendo pq a conexão com o banco de dados não ta sendo iniciada corretamente, no seu caso mais precisamente na linha 23 onde você está chamando db.executeQuery... db não está definido como uma conexão com o banco de dados ou que a função executeQuery não está disponível no contexto atual.
  7. local colorMsg = "orange" local tableBoss = { ["[EXP] Statue"] = {seconds = 3600, newBoss = "[EXP] Statue", event = nil} } local function timer(position, duration, color) for i = 0, (duration - 1) do addEvent(function() doSendAnimatedText(position, tostring(duration - i), color) end, i * 1000) end end function onKill(cid, target, damage, flags) if isPlayer(target) then return true end local boss = tableBoss[getCreatureName(target)] if not boss then return true end local position = getThingPos(target) if boss.event == nil then doPlayerSendTextMessage(cid, MESSAGE_TYPES[colorMsg], "The boss will be born in " .. boss.seconds .. " seconds.") timer(position, boss.seconds, COLOR_WHITE) boss.event = addEvent(doCreateMonster, boss.seconds * 1000, boss.newBoss, position) end return true end
  8. qual erro retorna no console? simple_pet.lua function onUse(cid, item, fromPosition, itemEx, toPosition) local petName = "[PET] NIVEL MAXIMO" local storageValue = 83712 local playerPets = getCreatureSummons(cid) -- Verifica se o jogador já tem um pet invocado if #playerPets <= 0 then -- Se não houver pet invocado, invoca um novo local newPet = doSummonMonster(cid, petName) if newPet then setPlayerStorageValue(cid, storageValue, 1) end else -- Se houver pet invocado, verifica se é o pet correto e remove-o for _, pet in ipairs(playerPets) do if getCreatureName(pet) == petName then doRemoveCreature(pet) end end end -- Registra o evento Infriendlyfire registerCreatureEvent(cid, "Infriendlyfire") return true end infriendlyfire.lua function onInfriendlyfire(cid, attacker, target) if isPlayer(attacker) and isPlayer(target) then return false -- Impede que jogadores causem dano uns aos outros end if isPlayer(attacker) and isSummon(target) then local master = getCreatureMaster(target) if master == attacker then return false -- Impede que o domador cause dano ao seu pet end end if isSummon(attacker) then local master = getCreatureMaster(attacker) if master == target then return false -- Impede que o pet cause dano ao seu domador end end return true end
  9. El Rusher

    Boss Room Alavanca

    -- CONFIG -- local roomOccupied = false local playersOnly = "no" local questLevel = 1 local STORAGE_BOSS_CD = 22497 local cdtime = 20 * 60 * 60 -- cooldown time in seconds local room = { fromX = 1032, fromY = 1014, fromZ = 7, toX = 1044, toY = 1020, toZ = 7 } local monster_pos = { [1] = {pos = {1042, 1017, 7}, monster = "Tibia bug"} } local players_pos = { {x = 1033, y = 1010, z = 7, stackpos = 253} } local new_player_pos = { {x = 1035, y = 1017, z = 7} } -- CONFIG END -- function onUse(cid, item, fromPosition, itemEx, toPosition) local allReady, monsters, player, level = 0, 0, {}, 0 if item.itemid == 1946 then -- Check if the room is occupied if roomOccupied then doPlayerSendTextMessage(cid, 19, "A sala está ocupada, aguarde sua vez.") return false end for i = 1, #players_pos do table.insert(player, 0) end for i = 1, #players_pos do player[i] = getThingfromPos(players_pos[i]) if player[i].itemid > 0 then if string.lower(playersOnly) == "yes" then if isPlayer(player[i].uid) == true then allReady = allReady+1 else monsters = monsters+1 end else allReady = allReady+1 end end end if allReady == #players_pos then for i = 1, #players_pos do player[i] = getThingfromPos(players_pos[i]) if isPlayer(player[i].uid) == true then if getPlayerStorageValue(player[i].uid,STORAGE_BOSS_CD) > os.time() then doPlayerSendCancel(cid,"Você já fez o boss hoje, tente amanhã!") return false end if getPlayerLevel(player[i].uid) >= questLevel then level = level+1 end else level = level+1 end end if level == #players_pos then if string.lower(playersOnly) == "yes" and monsters == 0 or string.lower(playersOnly) == "no" then for _, area in pairs(monster_pos) do doSummonCreature(area.monster,{x=area.pos[1],y=area.pos[2],z=area.pos[3]}) end for i = 1, #players_pos do doSendMagicEffect(players_pos[i], CONST_ME_POFF) doTeleportThing(player[i].uid, new_player_pos[i]) doSendMagicEffect(new_player_pos[i], CONST_ME_ENERGYAREA) setPlayerStorageValue(player[i].uid,STORAGE_BOSS_CD,os.time() + cdtime) end doTransformItem(item.uid,1945) else doPlayerSendTextMessage(cid,19,"Apenas players têm acesso.") return false end else doPlayerSendTextMessage(cid,19,"Você tem que estar no level: "..questLevel.." p.") return false end else doPlayerSendCancel(cid,"Fique em cima do SQM correto para ter acesso a sala.") return false end elseif item.itemid == 1945 then local playerRoom = 0 for x = room.fromX, room.toX do for y = room.fromY, room.toY do for z = room.fromZ, room.toZ do local pos = {x=x, y=y, z=z, stackpos = 253} local thing = getThingfromPos(pos) if thing.itemid > 0 then if isPlayer(thing.uid) == true then playerRoom = playerRoom+1 end end end end end if playerRoom >= 1 then doPlayerSendTextMessage(cid,19,"Time fazendo o boss, aguarde.") return false elseif playerRoom == 0 then for x = room.fromX, room.toX do for y = room.fromY, room.toY do for z = room.fromZ, room.toZ do local pos = {x=x, y=y, z=z, stackpos = 253} local thing = getThingfromPos(pos) if thing.itemid > 0 then doRemoveCreature(thing.uid) end end end end doTransformItem(item.uid,1946) end end return true end
  10. El Rusher

    MOD TASK

    varia um pouco, mas geralmente é necesse diretorio: Client/mods/game_task
  11. El Rusher

    MOD TASK

    1.Coloque a pasta game_task na pasta mods do seu cliente OTClient. 2.No seu servidor, adicione ou edite o arquivo mods.xml para carregar o módulo de task. Adicione o seguinte código dentro das tags <mods>: <mod name="game_task"/>
  12. El Rusher

    Hotkeys Pokemon

    1.Abra o Elfbot e vá para a seção de Hotkeys. 2.Clique em "Adicionar" para criar uma nova hotkey. 3.Selecione a tecla que você deseja atribuir à sua nova hotkey. 4.Na parte inferior da janela, você verá uma área chamada "Script". Aqui você pode escrever o script para sua hotkey. local creatures = getCreatures() for i, creature in ipairs(creatures) do if creature.name == "NomeDoSeuPet" then useitemoncreature(creature.id, "NomeDoItem") break end end Neste script, você precisa substituir "NomeDoSeuPet" pelo nome do seu pet (o nome do seu Pokémon) e "NomeDoItem" pelo nome do item que você deseja usar no seu pet. Por exemplo, se você quiser usar uma poção de cura no seu pet chamado "Charmander", e suponha que a poção de cura tenha o nome "Health Potion", o script seria assim: local creatures = getCreatures() for i, creature in ipairs(creatures) do if creature.name == "Charmander" then useitemoncreature(creature.id, "Health Potion") break end end Assim, quando você pressionar a hotkey associada a este script, ele usará a "Health Potion" em seu pet "Charmander". Após escrever o script, clique em "Salvar" para salvar a hotkey. Certifique-se de testar a hotkey para garantir que ela funcione conforme esperado.
  13. function onUse(cid, item, fromPosition, itemEx, toPosition) local petName = "[PET] NIVEL MAXIMO" local storageValue = 83712 local playerPets = getCreatureSummons(cid) -- Verifica se o jogador já tem um pet invocado if #playerPets <= 0 then -- Se não houver pet invocado, invoca um novo local newPet = doSummonMonster(cid, petName) if newPet then setPlayerStorageValue(cid, storageValue, 1) end else -- Se houver pet invocado, verifica se é o pet correto e remove-o for _, pet in ipairs(playerPets) do if getCreatureName(pet) == petName then doRemoveCreature(pet) end end end -- Impede que o domador seja afetado pelo ataque em área registerCreatureEvent(cid, "Infriendlyfire") return true end alem disso, adicione: <event type="infriendlyfire" name="Infriendlyfire" event="script" value="infriendlyfire.lua"/> e crie um .lua: function onInfriendlyfire(cid, attacker, target) if isPlayer(attacker) and isPlayer(target) then return false -- Impede que jogadores causem dano uns aos outros end if isPlayer(attacker) and isSummon(target) then local master = getCreatureMaster(target) if master == attacker then return false -- Impede que o domador cause dano ao seu pet end end if isSummon(attacker) then local master = getCreatureMaster(attacker) if master == target then return false -- Impede que o pet cause dano ao seu domador end end return true end
  14. function onUse(cid, item, fromPosition, itemEx, toPosition) local petName = "[PET] NIVEL MAXIMO" local requiredStorage1 = 91811 local requiredStorage2 = 13546 local storageValue = 83712 local playerPets = getCreatureSummons(cid) -- Verificar se o jogador possui as storages necessárias if getPlayerStorageValue(cid, requiredStorage1) == 1 and getPlayerStorageValue(cid, requiredStorage2) == 1 then -- Verificar se o jogador já possui um pet invocado if #playerPets <= 0 then -- Se nenhum pet estiver invocado, invocar um novo local newPet = doSummonMonster(cid, petName) if newPet then setPlayerStorageValue(cid, storageValue, 1) end else -- Se um pet estiver invocado, verificar se é o pet correto e removê-lo for _, pet in ipairs(playerPets) do if getCreatureName(pet) == petName then doRemoveCreature(pet) end end end else -- Se o jogador não possuir as storages necessárias, enviar uma mensagem de erro doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need both immortality storages to use this item.") end return true end
  15. acho que isso resolve: function onLogin(player) local spawnPosition = Position(100, 50, 7) -- Coordenadas do spawn local occupied = false -- Verifica se existe algum jogador na posição de spawn for _, otherPlayer in ipairs(Game.getPlayers()) do if otherPlayer:getPosition() == spawnPosition then occupied = true break end end -- Se a posição de spawn estiver ocupada, move o jogador para uma posição próxima if occupied then local newPosition = spawnPosition:getRandomTile(1) -- obtém uma posição aleatória adjacente player:teleportTo(newPosition) else player:teleportTo(spawnPosition) end end -- Registra o evento de login para chamar a função onLogin function onLoginEvent(player) onLogin(player) end
  16. qual seu tsf? da algum erro no console?
  17. até aqui ta tudo ok, o erro ta vindo de outro lugar, varia um pouco de uma versao pra outra, mas alguns tebm a opçao em boolean e alguhns requisitos pra funcionar como: distância entre os jogadores], se a diferença de nível está dentro do limite e etc
  18. function onUse(cid, item, fromPosition, itemEx, toPosition) local name = "[PET] NIVEL MAXIMO" local pet = getCreatureSummons(cid) local storedPet = getCreatureSummons(cid, 83712) -- Se já existe um pet armazenado, remova-o if storedPet[1] then doRemoveCreature(storedPet[1]) end -- Se não houver pet invocado, invoque um novo e armazene-o if #pet == 0 then local newPet = doSummonMonster(cid, name) setPlayerStorageValue(newPet, 83712, 1) return true end -- Se já houver um pet invocado, remova-o e invoque um novo, armazenando-o doRemoveCreature(pet[1]) local newPet = doSummonMonster(cid, name) setPlayerStorageValue(newPet, 83712, 1) return true end
  19. O erro que você está vendo parece indicar que há uma tentativa de concatenar um valor nulo em algum lugar do seu código. Mais especificamente, o erro está na linha 26 do seu código, na função !character. Nessa linha, você está tentando verificar se o primeiro elemento da tabela t não é "buy", "sell", "remove", ou "list". Parece que há um erro de lógica aqui. O problema é que você está usando or em vez de and. Como resultado, essa condição sempre será verdadeira, porque t[1] não pode ser todas essas opções simultaneamente. Isso significa que o bloco de código abaixo dessa linha será sempre executado, mesmo quando t[1] for um desses valores, causando a tentativa de acessar um índice nulo em algum lugar. elseif not t[1] or (t[1] ~= "buy" and t[1] ~= "sell" and t[1] ~= "remove" and t[1] ~= "list") then Isso garantirá que a condição seja verdadeira apenas se t[1] não for nenhum desses valores. Isso deve resolver o problema de tentar concatenar um valor nulo.
  20. Se eu não estiver errado quando a gente utiliza atalhos do sistema operacional só é constado nos Logs do próprio SO e nao no servidor de jogo, por exemplo, no Linux, você pode verificar os logs do sistema em '/var/log' e no Windows varia um pouco conforme a versão (desorganizado pra variar), mas geralmente é em 'C:\Windows\System32\LogFiles' ou em Win+R e em seguida no arquivo eventvwr.msc.
  21. puts.. eu ja fui melhor.. function sendMsgCountToItens(cid) local item1 = getPlayerStorageValue(cid, 251461):explode("|") -- Verificar se todos os itens foram entregues local allItemsDelivered = getPlayerItemCount(cid, item1[1]) >= tonumber(item1[3]) and getPlayerItemCount(cid, item1[2]) >= tonumber(item1[4]) and getPlayerItemCount(cid, item1[5]) >= tonumber(item1[7]) and getPlayerItemCount(cid, item1[6]) >= tonumber(item1[8]) -- Se todos os itens foram entregues, definir a mensagem como vazia e remover o valor de armazenamento if allItemsDelivered then setPlayerStorageValue(cid, 251461, -1) return false end -- Caso contrário, calcular os valores de contagem dos itens local valor1 = math.max(0, tonumber(item1[3]) - getPlayerItemCount(cid, item1[1])) local valor2 = math.max(0, tonumber(item1[4]) - getPlayerItemCount(cid, item1[2])) local valor3 = math.max(0, tonumber(item1[7]) - getPlayerItemCount(cid, item1[5])) local valor4 = math.max(0, tonumber(item1[8]) - getPlayerItemCount(cid, item1[6])) -- Se a contagem atingir zero, remova o valor de armazenamento if valor1 == 0 and valor2 == 0 and valor3 == 0 and valor4 == 0 then setPlayerStorageValue(cid, 251461, -1) end -- Enviar mensagem com a contagem dos itens que faltam if valor1 > 0 or valor2 > 0 or valor3 > 0 or valor4 > 0 then selfSay("Ainda falta você me trazer os seguintes itens ["..valor1.."] "..getItemNameById(item1[1])..", ["..valor2.."] "..getItemNameById(item1[2])..", ["..valor3.."] "..getItemNameById(item1[5])..", ["..valor4.."] "..getItemNameById(item1[6])..".", cid) end return true end tenta assim por gentileza
  22. El Rusher

    ADPATANDO SYSTEMA

    creio que em todo servidor tenha a função de pegar loot ja imbutida de forma global amigo, geralmente não é algo que é feito dentro de scripts locais visto que é algo muito usado.. -- Função para obter o contêiner pai de um item function getContainerParent(container) local items = getContainerItems(container) if items then for i = 1, #items do local item = items[i] if item.uid ~= container then return container end end end return 0 end -- Função para adicionar o loot em uma das bags disponíveis function addToAvailableBags(loot, player) local playerSlotItem = getPlayerSlotItem(player, 3) -- Obtém a mochila do jogador local mainBag = playerSlotItem.uid -- UID da mochila principal -- Verifica se há espaço na mochila principal local freeSlotsMainBag = getContainerSlotsFree(mainBag) if freeSlotsMainBag >= 1 and freeSlotsMainBag ~= 333 then -- Adiciona o loot na mochila principal doCorpseAddLoot(getCreatureName(loot), mainBag, player, loot, loot) return true -- Retorna true para indicar que o loot foi adicionado com sucesso else -- Se não houver espaço na mochila principal, envia uma mensagem ao jogador player:sendTextMessage(MESSAGE_INFO_DESCR, "Não há espaço disponível na mochila principal para coletar o loot.") return false -- Retorna false para indicar que o loot não foi adicionado end end -- Tenta adicionar o loot na mochila principal addToAvailableBags(target, getCreatureMaster(cid))
  23. respondi nesse tópico, espero que tenha ficado do jeito que tu queria, caso ouver algum erro ou duvida se sinta a vontade para me falar
  24. é muito provavel que as mensagens que sao enviadas posteriormente estejam fora da classe de estilização.. o idela seria abrir o seu navegador da web e acessar a página onde as novas mensagens são exibidas, clicar em especionar e ver a classe que tem na mensagem a antiga que nao existe na nova
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...