Ir para conteúdo

Teleportar todos da guild para seu lado


Killua

Posts Recomendados

Esse código funciona assim: O player (somente líder da guild) da use no item escolhido e todos da guild recebem uma mensagem assim "PLAYER líder da guild está te chamando para o lado dele, você quer ir? Diga !yes para aceitar. Você tem X segundos para aceitar.". Depois disso, todos os membros da guild tem alguns segundos (configurável) para aceitar. Todos que aceitarem, vão ser teleportados para o lado do líder.

 

Eu fiz ele para concorrer no OMS 5.

 

Descrição:

Ao usar um certo item, o jogador irá convidar todos os membros de sua guild para serem teleportados para o seu lado. Aquele que aceitarem, serão teleportados após alguns segundos (configurável).

- Somente o líder da guild pode usar o item.

- Após ter usado uma vez, é preciso aguardar alguns segundos (configurável) para usar novamente.

- Jogadores que estiverem Pz Locked (em combate com outros jogadores) não serão teleportados.

- Vários itens poderão ter essa funcionalidade, pois é usado com actionID.

 

 

Instalando:

 

Crie guildCall.lua em data/actions/scripts e coloque:

 

 


-- Script feito por Killua, antigo amoeba13
-- #OMS 5
local tempo = 60 -- Tempo que os players tem para aceitar
local cooldown = 60 -- Cooldown para chamar os membros novamente

function getOnlineGuildMembersByRank(guildId, rank, selectLowerRanks) -- Função feita pelo Omega para o AGS.
    if not rank then
        rank = 3
        selectLowerRanks = true
    end
    local list = {}
    for _, pid in pairs(getPlayersOnline()) do
        if getPlayerGuildId(pid) == guildId then
            local playerRank = getPlayerGuildLevel(pid)
            if playerRank == rank or (selectLowerRanks and playerRank <= rank) then
                table.insert(list, pid)
            end
        end
    end
    return list
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if getPlayerStorageValue(cid, 281921) > os.time() then
        doPlayerSendCancel(cid, "Espere mais " .. getPlayerStorageValue(cid, 281921) - os.time() .. " segundos para chamar sua guld novamente.")
       return true
   end
   
   if getPlayerGuildLevel(cid) < 3 then
       doPlayerSendCancel(cid, "Somente o lider da guild pode chamar todos os membros.")
       return true
   end

   local guildMembers = getOnlineGuildMembersByRank(getPlayerGuildId(cid), 2, true)
   doPlayerSetStorageValue(cid, 281921, os.time() + cooldown)
   doPlayerSendTextMessage(cid, 25, "Voce chamou todos os membros da sua guild para virem aqui. Em " .. tempo .. " segundos, todos que aceitarem serao teleportados para ca.")
   for _, membros in ipairs (guildMembers) do
       doPlayerSendTextMessage(membros, MESSAGE_STATUS_CONSOLE_ORANGE, getCreatureName(cid).. " lider da guild esta te chamando para o lado dele, voce quer ir? Diga !yes para aceitar. Voce tem ".. tempo .." segundos para decidir")
       doPlayerSetStorageValue(membros, 380121, os.time() + tempo)
       addEvent(function()
           if getPlayerStorageValue(membros, 125023) == 1 then
               doPlayerSetStorageValue(membros, 125023, 0)
               if not isPlayerPzLocked(membros) then
                   doTeleportThing(membros, fromPosition)
                   doSendMagicEffect(fromPosition, CONST_ME_TELEPORT)
               else 
                   doPlayerSendCancel(membros, "Voce nao foi teleportado pois esta pz locked.")
               end
           end
       end, tempo * 1000)
   end
   return true
end

 

 

 

Em data/actions/actions.xml coloque essa tag:

<action actionid="1433" script="guildCall.lua"/>

Crie guildCall.lua em data/talkactions/scripts e coloque:


function onSay(cid, words, param, channel)
    if getPlayerStorageValue(cid, 380121) < os.time() then
        doPlayerSendCancel(cid, "O tempo para aceitar ja acabou.")
        return true
    end
    
    doPlayerSetStorageValue(cid, 125023, 1)
    doPlayerSendTextMessage(cid, 25, "Voce aceitou ser teleportado! Daqui a " .. getPlayerStorageValue(cid, 380121) - os.time() .. " voce vai ser teleportado.")
    return true
end

Em data/talkactions/talkactions.xml coloca essa tag:

<talkaction words="!yes" event="script" value="guildCall.lua"/>

Coloque o actionID 1433 em todos os itens que poderão ser usados para "chamar" os membros da guild.

Editado por Killua
Link para o comentário
Compartilhar em outros sites

Parabéns pelo código, cara, vejo que está sempre se superando e aprendendo. Continue assim e boa sorte no OMS.

Editado por Omega
Link para o comentário
Compartilhar em outros sites

Muito bom cara, mais tem como Por um Tile especifico, se e o lider tiver encima dele pode chamar se não estiver não pode .

 

(Zeria zonas especiais, para o lider não ficar puxando todo mundo direto)

Link para o comentário
Compartilhar em outros sites

Muito bom cara, mais tem como Por um Tile especifico, se e o lider tiver encima dele pode chamar se não estiver não pode .

 

(Zeria zonas especiais, para o lider não ficar puxando todo mundo direto)

Mas do jeito que está, o líder só pode puxar pelos itens que vc colocar o actionID...

Link para o comentário
Compartilhar em outros sites

 

Muito bom cara, mais tem como Por um Tile especifico, se e o lider tiver encima dele pode chamar se não estiver não pode .

 

(Zeria zonas especiais, para o lider não ficar puxando todo mundo direto)

Mas do jeito que está, o líder só pode puxar pelos itens que vc colocar o actionID...

 

HAHA, Desculpa não tinha reparado

Link para o comentário
Compartilhar em outros sites

gostei da talk, mas retira mto o rpg do server '-'

 

em um global por exemplo, ficaria paia kk

 

mas a ideia é bacana

 

parabéns

 

rep+

Valeu vod... Isso é vdd mas eu fiz ele pensando em usar em eventos tipo Castle War, arenas ou na entrada de algumas quests

Link para o comentário
Compartilhar em outros sites

  • 2 months later...
×
×
  • Criar Novo...