Ir para conteúdo

Desafio do mês.


Night Wolf

Posts Recomendados

Olá pessoal, antes de tudo gostaria de me apresentar.. me chamo Anderson mas alguns de vocês devem me conhecer pelo nick de xWhiteWolf; Bom, hoje eu venho propor um desafio para a equipe do xtibia, eu vou apresentar um pseudo-código em lua de um script que desenvolvi. Eu fiz o pseudo-código bem porcamente em mais ou menos uns 20 minutos, já o script em si demorou algumas horinhas :x porém eles estão bem parecidos.

 

local dif = {
    [1] = {0,1,1,2,1,1,0,0,2,0,1}, 
    [2] = {0,1,1,2,1,1,0,0,2,0,1},
    [3] = {0,1,1,2,1,1,0,0,2,0,1}
}

local delay = {
    [1] = 200,
    [2] = 150,
    [3] = 100
    }

function isRoomEmpty()
    if getGlobalStorageValue(19281) < 1 then
        return true
    end
end

function startEvent()
    setGlobalStorageValue(19281, 1)
    callWave(difficult, delay)
    return true
end

function callWave(dif, delay) -- fazer recursão
    alfa = getDifficult()
    for i = 1, #dif[alfa] + 7 do -- fazer + 7 loops para acabar as notas
        if i <= #dif[alfa] then
            doRemoveObj(up)
            doCreateObj(down)
        end
    end
    return true
end


-- versao recursiva
function callWave(n)
    n = n or 1
    alfa, delay = getDifficult(), getDelay()
    doCreateObj(down)
    doRemoveObj(up)
    if n < dif[alfa] + 7 then
        addEvent(callWave, delay, n + 1)
    end
    return true
end


local pos = {x = 160, y = 54, z = 7}

function onUse(cid, item, itemEx, fromPos, toPos)
    if isRoomEmpty() then
        startEvent()
		doTeleportThing(cid, pos)
	else
		doPlayerSendCancel(cid, "The room is busy right now, try again later.")
    end
    return true
end


 



O desafio é o seguinte: vocês tem que tentar adivinhar do que se trata esse código. Isso vale tanto para explicar partes do código quanto para explicar a idéia por trás dele.

A cada dia irei postar uma dica para ajudá-los nesse desafio, podendo ser uma dica explicando partes do código ou dicas sobre a funcionalidade dele.

"Mas lobo, por que eu iria tentar descobrir do que se trata seu código estúpido?" Bem meu caro, será uma tarefa legal e esse script é uma idéia bem inovadora.. só o fato de você tentar ler irá ajudá-lo a treinar seu cérebro para a linguagem Lua. E também há uma recompensa!! aquele que acertar ou chegar mais perto verá e terá acesso ao código antes de todo mundo!!111

Espero que vocês animem pra participar disso, se postei na seção errada peço que movam para a seção correta para que tenha melhor visibilidade.

Dicas = {
[1] = "Trata-se de um mini game no tibia"
}

Toda resposta certa irá receber um ponto de reputação minha (se a equipe permitir). Boa sorte e que os jogos comecem!!

Edit: pro sistema funcionar precisaria também de um movements, eu fiz +- um modelo de como seria pra ajudar vcs a descobrirem:

 

local itemid = 1679
local storage_point = 12721

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
	if math.abs(fromPosition.x - toPosition) > 2 then
		limpar_sala()
	end
	if item_in_pos then
		removeItem(pos)
		doSendMagicEffect(toPosition, 3)
		setPlayerStorageValue(cid, storage_point, getPlayerStorageValue(cid, storage_point) + 1)
	else
		doSendMagicEffect(fromPosition, 2)
	end
	doTeleportThing(cid, fromPosition)
return true
end



73QrLPZ.png

Link para o comentário
Compartilhar em outros sites

@@Daniel, thanks maninho. Vou tentar transformar esse tópico num desafio mensal e trazer novidades pra essa seção enquanto eu volto a scriptar *-*

@, foi um bom palpite hahaha mas não é não.. tenta dar uma lida no código, mesmo quem não tá familiarizado com a linguagem pode achar dicas lá. Essa é a idéia do tópico

@@Caronte, poderia ser.. mas em nenhum momento eu coloquei alguma função de criar monstros

Link para o comentário
Compartilhar em outros sites

Na minha opinião creio que isso seja um evento de tanto em tanto tempo ele abra um caminho que apenas na sequencia certa possa entrar... Eu lê rapidinho, Acho que está errado o meu chute mais é oque ue achei então... quando puder responder fala ai :)

Link para o comentário
Compartilhar em outros sites

vou explicar aquilo que eu entendi ,

uma variavel chamada dif com 3 tabelas com numeros em sequencia

uma outra variavel chamada delay com 3 tabelas e diminuindo 50 a cada tabela


1° função = tem uma sala e essa sala verifica se o evento começou se nao acontece nada

2° função = quando começar o evento vai setar uma storage global que ai com ela vai dar para abrir a sala ou entrar nela , e chamar uma wave , com uma dificuldade (sem valor setado) e um delay (acho que falta setar o delay) e pronto nada mais acontece ,

3° função = chama uma Wave , com uma dificuldade e um delay , com uma variavel alfa com o valor getDifficult setada , e um loop de +7 para aumentar a dificuldade? (0-0) e um se for menor de 1 a diferença da dificuldade vai tirar o Objeto (UP) e vai criar o objeto (Down) e fim


--- versao recursiva


1° função vai chamar uma wave n = 1 , vai ter dificuldade e um delay , vai criar o Objeto Down e vai retirar o Objeto Up , se o n for menor do que a diferença do alfa +7 vai fazer com que sempre chame uma wave aumenta a dificuldade e pronto

2° função vai ter uma variavel onde vai guardar posições x y z , a função vai funcionar ao você usar um item vai verificar se a sala estiver vazia, se sim começa o evento ai vai teleportar o Player para essa posição se a sala nao estiver vazia vai mandar uma mensagem para o player e fim




auehuaheuae é isso que eu entendi do seu script se eu estiver errado me corrija

Link para o comentário
Compartilhar em outros sites

@@Gabrieltxu, isso que você falou está tudo correto, com excessão dessa parte aqui:

3° função = chama uma Wave , com uma dificuldade e um delay , com uma variavel alfa com o valor getDifficult setada , e um loop de +7 para aumentar a dificuldade? (0-0) e um se  for menor de 1 a diferença da dificuldade vai tirar o Objeto (UP) e vai criar o objeto (Down) e fim
 
--- versao recursiva
 
1° função vai chamar uma wave n = 1 , vai ter dificuldade e um delay , vai criar o Objeto Down e vai retirar o Objeto Up , se o n for menor do que a diferença do alfa +7 vai fazer com que sempre chame uma wave aumenta a dificuldade e pronto 

Tem dois números que são muito utilizados em códigos no tibia (7 e 5). Aquele +7 tem uma razão de estar ali e não tem a ver com dificuldade de wave e sim com uma razão estética. Não é a diferença que tem que ser menor que 1 porque dif ali está se referindo à tabela dif.

Não é diferença e a wave não aumenta a dificuldade. Uma wave não chama outra, somente a si mesma (por isso o nome recursiva).

 

Link para o comentário
Compartilhar em outros sites

@@Gabrieltxu, isso que você falou está tudo correto, com excessão dessa parte aqui:

 

3° função = chama uma Wave , com uma dificuldade e um delay , com uma variavel alfa com o valor getDifficult setada , e um loop de +7 para aumentar a dificuldade? (0-0) e um se  for menor de 1 a diferença da dificuldade vai tirar o Objeto (UP) e vai criar o objeto (Down) e fim
 
--- versao recursiva
 
1° função vai chamar uma wave n = 1 , vai ter dificuldade e um delay , vai criar o Objeto Down e vai retirar o Objeto Up , se o n for menor do que a diferença do alfa +7 vai fazer com que sempre chame uma wave aumenta a dificuldade e pronto 

Tem dois números que são muito utilizados em códigos no tibia (7 e 5). Aquele +7 tem uma razão de estar ali e não tem a ver com dificuldade de wave e sim com uma razão estética. Não é a diferença que tem que ser menor que 1 porque dif ali está se referindo à tabela dif.

 

Não é diferença e a wave não aumenta a dificuldade. Uma wave não chama outra, somente a si mesma (por isso o nome recursiva).

 

 

 

entao cara kk nunca tinha visto isso , era essa parte que eu nao estava entendendo muito , mas valeu pelo desafio aprendi mais alguma coisa é nois

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...