Ir para conteúdo

Featured Replies

Postado
Em 26/01/2023 em 17:57, yuriowns disse:

Salve rapazeada do tk, tranquilo? gostaria de saber se alguém consegue fazer um script pra mim, minha ideia é assim: queria que tivesse um item específico que quando o player usasse ele, spawnasse um monstro do lado do player, porém todos os SQM ao redor do player teriam que estar livres, não podendo ter parede, porta, etc... E a partir do momento que usasse esse item, ele duraria 10 horas na bp do player, para caso o monstro fosse morto ele poderia spawnar novamente e após as 10 horas o item sumisse... Não sei se ficou confuso, mas caso alguém conseguir ia salvar demais, qualquer coisa explico melhor, agradeço desde já pela atenção!!

Testa:
 

Spoiler

local MONSTER_ID = Demon -- Substitua pelo nome do monstro que deseja spawnar
local ITEM_ID = 456 -- Substitua pelo ID do item que irá spawnar o monstro
local ITEM_DURATION = 36000 -- Tempo em segundos (10 horas)

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
  if target.itemid == ITEM_ID then
    local playerPos = player:getPosition()
    local surroundings = {{x=playerPos.x+1, y=playerPos.y, z=playerPos.z},
                           {x=playerPos.x-1, y=playerPos.y, z=playerPos.z},
                           {x=playerPos.x, y=playerPos.y+1, z=playerPos.z},
                           {x=playerPos.x, y=playerPos.y-1, z=playerPos.z},
                           {x=playerPos.x, y=playerPos.y, z=playerPos.z+1},
                           {x=playerPos.x, y=playerPos.y, z=playerPos.z-1}}
    for _, pos in pairs(surroundings) do
      local tile = Tile(pos)
      if not tile then
        player:sendCancelMessage("Algo deu errado. Tente novamente.")
        return true
      elseif tile:getThingCount() > 0 or not tile:isWalkable() or tile:getGround():getId() == 0 then
        player:sendCancelMessage("Não há espaço suficiente para spawnar o monstro.")
        return true
      end
    end
    Game.createMonster(MONSTER_ID, toPosition)
    item:remove(1)
    player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você usou o item e um monstro foi spawnado!")
    addEvent(removeItem, ITEM_DURATION * 1000, ITEM_ID, player:getName())
  end
  return true
end

function removeItem(itemId, playerName)
  local player = Player(playerName)
  if not player then return true end
  local bp = player:getSlotItem(CONST_SLOT_BACKPACK)
  if not bp then return true end
  local item = bp:getItemById(itemId)
  if item then item:remove(1) end
  player:sendTextMessage(MESSAGE_INFO_DESCR, "O item que spawna monstros acabou de desaparecer.")
end
 

 

  • Respostas 6
  • Visualizações 626
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

Postado
  • Autor
22 horas atrás, Maniaco disse:

Testa:
 

  Ocultar conteúdo

local MONSTER_ID = Demon -- Substitua pelo nome do monstro que deseja spawnar
local ITEM_ID = 456 -- Substitua pelo ID do item que irá spawnar o monstro
local ITEM_DURATION = 36000 -- Tempo em segundos (10 horas)

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
  if target.itemid == ITEM_ID then
    local playerPos = player:getPosition()
    local surroundings = {{x=playerPos.x+1, y=playerPos.y, z=playerPos.z},
                           {x=playerPos.x-1, y=playerPos.y, z=playerPos.z},
                           {x=playerPos.x, y=playerPos.y+1, z=playerPos.z},
                           {x=playerPos.x, y=playerPos.y-1, z=playerPos.z},
                           {x=playerPos.x, y=playerPos.y, z=playerPos.z+1},
                           {x=playerPos.x, y=playerPos.y, z=playerPos.z-1}}
    for _, pos in pairs(surroundings) do
      local tile = Tile(pos)
      if not tile then
        player:sendCancelMessage("Algo deu errado. Tente novamente.")
        return true
      elseif tile:getThingCount() > 0 or not tile:isWalkable() or tile:getGround():getId() == 0 then
        player:sendCancelMessage("Não há espaço suficiente para spawnar o monstro.")
        return true
      end
    end
    Game.createMonster(MONSTER_ID, toPosition)
    item:remove(1)
    player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você usou o item e um monstro foi spawnado!")
    addEvent(removeItem, ITEM_DURATION * 1000, ITEM_ID, player:getName())
  end
  return true
end

function removeItem(itemId, playerName)
  local player = Player(playerName)
  if not player then return true end
  local bp = player:getSlotItem(CONST_SLOT_BACKPACK)
  if not bp then return true end
  local item = bp:getItemById(itemId)
  if item then item:remove(1) end
  player:sendTextMessage(MESSAGE_INFO_DESCR, "O item que spawna monstros acabou de desaparecer.")
end
 

 

já consegui amigo, agradeço pela ajuda!

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo