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

je19921992
em Scripts

je19921992

Tudo posso naquele que me fortalece!
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 16/02/13Posts: 45

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

Eventide

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 08/10/08Posts: 189

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



?

 

 

1440522_2.png

 

je19921992

Tudo posso naquele que me fortalece!
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 16/02/13Posts: 45

Reporta então.... E como funciona esse ae que vc postou?

P.S. meu script é o comun em todos os servers... Só quero um que faça aquilo la em cima do topico...

Eventide

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 08/10/08Posts: 189

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.



?

 

 

1440522_2.png

 

vital900

Xtibia, agente se vê por aqui!
avatar
Grão-Duque
Grão-Duque

INFOS

Grupo: Grão-DuqueRegistrado: 28/07/11Posts: 3455Gênero: MasculinoChar no Tibia: Transloko

Local errado, movido.


 

CoroNelas.png

je19921992

Tudo posso naquele que me fortalece!
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 16/02/13Posts: 45

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...

Skymagnum

Hamburguer
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 02/08/12Posts: 1025Char no Tibia: Maurolkit

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.

jeoz.png

brun123

vash
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 24/09/06Posts: 512

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

5303fg1.png

je19921992

Tudo posso naquele que me fortalece!
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 16/02/13Posts: 45

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...

vital900

Xtibia, agente se vê por aqui!
avatar
Grão-Duque
Grão-Duque

INFOS

Grupo: Grão-DuqueRegistrado: 28/07/11Posts: 3455Gênero: MasculinoChar no Tibia: Transloko

movido


 

CoroNelas.png