BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

ayuda con mi top frags

ayuda con mi top frags

#1 ayuda con mi top frags el Sáb Ene 11, 2014 2:58 pm

Sensui


Miembro
hola quisiera saver si alguien me puede ayudar a corregir este script

lo que pasa es que si funciona el script pero no adecuadamente el broadcast d elos tops si se manda y aparese en el juego solo que al matar y matar me di cuenta que siempre aparese en 0 el mensaje no cuenta las muertes que lleva el jugador :/ quiera que contara las kills d elos players para que se anunciaran hay :/

aqui esta el ejemplo

[11/01/2014 12:26:12] 1. Myster Popo - 0 frags".

no las cuenta aparecen en cero

data/globalevents/scripts/tops.lua

Código:
function getTop5Players()
local player1 = {0,-1}
local player2 = {0,-1}
local player3 = {0,-1}
local player4 = {0,-1}
local player5 = {0,-1}
local top5text = "Top 5 fraggers online"
local players = getPlayersOnline()
if #players == 0 then
return top5text
end
for i, cid in ipairs(players) do
if getPlayerStorageValue(cid,11000) > player1[2] then
player5 = {player4[1], player4[2]}
player4 = {player3[1], player3[2]}
player3 = {player2[1], player2[2]}
player2 = {player1[1], player1[2]}
player1 = {cid, getPlayerStorageValue(cid,11000)}
elseif getPlayerStorageValue(cid,11000) > player2[2] then
player5 = {player4[1], player4[2]}
player4 = {player3[1], player3[2]}
player3 = {player2[1], player2[2]}
player2 = {cid, getPlayerStorageValue(cid,11000)}
elseif getPlayerStorageValue(cid,11000) > player3[2] then
player5 = {player4[1], player4[2]}
player4 = {player3[1], player3[2]}
player3 = {cid, getPlayerStorageValue(cid,11000)}
elseif getPlayerStorageValue(cid,11000) > player4[2] then
player5 = {player4[1], player4[2]}
player4 = {cid, getPlayerStorageValue(cid,11000)}
elseif getPlayerSoul(cid) > player5[2] then
player5 = {cid, getPlayerStorageValue(cid,11000)}
end
end
if player1[1] > 0 then
top5text = top5text .. "\n1. " .. getCreatureName(player1[1]) .. " - " .. player1[2] .. " frags"
end
if player2[1] > 0 then
top5text = top5text .. "\n2. " .. getCreatureName(player2[1]) .. " - " .. player2[2] .. " frags"
end
if player3[1] > 0 then
top5text = top5text .. "\n3. " .. getCreatureName(player3[1]) .. " - " .. player3[2] .. " frags"
end
if player4[1] > 0 then
top5text = top5text .. "\n4. " .. getCreatureName(player4[1]) .. " - " .. player4[2] .. " frags"
end
if player5[1] > 0 then
top5text = top5text .. "\n5. " .. getCreatureName(player5[1]) .. " - " .. player5[2] .. " frags"
end
return top5text
end
function onThink(interval, lastExecution)
doBroadcastMessage(getTop5Players())
return TRUE
end

creatruscripts/login.lua

Código:
if getPlayerStorageValue(cid, 11000) == -1 then
setPlayerStorageValue(cid, 11000, 0)
end

data/creatrurescripts/kills.lua

Código:
function onKill(cid, target, lastHit)
 if isPlayer(target)  then
setPlayerStorageValue(cid, 11000, (getPlayerStorageValue(cid,11000) + 1))
 end
 return true
end

#2 Re: ayuda con mi top frags el Dom Ene 12, 2014 2:29 pm

Sensui


Miembro
bump bump bump bump bump!*

#3 Re: ayuda con mi top frags el Miér Jul 23, 2014 12:09 pm

Kriss


Miembro
@up
tengo el mismo problemapero a mi me sale 1 y no salen los 5 jugadores solo 1 que va cambiando pero igual solo marca 1 frag agradeceria el mismo resultado de ante mano gracias

#4 Re: ayuda con mi top frags el Miér Jul 23, 2014 5:27 pm

CyberM


Scripter
[Tienes que estar registrado y conectado para ver este vínculo] escribió:
@up
tengo el mismo problemapero a mi me sale 1 y no salen los 5 jugadores solo 1 que va cambiando pero igual solo marca 1 frag agradeceria el mismo resultado de ante mano gracias
tú guardas los frags como vienen de fábrica o con storage?

#5 Re: ayuda con mi top frags el Miér Jul 23, 2014 6:33 pm

Muzstang


Scripter
[Tienes que estar registrado y conectado para ver este vínculo]

Trata de hacer todo bien, esos scripts los arregle y testie antes de postearlos (Hasta en OTx funcionaron)

#6 Re: ayuda con mi top frags el Miér Jul 23, 2014 7:32 pm

CyberM


Scripter
les sugiero vehementemente que en vez de ese, usen este globalevent...
Código:

local toptext = "Top 5 fraggers online"

function getTopFragPlayers()
    local limit = 5 --numero de players a mostrar
    local storage = 11000 --key del storage de los frags
    local players = getPlayersOnline()
    local text = toptext
   
    if #players > 0 then
        table.sort(players, function(a, b) return getPlayerStorageValue(a, storage) > getPlayerStorageValue(b, storage) end)
        for n = 1, limit do
            if not players[n] then
                break
            end
            local frag = getPlayerStorageValue(players[n], storage)
            if frag > 0 then
                text = text .. "\n" .. n .. ". " .. getCreatureName(players[n]) .. " - " .. frag .. " frag" .. (frag > 1 and "s" or "")
            end
        end
    end
    return text
end

function onThink(interval, lastExecution)
    local frags = getTopFragPlayers()
    return true, frags:len() > toptext:len() and doBroadcastMessage(frags)
end

#7 Re: ayuda con mi top frags el Miér Jul 23, 2014 10:46 pm

chaotiick


Miembro
CyberM ese no resetea las frags??

osea si matas a alguien, y eres top siempre saldras con esa frag?

#8 Re: ayuda con mi top frags el Miér Jul 23, 2014 11:17 pm

CyberM


Scripter
Así como lo hizo Sheenita no se reinician, para eso se usarían los frags normales del TFS que expiran con el tiempo

#9 Re: ayuda con mi top frags el Sáb Dic 13, 2014 5:55 pm

Kriss


Miembro
sigue sin funcionar y volví hacer las cosas paso a paso
no marca ningún error [13/12/2014 16:26:08] Reloaded global events.
así es como lo tengo:
Código:
<globalevent name="top" interval="30" script="tops.lua"/>
de script tengo
Spoiler:
Código:

local toptext = "Top 5 fraggers online"

function getTopFragPlayers()
    local limit = 5 --numero de players a mostrar
    local storage = 11000 --key del storage de los frags
    local players = getPlayersOnline()
    local text = toptext
   
    if #players > 0 then
        table.sort(players, function(a, b) return getPlayerStorageValue(a, storage) > getPlayerStorageValue(b, storage) end)
        for n = 1, limit do
            if not players[n] then
                break
            end
            local frag = getPlayerStorageValue(players[n], storage)
            if frag > 0 then
                text = text .. "\n" .. n .. ". " .. getCreatureName(players[n]) .. " - " .. frag .. " frag" .. (frag > 1 and "s" or "")
            end
        end
    end
    return text
end

function onThink(interval, lastExecution)
    local frags = getTopFragPlayers()
    return true, frags:len() > toptext:len() and doBroadcastMessage(frags)
end

este es mi login.lua
Spoiler:
Código:
local config = {
   loginMessage = getConfigValue('loginMessage'),
   useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
}

function onLogin(cid)
   local loss = getConfigValue('deathLostPercent')
   if(loss ~= nil) then
      doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 4)
      doPlayerAddBlessing(cid, 1)
      doPlayerAddBlessing(cid, 2)
      doPlayerAddBlessing(cid, 3)
      doPlayerAddBlessing(cid, 4)
      doPlayerAddBlessing(cid, 5)
      doPlayerAddPremiumDays(cid, 2)
      doPlayerSetPromotionLevel(cid, 1)
   end
if getPlayerStorageValue(cid, 11000) ~= 1 then
setPlayerStorageValue(cid, 11000, 0)
end
   local accountManager = getPlayerAccountManager(cid)
   if(accountManager == MANAGER_NONE) then
      local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
      if(lastLogin > 0) then
         doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
         str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
      else
         str = str .. " Please choose your outfit."
         doPlayerSendOutfitWindow(cid)
      end

      doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
   elseif(accountManager == MANAGER_NAMELOCK) then
      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
   elseif(accountManager == MANAGER_ACCOUNT) then
      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.")
   else
      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.")
   end

   if(not isPlayerGhost(cid)) then
      doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
   end
   registerCreatureEvent(cid, "TeamPeace")
    registerCreatureEvent(cid, "kill")
    registerCreatureEvent(cid, "onPrepareDeath")
    registerCreatureEvent(cid, "PlayerLogout")
    registerCreatureEvent(cid, "onPrepareDeath")
    registerCreatureEvent(cid, "deathBroadcast")
    registerCreatureEvent(cid, "DeathBroadcast")
   registerCreatureEvent(cid, "enter")
    registerCreatureEvent(cid, "PlayerLogout")

   registerCreatureEvent(cid, "Idle")
   if(config.useFragHandler) then
      registerCreatureEvent(cid, "SkullCheck")
   end

   registerCreatureEvent(cid, "ReportBug")
   return true
end

kills.lua
Spoiler:
Código:

funcion doAddFrags(cid)
return setPlayerStorageValue(cid, 11000, (getPlayerStorageValue(cid,11000) + 1))
end

-- la funcion de doAddFrags la pueden mover a libs/050-function si gustan

function onKill(cid, target, lastHit)
 if isPlayer(target)  then
 doAddFrags(cid)
 end
 return true
end

y no marca ningun error solo no funciona! :C por favor si me pueden ayudar doy (+rep) (gracias)

#10 Re: ayuda con mi top frags el Lun Dic 15, 2014 3:07 pm

Kriss


Miembro
@up

#11 Re: ayuda con mi top frags el Mar Dic 16, 2014 12:46 pm

Kriss


Miembro
@Up

#12 Re: ayuda con mi top frags el Mar Dic 16, 2014 1:10 pm

Muzstang


Scripter
Y ya probaste con los scripts que publique?

#13 Re: ayuda con mi top frags el Mar Dic 16, 2014 1:43 pm

Kriss


Miembro
Sheenita escribió:Y ya probaste con los scripts que publique?
probe los tuyos igual que Sensui pero me paso lo mismo que Sensui [11/01/2014 12:26:12] 1. Myster Popo - 0 frags".
y por eso quise probar el de cyberM haber que pasaba uso 8.6 tfs (nose cuales) XD

#14 Re: ayuda con mi top frags el Mar Dic 16, 2014 1:53 pm

Muzstang


Scripter
Verifica que version tienes si 0.4 o 0.3 para darme una idea, porque ami si me funcionaron los scripts.

#15 Re: ayuda con mi top frags el Mar Dic 16, 2014 1:54 pm

Kriss


Miembro
pues me imagino 0.3 es de los viejos uso naxed server eso nunca he sabido revisar

#16 Re: ayuda con mi top frags el Mar Dic 16, 2014 7:14 pm

Muzstang


Scripter
MySQL o SQLite?

#17 Re: ayuda con mi top frags el Mar Dic 16, 2014 7:16 pm

Kriss


Miembro
Sqlite xD

#18 Re: ayuda con mi top frags el Miér Dic 17, 2014 11:23 pm

Kriss


Miembro
@up
quisiera usar el storage del deathbrodcast sera posible ya lo intente pero no funciona al 100%
test:
21:57 You currently have 2 frags today, 8 this week and 8 this month.
21:57 Last frag at 17 December 2014 21:53:08 on level 131 (Kronos).
Kronos:
21:57 You currently have 2 frags today, 3 this week and 3 this month.
21:57 Last frag at 17 December 2014 21:37:24 on level 131 (Test).

resultado:
[17/12/2014 21:58:23] > Broadcasted message: "Top 5 fraggers online
[17/12/2014 21:58:23] 1. Kronos - 9 frags
[17/12/2014 21:58:23] 2. Test - 8 frags
[17/12/2014 21:58:23] 3. Rambo - 2 frags".

scripts:
deathbroadcast:
Código:
local config = {
   affected = 10, -- how many players (deathAssits) from table deathList should this script be executed for?

   killStorageValue = 3943,
   deathStorageValue = 3944,

   -- commands for the texts (those inside of ||, example: |KILLS| to show skills): KILLS, KILLERNAME, TARGETNAME
   rewardItem = {
      use = true,
      itemid = 2152,
      minLevel = false, -- false if you don't want any level req
      minLevelDiff = false, -- false if you don't want any level diff req (negative numbers allowed).
   },

   killMessage = {
      use = true,
      text = "You owned |TARGETNAME|! You have now |KILLERKILLS| kills!",
      messageClass = MESSAGE_STATUS_CONSOLE_BLUE
   },

   broadcastMessage = {
      use = true,
      minLevel = false, -- false if you don't want any level req
      minLevelDiff = false, -- false if you don't want any level diff req (negative numbers allowed).
      text = "|KILLERNAME| [|KILLERLEVEL|] just killed |TARGETNAME| [|TARGETLEVEL|]!",
      messageClass = MESSAGE_STATUS_WARNING
   },

   killerAnimation = {
      use = true,
      text = "Frag!", -- Only 9 letters! No "commands" here.
      color = 144
   },

   targetAnimation = {
      use = true,
      text = "Owned!", -- Only 9 letters! No "commands" here.
      color = 180
   }
}

function onDeath(cid, corpse, deathList)
   for i = 1, math.min(config.affected, getConfigInfo('deathAssistCount')) do
      local killer = deathList[i]
      if(isPlayer(killer) == TRUE) then
         local targetKills = math.max(0, getPlayerStorageValue(cid, config.killStorageValue)) + 1
         local targetDeaths = math.max(0, getPlayerStorageValue(cid, config.deathStorageValue)) + 1
      
         local killerKills = math.max(0, getPlayerStorageValue(killer, config.killStorageValue)) + 1
         local killerDeaths = math.max(0, getPlayerStorageValue(killer, config.deathStorageValue)) + 1
      
         setPlayerStorageValue(killer, config.killStorageValue, targetKills)
         setPlayerStorageValue(cid, config.deathStorageValue, targetDeaths)

         local killerLevel = getPlayerLevel(killer)
         local targetLevel = getPlayerLevel(cid)
         local levelDiff = targetLevel - killerLevel

         local values = {
            ["KILLERKILLS"]        = killerKills,
            ["KILLERDEATHS"]        = killerDeaths,
            ["KILLERNAME"]          = getCreatureName(killer),
            ["KILLERLEVEL"]        = killerLevel,
         
            ["TARGETKILLS"]        = targetKills,
            ["TARGETDEATHS"]        = targetDeaths,
            ["TARGETNAME"]          = getCreatureName(cid),
            ["TARGETLEVEL"]        = targetLevel
         }

         function formateString(str)
            return(str:gsub("|([A-Z]+)|", (function(a) return values[a] end)))
         end
      
         if(config.rewardItem.use and (not config.rewardItem.minLevel or targetLevel >= config.rewardItem.minLevel) and (not config.rewardItem.minLevelDiff or levelDiff >= config.rewardItem.minLevelDiff)) then
            local uid = doPlayerAddItem(killer, config.rewardItem.itemid, 5)
         end
         if(config.killMessage.use) then
            doPlayerSendTextMessage(killer, config.killMessage.messageClass, formateString(config.killMessage.text))
         end
         if(config.broadcastMessage.use and (not config.broadcastMessage.minLevel or getPlayerLevel(cid) >= config.broadcastMessage.minLevel) and (not config.broadcastMessage.minLevelDiff or levelDiff >= config.broadcastMessage.minLevelDiff)) then
            broadcastMessage(formateString(config.broadcastMessage.text), config.broadcastMessage.messageClass)
         end
         if(config.killerAnimation.use) then
            doSendAnimatedText(getCreaturePosition(killer), config.killerAnimation.text, config.killerAnimation.color)
         end
         if(config.targetAnimation.use) then
            doSendAnimatedText(getCreaturePosition(cid), config.targetAnimation.text, config.targetAnimation.color)
         end
      end
   end

   return true
end

de ahi uso el estorage de: killStorageValue = 3943

globalevent:
Spoiler:
Código:
local toptext = "Top 5 fraggers online"

function getTopFragPlayers()
    local limit = 5 --numero de players a mostrar
    local storage = 3943 --key del storage de los frags
    local players = getPlayersOnline()
    local text = toptext
   
    if #players > 0 then
        table.sort(players, function(a, b) return getPlayerStorageValue(a, storage) > getPlayerStorageValue(b, storage) end)
        for n = 1, limit do
            if not players[n] then
                break
            end
            local frag = getPlayerStorageValue(players[n], storage)
            if frag > 0 then
                text = text .. "\n" .. n .. ". " .. getCreatureName(players[n]) .. " - " .. frag .. " frag" .. (frag > 1 and "s" or "")
            end
        end
    end
    return text
end

function onThink(interval, lastExecution)
    local frags = getTopFragPlayers()
    return true, frags:len() > toptext:len() and doBroadcastMessage(frags)
end

#19 Re: ayuda con mi top frags el Mar Ene 20, 2015 12:57 pm

Kriss


Miembro
@up

#20 Re: ayuda con mi top frags el Dom Ene 25, 2015 10:00 pm

Kriss


Miembro
@up

#21 Re: ayuda con mi top frags el Dom Ene 25, 2015 10:54 pm

Muzstang


Scripter
Es obvio que al decir el comando !frags salga otro numero, ya que necesitas obtener el mismo storage del deathbrodcast en el talkaction.

Algo asi.

talkactions/scripts/frags.lua

Código:
local frags = getPlayerStorageValue(cid, 3943)

function onSay(cid, words, param, channel)
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have: "..frags.." frags.")
end

Por eso te dije que hicieras todo bien desde un principio.

#22 Re: ayuda con mi top frags el Mar Ene 27, 2015 1:26 pm

Kriss


Miembro
lo había echo bien XD pero no funciono así que busque alternativas XD gracias esa fue la solución
y lo modifique un poco no había pensando en eso gracias ya pueden cerrar el post ahí te dejo el +rep

#23 Re: ayuda con mi top frags Hoy a las 12:14 pm

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 1 usuario en línea: 1 Registrado, 0 Ocultos y 0 Invitado

Usuarios navegando en este foro: vicente9908

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 .