Postado Fevereiro 22, 2016 9 anos bom, tem dois jeitos ao meu ver: criar uma tabela fora do escopo do callback e checar se o #table % 4 == 0 (se o numero de elementos na tabela é multiplo de 4) e dar concat nos 3 ultimos elementos for i = #table - 2, #table do -- end A outra opção é fazer assim if storage > 100 then zera o storage e faz o golpe pegando o valor do storage. elseif storage > 10 then salva como sendo valor antigo + (100* valor atual) elseif storage > 0 then salva como sendo valor antigo + (10 * valor atual) else salva como sendo valor antigo end mas lembra que isso não vai separar os hits de cada player, se 10 caras atacarem eles vão stackar o bang no mob rapidão. Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Postado Fevereiro 22, 2016 9 anos Autor veja, eu não entendi muito bem as duas formas, mas deixa eu tentar explicar melhor. o script está assim (não está terminado, mas da pra ter uma base) local damageperna = math.floor((getCreatureMaxHealth(attacker)*5)/5) function onStatsChange(cid, attacker, type, combat, value) if math.random(1, 100) <= 10 then if isCreature(cid) and getCreatureName(cid) == 'Dicer' then if getPlayerStorageValue(attacker, 9000) == 0 then doCreatureSay(uid, "Então você escolheu o combate, vamos ver o que a sorte tem para você", TALKTYPE_MONSTER_YELL) doSendMagicEffect(getCreaturePosition(cid), 26) setPlayerStorageValue(attacker, 9000) elseif getPlayerStorageValue(attacker, 9000) == 1 then doCreatureSay(uid, "onde é que paramos?", TALKTYPE_MONSTER_YELL) doSendMagicEffect(getCreaturePosition(cid), 26) end local dice = math.random(1, 6) if dice == 1 then addEvent(function() if isCreature(cid) then doCreatureSay(uid, "1! haha, o jogo diz que você deve perder a perna", TALKTYPE_MONSTER_YELL) doAddCondition(attacker, paralyse) doSendMagicEffect(getCreaturePosition(attacker), 0) doCreatureAddHealth(attacker, -(damageperna)) addEvent(doCreatureSay, 1000, "Então o que me diz? vamos continuar jogando? HAHA", TALKTYPE_MONSTER_YELL) if getPlayerStorageValue(attacker, 9002) == 0 and getPlayerStorageValue(attacker, 9003) == 0 and getPlayerStorageValue(attacker, 9004) == 0 then setPlayerStorageValue(attacker, 9002) elseif getPlayerStorageValue(attacker, 9003) == 0 and getPlayerStorageValue(attacker, 9004) == 0 then setPlayerStorageValue(attacker, 9003) elseif getPlayerStorageValue(attacker, 9004) == 0 then setPlayerStorageValue(attacker, 9004) end end end, 1500) elseif dice == 2 then addEvent(function() if isCreature(cid) then doCreatureSay(uid, "2! haha, o jogo diz que eu devo arrancar seu braço! HAHAHAHA", TALKTYPE_MONSTER_YELL) parei ai mas o sistema seria o mesmo até chegar no storage maximo que é 9004. acredito que ficou uma gambiarra bem feia no fim das contas, mas vou tentar explicar. local dice = math.random(1, 6) if dice == x then local dice seria a base pra fazer o jogo ser randomico (bem obvio). agora : if getPlayerStorageValue(attacker, 9002) == 0 and getPlayerStorageValue(attacker, 9003) == 0 and getPlayerStorageValue(attacker, 9004) == 0 then setPlayerStorageValue(attacker, 9002) elseif getPlayerStorageValue(attacker, 9003) == 0 and getPlayerStorageValue(attacker, 9004) == 0 then setPlayerStorageValue(attacker, 9003) elseif getPlayerStorageValue(attacker, 9004) == 0 then setPlayerStorageValue(attacker, 9004) end essa é a parte que bagunça um pouco mas da pra entender (como não ta pronto, ainda não testei) funcionaria assim : o script verifica o storage do jogador e se ele não tiver nenhum dos 3 storages que são setados a cada ataque ele recebe o storage 1 ( que seria o primeiro ataque ). se a primeira condição for falsa, significa que ele possui algum storage, ai eu fui excluindo scripts dos ataques anteriores um por um de forma que vá identificando bem qual o estagio do jogo. AGORA viria a parte que eu não consigo fazer nem pensar como fazer. se o jogador tiver o storage 9004 que é o ultimo ataque ( o terceiro ). o script verificaria o storage e traria a função (que não existe) que eu disse: getAllRandomValues(math1, math2, math3) if math1 * math2 * math3 <= xxx then alguma coisa elseif math1 * math2 * math3 == xxx then alguma coisa elseif math1 * math2 *math3 >= then alguma coisa
Postado Fevereiro 22, 2016 9 anos fazendo dessa maneira fica feio mas se vc quiser q seja sempe o quarto ataque de um mesmo player pra tem q ser assim (vou dar uma melhorada nesse código pra vc mas a ideia é essa). Agora se vc não ligar de ativar sempre no quarto ataque q o bixo toma (independente de quem atacou) aí da pra fazer ficar pequeninho o código. Me fala qual das duas vc quer q eu faço já tudo pra você Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Postado Fevereiro 22, 2016 9 anos Autor Na verdade esse seria o boss de uma quest, só da pra entrar um player. Os 2 jeitos acabariam por funcionar igual.
Postado Fevereiro 23, 2016 9 anos tá bem dificil de entender oque vc quis fazer aqui mas em todo caso arrumei uns erros que vc tinha cometido (de código, de lógica ainda tem vários ao meu ver) e coloquei da forma que eu tinha proposto anteriormente. Spoiler function onStatsChange(cid, attacker, type, combat, value) if math.random(1, 100) <= 10 then if isCreature(cid) and getCreatureName(cid) == 'Dicer' then if getPlayerStorageValue(attacker, 9000) == 0 then doCreatureSay(cid, "Então você escolheu o combate, vamos ver o que a sorte tem para você", TALKTYPE_MONSTER_YELL) doSendMagicEffect(getCreaturePosition(cid), 26) setPlayerStorageValue(attacker, 9000, 1) elseif getPlayerStorageValue(attacker, 9000) == 1 then doCreatureSay(cid, "onde é que paramos?", TALKTYPE_MONSTER_YELL) doSendMagicEffect(getCreaturePosition(cid), 26) end local dice = math.random(1, 6) if dice == 1 then addEvent(function() if isCreature(cid) then doCreatureSay(cid, "1! haha, o jogo diz que você deve perder a perna", TALKTYPE_MONSTER_YELL) doAddCondition(attacker, paralyse) doSendMagicEffect(getCreaturePosition(attacker), 0) local damageperna = math.floor((getCreatureMaxHealth(attacker))/5) doCreatureAddHealth(attacker, -(damageperna)) addEvent(doCreatureSay, 1000, "Então o que me diz? vamos continuar jogando? HAHA", TALKTYPE_MONSTER_YELL) ------------ aqui-------- local stor = getPlayerStorageValue(cid, 9001) if stor > 100 then local dmg = stor --- abaixo disso aqui vc pode colocar pra fazer oque vc quiser com o valor do storage, está salvo nessa variável. setPlayerStorageValue(cid, 9001, 0) elseif stor > 10 then setPlayerStorageValue(cid, 9001, stor + 100* (math.random(1, 6))) elseif stor > 0 then setPlayerStorageValue(cid, 9001, stor + 10* (math.random(1, 6))) else setPlayerStorageValue(cid, 9001, math.random(1, 6)) end ----------------------- end end, 1500) elseif dice == 2 then addEvent(function() if isCreature(cid) then doCreatureSay(cid, "2! haha, o jogo diz que eu devo arrancar seu braço! HAHAHAHA", TALKTYPE_MONSTER_YELL) Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.