Ir para conteúdo

El Rusher

Cavaleiro
  • Total de itens

    185
  • Registro em

  • Última visita

  • Dias Ganhos

    24

Tudo que El Rusher postou

  1. se era pra ser uma imagem esta com erro meu amigo
  2. 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.
  3. 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.
  4. 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
  5. 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
  6. 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
  7. El Rusher

    MOD TASK

    varia um pouco, mas geralmente é necesse diretorio: Client/mods/game_task
  8. 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"/>
  9. 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.
  10. 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
  11. 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
  12. 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
  13. qual seu tsf? da algum erro no console?
  14. 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
  15. 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
  16. 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.
  17. 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.
  18. 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
  19. 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))
  20. 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
  21. é 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
  22. é pra ser um top 10? solta o script ai que eu adapto pra vc
  23. O erro que você está recebendo indica que uma coluna chamada 'ordering' não foi encontrada na tabela do banco de dados com a qual o plugin está tentando interagir. Isso está causando uma exceção PDO no arquivo OTS_Base_DB.php
  24. da sim, se eu nao to errado fica no arquivo const.h, procure por constantes que possam estar relacionadas ao limite de shooteffects. Você pode procurar por palavras-chave como SHOOT_EFFECTS, MISSILES, MAX_MISSILES, ou algo similar. Se você encontrar uma constante que parece definir o limite de shooteffects, você pode modificá-la para aumentar o limite. Por exemplo, se você encontrar algo como #define MAX_MISSILES 41, você pode alterar o valor 41 para o novo limite desejado.
  25. creio que até da, mas a unica maneira seria re-configurando a source e compilando novamente
  • Quem Está Navegando   0 membros estão online

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