Ir para conteúdo

Featured Replies

Postado

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

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

  • Respostas 30
  • Visualizações 1.1k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • vê se vc entende agora:   o storage inicialmente é -1 então ele cai no else ali e vai setar o valor como sendo o valor do dice (1~6). Aí no próximo ataque ele vai cair no elseif stor &g

  • não precisa abrir mão, dá pra vc fazer uma lógica que inclua isso. guardar os storages multiplicáveis? como assim? Dá pra configurar de forma precisa sim, uma vez que vc tem todos os valore

  • sim, toda vez que for executado o callback ele irá gerar um novo math.random mas cada vez que vc usar dice o valor será do primeiro math.random

Postado
  • 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

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

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Postado

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

I7Pm6ih.png

(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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo