Ir para conteúdo

El Rusher

Cavaleiro
  • Total de itens

    156
  • Registro em

  • Última visita

  • Dias Ganhos

    19

Tudo que El Rusher postou

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

    MOD TASK

    varia um pouco, mas geralmente é necesse diretorio: Client/mods/game_task
  4. 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"/>
  5. 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.
  6. 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
  7. 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
  8. 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
  9. qual seu tsf? da algum erro no console?
  10. 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
  11. 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
  12. 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.
  13. 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.
  14. 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
  15. 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))
  16. 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
  17. é 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
  18. é pra ser um top 10? solta o script ai que eu adapto pra vc
  19. 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
  20. 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.
  21. creio que até da, mas a unica maneira seria re-configurando a source e compilando novamente
  22. qual função do seu servidor adicina loot na bag e os parametros dela? deixei pra tu adaptar com comentarios no script dq deve ser alterado: -- 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 bags = {} -- Lista para armazenar as bags disponíveis -- Adiciona a mochila do jogador à lista de bags table.insert(bags, playerSlotItem.uid) -- Verifica se a mochila do jogador está dentro de outra bag local container = playerSlotItem.uid while container ~= 0 do container = getContainerParent(container) if container ~= 0 then table.insert(bags, container) -- Adiciona a bag à lista de bags end end -- Tenta adicionar o loot em cada bag disponível for _, bag in ipairs(bags) do local freeSlots = getContainerSlotsFree(bag) if freeSlots >= 1 and freeSlots ~= 333 then -- Aqui você deve substituir 'doCorpseAddLoot' pela função adequada para adicionar loot na bag -- Certifique-se de que a função esteja corretamente definida e acessível no contexto do seu script -- doCorpseAddLoot(getCreatureName(loot), bag, player, loot, loot) -- Adiciona o loot na bag return true -- Retorna true para indicar que o loot foi adicionado com sucesso end end return false -- Retorna false se não foi possível adicionar o loot em nenhuma bag end -- Verifica se o jogador é premium e está usando o auto loot if isPremium(getCreatureMaster(cid)) and isCollectAll(getCreatureMaster(cid)) then -- Tenta adicionar o loot em uma das bags disponíveis if not addToAvailableBags(target, getCreatureMaster(cid)) then -- Aqui você deve substituir 'doCorpseAddLoot' pela função adequada para adicionar loot na bag -- Certifique-se de que a função esteja corretamente definida e acessível no contexto do seu script -- doCorpseAddLoot(getCreatureName(target), corpse, getCreatureMaster(cid), target, corpse) -- Adiciona o loot na bag original se não houver outras disponíveis end else -- Aqui você deve substituir 'doCorpseAddLoot' pela função adequada para adicionar loot na bag -- Certifique-se de que a função esteja corretamente definida e acessível no contexto do seu script -- doCorpseAddLoot(getCreatureName(target), corpse, getCreatureMaster(cid), target, corpse) -- Adiciona o loot na bag original se o jogador não for premium ou não estiver usando o auto loot end
  23. Isso pode acontecer se a função não estiver disponível no arquivo de biblioteca onde está o seu script. Vamos tentar fazer isso localmente: -- 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 isInContainer(item.uid) 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 bags = {} -- Lista para armazenar as bags disponíveis -- Adiciona a mochila do jogador à lista de bags table.insert(bags, playerSlotItem.uid) -- Verifica se a mochila do jogador está dentro de outra bag local container = playerSlotItem.uid while container ~= 0 do container = getContainerParent(container) if container ~= 0 then table.insert(bags, container) -- Adiciona a bag à lista de bags end end -- Tenta adicionar o loot em cada bag disponível for _, bag in ipairs(bags) do local freeSlots = getContainerSlotsFree(bag) if freeSlots >= 1 and freeSlots ~= 333 then doCorpseAddLoot(getCreatureName(loot), bag, player, loot, loot) -- Adiciona o loot na bag return true -- Retorna true para indicar que o loot foi adicionado com sucesso end end return false -- Retorna false se não foi possível adicionar o loot em nenhuma bag end -- Verifica se o jogador é premium e está usando o auto loot if isPremium(getCreatureMaster(cid)) and isCollectAll(getCreatureMaster(cid)) then -- Tenta adicionar o loot em uma das bags disponíveis if not addToAvailableBags(target, getCreatureMaster(cid)) then doCorpseAddLoot(getCreatureName(target), corpse, getCreatureMaster(cid), target, corpse) -- Adiciona o loot na bag original se não houver outras disponíveis end else doCorpseAddLoot(getCreatureName(target), corpse, getCreatureMaster(cid), target, corpse) -- Adiciona o loot na bag original se o jogador não for premium ou não estiver usando o auto loot end
  24. Esse erro geralmente indica que o cliente está recebendo um pacote (mensagem) do servidor com um código de operação (opcode) não reconhecido ou não suportado. Isso pode acontecer se você tentar enviar dados personalizados do servidor para o cliente que o cliente não sabe como processar. Se você puder fornecer mais detalhes sobre as alterações específicas que você fez no servidor e no cliente para aumentar o "miss" e como elas estão sendo comunicadas entre si, posso ajudar a identificar a causa específica do erro e sugerir possíveis soluções.
  25. Ao gerar a chave de recuperação, armazene-a no banco de dados associada à conta de usuário. Antes de gerar uma nova chave, verifique se não há uma chave existente para aquela conta.
  • Quem Está Navegando   0 membros estão online

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