Ir para conteúdo

Featured Replies

Postado

EDITADO E ARRUMADO

 

Olá pessoal!

 

 

 

Em meu server quero um lança-granadas estilo Resident Evil 5, que o lançador dispara diferentes munições e cada uma tem um efeito, que vai desde a de ácido, fogo, explosão, até raios e etc. 

Funcionará assim:

 

o item 2447 precisa estar equipado no slot de arma(SLOT_LEFT)

if getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid ~= item.itemid then


        doPlayerSendCancel(cid, "O lançador deve estar equipado no slot da arma.") return true

 

a munição(ID de 11395 até 11400) precisa estar no slot de munição(SLOT_AMMO)

if getPlayerSlotItem(cid, CONST_SLOT_AMMO).itemid ~= item.itemid then


        doPlayerSendCancel(cid, "A munição deve estar equipado no slot da arma.") return true

 

 

O lançador será usado como arma(Use With no alvo) e só funcionará se tiver alguma das munições equipadas, e cada munição terá um effect, dist effect e damage diferentes(preciso mesmo é do script, pq configurar eu posso fazer).

 

 

 

Esperando ajuda, e a quem ajudar.. grato desde já!

Editado por biel.stocco (veja o histórico de edições)

Resolvido por zipter98

Ir para solução
  • Respostas 7
  • Visualizações 600
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • local ar1 = createCombatArea{     {0, 0, 0, 0, 0, 0, 0},     {0, 0, 0, 0, 0, 0, 0},     {0, 0, 1, 1, 1, 0, 0},     {0, 0, 1, 3, 1, 0, 0},     {0, 0, 1, 1, 1, 0, 0},     {0, 0, 0, 0, 0, 0, 0},     {0,

Postado
  • Autor

Então, estava pensando aqui sobre isso e pelo jeito terá de ser um sistema diferente, irei até abrir um na seção de pedidos..

Funcionará assim:

 

o item 2447 precisa estar equipado no slot de arma(SLOT_LEFT)

if getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid ~= item.itemid then


        doPlayerSendCancel(cid, "O lançador deve estar equipado no slot da arma.") return true

 

a munição(ID de 11395 até 11400) precisa estar no slot de munição(SLOT_AMMO)

if getPlayerSlotItem(cid, CONST_SLOT_AMMO).itemid ~= item.itemid then


        doPlayerSendCancel(cid, "A munição deve estar equipado no slot da arma.") return true

 

 

O lançador será usado como arma(Use With no alvo) e só funcionará se tiver alguma das munições equipadas, e cada munição terá um effect, dist effect e damage diferentes

Postado
  • Solução
local ar1 = createCombatArea{
    {0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0},
    {0, 0, 1, 1, 1, 0, 0},
    {0, 0, 1, 3, 1, 0, 0},
    {0, 0, 1, 1, 1, 0, 0},
    {0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0}
}
local ar2 = createCombatArea{
    {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
    {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
    {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1},
    {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
    {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
    {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
    {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}
}
local ar3 = createCombatArea{
    {0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 1, 1, 1, 0, 0, 0},
    {0, 0, 1, 1, 1, 1, 1, 0, 0},
    {0, 0, 1, 1, 3, 1, 1, 0, 0},
    {0, 0, 1, 1, 1, 1, 1, 0, 0},
    {0, 0, 0, 1, 1, 1, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0}
}
 
function doPlayerShootBazooka(cid, target, times, delay, area, min, max, effect, dist_effect, exhaust, rounds)
    if rounds == nil then rounds = 1 end
    exhaustion.set(cid, 57193, exhaust)
    doSendDistanceShoot(getCreaturePosition(cid), getThingPos(target), dist_effect)
    doAreaCombatHealth(cid, COMBAT_FIREDAMAGE, getThingPos(target), area, -min, -max, effect)
    if rounds == times then
        return true
    end
    addEvent(doPlayerShootBazooka, shots_delay, cid, target, times, delay, area, min, max, effect, dist_effect, exhaust, rounds+1)
end
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local weapons = { -- [ID da arma] = {tiros, delay_dos_tiros, ammo, area, dano_min, dano_max, efeito, distance_effect, exhaustion},
        [2449] = {
            shots = 1,
            shots_delay = 50, 
            area = ar1,
            exha = 5,
            ammo = {
                --Configure aqui as munições da arma.
                [11399] = {min = 25600, max = 35720, effect = 23, dist_effect = 35},
                [itemid] = {min = minDamage, max = maxDamage, effect = effect, dist_effect = distanceEffect},
                [itemid] = {min = minDamage, max = maxDamage, effect = effect, dist_effect = distanceEffect},
                [itemid] = {min = minDamage, max = maxDamage, effect = effect, dist_effect = distanceEffect},
            },
        },
    }
    local gun = weapons[item.itemid]
    
    if gun then
        if getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid ~= item.itemid then
            doPlayerSendCancel(cid, "O lançador deve estar equipado no slot da arma.") return true
        elseif getPlayerStorageValue(cid, 18391) == 1 then
            doPlayerSendCancel(cid, "Você não pode atirar enquanto dirige.") return true
        elseif getPlayerStorageValue(cid, 18393) == 1 then
            doPlayerSendCancel(cid, "Você não pode atirar com o capacete.") return true
        elseif exhaustion.check(cid, 57193) then
            doPlayerSendCancel(cid, "Você está exausto.") return true
        elseif getPlayerSlotItem(cid, CONST_SLOT_AMMO).uid < 1 then
            return doPlayerSendCancel(cid, "A munição deve estar equipada no slot da munição.")
        elseif not gun.ammo[getPlayerSlotItem(cid, CONST_SLOT_AMMO).itemid] then
            return doPlayerSendCancel(cid, "Wrong ammo for this gun.")
        elseif getPlayerItemCount(cid, getPlayerSlotItem(cid, CONST_SLOT_AMMO).itemid) < gun.shots then
            doPlayerSendCancel(cid, "Você não possui munição.") return true
        end
        local ammo = gun.ammo[getPlayerSlotItem(cid, CONST_SLOT_AMMO).itemid]
        doPlayerRemoveItem(cid, getPlayerSlotItem(cid, CONST_SLOT_AMMO).itemid, gun.shots) 
        doPlayerShootBazooka(cid, itemEx.uid, gun.shots, gun.shots_delay, gun.area, ammo.min, ammo.max, ammo.effect, ammo.dist_effect, gun.exha)
    end
    return true
end

Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

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

Informação Importante

Confirmação de Termo