BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

[Solucionado] Contador de atacantes

[Solucionado] Contador de atacantes

#1 [Solucionado] Contador de atacantes el Mar Jul 12, 2016 2:17 am

mortaliz


Novato
Código:

function onKill(cid, target, lastHit)
players = 0
local players = isPlayer(target)
for _, pid in ipairs(players) do
players = players + 1  
end
end
if isPlayer(cid) and isPlayer(target) then
doPlayerSendTextMessage(cid,28, '.. players ..  Players han matado a ['..getCreatureName(target)..']!')
end
end
Quiero hacer un contador que me diga cuantos players atacan a uno



Última edición por mortaliz el Miér Jul 13, 2016 12:16 pm, editado 1 vez

#2 Re: [Solucionado] Contador de atacantes el Mar Jul 12, 2016 10:59 am

Belerofonte


Administrador
No. El problema es que con la función onKill, hagas lo que hagas, siempre te va a devolver al último atacante que lo mató.

Por lo que, hay que usar onDeath, ya que, la cual posee la variable deathList que es una tabla con todos los atacantes y solo habría que extraerlos mediante un loop. Y también en la línea del creaturescripts.xml de type="kill" a type="death".

Código:
function onDeath(cid, corpse, deathList)
    local players = 0
    for _, pid in ipairs(deathList) do
        if isPlayer(pid) then
            players = players + 1
        end
    end

    if players > 0 then
        doBroadcastMessage(players .. ' ' .. (players > 1 and 'players han' or 'player ha') .. ' matado a [' .. getCreatureName(cid) .. ']!', 27)
    end
    return true
end



O para que en vez del número de atacantes, salga una lista con sus nombres:
Que solo cuente jugadores: [Tienes que estar registrado y conectado para ver este vínculo]
Que cuente a jugadores y monstruos: [Tienes que estar registrado y conectado para ver este vínculo]



Respecto al código que pusiste en:
Código:
doPlayerSendTextMessage(cid, 28, '.. players ..  Players han matado a ['..getCreatureName(target)..']!')

El tipo de mensaje(28) está mal, porque no existe.
Estos son los que hay:
MESSAGE_STATUS_CONSOLE_RED = 18 -- Aparece solo en el LOG en Rojo.
MESSAGE_EVENT_ORANGE = 19 -- Aparece solo en el DEFAULT en Naranja.
MESSAGE_STATUS_CONSOLE_ORANGE = 20 -- Aparece solo en el DEFAULT en Naranja.
MESSAGE_STATUS_WARNING = 21 -- Aparece en la PARTE CENTRAL de la PANTALLA y en el SERVER LOG en Rojo.
MESSAGE_EVENT_ADVANCE = 22 -- Aparece en la PARTE CENTRAL de la PANTALLA y en el SERVER LOG en Blanco.
MESSAGE_EVENT_DEFAULT = 23 -- Aparece en la PARTE INFERIOR de la PANTALLA y en el SERVER LOG en Blanco.
MESSAGE_STATUS_DEFAULT = 24 -- Aparece en la PARTE INFERIOR de la PANTALLA y en el SERVER LOG en Blanco.
MESSAGE_INFO_DESCR = 25 -- Aparece en la PARTE CENTRAL de la PANTALLA y en el SERVER LOG en Verde.
MESSAGE_STATUS_SMALL = 26 -- Aparece solo en la PARTE INFERIOR de la PANTALLA en Blanco.
MESSAGE_STATUS_CONSOLE_BLUE = 27 -- Aparece solo en el DEFAULT en Azul.

Y el mensaje también:
'.. players ..  Players han matado a ['..getCreatureName(target)..']!'

:down: :down: :down: :down: :down: :down: :down: :down: :down: :down: :down: :down: :down: :down: :down: :down:

players .. ' Players han matado a ['..getCreatureName(target)..']!'



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

#3 Re: [Solucionado] Contador de atacantes el Mar Jul 12, 2016 1:26 pm

mortaliz


Novato
bueno Gracias el contador funciono muy bien pero ahora quiero que de el premio a los que lo matan no a el que muere :/ si me podrias ayudar de nuevo serias el mejor
Código:
function onDeath(cid, corpse, deathList)
    local players = 0
    for _, pid in ipairs(deathList) do
        if isPlayer(pid) then
            players = players + 1
        end
    end
if players == 1 then
doPlayerAddExp(cid,5000000)
doSendAnimatedText(getCreaturePosition(cid), "50.000 Exp!", 57)
doPlayerAddItem(cid, 2160, 2)
elseif players == 2 then
doPlayerAddExp(cid,5000000)
doSendAnimatedText(getCreaturePosition(cid), "50.000 Exp!", 164)
doPlayerAddItem(cid, 2160, 1)
elseif players == 3 then
doPlayerAddExp(cid,5000000)
doSendAnimatedText(getCreaturePosition(cid), "50.000 Exp!", 116)
doPlayerAddItem(cid, 2152, 80)
elseif players == 4 then
doPlayerAddExp(cid,5000000)
doSendAnimatedText(getCreaturePosition(cid), "50.000 Exp!", 113)
doPlayerAddItem(cid, 2160, 50)
elseif players >= 5 then
doPlayerAddExp(cid,50000)
doSendAnimatedText(getCreaturePosition(cid), "50.000 Exp!", 225)
doPlayerAddItem(cid, 2160, 40)
end
    if players > 0 then
        doBroadcastMessage(players .. ' ' .. (players > 1 and 'players han' or 'player ha') .. ' matado a [' .. getCreatureName(cid) .. ']!', 27)
    end
    return true
end

#4 Re: [Solucionado] Contador de atacantes el Mar Jul 12, 2016 3:50 pm

Belerofonte


Administrador
Código:
local t = {
    [1] = {color = 57, items = 2160, count = 2},
    [2] = {color = 164, items = 2160, count = 1},
    [3] = {color = 116, items = 2152, count = 80},
    [4] = {color = 113, items = 2160, count = 50},
    max = {color = 225, items = 2160, count = 40},
}

function onDeath(cid, corpse, deathList)
    local players = 0
    for _, pid in ipairs(deathList) do
        if isPlayer(pid) then
            players = players + 1
            local var = t[players]
            if var then
                doPlayerAddItem(pid, var.items, var.count)
                doSendAnimatedText(getThingPos(pid), "50.000 Exp!", var.color)
             else
                if players >= table.maxn(t) + 1 then
                    doPlayerAddItem(pid, t.max.items, t.max.count)
                    doSendAnimatedText(getThingPos(pid), "50.000 Exp!", t.max.color )
                end
            end
            doPlayerAddExp(pid, 5000000)
        end
    end

    if players > 0 then
        doBroadcastMessage(players .. ' ' .. (players > 1 and 'players han' or 'player ha') .. ' matado a [' .. getCreatureName(cid) .. ']!', 27)
    end
    return true
end



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

#5 Re: [Solucionado] Contador de atacantes el Mar Jul 12, 2016 4:20 pm

mortaliz


Novato
el premio se le sigue dando a el que muere y no a los que lo matan :/

#6 Re: [Solucionado] Contador de atacantes el Mar Jul 12, 2016 4:44 pm

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:el premio se le sigue dando a el que muere y no a los que lo matan :/
¿Editáste algo? Recuerda que cid es quien muere, y pid es quien lo mata



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

#7 Re: [Solucionado] Contador de atacantes el Mar Jul 12, 2016 6:50 pm

mortaliz


Novato
Todo funciona bien pero en war algunas personas se pegan con ue como puedo hacer que las personas que tienen party entre si no se den los items??? he intentado con isInParty(cid) pero cuando el personaje tiene party no le da nada a nadie xD

#8 Re: [Solucionado] Contador de atacantes el Mar Jul 12, 2016 9:42 pm

Belerofonte


Administrador
¿A qué te refieres con "ue"? Genius. mí no entender. (Edito) Y ¿cómo que no se den los ítems? Concreta un poco más, please.



Última edición por Belerofonte el Miér Jul 13, 2016 5:49 am, editado 1 vez



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

#9 Re: [Solucionado] Contador de atacantes el Miér Jul 13, 2016 12:10 am

Noraziz


Miembro
Exevo gran mas vis me parece

#10 Re: [Solucionado] Contador de atacantes el Miér Jul 13, 2016 9:44 am

mortaliz


Novato
Cualquier poder que le alcanzen a pegar sus compañeros ellos tambien reciben el premio quisiera que entre compañeros de party no se pudieran el premio lo intente agregando esta linea de abajo pero si el jugador tiene party no le da ningun premio a nadie

Código:
local t = {
    [1] = {color = 57, items = 2160, count = 2},
    [2] = {color = 164, items = 2160, count = 1},
    [3] = {color = 116, items = 2152, count = 80},
    [4] = {color = 113, items = 2160, count = 50},
    max = {color = 225, items = 2160, count = 40},
}

function onDeath(cid, corpse, deathList)
[color=#FF0000]if isInParty(cid) == TRUE then
doPlayerSendTextMessage(pid,28, 'Not win anything they were at the same party of ['..getCreatureName(cid)..']!')
else[/color]
    local players = 0
    for _, pid in ipairs(deathList) do
        if isPlayer(pid) then
            players = players + 1
            local var = t[players]
            if var then
                doPlayerAddItem(pid, var.items, var.count)
                doSendAnimatedText(getThingPos(pid), "50.000 Exp!", var.color)
             else
                if players >= table.maxn(t) + 1 then
                    doPlayerAddItem(pid, t.max.items, t.max.count)
                    doSendAnimatedText(getThingPos(pid), "50.000 Exp!", t.max.color )
                end
            end
            doPlayerAddExp(pid, 5000000)
        end
    end

    if players > 0 then
        doBroadcastMessage(players .. ' ' .. (players > 1 and 'players han' or 'player ha') .. ' matado a [' .. getCreatureName(cid) .. ']!', 27)
    end
[color=#DC143C]end[/color]
    return true
end

#11 Re: [Solucionado] Contador de atacantes el Miér Jul 13, 2016 10:22 am

Belerofonte


Administrador
Código:
local t = {
    [1] = {color = 57, items = 2160, count = 2},
    [2] = {color = 164, items = 2160, count = 1},
    [3] = {color = 116, items = 2152, count = 80},
    [4] = {color = 113, items = 2160, count = 50},
    max = {color = 225, items = 2160, count = 40},
}

function onDeath(cid, corpse, deathList)
    local players = 0
    for _, pid in ipairs(deathList) do
        if isPlayer(pid) then
            if isInParty(cid) then
                if #getPartyMembers(cid) > 0 then
                    for _, member in ipairs(getPartyMembers(cid)) do
                        if pid == member then
                            return true
                        end
                    end
                end
            end

            players = players + 1
            local var = t[players]
            if var then
                doPlayerAddItem(pid, var.items, var.count)
                doSendAnimatedText(getThingPos(pid), "50.000 Exp!", var.color)
             else
                if players >= table.maxn(t) + 1 then
                    doPlayerAddItem(pid, t.max.items, t.max.count)
                    doSendAnimatedText(getThingPos(pid), "50.000 Exp!", t.max.count)
                end
            end
            doPlayerAddExp(pid, 5000000)
        end
    end

    if players > 0 then
        doBroadcastMessage(players .. ' ' .. (players > 1 and 'players han' or 'player ha') .. ' matado a [' .. getCreatureName(cid) .. ']!', 27)
    end
    return true
end



Y si no quieres que se puedan hacer daño los miembros de la party: [Tienes que estar registrado y conectado para ver este vínculo]



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

#12 Re: [Solucionado] Contador de atacantes el Miér Jul 13, 2016 12:13 pm

mortaliz


Novato
Todo quedo ala perfeccion Muchas Gracias !!! Post Solucionado

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.

 

¿Quién está en línea?

En total hay 0 usuarios en línea: 0 Registrados, 0 Ocultos y 0 Invitado

Usuarios navegando en este foro: Ninguno

Forum Statistics

Nuestros miembros han públicado un total de posts en temas.
Actualmente hay miembros registrados.
Démosle la bienvenida al miembro más reciente,
La mayor cantidad de usuarios en línea ha sido de .