Ir para conteúdo
  • Cadastre-se

(Resolvido)[Action] Alavanca de backpack event.


Ir para solução Resolvido por antharaz,

Posts Recomendados

Galera, eu to aqui com um script de alavanca do bp event, feito pelo querido @antharaz, só que o script ta um pouco "magrinho" e ta dando todos os itens da config e quase sempre dando no maximo. Então eu gostaria de pedir se alguém não faz algumas alterações nele.

Colocar os efeitos dele para sair no basin e o outro na table (3 e 30 o numero dos efeitos, respectivamente).
Colocar mensagem de erro, tais como "Você precisa colocar uma backpack no basin para jogar" e "Voce nao pode usar a backpack que ganhou para jogar".

Colocar uma função de porcentagem nas recompensas.

Bem, é isso. Agradeço desde já quem ajudar!

Script:

 

local config = {
                pos = {
                        bp_vazia = {x=16786,y=16502,z=7,stackpos = 255}, --POS que o player deixará a bp vazia
                        bp_com_premio = {x=16787,y=16502,z=7} --POS que o player receberá a bp ao puxar a alavanca
                },
                ids = {1988,2001,5926,2002,10519,2000,1999,2004,2003,1998,5801,9774,3940},
                premio = {
                            {id = 2152, minimo = 1, maximo = 70},
                            {id = 2157, minimo = 0, maximo = 4},
                                                        {id = 2148, minimo = 1, maximo = 500}
                }
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
    local bp = getThingFromPos(config.pos.bp_vazia)
                doSendMagicEffect(getThingPos(cid),3)
    local usada = getItemAttribute(bp.uid, 'usada')
    if usada or not isInArray(config.ids,bp.itemid) then
        doSendMagicEffect(getThingPos(cid),2)
        return false
    end
    doItemSetAttribute(bp.uid, 'usada', 1)
    doTeleportThing(bp.uid,config.pos.bp_com_premio)
           doSendMagicEffect(getThingPos(cid),30)
    for _,t in pairs(config.premio) do
        doAddContainerItem(bp.uid,t.id,math.random(t.minimo,t.maximo))
    end
    return true
end
Editado por dimmebag (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

@dimmebag 

 

Seria algo tipo isso?

 

Spoiler

local config = {
                pos = {
                        bp_vazia = {x=16786,y=16502,z=7,stackpos = 255}, --POS que o player deixará a bp vazia
                        bp_com_premio = {x=16787,y=16502,z=7} --POS que o player receberá a bp ao puxar a alavanca
                },
                ids = {1988,2001,5926,2002,10519,2000,1999,2004,2003,1998,5801,9774,3940},
                premio = {
                            {id = 2152, minimo = 1, maximo = 70, chance = 30},
                            {id = 2157, minimo = 0, maximo = 4, chance = 70},
                            {id = 2148, minimo = 1, maximo = 500, chance = 80}
                }
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
    local bp = getThingFromPos(config.pos.bp_vazia)
    doSendMagicEffect(getThingPos(cid),3)
    local usada = getItemAttribute(bp.uid, 'usada')
    if usada or not isInArray(config.ids,bp.itemid) then
		local msg = usada and "Voce nao pode usar a backpack que ganhou para jogar." or "Você precisa colocar uma backpack no basin para jogar"
		doPlayerSendTextMessage(cid, 22, msg)
        doSendMagicEffect(getThingPos(cid),2)
        return false
    end
	doSendMagicEffect(config.pos.bp_vazia,2)
	doSendMagicEffect(config.pos.bp_com_premio,2)
    doItemSetAttribute(bp.uid, 'usada', 1)
    doTeleportThing(bp.uid,config.pos.bp_com_premio)
    doSendMagicEffect(getThingPos(cid),30)
    for _,t in pairs(config.premio) do
		if math.random(1,100) <= t.chance then
			doAddContainerItem(bp.uid,t.id,math.random(t.minimo,t.maximo))
		end
    end
    return true
end

 

 

Link para o post
Compartilhar em outros sites
19 minutos atrás, antharaz disse:

@dimmebag 

 

Seria algo tipo isso?

 

  Ocultar conteúdo


local config = {
                pos = {
                        bp_vazia = {x=16786,y=16502,z=7,stackpos = 255}, --POS que o player deixará a bp vazia
                        bp_com_premio = {x=16787,y=16502,z=7} --POS que o player receberá a bp ao puxar a alavanca
                },
                ids = {1988,2001,5926,2002,10519,2000,1999,2004,2003,1998,5801,9774,3940},
                premio = {
                            {id = 2152, minimo = 1, maximo = 70, chance = 30},
                            {id = 2157, minimo = 0, maximo = 4, chance = 70},
                            {id = 2148, minimo = 1, maximo = 500, chance = 80}
                }
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
    local bp = getThingFromPos(config.pos.bp_vazia)
    doSendMagicEffect(getThingPos(cid),3)
    local usada = getItemAttribute(bp.uid, 'usada')
    if usada or not isInArray(config.ids,bp.itemid) then
		local msg = usada and "Voce nao pode usar a backpack que ganhou para jogar." or "Você precisa colocar uma backpack no basin para jogar"
		doPlayerSendTextMessage(cid, 22, msg)
        doSendMagicEffect(getThingPos(cid),2)
        return false
    end
	doSendMagicEffect(config.pos.bp_vazia,2)
	doSendMagicEffect(config.pos.bp_com_premio,2)
    doItemSetAttribute(bp.uid, 'usada', 1)
    doTeleportThing(bp.uid,config.pos.bp_com_premio)
    doSendMagicEffect(getThingPos(cid),30)
    for _,t in pairs(config.premio) do
		if math.random(1,100) <= t.chance then
			doAddContainerItem(bp.uid,t.id,math.random(t.minimo,t.maximo))
		end
    end
    return true
end

 

 


Isso, ai. Certinho
Obs: Desconsidera o edit, o efeito que ta com a linha duplicada ali, é só eu mudar o numero xd

Editado por dimmebag (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@dimmebag 

 

Acho0 que não entendi direito, você quer que quando nao der para usar a alavanca dê o efeito 3 no coal e qnd der para usar apareça o 30 na mesa OU que apareça efeito 2 no player quando não der par ausar a alavanca e quando der dar efeito 3 no coal e 30 na table?

Link para o post
Compartilhar em outros sites
1 minuto atrás, antharaz disse:

@dimmebag 

 

Acho0 que não entendi direito, você quer que quando nao der para usar a alavanca dê o efeito 3 no coal e qnd der para usar apareça o 30 na mesa OU que apareça efeito 2 no player quando não der par ausar a alavanca e quando der dar efeito 3 no coal e 30 na table?

O 3 no coal e o 30 na mesa. Mas voce ja tinha colocado, eu nao reparei pq os efeitos tava o "poff".

Link para o post
Compartilhar em outros sites

@dimmebag 

 

Sim, só tinha que tirar o doSendMagicEffect(getThingPos(cid),3) que está embaixo de local bp = getThingFromPos(config.pos.bp_vazia), senão o efeito 3 vai ir na bp mesmo se não conseguir trocar a bp.

 

Mais alguma coisa que quer mudar nesse script?

Link para o post
Compartilhar em outros sites
1 minuto atrás, antharaz disse:

Mais alguma coisa que quer mudar nesse script?

Era só isso mesmo, agora ta ótimo. Obrigado pela ajuda e atenção.

Link para o post
Compartilhar em outros sites
1 hora atrás, antharaz disse:

@dimmebag 

 

Seria algo tipo isso?

 

  Mostrar conteúdo oculto


local config = {
                pos = {
                        bp_vazia = {x=16786,y=16502,z=7,stackpos = 255}, --POS que o player deixará a bp vazia
                        bp_com_premio = {x=16787,y=16502,z=7} --POS que o player receberá a bp ao puxar a alavanca
                },
                ids = {1988,2001,5926,2002,10519,2000,1999,2004,2003,1998,5801,9774,3940},
                premio = {
                            {id = 2152, minimo = 1, maximo = 70, chance = 30},
                            {id = 2157, minimo = 0, maximo = 4, chance = 70},
                            {id = 2148, minimo = 1, maximo = 500, chance = 80}
                }
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
    local bp = getThingFromPos(config.pos.bp_vazia)
    doSendMagicEffect(getThingPos(cid),3)
    local usada = getItemAttribute(bp.uid, 'usada')
    if usada or not isInArray(config.ids,bp.itemid) then
		local msg = usada and "Voce nao pode usar a backpack que ganhou para jogar." or "Você precisa colocar uma backpack no basin para jogar"
		doPlayerSendTextMessage(cid, 22, msg)
        doSendMagicEffect(getThingPos(cid),2)
        return false
    end
	doSendMagicEffect(config.pos.bp_vazia,2)
	doSendMagicEffect(config.pos.bp_com_premio,2)
    doItemSetAttribute(bp.uid, 'usada', 1)
    doTeleportThing(bp.uid,config.pos.bp_com_premio)
    doSendMagicEffect(getThingPos(cid),30)
    for _,t in pairs(config.premio) do
		if math.random(1,100) <= t.chance then
			doAddContainerItem(bp.uid,t.id,math.random(t.minimo,t.maximo))
		end
    end
    return true
end

 

 

Pode fazer um diferente para mim? 

O sistema adiciona uma nova backpack em seu inventário com

items com chances (como está no script)

e depois teleportar jogador para x cordenada.

Link para o post
Compartilhar em outros sites

@Mateus Santosss 

 

Acho que é isso

 

Spoiler

local config = {
                ids = {1988,2001,5926,2002,10519,2000,1999,2004,2003,1998,5801,9774,3940},
                premio = {
                            {id = 2152, minimo = 1, maximo = 70, chance = 30},
                            {id = 2157, minimo = 0, maximo = 4, chance = 70},
                            {id = 2148, minimo = 1, maximo = 500, chance = 80}
                },
				eff = 2, --Efeito que sairá no player quando puxar alavanca
				pos = {x=222,y=222,z=7} --pos que o player será teleportado
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
    doTeleportThing(bp.uid,config.pos.bp_com_premio)
    doSendMagicEffect(getThingPos(cid),config.eff)
	local bp = doPlayerAddItem(cid,config.ids[math.random(1,#config.ids)],1)
    for _,t in pairs(config.premio) do
		if math.random(1,100) <= t.chance then
			doAddContainerItem(bp,t.id,math.random(t.minimo,t.maximo))
		end
    end
	doTeleportThing(cid,config.pos)
    return true
end

 

 

Editado por antharaz (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo