Ir para conteúdo
Entre para seguir isso  
Gpwjhlkdcf

Teste seu nível em scripting!

Recommended Posts

Gpwjhlkdcf    21
Gpwjhlkdcf

Toda vez que quero testar o nível de algum scripter, eu peço a ele um script: a pedra do sexo. Vou disponibilizar o teste aqui, em forma de tópico, para vocês se auto-testarem.

 

Bom, a pedra do sexo consiste em uma action que tem como objetivo trocar o sexo de quem a ativou (De male pra female e de female pra male.)

 

As regras são:

  1. Não veja as respostas antes de fazer o script, senão o teste vai, obviamente, falhar.
  2. Só veja o resultado quando você tiver certeza de que o script que você fez funciona e executa o que é pedido.
  3. Se quiser, poste o seu resultado aqui. :)
  4. Siga o teste passo-a-passo.
  5. Se você fez de um jeito diferente dos mostrados aqui, poste como você fez para mim adicionar.

 

Passo 1

[spoiler=Mostrar]Faça uma action que troca o sexo do player que ativou a action, de female pra male e de male pra female. Teste se o script está funcionando e, quando você estiver pronto, siga para o Passo 2!

OBS: O ID do sexo female é 0 e do sexo male é 1!

 

 

Passo 2

[spoiler=Mostrar]Agora compare o script que você fez com os scripts abaixo e veja aonde você se encaixa.

 

Novato

function onUse(cid, item, fromPos, itemEx, toPos)
if item.itemid == 1285 then
if getPlayerSex(cid) == 0 then
doPlayerSetSex(cid, 1)
elseif getPlayerSex(cid) == 1 then
doPlayerSetSex(cid, 1)
end
end
end

 

Iniciante (Arrumei, valeu #Zeus)

function onUse(cid, item, fromPos, itemEx, toPos)
   if getPlayerSex(cid) == 0 then
     doPlayerSetSex(cid, 1)
   elseif getPlayerSex(cid) == 1 then
     doPlayerSetSex(cid, 0)
   end
 return true
end

 

Intermediário

function onUse(cid)
   if getPlayerSex(cid) == 0 then
     doPlayerSetSex(cid, 1)
     return true
   end
 doPlayerSetSex(cid, 1)
 return true
end

 

Períto

function onUse(cid)
 local sex = {
   [0]=1,
   [1]=0,
 }
 doPlayerSetSex(cid, sex[getPlayerSex(cid)])
 return true
end

 

Avançado

function onUse(cid)
 return doPlayerSetSex(cid, getPlayerSex(cid) == 1 and 0 or 1) and true or false
end

 

 

É isso ai, agora poste seu resultado aqui e boa sorte :bye:

Vale lembrar que, como todo teste, o resultado pode não ser exato, mas está ai para quem quiser fazer.

 

Eu uso este teste porque há várias formas de se fazer esta action, e baseado no modo como foi feito, dá pra ver mais ou menos o conhecimento do scripter.

Editado por Skyen Hasus

Compartilhar este post


Link para o post
Compartilhar em outros sites
Notorious    1
Notorious

A primeira vez que voce pediu pra eu fazer no MSN deu Perito xd

Muito bom esse teste, muito util, ja usei bastante ...

Editado por Notorious

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mock    32
Mock

deu avançado aki :o

Compartilhar este post


Link para o post
Compartilhar em outros sites
Nord    2
Nord

Como teste funciona muito bem, porém vale ressaltar que GAMEMASTER é sex = 2.

function onUse(cid)
local sex = getPlayerSex(cid)
return sex >= 2 and doPlayerSendCancel(cid, "Only players can change sex.") or doPlayerSetSex(cid, sex == 0 and 1 or 0)
end

Na sua demonstração de novato, iniciante e intermediário tem um erro, o player só vira homem.

 

Nível professional and pogger!

function onUse(cid)
return doPlayerSetSex(cid, math.abs(-1-getPlayerSex(cid)))
end

Editado por Mickfern

Compartilhar este post


Link para o post
Compartilhar em outros sites
Eventide    7
Eventide

o código do avançado tem algumas coisinhas erradas... :l

 

tá aqui um mais certo:

 

 

function onUse(cid)
 return doPlayerSetSex(cid, (getPlayerSex(cid) == 0)) and true
end

 

explicando:

no parâmetro, o sexo vai sempre retornar o oposto, pois se o sexo for 1, vai retornar false(0) e se for 0 vai retornar true(1).

 

 

 

t+ raposinha do mal e urso das terva

 

 

@nord

ri litros do nível POG, apesar de sempre transfomar o sexo pra 0:

-1 - 1 = -2 (retorna 0)

-1 - 0 = -1 (retorna 0)

Editado por Eventide

Compartilhar este post


Link para o post
Compartilhar em outros sites
lyndell    0
lyndell
o código do avançado tem algumas coisinhas erradas... :l

 

tá aqui um mais certo:

 

 

function onUse(cid)
 return doPlayerSetSex(cid, (getPlayerSex(cid) == 0)) and true
end

 

explicando:

no parâmetro, o sexo vai sempre retornar o oposto, pois se o sexo for 1, vai retornar false(0) e se for 0 vai retornar true(1).

 

 

 

t+ raposinha do mal e urso das terva

 

 

@nord

ri litros do nível POG, apesar de sempre transfomar o sexo pra 0:

-1 - 1 = -2 (retorna 0)

-1 - 0 = -1 (retorna 0)

 

Sobre o script nord, acho que nem um nem outro, acho que ta certo pelo Math.abs, que retorna o valor positivo, agora, ele irá retornar 1 ou 2, e nao 0 e 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Sinister    0
Sinister

Deu perito u.u

Nao entendo nada que os vicios acima estao falando haiauiuaei

Compartilhar este post


Link para o post
Compartilhar em outros sites
Lwkass    1
Lwkass

local sexs = {[0] = 1, [1] = 0}
function onUse(cid)
return doPlayerSetSex(cid, sexs[getPlayerSex(cid)])
end

 

períto ? :b

 

comofaz pra ser avançado ? '-'

Editado por Mickfern

Compartilhar este post


Link para o post
Compartilhar em outros sites
#Zeus    0
#Zeus
function onUse(cid)
   if getPlayerSex(cid) == 0 then
     doPlayerSetSex(cid, 1)
     return true
   end
 doPlayerSetSex(cid, 1)
 return true
end

Assim ele só vai setar o sexo do player para 1.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Eventide    7
Eventide

@lyndell

carai, você tá sumido =o

tipo velho, o math.abs arredonda números menores que 0 para 0, seria o mesmo que:

function math.abs(num)
if (num < 0)
	return 0 
end
return num
end

 

pelo que eu me lembro é isso... =o

Compartilhar este post


Link para o post
Compartilhar em outros sites
Dartier    0
Dartier

Deu períto uhu HAUEHAUEHUAE

Compartilhar este post


Link para o post
Compartilhar em outros sites
LG    1
LG

Períto

haha

gostei manda mais??

Compartilhar este post


Link para o post
Compartilhar em outros sites
lyndell    0
lyndell
@lyndell

carai, você tá sumido =o

tipo velho, o math.abs arredonda números menores que 0 para 0, seria o mesmo que:

 

function math.abs(num)   if (num < 0)       return 0    end   return numend

 

 

pelo que eu me lembro é isso... =o

 

 

Eita, nunca fui fluente aqui, haha

 

Sei la, podia jurar que o math.abs retornava o valor absoluto positivo

 

http://lua-users.org/wiki/MathLibraryTutorial

 

achei esse link aqui, uma das primeiras explicações é o math.abs, e parece que ele retorna o positivo mesmo

 

Ja faz meses, quase um ano que nao vejo lua, tambem

Compartilhar este post


Link para o post
Compartilhar em outros sites
Warp    0
Warp

[A]qui deu perito xd.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Dokmos    1
Dokmos

Galera o meu deu assim:

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

return doPlayerSetSex(cid, (1-getPlayerSex(cid)))

end

 

 

Fica parecido com o avançado, mas carrega menos dados.

 

 

Até mais,

Dokmos

Compartilhar este post


Link para o post
Compartilhar em outros sites
Sinister    0
Sinister

/\

Tem um parenteses a mais nao tem?

return doPlayerSetSex(cid, (1-getPlayerSex(cid)))

 

--- edit

ta certo msm, viajei agr

Editado por Sinister

Compartilhar este post


Link para o post
Compartilhar em outros sites
Dokmos    1
Dokmos

Não Sinister, está correto. Pelo menos não encontrei.

Compartilhar este post


Link para o post
Compartilhar em outros sites
LordBelkil    2
LordBelkil
/\

Tem um parenteses a mais nao tem?

return doPlayerSetSex(cid, (1-getPlayerSex(cid)))

 

Não, acho que você confundiu com o parentese do "(cid)"

:whistle:

Compartilhar este post


Link para o post
Compartilhar em outros sites
Gpwjhlkdcf    21
Gpwjhlkdcf
Galera o meu deu assim:

 

 

 

 

Fica parecido com o avançado, mas carrega menos dados.

 

 

Até mais,

Dokmos

mto sagaz a posição do 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Eventide    7
Eventide

@lyndell

é, você tem rasão..

 

obs¹: gostei do script do Dokmos

 

obs²: quanto períto por aqui... O_O

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.

×