Ir para conteúdo
  • Cadastre-se

Posts Recomendados

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)
Link para o post
Compartilhar em outros sites

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

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Gustavo Ferreira
      Olá galerinha do TibiaKinG,
       

       
       
       
       
       
      Hoje trago a vocês o script do Castle War 24horas vendido por algumas empresas, Vou postar o script e vocês configurem do gosto de vocês!
       
      Segue Abaixo o Link
       
       
      #Caracteristicas
       
      - Disponível para Linux ou Windows;
      - Mapa completo (Castle);
      - Avisos de invasores ao castle (2 configurados);
      - Somente players com guild tem acesso;
      - Fácilidade na configuração apenas em um arquivo;
      - Configuração de início por dia e hora;
       
       
      Link >  http://www.mediafire.com/download/99n461m4bbrbi46/[DS]_Castle_War.rar
       
       
      Não dou suporte para o script, o mesmo já foi testado e funciona, Configurem do seus gostos!
       
       
      Att~~Gustavo
    • Por Danyel Varejao
      Fala galerinha do TK, aqui vai um script muito útil para vários servidores. O script serve para salvar o player e a house do mesmo, utilizando o comando !save.
      O script foi testado em OTXServer 2.
      local Configs = { Exhausted = 180, Storage_Exhausted = 5000001, Messages = { SALVED = "You character has been salved.", EXHAUST = "You need wait %d seconds to save again.", }, } local function doSavePlayerAndHouse(cid) doPlayerSave(cid) if getHouseByPlayerGUID(getPlayerGUID(cid)) then doSaveHouse(getHouseByPlayerGUID(getPlayerGUID(cid))) end return true end function onSay(cid, words, param) if getPlayerStorageValue(cid, Configs.Storage_Exhausted) >= os.time() then doPlayerSendCancel(cid, string.format(Configs.Messages.EXHAUST, getPlayerStorageValue(cid, Configs.Storage_Exhausted) - os.time())) return true end doSavePlayerAndHouse(cid) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, Configs.Messages.SALVED) setPlayerStorageValue(cid, Configs.Storage_Exhausted, os.time() + Configs.Exhausted) return true end Tag do talkactions.xml
      <talkaction words="/save;!save" event="script" value="SavePlayers.lua"/>  
    • Por Belmont
      Hoje venho aqui trazer a solução pra vocês que colam scripts e jogam em seus arquivos, essa solução nada mais é que remover os caracteres especias que vem junto quando você usa o famoso comando CTRL+C e CTRL+V, esse erro se apresenta de várias formas.
       
      Para resolver, basta você ir no diretório do arquivo abri-lo e ir até a linha que mostra no executável(distro) e procurar o caractere especial, LEMBRANDO que ele pode vim oculto, você ira precisar procurar em letra por letra, no vídeo abaixo explica como procurar o caractere especial oculto letra por letra. O que eu fiz ai no vídeo foi somente apagar o caractere oculto.                                      
       
      Os caracteres ocultos, eles podem serem visualizados com mais facilidade ou com mais dificuldade, no caso desse vídeo, foi bem fácil de visualizar, mais em fim, é só você ir até a linha que mostra no executável(distro) vai no final do código e vem apertando a tecla na direção esquerda até acha-lo.
                                                                                           
    • Por Cat
      Essa resolução visa reduzir o lag na hora de mapear.
      Dicas:
      Leve em consideração que um mapa de 100MB necessita em torno de 4GB de memória, um de 200MB, 8GB e assim vai. Mapear com minimap aberto ajuda a travar o mapa. Quando for mapear, feche outros aplicativos. Faça backups frequentes, (Se usar um CPU cuidado com quedas de energia, pode corromper seu mapa ao desligar). Use a última versão lançada para evitar erros.  
      Mas como posso fazer para que o Map Editor trave menos?
      Com o Remeres aberto, vá em File - Preferences - General. Em File – Preferences – General você deverá configurar Undo Queue Size: Aqui vai o valor (em MB) da metade da memória ram de seu pc (caso queira coloque mais). Undo maximum memory size (MB):  Tamanho máximo de memória que o RME poderá utilizar, aumente para metade da memória ram de seu pc (caso queira coloque mais). Worker Threads: Número de núcleos de processador que o RME pode utilizar, nessa parte depende se seu processador, caso seu pc só tenha um núcleo deixe apenas um, caso tenha 2, deixe 2 e se for maior que isso deixe o tanto que você preferir.  
      Aplique, reinicie o editor e teste as novas configurações. Se ainda não funcionar, faça uma limpeza de hardware/software, atualize seus drivers ou compre um PC melhor.
    • Por LuXcaS
      Bom dia,
       
      Alguém saberia me informar porque acontece esse erro?
       
      E tentar me ajudar a solucionar.
       
      Fico grato!

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo