Ir para conteúdo
Entre para seguir isso  
Mock

Teste! Venha saber se vc sabe lua!

Recommended Posts

Capaverde    1
Capaverde
Desafio 2.0:

 

Agora e algo mais simples,

O tfs (the Forgotten server) tem a opção de salvar global storages p vc derurbar o ot e ela nao sumir, agora o problema é que: global storage nao salva STRING e o desafio desta vez é:

Criar um modo de salvar string em algum lugar ou coisa e pegar o que estiver la depois.

 

Dessa vez eu quero varirar vou colocar 1 forma de faze-lo porem dentro de spoiler

PS: nao vale copiar do spoiler :D

 

funçoes encrypt e decrypt:

function encrypt(msg)
local nstor = math.ceil(#msg/4)
local arr={}
   for x=1,nstor do
   table.insert(arr, msg:sub((x-1)*4+1, math.min(x*4,#msg)))
   end
local values = {}
   for x=1,nstor do
   str = arr[x]
   value=0
       for y=1,#str do
       value = value*256+str:byte(y)
       end
   value=value-2^31
   table.insert(values, value)
   end
return values
end

function decrypt(values)
local msg = ""
   for x=1,#values do
   local value = values[x]+2^31
   str = ""
       while value > 0 do
       local charr = value%256
       str=table.concat({string.char(charr), str})
       value = (value-charr)/256
       end
   msg = table.concat({msg, str})
   end
return msg
end

exemplo:

function onSay(cid, words, param)
if words == "gravar" then
key_start= 5001
if param == "" then return 1 end
local values = encrypt(param)
for x=0,#values-1 do
setGlobalStorageValue(key_start+x, values[x+1])
end
setGlobalStorageValue(5000, #values)
elseif words == "mostrar" then
local values = {}
local n = getGlobalStorageValue(5000)
for x=1,n do
table.insert(values, getGlobalStorageValue(5000+x))
end
doPlayerSendTextMessage(cid, 22, decrypt(values))
else
doPlayerSendCancel(cid, "Invalid param.")
end
return 1
end

Obs: Quanto mais caracteres a mensagem tiver, mais storagevalues vao ser necessários para armazená-la. Cada storagevalue são 4 caracteres, se vc quiser guardar uma mensagem de 100 letras, vao ser necessários 25 storagevalues.

 

Obs2: Essa talkaction foi feita apenas de exemplo. Não é livre de bugs =/

 

@nostra

bitwise, wtf? ;p

 

@mock

eaí, ganhei? :D

Editado por Capaverde

Compartilhar este post


Link para o post
Compartilhar em outros sites
Deragon    25
Deragon

storagevalue guarda até 6 caracteres...

Compartilhar este post


Link para o post
Compartilhar em outros sites
Capaverde    1
Capaverde

msm? o.o

Compartilhar este post


Link para o post
Compartilhar em outros sites
Eventide    7
Eventide

@capaverde

o meu tá bem mais simples, curto e pratico...

eu que ganhei! ;-)

Compartilhar este post


Link para o post
Compartilhar em outros sites
Capaverde    1
Capaverde

@eventide

o.O

pode tá mais simples, mas nao tá mais prático, ja q nao faz nada =/

string certa e errada? isso tá parecendo um isInArray pra strings mal feito >.<

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mock    32
Mock

capaverde o seu ate daria certo e e MTO util se for guardar algum tipo de senha mais storagevalue grava ate 6 entao teria outro jeito :P

@eventide

a sua tb dá so q se o cara por uma string grande demais n vai dá

 

se quer uma dica pensa em Mysql :P

 

 

 

Não abra!

 

 

Não abra!

 

 

Não abra!

 

 

Não abra!

 

 

Não abra!

 

 

Não abra!

 

 

Não abra!

 

 

Não abra!

 

 

Não abra!

 

 

Não abra!

 

 

Não abra!

 

 

Não abra! A RESPOSTA ESTA CHEGANDO!

 

 

Não abra! A RESPOSTA ESTA CHEGANDO!

 

 

Não abra! A RESPOSTA ESTA CHEGANDO!

 

 

Não abra! A RESPOSTA ESTA CHEGANDO!

 

 

Não abra! A RESPOSTA ESTA CHEGANDO!

 

 

assert(con:execute("INSERT INTO `global_string` (`id`, `string`) VALUES (" .. id .. ",".. string .." );"))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Editado por Mock

Compartilhar este post


Link para o post
Compartilhar em outros sites
Eventide    7
Eventide

@mock

e o que eu falei antes, guardar numa database propia... ¬¬"

maaans, sabia que isso deixa o serv mais lento?

alias, o seu code está errado.

descubra pq e ganhe um pirulito. :-)

Editado por Eventide

Compartilhar este post


Link para o post
Compartilhar em outros sites
Capaverde    1
Capaverde

@mock

nevertheless, o meu funciona >.<

e o meu sql nao tem essa global_string

e vc ta overusing essa spoil tool :s

stdin:1: attempt to concatenate global 'string' (a table value)

e as coisinhas tem que estar entre aspas (' ') pra ser executado pelo sql, ficaria assim

assert(con:execute("INSERT INTO `global_string` (`id`, `string`) VALUES ('" .. id .. "', '".. str .."');"))

e o script do eventide nao funciona, não adianta, q vcs nao tao enganando ninguem :no:

Compartilhar este post


Link para o post
Compartilhar em outros sites
Eventide    7
Eventide

@capaverde

me diga então, qual o erro do meu script? '-'

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mock    32
Mock

@capaverde

isso nao existe em nen um mysql vc ter q ir la no phpmyadmin e criar :P

eu puis ocmo exemplo

Compartilhar este post


Link para o post
Compartilhar em outros sites
GDLib    2
GDLib
@mock

e o que eu falei antes, guardar numa database propia... ¬¬"

maaans, sabia que isso deixa o serv mais lento?

alias, o seu code está errado.

descubra pq e ganhe um pirulito. :-)

 

Quem te disse que deixa mais lento? Storages são querys processadas internamente, isso dá na mesma.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mock    32
Mock
@mock

e o que eu falei antes, guardar numa database propia... ¬¬"

maaans, sabia que isso deixa o serv mais lento?

alias, o seu code está errado.

descubra pq e ganhe um pirulito. :-)

 

Quem te disse que deixa mais lento? Storages são querys processadas internamente, isso dá na mesma.

 

verdade mesmo q vc jogue no mysql 10 mil storages vai lagar so na hora de po-las la pq pra por 10 mil valores em algum lugar ou abrir 10 mil valores e bastante coisa ai vicê vai notar q vai ficar ums 20 segundos parado usando 100% da cpu 50% server 50% mysql, so q eu nao imagino um script q ira criar 10 mil valores de uma ves.

 

cara você tem q ser MTO monstro pra consegui faze um server trava sem fazer um loop em do, repeat, while o0

eu nunca consegui.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Nord    2
Nord

Não vo resolver mas da pra codificar a linguagem com uma das funções que o Dark fez e salvar num storage.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Capaverde    1
Capaverde

@nord

kkk

e o q eu fiz?

Compartilhar este post


Link para o post
Compartilhar em outros sites
GDLib    2
GDLib
verdade mesmo q vc jogue no mysql 10 mil storages vai lagar so na hora de po-las la pq pra por 10 mil valores em algum lugar ou abrir 10 mil valores e bastante coisa ai vicê vai notar q vai ficar ums 20 segundos parado usando 100% da cpu 50% server 50% mysql, so q eu nao imagino um script q ira criar 10 mil valores de uma ves.

 

cara você tem q ser MTO monstro pra consegui faze um server trava sem fazer um loop em do, repeat, while o0

eu nunca consegui.

 

Não necessáriamente precisa de fazer algorítimos com loops para se travar um servidor ;)

E não é bem assim que o uso de storages irá atuar ;P

Você fez algum benchmark? Esses dados que você pôs, espero que sejam apenas exemplos EXAGERADOS.

Compartilhar este post


Link para o post
Compartilhar em outros sites
ClouÐ~    0
ClouÐ~

Msm o Kaotar explicando, ñ entendi direito :P, explica melhor? (Sim, Sou um Mongol)

 

CoD~

Compartilhar este post


Link para o post
Compartilhar em outros sites
Eventide    7
Eventide

@cloud

Uma database mySQL ou SQLite, são como "gavetas", que guardam informações, um dos jeitos de fazer storage value por nome seria alterando essas "gavetas" para que guardem um novo tipo de informação, assim fazendo com que o script mande para elas. O outro jeito seria fazendo um algoritimo com loops e tabelas, mas assim a informação resetaria quando o server caisse por exemplo, o outro jeito eu não sei explicar u.U

Compartilhar este post


Link para o post
Compartilhar em outros sites
Fletch    0
Fletch

@mock

usa lua sql pra isso unico jeito

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×