Ir para conteúdo

Death System 2016 versão frag consecutivo!


Yan Liima

Posts Recomendados

  • 2 weeks later...

boa noite, tem como fazer, quando morrer para player sair em branco a msg, e quando for pra mob laranja ??

 

Em 05/02/2016 em 14:05, Yan Liima disse:

Eae galera do xtibia beleza? hoje venho trazer o Death System um sisteminha que um amigo meu fez, é bem utilizado atualmente.
 
Antes de tudo gostaria de deixar bem claro que não fui eu que fiz.
 
Créditos no final do tópico.
 

Testado em OTX Server 8.60 e TheForgottenServer 0.4 8.60...

 

Como funciona?
Death System em alguns servidores possui um channel chamado "Mortes" ou "Death Channel",
mas há alguns servidores que preferem que seja anunciado no default mesmo e a função é informar
quem matou quem, ou quem foi morto por certo monstro.
 
O que há de novo?
Bom, agora quem matar x jogadores(configurável) e essa quantia for uma consecutiva, será anunciado isso :
O0RuGx1.png
 
E se algum jogador derrotá-lo dentro a consecutiva, será anunciado isso :
iWZ5wGY.png
 
Vamos ao sistema :
em data/XML/channels.xml, adicione isso :


<channel id="15" name="Death Channel"/>

em data/creaturescripts/creaturescripts.xml :


<event type="death" name="deathchannel" event="script" value="deathchannel.lua"/>

em data/creaturescripts/login.lua, adicione isso antes do último return true :


registerCreatureEvent(cid, "deathchannel")

em data/creaturescripts/scripts, crie um arquivo deathchannel.lua e cole isso dentro :
 
TFS:

  Mostrar conteúdo oculto

-- Coded by Zoom..
local info, win, lose = "%s [Level: %s] foi mort%s pelo %s %s%s", "%s obteve %s frags seguidos após derrotar %s.", "%s acabou de impedir que %s fizesse uma sequência de %s frags seguidos."
local frags, storage = {10, 15, 20, 25, 30, 35, 40, 45, 50}, 30045

function onDeath(cid, corpse, deathList)
if(not isPlayer(cid)) then
return true
end

local target = deathList[1]
doCreatureSetStorage(target, storage, getCreatureStorage(target, storage) + (getCreatureStorage(target, storage) == -1 and 2 or 1))

for _, pid in ipairs(getPlayersOnline()) do
doPlayerSendChannelMessage(pid, '', info:format(getCreatureName(cid), getPlayerLevel(cid), getPlayerSex(cid) == 1 and "o" or "a", isPlayer(target) and "player" or "monstro", getCreatureName(target), isPlayer(target) and " [Level: "..getPlayerLevel(target).."]." or "."), TALKTYPE_CHANNEL_O, 0xF)
for _, frag in ipairs(frags) do
if(getCreatureStorage(target, storage) == frag) then
doPlayerSendChannelMessage(pid, '', win:format(getCreatureName(target), frag, getCreatureName(cid)), TALKTYPE_CHANNEL_W, 0xF)
end

if(getCreatureStorage(cid, storage) >= frag) then
doPlayerSendChannelMessage(pid, '', lose:format(getCreatureName(target), getCreatureName(cid), getCreatureStorage(cid, storage)+1), TALKTYPE_CHANNEL_RN, 0xF)
end
end
end

doCreatureSetStorage(cid, storage, 0)
return true
end

 

OTX:

  Mostrar conteúdo oculto

-- Coded by Zoom..
local info, win, lose = "%s [Level: %s] foi mort%s pelo %s %s%s", "%s obteve %s frags seguidos após derrotar %s.", "%s acabou de impedir que %s fizesse uma sequência de %s frags seguidos."
local frags, storage = {10, 15, 20, 25, 30, 35, 40, 45, 50}, 30045

function onDeath(cid, corpse, deathList)
if(not isPlayer(cid)) then
return true
end

local target = deathList[1]
doCreatureSetStorage(target, storage, getCreatureStorage(target, storage) + (getCreatureStorage(target, storage) == -1 and 2 or 1))

for _, pid in ipairs(getPlayersOnline()) do
doPlayerSendChannelMessage(pid, '', info:format(getCreatureName(cid), getPlayerLevel(cid), getPlayerSex(cid) == 1 and "o" or "a", isPlayer(target) and "player" or "monstro", getCreatureName(target), isPlayer(target) and " [Level: "..getPlayerLevel(target).."]." or "."), TALKTYPE_CHANNEL_ORANGE, 0xF)
for _, frag in ipairs(frags) do
if(getCreatureStorage(target, storage) == frag) then
doPlayerSendChannelMessage(pid, '', win:format(getCreatureName(target), frag, getCreatureName(cid)), TALKTYPE_CHANNEL_MANAGEMENT, 0xF)
end

if(getCreatureStorage(cid, storage) >= frag) then
doPlayerSendChannelMessage(pid, '', lose:format(getCreatureName(target), getCreatureName(cid), getCreatureStorage(cid, storage)+1), TALKTYPE_GAMEMASTER_CHANNEL, 0xF)
end
end
end

doCreatureSetStorage(cid, storage, 0)
return true
end

 

Há uma única configuração, que é as consecutivas :

local frags = {10, 15, 20, 25, 30, 35, 40, 45, 50}

completou 10 frags? anuncia! e assim sucessivamente..

 

Créditos: Zoom

 

Link para o comentário
Compartilhar em outros sites

  • Diretor
33 minutos atrás, bilaux disse:

boa noite, tem como fazer, quando morrer para player sair em branco a msg, e quando for pra mob laranja ??

 

 

Não seria possivel saparar as cores dos dois pois a verificação é na mesma linha. A cor você pode estar trocando em: TALKTYPE_CHANNEL_O

procure no 000-constant no seu servidor que lá terá os nomes das cores para você estar alterando.

Link para o comentário
Compartilhar em outros sites

  • 4 months later...

is possible to mix ur script and this one:

 

function isSummon(cid)
  return getCreatureMaster(cid) ~= nil and true or false
end

function onDeath(cid, corpse, deathList)
    i = 0
    str = getCreatureName(cid).." ["..getPlayerLevel(cid).."]"
    for _, pid in ipairs(deathList) do
        i = i + 1
        if (i == 1) then
            if(#deathList <= 1) then
                str = str.." was killed by "
            elseif(#deathList > 1 and #deathList <= 4) then
                str = str.." was slain by "
            elseif(#deathList > 4 and #deathList <= 7) then
                str = str.." was crushed by "
            elseif(#deathList > 7 and #deathList <= 10) then
                str = str.." was eliminated by "
            elseif(#deathList > 10) then
                str = str.." was annihilated by "
            end
        elseif (i == #deathList) then
            str = str.." and "
        else
            str = str..", "
        end

        if not(isPlayer(pid) or isMonster(pid)) then
            str = str.."a field item"
        elseif isSummon(pid) then
            str = str.."a "..getCreatureName(pid):lower().." summoned by "..(isPlayer(getCreatureMaster(pid)) and "" or "a ")..""..getCreatureName(getCreatureMaster(pid))
        elseif isPlayer(pid) then
            str = str..""..getCreatureName(pid)
        elseif isMonster(pid) then
            str = str.."a "..getCreatureName(pid):lower()
        end
    end
    str = str.."."

    for _, creature in ipairs(getChannelUsers(CHANNEL_DEATH)) do
        doPlayerSendChannelMessage(creature, '', str, TALKTYPE_CHANNEL_O, CHANNEL_DEATH)
    end
    return true
end

is similar but this one shows if u die with field, summon of x person, and put different prefix depend of qty of ppl/monsters killed u

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...