Ir para conteúdo

Featured Replies

Postado

Gente eu queria uma ajuda com esse script, Esse script ao dominar o castelo ele teleporta somente os players que estiver no andar configurado do castelo, Eu queria poder selecionar mais áreas tipo z=7,   z=8,  z=9 etc... Para que quando o player de tal guild dominar todos que estiver no castelo serem teleportados para o templo!.

 

Pfv gente fortalece ae to lançando meu servidor hoje!, Pfv nenhum pedido de ajuda que pedi aqui foi respondido com tanto scripter avançados no tk...

 

Segue o script abaixo.

Citar

local castlearea = {{x = 852, y = 1424, z = 7}, {x = 946, y = 1491, z = 7}}  --- canto superior esquerdo, inferior direito
local newpos = {x=1024,y=1024,z=7} -- posição para onde serão teleportados


function onUse(cid, item, frompos, item2, topos) 
local castle_one_name = "{Under_Castle}"                  -- Nome do castelo 1
local storages = {154154,54321,123123}               -- Storages ( se vc eh iniciante, deixe como está...)
local premio_por_vezes = 15         -- Premio por vezes de conquista de castelo. (1) = Ativo  (0) = Desativa. 
local premio_vezes = 1            -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO.
local premio = 2160                -- ID do Premio
local premio_cont = 1              -- Quantidade do Premio
local premio_reset = 0             -- Resetar o contador do premio depois que atingir a meta?? (1) = SIM  (0) = NAO
local sto_ativ = getGlobalStorageValue(storages[2])
position = getCreaturePosition(cid)

   if isPlayerGuild(cid) == TRUE then
      if sto_ativ == 1 or sto_ativ == -1 then
         guildname = getPlayerGuildName(cid)     
         guild = getPlayerGuildId(cid)               
         guild_sto = getGlobalStorageValue(storages[3])
                  
               if guild ~= guild_sto then            
               setPlayerStorageValue(cid,guild_sto,guild)                      
               if getPlayerStorageValue(cid,storages[1]) == -1 then
                  setPlayerStorageValue(cid,storages[1],0)
               end
               
               sto_vezes = getPlayerStorageValue(cid,storages[1])                   
               
               setGlobalStorageValue(storages[3],getPlayerGuildId(cid))
               setPlayerStorageValue(cid,storages[1], sto_vezes + 1)
               
               sto_vezes_total = getPlayerStorageValue(cid,storages[1])
            
               doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o castelo "..castle_one_name.." para a guild \""..guildname.."\" pela "..sto_vezes_total.."ª vez(s).", 22)
               local playersOnCastle = getAllPlayersInArea(castlearea[1], castlearea[2])
if #playersOnCastle > 0 then
                    for i = 1, #playersOnCastle do
doTeleportThing(playersOnCastle, newpos)
end
                    doSendMagicEffect(newpos, CONST_ME_TELEPORT)
                end
                    
               db.query("UPDATE `guilds` SET `real_castle` = 0;")
               db.query("UPDATE `guilds` SET `real_castle` = 1 WHERE `guilds`.`id` = ".. guild ..";")
               doSendMagicEffect(position, 39)  
                 
                 if premio_por_vezes == 1 then
                    if getPlayerStorageValue(cid,storages[1]) == premio_vezes then
                       if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
                          doBroadcastMessage("O "..getCreatureName(cid).." ganhou uma(o) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!", 21)
                          doPlayerAddItem(cid, premio,premio_cont)
                          doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
                        -----------------------------------------------  --  
                            if premio_reset == 1 then                    --
                               setPlayerStorageValue(cid,storages[1],0)  --  Resetar a contagem
                            end                                          --
                        -----------------------------------------------  --
                        
                       else
                       doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Vamos verificar novamente em 10 segundos!")
                       addEvent(additem,10000,cid,premio,premio_cont,premio_reset)
                       end
                    end                                        
                 end               
            else
              doPlayerSendCancel(cid,"Este castelo ja foi conquistado pela sua guild!")
              doSendMagicEffect(position, 2)
            end
      else
      doPlayerSendCancel(cid,"O sistema está desativado")
      end      
   else
   doPlayerSendCancel(cid,"É nescessario ter guild para dominar o castelo!")
   doSendMagicEffect(position, 2)
   end
end
function additem(cid,premio,premio_cont,premio_reset)
 if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
    doPlayerAddItem(cid, premio,premio_cont)
    doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
     if premio_reset == 1 then
        setPlayerStorageValue(cid,storages[1],0)
     end
    stopEvent(additem)
  else
  doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Verificando novamente em 10 segundos!")
  addEvent(additem,10000,cid)
  end
end
function isPlayerGuild(cid)
if getPlayerGuildName(cid) ~= "" then
return TRUE
else
return FALSE
end
end

function getAllPlayersInArea(fromPosition, toPosition)
    local players = {}
    for _, pid in ipairs(getPlayersOnline()) do
        local f = {x = fromPosition.x, y = fromPosition.y, z = fromPosition.z}
        local t = {x = toPosition.x, y = toPosition.y, z = toPosition.z}
        local min = (fromPosition.z > toPosition.z and toPosition.z or fromPosition.z)
        for index = 0, math.abs(toPosition.z - fromPosition.z) do
            f.z = min + index
            t.z = min + index
            if isInRange(getPlayerPosition(pid), f, t) then
                table.insert(players, pid)
            end
        end    
    end
    return players
end

 

Se estiver na área errada peço perdão e pfv peço que mova!

Editado por Wesley Alexandre2014 (veja o histórico de edições)

Postado

Este tópico foi movido para a área correta. Esta é uma mensagem automática!
Pedimos que leia as regras do fórum!

Spoiler

This topic has been moved to the correct area. This is an automated message!
Please read the forum rules.

 

@Wesley Alexandre2014 na tabela castlearea mude a pos z do topos ou frompos, não importa, então ele vai percorrer todas as posições desde o andar definido, até o próximo andar.

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

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