Ir para conteúdo
Entre para seguir isso  
iuniX

Arena! Nível Iniciante

Recommended Posts

Karyus    2
Karyus

Lwkass obrigado pela sugestões, eu iria pedir isto se o sr. não postasse. no caso eu nunca tinha me deparado com esta função, doPlayerSetNoMove(cid) (no caso eu tenho um caderno com todas as funções que contém meu distro, intão não tem a explicação como usar a função), e assim que recebi esse desafio eu interpretei esta função ja que esta na função while eu achei que assim que a verificação fosse falsa ele iria cancelar a função No Move. obrigado pelo desafio Bolotabunito, vc mereceu ganhar.

----------------------------------------------------------------------------------------

Eu até pensei em fazer com addEvent mas como o MaXwEllDeN ja me corrigiu varias vezes no sentido que o player desse logout e isso iria dar erro no console, e eu tinha pensado em adicionar battle no player para que não ocorresse este erro mas não achei alguma função parecida então resolvi usar while.

Editado por Karyus

Compartilhar este post


Link para o post
Compartilhar em outros sites
iuniX    4
iuniX

Quando escolherem um juiz, mande uma MP para ele avisando sobre o duelo para não ocorrer igual aconteceu dessa vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites
vyctor17    35
vyctor17

Vou testar o script já edito.

 

Edit: os dois contem erros mais os com erros mais graves (para min.) e o do karyus, mesmo eu achando que sem os erros encontrados no script seria bem melhor do que o do bola mais pelos erros meu voto mais para o bola.

 

OBS: peço desculpa sobre a demora estive ocupado esses dias

Editado por vyctor17

Compartilhar este post


Link para o post
Compartilhar em outros sites
Kuma Bear    33
Kuma Bear

Bolotabunito, Você se atentou a colocar coisas extras, como não poder usar em batalha, e isso é bem legal;

Pense um player que use a talk umas 10 vezes sem parar, isso vai fazer com que 10 while true do rodem ao mesmo tempo, mas agora pense que umas 20 pessoas ou mais façam isso ao mesmo, vai fazer com que 200 while true do rodem e concerteza vai gerar lag, ou seja, faltou uma verificação para que caso o player já esteja usando bloqueie de usar novamente até que termine o tempo em que não se pode andar;

Vi que você definiu uma condição no começo, mas não a usou;

Você também colocou 2 talkactions juntas (2 funções onSay, uma na linha 5 e outra na linha 28), considerei que elas estivessem juntas, mesmo não entendendo oque você quis fazer ali;

O uso do os.clock() na linha 14 é desnecessário;

 

Muito obrigado pelas dicas, Não pensei no caso de vários players usarem mais de um, ou apenas um usar várias vezes, achei que retirando soul resolveria, porém se um player tiver full soul, Dai.. HEHE.

A Condition, Eu estava com o script quase pronto aqui, e resolvi por a condition, mais nem me deparei que não a usei .-.

Na segunda fcuntion onSay, achei que fosse necessário por ali novamente.

HEHE.

 

Obrigado ^^

 

----

@Karyus

Me sinto elogiado.

Sou Apenas um iniciante, e eu ganhei de você, que penso eu ser mais avançado que a minha pessoa.

Obrigado pelo que disse.

 

@EDIT

 

Certo, HAHA.

(Musica de Suspense)

Que os jogos comecem...

SAW'

Editado por bolotabunito

Compartilhar este post


Link para o post
Compartilhar em outros sites
Karyus    2
Karyus

@bolotabunito

Mas não vai comemorando muito que to pensando em desafiar o Sr. , so to pensando como poderá ser o script e assim vamo movimentando a seção (: :trollface:

 

Se ninguem desafiar eu irei editar o topico com o desafio.

----------------------------------------------------------------------------------------

Edit: desafiando o ganhador.

Fazer um script de teleport, onde ao usar um comando saira 4 efeitos (qualquer tipo, e um de cada lado, cima e baixo) de alguma distancia até o player mas irar depender da direção que o player esta olhando assim ficando 4 tipos de distanceeffect, o player so podera ser teletransportado (para qualquer coordenada a sua escolha) se estiver com battle, mas havera uma chance de o teleport levar para o lugar errado, assim sumonando um monstro (inimigo).

 

Caso não entenda me avise.

 

-------------------------------------------------------------------------------------------

Fazer um script que manda 4 effects dependendo de onde o player estiver olhando, e o teleporta para onde ele desejar, porém tem chance de dar errado, levando ele prum lugar onde tem monstros?

 

(talkaction) -- ?

 

Sim talkaction, mas se der errado levar pra qualquer lugar e sumonar um monstro.

4 effects um pra cada lado . exemplo, se ele estiver olhando para o norte ira dar um efeito x, se ele estiver olhando para o sul ira dar um effeito y, e assim por diante e os effeitos viram dos 4 lados(esquerda, direita, cima, baixo) ate o tile que o player estiver.

 

@EDIT²

 

Entendi O.O

 

Vai vir um distance effect do norte, sul, leste e oeste em direção para o player?

(foi essa parte que eu não entendi)

 

Sim as 4 efeitos irão vir de uma posição ate o player uma DE cada lado(norte, sul, leste e oeste) , não se confunda com os 4 effeitos diferentes.

Editado por Karyus

Compartilhar este post


Link para o post
Compartilhar em outros sites
Kuma Bear    33
Kuma Bear

Edit: desafiando o ganhador.

Fazer um script de teleport, onde ao usar um comando saira 4 efeitos (qualquer tipo, e um de cada lado, cima e baixo) de alguma distancia até o player mas irar depender da direção que o player esta olhando assim ficando 4 tipos de distanceeffect, o player so podera ser teletransportado (para qualquer coordenada a sua escolha) se estiver com battle, mas havera uma chance de o teleport levar para o lugar errado, assim sumonando um monstro (inimigo).

 

Caso não entenda me avise.

 

 

@EDIT²

 

Entendi O.O

 

Vai vir um distance effect do norte, sul, leste e oeste em direção para o player?

(foi essa parte que eu não entendi)

Editado por bolotabunito

Compartilhar este post


Link para o post
Compartilhar em outros sites
Kuma Bear    33
Kuma Bear

function onSay(cid, words, param)
   if math.random(100) <= 70 then
       doSendMagicEffect(pos,30)
       doTeleportThing(cid,{x=1111,y=1111,z=1})
           doSendMagicEffect(getCreaturePosition(cid), 1, 0)
           doSendMagicEffect(getCreaturePosition(cid), 2, 1)
           doSendMagicEffect(getCreaturePosition(cid), 3, 2)
           doSendMagicEffect(getCreaturePosition(cid), 4, 3)
       doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"O Teleporte funcionou! Tenha um bom Proveito.")
   end
   if math.random (100) <= 30 then
       doSendMagicEffect(pos, 30)
       doTeleportThing(cid,{x=0000,y=0000,z=0})
       doSummonCreature(Demon, {x=0000, y=0000, z=0})
       doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Cuidado, Houve um erro e você foi teleportado para um lugar onde só os melhores sobrevivem!")
   end
 return true
end

Script Não Testado

 

Agora que vença o Melhor :pega-el:

 

@Editei para arrumar identação

Que não adiantou nada ficou a mesma coisa ;o

Editado por bolotabunito

Compartilhar este post


Link para o post
Compartilhar em outros sites
Karyus    2
Karyus
function onSay(cid, words, param)
  local p = getCreaturePosition(cid) 
  local effect = {3, 4, 35, 37} -- os 4 effeitos necessarios
  local monstro = "Dragon" -- a criatura necessaria
  local lugares = {{x=0000,y=0000,z=0}, {x=1111,y=1111,z=1}} -- lugares a ser teletransportado, o primeiro é o lugar certo e o segundo o errado.
  local posicao = {{x=p.x,y=p.y+4,z=p.z}, {x=p.x,y=p.y-4,z=p.z}, {x=p.x-4,y=p.y,z=p.z}, {x=p.x+4,y=p.y,z=p.z}} -- posição que irá sair os effeitos em direção ao player
  if getCreatureCondition(cid, CONDITION_INFIGHT) then
        if math.random(1,2) == 1 then
              if getPlayerLookDir(cid) == 0 then
                 doSendDistanceShoot(posicao[1], p, effect[1])
                 doSendDistanceShoot(posicao[2], p, effect[1])
                 doSendDistanceShoot(posicao[3], p, effect[1])
                 doSendDistanceShoot(posicao[4], p, effect[1])
                 doTeleportThing(cid, lugares[1])
              elseif getPlayerLookDir(cid) == 1 then
                 doSendDistanceShoot(posicao[1], p, effect[2])
                 doSendDistanceShoot(posicao[2], p, effect[2])
                 doSendDistanceShoot(posicao[3], p, effect[2])
                 doSendDistanceShoot(posicao[4], p, effect[2])
                 doTeleportThing(cid, lugares[1])
              elseif getPlayerLookDir(cid) == 2 then
                 doSendDistanceShoot(posicao[1], p, effect[3])
                 doSendDistanceShoot(posicao[2], p, effect[3])
                 doSendDistanceShoot(posicao[3], p, effect[3])
                 doSendDistanceShoot(posicao[4], p, effect[3])
                 doTeleportThing(cid, lugares[1])
              elseif getPlayerLookDir(cid) == 3 then
                 doSendDistanceShoot(posicao[1], p, effect[4])
                 doSendDistanceShoot(posicao[2], p, effect[4])
                 doSendDistanceShoot(posicao[3], p, effect[4])
                 doSendDistanceShoot(posicao[4], p, effect[4])
                 doTeleportThing(cid, lugares[1])
              end
        else
               doPlayerSendTextMessage(cid, 22, "Oops! vc foi teletransportado para o lugar errado")
               doTeleportThing(cid, lugares[2])
               doSummonCreature(monstro, posicao[1]) 
       end
  else
  doPlayerSendTextMessage(cid, 22, "vc não esta com battle e por isso não foi teletransportado")
  end
end         

* Sugiro como juiz o Lwkass novamente.

Editado por Karyus

Compartilhar este post


Link para o post
Compartilhar em outros sites
Lwkass    1
Lwkass

Fico feliz em ver que os dois se preocuparam com a indentação, para alguns pode parecer desnecessário, mas organização no code é importante também.

Agora as criticas/sugestões:

 

bolotabunito:

Na linha 3 e 12 você "chamou" a variavel "pos", só que ela não foi declarada anteriormente, mas eu entendi que era a mesma posição que está na linha 4;

Nas linhas 5 até 8, vi 2 problemas, primeiro o 3º parametro que não entendi exatamente aqueles numeros (Nota: o 3º parametro da função doSendMagicEffect faz com que apenas o player que tiver o cid igual ao 3º parametro possa enxergar o efeito em questão) e se eu entendi direito o desafio, era para acontecer um efeito diferente para cada direção do player e você colocou os 4 efeitos ao mesmo tempo;

Outro problema, na linha 11, esse segundo math.random foi usado, de certo modo, errado, entendi também que era para ter 30% de chance de dar errado, só que, a cada vez que você usa o math.random ele gera 1 numero aleatorio, certo ? Então pense, na linha 2 você já usou um math.random e na linha 11, outro, ou seja, os numeros aleatórios gerados seriam diferentes e isso possibilitaria que, por exemplo, no primeiro math.random gerasse um numero menor que 70, satisfazendo a condição da linha 2, e o segundo math.random gerasse um numero menor que 30, também satisfazendo a condição da linha 11, e acontecendo isso, os dois blocos executariam, você deveria ter usado um "else" ao invés desse segundo math.random, assim não teria chance de acontecer isso que eu exemplifiquei;

Linha 14, o primeiro parametro da função doSummonCreature é uma string e você colocou como uma variavel (usando Demon simplesmente, ao invés de "Demon");

 

 

Karyus:

No seu code você usou comentários explicando as variáveis do começo e isso é sempre bem-vindo quando se programa em qualquer linguagem;

Na linha 37, vai invocar o Dragon na posição igual a posicao[1], certo, só que anteriormente na linha 36 o player é teleportado até a posição lugares[2] e com isso sua posição também muda para lugares[2], a posição que está salva na variavel posição[1] corresponde ao lugar anterior (já que os calculos de x, y e z foram feitos baseados na posição do player), ou seja, vai invocar o Dragon no lugar que o player estava antes e não onde ele está depois de ser teleportado (não sei se deu pra entender oque eu quis dizer uhahuahua);

Só por dica/sugestão, pois acredito que você já conheça os loops (for, while e repeat), nas linhas 9 até 33 poderia ser feito da seguinte maneira:

for i = 1, 4 do
doSendDistanceShoot(posicao[i], p, effect[getPlayerLookDir(cid) + 1])
end
doTeleportThing(cid, lugares[1])

Caso não tenha intendido, perceba que tem uma certa lógica entre cada bloco, o 3º parametro das funções doSendDistanceShoot é sempre o valor de numero 1 + lookDir (quando o look for 0, perceba que o effect fica effect[1]; quando look for 1, fica effect[2]; e assim por diante) e dá para simplificar isso em menos linhas usando loop que vai de 1 a 4 (já que se usa os índices de 1 a 4 no primeiro parametro) e como todos teleportam, usa-se o doTeleportThing.

 

Bem, isso é só dica/sugestão de onde pode-se melhorar o seu code.

 

 

O script do Karyus atendeu melhor ao tema proposto, e foi o que venceu dessa vez.

Editado por Lwkass

Compartilhar este post


Link para o post
Compartilhar em outros sites
Karyus    2
Karyus

@Lwkass obrigado por explicar, eu conheço um pouco de loops, mas não imaginei que poderia ter usado nesta situação. :hehe:. concerteza usando loops ficaria melhor em tudo, fora que iria diminuir pela metade o script ou até mais que isso.

 

Na linha 37, vai invocar o Dragon na posição igual a posicao[1], certo, só que anteriormente na linha 36 o player é teleportado até a posição lugares[2] e com isso sua posição também muda para lugares[2], a posição que está salva na variavel posição[1] corresponde ao lugar anterior (já que os calculos de x, y e z foram feitos baseados na posição do player), ou seja, vai invocar o Dragon no lugar que o player estava antes e não onde ele está depois de ser teleportado (não sei se deu pra entender oque eu quis dizer uhahuahua);
É mesmo agora vendo bem eu me confundi e acabei me esquecendo que salvo a posição do player nas variaveis, :pff:. Editado por Karyus

Compartilhar este post


Link para o post
Compartilhar em outros sites
Kuma Bear    33
Kuma Bear
Fico feliz em ver que os dois se preocuparam com a indentação, para alguns pode parecer desnecessário, mas organização no code é importante também.

Agora as criticas/sugestões:

 

bolotabunito:

Na linha 3 e 12 você "chamou" a variavel "pos", só que ela não foi declarada anteriormente, mas eu entendi que era a mesma posição que está na linha 4;

Nas linhas 5 até 8, vi 2 problemas, primeiro o 3º parametro que não entendi exatamente aqueles numeros (Nota: o 3º parametro da função doSendMagicEffect faz com que apenas o player que tiver o cid igual ao 3º parametro possa enxergar o efeito em questão) e se eu entendi direito o desafio, era para acontecer um efeito diferente para cada direção do player e você colocou os 4 efeitos ao mesmo tempo;

Outro problema, na linha 11, esse segundo math.random foi usado, de certo modo, errado, entendi também que era para ter 30% de chance de dar errado, só que, a cada vez que você usa o math.random ele gera 1 numero aleatorio, certo ? Então pense, na linha 2 você já usou um math.random e na linha 11, outro, ou seja, os numeros aleatórios gerados seriam diferentes e isso possibilitaria que, por exemplo, no primeiro math.random gerasse um numero menor que 70, satisfazendo a condição da linha 2, e o segundo math.random gerasse um numero menor que 30, também satisfazendo a condição da linha 11, e acontecendo isso, os dois blocos executariam, você deveria ter usado um "else" ao invés desse segundo math.random, assim não teria chance de acontecer isso que eu exemplifiquei;

Linha 14, o primeiro parametro da função doSummonCreature é uma string e você colocou como uma variavel (usando Demon simplesmente, ao invés de "Demon");

 

Puxa, eu tive muitos erros '-'

Porém o Tema proposto por ele me confundiu muito também, XD,

quando eu fui ler pela primeira vez o script do Karyus, eu entendi o que era pra fazer '-'

Preciso prestar mais atenção em meus scripts nessa parte.

Só mais uma coisa.

 

na parte

                doSendMagicEffect(getCreaturePosition(cid), 1, 0)

O 3° Parametro, era o lugar que ia ser mandado o magic effect, Norte, Sul, Leste Oeste.

Tipo assim '-'

Achei que funcionaria, Mais achei errado QQQ

 

 

@Karyus

Você Ganhou :fuu:

 

Mais ja estou bolando outro plano - MUHAHAHHA :determinated:

Meus parabéns ^^

 

Obrigado,

 

Junior.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Karyus    2
Karyus

@bolotabunito A vida é assim ganhar e perder assim como eu perdi antes, mas lembre-se de nunca desistir.

 

E que os jogos comecem.! hahaha :trollface:

Compartilhar este post


Link para o post
Compartilhar em outros sites
SkyFail    0
SkyFail

A Arena ainda está em funcionamento?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Karyus    2
Karyus

Acho que sim (:

Compartilhar este post


Link para o post
Compartilhar em outros sites
Willbhor    18
Willbhor

Sou Scripter iniciante, alguém do mesmo nível quer me desafiar?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Kuma Bear    33
Kuma Bear

Estou meio enferrujado, mas bora :B

 

Só não sei bem um tema, e nem lembro mais como funciona a Arena.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Biozard    0
Biozard
Estou meio enferrujado, mas bora :B

 

Só não sei bem um tema, e nem lembro mais como funciona a Arena.

 

Tipo, eu desafio voce fazer 1 script... ai se vc aceitar, agente faz o script e posta aqui.. quem ganhar pode ser desafiado ou pode desafiar. se os 2 script funciona ganha quem fez menor, mais identado... axo q é assim

Compartilhar este post


Link para o post
Compartilhar em outros sites
Willbhor    18
Willbhor

É assim mesmo Biozard, mas precisavamos de um juíz, que tal ser você? Porque acho que o Iunix nem entra mais direito.

Editado por Will Oliveira

Compartilhar este post


Link para o post
Compartilhar em outros sites
Willbhor    18
Willbhor

Bom, vamos animar isso aqui então rs

Desafio o @bolotabunito

Script: Item que concede promotion ao player e se o player não tiver vocação é atribuída uma vocação randômica ao mesmo.

 

local config = {
[1] = {1},
[2] = {2},
[3] = {3},
[4] = {4}
}


local vocation = {
[1] = {1, 5},
[2] = {2, 6},
[3] = {3, 7},
[4] = {4, 8}
}


function onUse(cid, item, frompos, item2, topos)
        for v = 0, #config do
            for w = 0, #vocation do
                if getPlayerVocation(cid) == 0 then
                   if math.random(1,4) == config[v] then
                      doPlayerSetVocation(cid, config[v])
                      if getPlayerVocation(cid) == vocation[w][1] then
                         doPlayerSetVocation(cid, vocation[w][2])
                         return doRemoveItem(item.uid, 1) and doSendMagicEffect(frompos, 30)
                      end
                   end
                   return doRemoveItem(item.uid, 1) and doSendMagicEffect(frompos, 30)
                end
            end
        end
end

Editado por Will Oliveira
Erro de escrita

Compartilhar este post


Link para o post
Compartilhar em outros sites
Kuma Bear    33
Kuma Bear

function onUse(cid, item)
   if getPlayerVocation(cid) == 0 then
       doPlayerSetVocation(cid, math.random(5,8))
   elseif getPlayerVocation(cid) >= 1 and getPlayerVocation(cid) <= 4 then
       doPlayerSetVocation(cid, getPlayerVocation(cid)+4)
   end
return true
end

 

Script não testado

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.

×