Ir para conteúdo
  • 0

Talkaction !online Informações em excesso... Como reduzir?


je19921992

Pergunta

Olá. Tomara que eu tenha postado em area correta porque sinceramente não sei. Mas vamos lá.

Minha talkaction online.lua informa: Quantidade de players online, nome de players online, level de players online.

Obs: Na (s) ultima (s) linha (s), estão escalados os jogadores que acabaram de entrar.

Oque eu quero pedir?

Vejamos: Por enquanto, informar o numero de jogadores online, e só.

Já tentei retirar algumas strings, mas o que aconteceu foi que quando o jogador usa !online, aparece um monte de linha se tiver muitos jogadores, linhas em branco e se estiver acima de 150 jogadores, a pessoa que quizer saber quantos online tem, deve então tem que subir muito na aba.

Para facilitar quero apenas o numero de jogadores online e na(s) linha(s) de baixo, os 10 ultimos jogadores que acabaram de entrar. Não sei nem cmo funciona meu script, mas eh padrão. N sei como ele consegue informar quem acabou de fazer login.

Segue scripts:

local config = {

showGamemasters = getBooleanFromString(getConfigValue('displayGamemastersWithOnlineCommand'))

}

 

function onSay(cid, words, param, channel)

local players = getPlayersOnline()

local strings = {""}

 

local i, position = 1, 1

local added = false

for _, pid in ipairs(players) do

if(added) then

if(i > (position * 7)) then

strings[position] = strings[position] .. ","

position = position + 1

strings[position] = ""

else

strings[position] = i == 1 and "" or strings[position] .. ", "

end

end

 

if((config.showGamemasters or getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES) or not getPlayerCustomFlagValue(pid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) and (not isPlayerGhost(pid) or getPlayerGhostAccess(cid) >= getPlayerGhostAccess(pid))) then

strings[position] = strings[position] .. getCreatureName(pid) .. " [" .. getPlayerLevel(pid) .. "]"

i = i + 1

added = true

else

added = false

end

end

 

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, (i - 1) .. " player(s) online:")

for i, str in ipairs(strings) do

if(str:sub(str:len()) ~= ",") then

str = str .. "."

end

 

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str)

end

 

return true

end

Editado por je19921992
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Amigo, você deveria ter postado isso na seção de dúvidas, aqui é para scripts prontos, fora isso, coloque o script sempre entre as tags [.code][./code](tire os pontos)

 

Para arrumar, substitua o seu código por este:

function onSay(cid, words, param, channel)
   players = getOnlinePlayers()
   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Existem ".. #players .." jogadores conectados ao servidor")
end

Link para o comentário
Compartilhar em outros sites

  • 0

Apenas copie e cole o script, hora bolas...

Agora que eu vi que você quer tambem que apresente apenas os 10 primeiros jogadores, achei que queria que apresentasse só o numero de jogadores, então fica um pouco diferente:

local config = {
showGamemasters = getBooleanFromString(getConfigValue('displayGamemastersWithOnlineCommand'))
}

function onSay(cid, words, param, channel)
local players = getPlayersOnline()
local strings = {""}

local i, position = 1, 1
local added = false
for n, pid in ipairs(players) do
if added and n <= 10 then
if(i > (position * 7)) then
strings[position] = strings[position] .. ","
position = position + 1
strings[position] = ""
else
strings[position] = i == 1 and "" or strings[position] .. ", "
end
end

if((config.showGamemasters or getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES) or not getPlayerCustomFlagValue(pid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) and (not isPlayerGhost(pid) or getPlayerGhostAccess(cid) >= getPlayerGhostAccess(pid))) then
strings[position] = strings[position] .. getCreatureName(pid) .. " [" .. getPlayerLevel(pid) .. "]"
i = i + 1
added = true
else
added = false
end
end

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, (i - 1) .. " player(s) online:")
for i, str in ipairs(strings) do
if(str:sub(str:len()) ~= ",") then
str = str .. "."
end

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str)
end

return true
end

Esse script aqui deve restringir aos primeiros 10 jogadores.

Link para o comentário
Compartilhar em outros sites

  • 0

desculpe... Nos scripts comuns, aparecem os 10 ULTIMOS que entraram (esqueci de frisar)...

Este script atende esta forma?

@vital900

Obrigado por não fazer a crítica típica geralmente encontrada na maioria dos posts aqui...

"Presta mais atenção da proxima vez"

Eu fiquei novamente 30 minutos procurando esta tal de area correta.... Desculpe se eu errei, mas as informações que eu obtive no site foram um tanto subliminares, ou melhor, implícita...

Editado por je19921992
Link para o comentário
Compartilhar em outros sites

  • 0

function onSay(cid, words, param, channel)

local val = 0
local name = ""
local c = 0 
local p = #getPlayersOnline() > 10 and 11 or #getPlayersOnline()

if p <= 10 then return true end

for loop = 1, p do
   val = loop
end

local tab = getPlayersOnline()[p - val]

for players = 1, p do
   name = name .. getCreatureName(tab) .. (c < players and ", " or ".")
   c = c + 1
end

   doPlayerSendTextMessage(cid, 27, "Jogadores online:/n" .. name)
   return true
end

 

Liga pro pog não.

Link para o comentário
Compartilhar em outros sites

  • 0

eahaushuae, tem uns erros engraçados nesse script ae sky...

 

isso aqui:

 

for loop = 1, p do
val = loop
end

 

é a mesma coisa que:

 

val = p

 

nessa parte:

 

local tab = getPlayersOnline()[p - val]

 

você vai tentar acessar o índice 0 da tabela, e isso vai dar erro, e mesmo se conseguisse acessar um índice correto, tab teria o valor do uid de apenas um player, então essa parte:

 

for players = 1, p do
name = name .. getCreatureName(tab) .. (c < players and ", " or ".")
c = c + 1
end

 

resultaria em algo do tipo:

 

Joao, Joao, Joao, Joao, Joao, Joao, Joao, Joao, Joao, Joao.

 

e o certo é \n para pular linha, o "/n" iria aparecer na tela do player e ia ficar feiosinho

não tenho certeza, mas acho que o cliente do tibia não pula linha no chat, então \n nesse caso seria simplesmente ignorado

 

aqui o script:

 

function onSay(cid, words, param, channel)

local players = getPlayersOnline()
local count = #players
local ultimos = {}
for n = count, count - math.min(10, count - 1), -1 do
	table.insert(ultimos, getCreatureName(players[n]))
end

doPlayerSendTextMessage(cid, 27, count.." jogador"..(count > 1 and "es" or "").." online.")
doPlayerSendTextMessage(cid, 27, "Último"..(count > 1 and "s" or "").." jogador"..(count > 1 and "es" or "").." a entrar"..(count > 1 and "em" or "")..": "..table.concat(ultimos, ", ")..".")
return true
end

 

basta apagar tudo que está escrito no seu script de !online e colar esse código acima

Editado por brun123
Link para o comentário
Compartilhar em outros sites

  • 0

eahaushuae, tem uns erros engraçados nesse script ae sky...

 

isso aqui:

 

for loop = 1, p do
val = loop
end

 

é a mesma coisa que:

 

val = p

 

nessa parte:

 

local tab = getPlayersOnline()[p - val]

 

você vai tentar acessar o índice 0 da tabela, e isso vai dar erro, e mesmo se conseguisse acessar um índice correto, tab teria o valor do uid de apenas um player, então essa parte:

 

for players = 1, p do
name = name .. getCreatureName(tab) .. (c < players and ", " or ".")
c = c + 1
end

 

resultaria em algo do tipo:

 

Joao, Joao, Joao, Joao, Joao, Joao, Joao, Joao, Joao, Joao.

 

e o certo é \n para pular linha, o "/n" iria aparecer na tela do player e ia ficar feiosinho

não tenho certeza, mas acho que o cliente do tibia não pula linha no chat, então \n nesse caso seria simplesmente ignorado

 

aqui o script:

 

function onSay(cid, words, param, channel)

local players = getPlayersOnline()
local count = #players
local ultimos = {}
for n = count, count - math.min(10, count - 1), -1 do
	table.insert(ultimos, getCreatureName(players[n]))
end

doPlayerSendTextMessage(cid, 27, count.." jogador"..(count > 1 and "es" or "").." online.")
doPlayerSendTextMessage(cid, 27, "Último"..(count > 1 and "s" or "").." jogador"..(count > 1 and "es" or "").." a entrar"..(count > 1 and "em" or "")..": "..table.concat(ultimos, ", ")..".")
return true
end

 

basta apagar tudo que está escrito no seu script de !online e colar esse código acima

Lindo, maravilhoso HSAUSAHUASHU... Perfect!!!!!! Sanado! Resolvido! VALEWW BROTHERR... Tudo que eu queria velhoooo, parabens...

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...