Jump to content

{Help} GuisetText = guiCreateEdit


Recommended Posts

Spoiler

addEventHandler("onClientGUIChanged", VGUI.edit[1],function()
text = guiGetText(source)
if string.len(text) > 10 then
    outputChatBox("Foi")
         guiSetText(source, text:gsub(" ",""))
    end
end)

Esse script eu fiz tentando Para o guiCreateEdit quando tive-se chegado a 20 caracterios no text.. so que nao bloqueia o text quando chega a 10 caracterios pode me ajuda?

Link to comment
  • Moderators

Use: guiEditSetMaxLength

Ou dependendo do seu caso, tente isto:

addEventHandler("onClientGUIChanged", VGUI.edit[1],function()
	local t = guiGetText(source)
	if string.len(t) > 10 then
		guiSetText( source, t:sub( 1, #t-1 ) )
	end
end)

Lembre-se de postar na seção Portuguesa da próxima vez: https://forum.multitheftauto.com/forum/127-programação-em-lua/

Caso contrário, ninguém vai te entender e você não vai receber nenhuma ajuda.

Edited by DNL291
Link to comment

Eu nao Sabia qual era o português, mais enfim nesse sistema a minha intenção era.. quando vc digita no "guiCreateEdit" e coloca-se mais de 20 letras ele nao ia mais deixar digitar no "guiCreateEdit"

OPS: Aquele 10 é um text que eu fiz

Edited by felipebaidoloko
correção
Link to comment

Pode me ajuda nesse script ? nao sei o que eu fiz de errado nele
 era um sistema que kikava o player se tiver menos de 4 palavras no nick.. so que se o cara entrar com numero maior no jogo.. e dentro do jogo ele troca para um menor Tipo com 2 palavras (BK < um exemplo) ele nao é kikado ou s eo cara colocar um codigo de cor no nick dele o sistema nao kika ele e ele fica com nick invisivel
 

Spoiler

function removeHexJoin(text, digits)
    assert(type(text) == "string", "Bad argument 1 @ removeHexJoin [String expected, got " .. tostring(text) .. "]")
    assert(digits == nil or (type(digits) == "number" and digits > 0), "Bad argument 2 @ removeHexJoin [Number greater than zero expected, got " .. tostring(digits) .. "]")
    return string.gsub(text, "#" .. (digits and string.rep("%x", digits) or "%x+"), "")
end

function nickChangeHandler ()
    local PlayerJoin = getPlayerName( source )
    local CheckPlayer = removeHexJoin (PlayerJoin, 6)
    if string.len(CheckPlayer) <= 4 then
        outputChatBox("[#ff0000"..PlayerJoin.."#ffffff] Seu Nickname é muito curto.",source,255,255,255,true)
        kickPlayer(source,"Nickname muito curto!")
    end
end
addEventHandler("onPlayerJoin", getRootElement(), nickChangeHandler)
addEventHandler("onPlayerChangeNick", getRootElement(), nickChangeHandler)

eu que fiz ele e ta com esses bug 

Link to comment
  • Moderators

Tente:


function nickChangeHandler (oldNick, newNick)
	local nick = getPlayerName(source)
	if eventName == "onPlayerJoin" then
		if string.len( nick:gsub("#%x%x%x%x%x%x","") ) <= 4 then
			outputChatBox("[#ff0000"..nick.."#ffffff] Seu Nickname é muito curto.",source,255,255,255,true)
			kickPlayer(source,"Nickname muito curto!")
		end
		return
	end
	if string.len( newNick:gsub("#%x%x%x%x%x%x","") ) <= 4 then
		outputChatBox("[#ff0000"..oldNick.."#ffffff] Seu nick deve ter mais que 4 caracteres.",source,255,255,255,true)
		cancelEvent( true, "nick curto" )
	end
end
addEventHandler("onPlayerJoin", getRootElement(), nickChangeHandler)
addEventHandler("onPlayerChangeNick", getRootElement(), nickChangeHandler)

Você disse que é menos de 4 caracteres, mas o código está verificando se o nick tem 4 ou menos - se o mínimo for realmente 3 pra baixo, troque <= para <.

Sobre a expulsão do jogador, eu não te aconselho fazer isso. Se você quer que entre mais jogadores, porque você expulsa do servidor o jogador só porque ele tem poucas letras no nick? Claro, a ideia é ele trocar o nick manualmente e reentrar, mas nem todos certamente farão.

Só mais um aviso, use esta ferramenta e selecione a linguagem Lua quando postar algum código Lua:

MSHAyJ3.png

Edited by DNL291
Link to comment
  • Other Languages Moderators
On 2017-6-12 at 00:30, DNL291 said:

Sobre a expulsão do jogador, eu não te aconselho fazer isso. Se você quer que entre mais jogadores, porque você expulsa do servidor o jogador só porque ele tem poucas letras no nick? Claro, a ideia é ele trocar o nick manualmente e reentrar, mas nem todos certamente farão.

Perdão em me meter no tópico, mas fiquei curioso em relação a forma de punição. O que é aconselhável fazer nesse caso para fazer o jogador mudar o nick sem kická-lo?
Será que um texto atrapalhando na tela serve? Tipo uma marca d'agua que só desaparece quando o jogador possuir um nick válido.

Link to comment

eu coloquei uma mensagem de texto, ate o jogador muda o nick, pois muitos fazem isso para sacanear no servidor, então quem quer realmente jogar vai alterar... pq se tem um nick menor que 4 letras ou ate mesmo com cor no nick é pq quer apronta algo, cansei de banir jogador pq colocava qualquer nick sem texto pra zoar dentro dele. então fiz esse sistema de poder kikar ele

Link to comment
  • Moderators
12 hours ago, Lord Henry said:

Perdão em me meter no tópico, mas fiquei curioso em relação a forma de punição. O que é aconselhável fazer nesse caso para fazer o jogador mudar o nick sem kická-lo?
Será que um texto atrapalhando na tela serve? Tipo uma marca d'agua que só desaparece quando o jogador possuir um nick válido.

Eu faria um painel pequeno, apenas para ele trocar o nick e usar um válido. Também poderia usar um sistema que gera um nick aleatório assim como o do MTA quando instala - seria perca de tempo com coisa pequena, na minha opinião, o primeiro método dá pra criar rápido e sem dificuldade.

Link to comment
  • Other Languages Moderators
3 hours ago, DNL291 said:

Eu faria um painel pequeno, apenas para ele trocar o nick e usar um válido. Também poderia usar um sistema que gera um nick aleatório assim como o do MTA quando instala - seria perca de tempo com coisa pequena, na minha opinião, o primeiro método dá pra criar rápido e sem dificuldade.

Sim, mas e nos casos em que o jogador insiste em ficar com o nick "ilegal"? Alguma forma de insistir que ele mude o nick? Por isso que pensei na marca d'água, pois é algo que incomoda o jogador solicitando que ele corrija o nick e ao mesmo tempo não é uma punição.

14 hours ago, felipebaidoloko said:

eu coloquei uma mensagem de texto, ate o jogador muda o nick, pois muitos fazem isso para sacanear no servidor, então quem quer realmente jogar vai alterar... pq se tem um nick menor que 4 letras ou ate mesmo com cor no nick é pq quer apronta algo, cansei de banir jogador pq colocava qualquer nick sem texto pra zoar dentro dele. então fiz esse sistema de poder kikar ele

Então...no servidor que eu sou Staff não posso fazer isso, pois alguns caras sem nick são Staffs investigativos. Dai kickar os caras vai ser ruim pois não se sabe se o objetivo do jogador é realmente zoar ou apenas não ser visto.

Edited by Lord Henry
Link to comment
  • Other Languages Moderators
4 hours ago, felipebaidoloko said:

Bom o que voces me indica fazer então? bloquear a troca de nick?

Bloquear o chat talvez?
Sempre que o cara com nick ilegal tentar falar no chat, bloqueia a mensagem dele e manda um outputChatBox pra ele solicitando que mude o nick.

Link to comment
  • Moderators
14 hours ago, Lord Henry said:

Sim, mas e nos casos em que o jogador insiste em ficar com o nick "ilegal"? Alguma forma de insistir que ele mude o nick? Por isso que pensei na marca d'água, pois é algo que incomoda o jogador solicitando que ele corrija o nick e ao mesmo tempo não é uma punição.

Então...no servidor que eu sou Staff não posso fazer isso, pois alguns caras sem nick são Staffs investigativos. Dai kickar os caras vai ser ruim pois não se sabe se o objetivo do jogador é realmente zoar ou apenas não ser visto.

Se o jogador realmente insistir em um nick curto, em primeiro lugar eu posso tratar ele como alguém que entra no servidor pra bagunçar apenas e não leva a sério o jogo-limpo. Então, talvez fazer um sistema mais específico nesse caso. A propósito, eu nunca tive um servidor de MTA com fluxo alto de jogadores, creio que quem têm deve conhecer bem como é lidar com jogadores problemáticos.

Em alguns servidores RPs é obrigatório o uso de nicks que estão de acordo com o servidor, então a ideia da marca d'água não vai se aplicar. Por isso mesmo eu pensei nessa outra forma: O jogador entra, verifica seu nick, caso não seja aceito no servidor, mostre-o um painel e ele só joga quando trocar para outro nick válido.

No caso de alguns membros da Equipe do servidor agir dessa forma pra algum tipo de investigação, vai do consenso da Equipe não usar um sistema desses e adotar outro tipo de ideia mais apropriada.

Link to comment

Galera agora cortando um pouco desse assunto pode me ajuda com esse sistema que fiz pro meu servidor

Esse sistema espalha 1 caixa em cada cordenada da tabela que eu fiz, olhe so

function removeLootsMilitarys (blip,Military,LootMility)
    if isElement(blip) then
        destroyElement(blip)
    end
    if isElement(Military) then
        destroyElement(Military)
    end
    if isElement(LootMility) then
        destroyElement(LootMility)
    end
end

function LootMilitarys ()
	local item_id = math.random(3,#vehSpawns["LootsMilitarys"])
	local x,y,z = vehSpawns["LootsMilitarys"][item_id][1],vehSpawns["LootsMilitarys"][item_id][2],vehSpawns["LootsMilitarys"][item_id][3]
    Military = createObject(964,x,y,z, 0, 0, 0)
	outputChatBox("CRIADO")
	blip = createBlip ( x,y,z, 23 )
	LootMility = createColSphere(x,y,z,3)
	attachElements(LootMility, Military, 0, 0, 0)
	setElementData(Military,"parent",LootMility)
	setElementData(LootMility,"parent",Military)
	setElementData(LootMility,"Loot Militar",true)
	setElementData(LootMility,"MAX_Slots",0)
	setElementData(LootMility, "MAX_Slots", 0)
    setTimer(removeLootsMilitarys,120000,1,blip,Military,LootMility)
end
setTimer(LootMilitarys,120000,0

 

Pra testa eu deixei de 2 em 2 min para criar a caixa e 2 min para remover, e deu certo só que ela cria 1 caixa só eu queria que cria-se 3 caixas ai de 2 em 2 min pelo SetTimer removia as 3 e trocava de lugar de volta aleatoriamente

Pode ver a onde eu errei? Por favor 

Obrigado ;)

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...