Ir para conteúdo
  • Cadastre-se

(Resolvido)Modificação pvp system


Ir para solução Resolvido por zipter98,

Posts Recomendados

Fala galerinha, tem esse script abaixo, creaturescripts, o que eu queria é um que ao matar players em X intervalo de tempo aparece a mensagem....

 

 

Matou 1 players seguidos ja aparece a mensagem First kill

Matou 2 players seguidos ja aparece a mensagem Double kill

Matou 3 players seguidos ja aparece a mensagem Multi kill

Matou 4 players seguidos ja aparece a mensagem Ultra kill

Matou 5 players seguidos ja aparece a mensagem Fantastic

Matou 6 players seguidos ja aparece a mensagem Unbelievable

 

Player Fulano matou 3 players seguidos em menos de 3 min, então aparece para todos os jogadores, Fulano - MULTI KILL

Mais se ele matar 2, e se passar dos 3 min, reinicia a contagem, a contagem pode incluir frag, pk, red skull e black skull

local storage = {
kills = 8003
}

local streaks = {
[2] = "DOUBLE KILL!",
[3] = "TRIPLE KILL!",
[5] = "M-M-M-MONSTER KILL!!",
[7] = "RAMPAGE!",
[9] = "UNSTOPPABLE!",
[12] = "HOLY SHIT!",
[15] = "GODLIKE!!"
}

function onKill(cid, target, lastHit)
if isPlayer(cid) and isPlayer(target) then
setPlayerStorageValue(cid, storage.kills, getPlayerStorageValue(cid, storage.kills) + 1)
setPlayerStorageValue(target, storage.kills, 0)
for _, pid in ipairs(getPlayersOnline()) do
local s = {"matou", "cortou em pedaços", "detonou", "humilhou", "Num Quero Falar Mais Nada Pra Foder"}
doPlayerSendChannelMessage(pid, "PVP", "".. getCreatureName(cid) .." ".. s[math.random(1, #s)] .." ".. getCreatureName(target) ..".", TALKTYPE_CHANNEL_Y, 10)
end
local k = streaks[getPlayerStorageValue(cid, storage.kills)]
if k then
doBroadcastMessage(getCreatureName(cid) .. " - ".. k, MESSAGE_INFO_DESCR)
end
end
return true
end

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link para o post
Compartilhar em outros sites
  • Solução

O intervalo de tempo é em segundos.

local tab = {
    --[kill] = {intervalo_de_tempo, "mensagem"}     
    [1] = {nil, "FIRST KILL!"},
    [2] = {10, "DOUBLE KILL!"},
}
function onKill(cid, target)
    if isPlayer(cid) and isPlayer(target) then
        local storage = getPlayerStorageValue(cid, 9018)
        local kills = getPlayerStorageValue(cid, 9019) > -1 and getPlayerStorageValue(cid, 9019) + 1 or 1
        setPlayerStorageValue(cid, 9019, kills)
        setPlayerStorageValue(target, 9019, -1)
        if tab[kills] then
            if kills > 1 then
                if storage < os.time() then      
                    setPlayerStorageValue(cid, 9019, -1)
                    setPlayerStorageValue(cid, 9018, -1)
                    return true
                end    
            end
            doBroadcastMessage(getCreatureName(cid).. " - "..tab[kills][2], MESSAGE_INFO_DESCR)
            if tab[kills + 1] then
                setPlayerStorageValue(cid, 9018, os.time() + tab[kills + 1][1])
            end
        else          
            setPlayerStorageValue(cid, 9019, -1)
        end
    end
    return true
end        
Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Funcionou certinho, valeu, reputado

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link para o post
Compartilhar em outros sites
  • 5 months later...

 

O intervalo de tempo é em segundos.

local tab = {
    --[kill] = {intervalo_de_tempo, "mensagem"}     
    [1] = {nil, "FIRST KILL!"},
    [2] = {10, "DOUBLE KILL!"},
}
function onKill(cid, target)
    if isPlayer(cid) and isPlayer(target) then
        local storage = getPlayerStorageValue(cid, 9018)
        local kills = getPlayerStorageValue(cid, 9019) > -1 and getPlayerStorageValue(cid, 9019) + 1 or 1
        setPlayerStorageValue(cid, 9019, kills)
        setPlayerStorageValue(target, 9019, -1)
        if tab[kills] then
            if kills > 1 then
                if storage < os.time() then      
                    setPlayerStorageValue(cid, 9019, -1)
                    setPlayerStorageValue(cid, 9018, -1)
                    return true
                end    
            end
            doBroadcastMessage(getCreatureName(cid).. " - "..tab[kills][2], MESSAGE_INFO_DESCR)
            if tab[kills + 1] then
                setPlayerStorageValue(cid, 9018, os.time() + tab[kills + 1][1])
            end
        else          
            setPlayerStorageValue(cid, 9019, -1)
        end
    end
    return true
end        

zipter tem como me ajudar??? eu queria algo parecido com isso ae irei transformar a area do quartel dos police em area pvp e quando chegar alguem player roket la os players police poderam atacar ele os que morrem vao pro cp e perdem exp. agradeceria a ajuda.

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 Kaled
      Boa tarde, Senhores(as).
       
      Peço desculpas se essa não for a área correta.
       
      Atualmente, no servidor que estou jogando, o sistema de PvP é bem simples, similar ao que era o global a um tempo atras, aonde você só tinha 1 opção de ativar e desativar a "mãozinha" para PKlizar. O problema é que nesse sistema, caso você use uma spell/runa em área, mesmo com a "mãozinha" desativada, você causa danos a outros jogadores, podendo pegar skull acidentalmente e até mesmo matando companheiros de hunt.
       
      O que eu estou procurando, teoricamente é simples: um sistema de PvP aonde eu possa desativar o dano em área em outros players (Igual ao global hoje em dia).
       
      Ele teria que ter 3 opções de PvP:
      #1 - Não causa dano a outros players (Para evitar pegar yellow).
      #2 - Causa dano apenas a players que estejam com algum tipo de skull (Pega yellow mas nao pega white).
      #3 - Causa dano a todos os players, podendo pegar skull (Foda-se tudo).
       
      Obrigado desde já!
    • Por lolksky
      Versão: 8.60 tfs 0.4
       
      Deixar claro que o sistema é complexo, acho difícil alguém se disponibilizar a fazer, mas vamos lá...
       
      Funcionaria como um war system, porem para servidores 8.60 (pensando no meu tmb, claro) que não tem o sistema e nem site.
      Haverá um NPC que "abre" as wars quando 1 líder de uma guild declara guerra a outra guild através do npc. O líder rival então vai até o npc para aceitar ou recusar a guerra. Antecipa-se para o npc uma quantia em gp de cada guild que varia conforme o número de invitados nas guilds (15 K por player). Somente quando acabar a guerra, o líder ou vice da guild vencedora retira a quantia total no npc.
      A vitória e dada quando uma guild ser vitimada, pelo menos 2x o número de players nessa guild , onde a quantidade de frags varia de acordo com o número total de players nas guilds envolvidas e, também, somente quando TODOS os players da guild derrotada tiver morrido ao menos uma vez. 
      Por exemplo: se a guild tem 20 players, ela será derrotada quando houver no mínimo 40 mortes, sendo que cada player tenha morrido ao menos 1x.

      Como não tem os "escudinhos", para informar, os players envolvidos ficam com um outfit único (que não pode ser trocado enquanto estiver em guerra), quem for aliado ficará com o  tal outfit todo na cor verde e os inimigos com o mesmo outfit, mas na cor vermelha.
      OBS.: como o outfit é exclusivo par ao sistema, o mesmo terá que ser inacessível para os demais players.
       
      Para informações ingame, os players poderá usar o comando "!war" que abre um quadro (iguais aqueles de noticia) informando todos os players rivais, quantas vezes já morreram cada rival e quantos kills cometeu e quantos kills a guild ainda precisa para vencer. E oum comando "!guild [nome da guild]" que informa quantos players há, quantos de cada vocação e os nomes dos players com o respectivo level.
       
       
       
      Adicionais:
      1.: Eu não sei como faço pra saber se meu servidor tem os "escudinhos", mas se há no servidor (tendo alguma forma de descobrir), pode usar eles para informar os envolvidos no lugar do outfit;
      2.: não contar frags, claro;
      3.: para declarar guerra é necessário que ambas guilds tenham, no mínimo, 5 players cada. Caso contrário o NPC não aceita.
       
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
      Acho que a princípio essas são informações gerais necessárias para você entender o que se pede.
       
      Estou disposto a negociar pelo sistema. Qualquer coisa, manda PM
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo