Ir para conteúdo

Featured Replies

Postado

Olá pessoal do Tk, implantei um sistema de recarga no item 2352 (Crystal Arrow), e para tanto quando a magia é efetuda, ao invés de remover a o item 2352, a magia vai removendo a as cargas, só que no script, exitem duas condições para que a magia seja realizada, se o player estiver com algumas dessas Arrows abaixo, a magia acontece.

Quote

local arrows = {7368, 2544, 2544, 2545, 7364, 6529, 2547, 7366, 7363, 2543} -- arrows que podem ser utilizadas

Caso contrário, se o player tiver uma C. arrow com cargas, a magia tbm deve acontecer, no entanto vejo que não consegui fazer que funcione com as duas condições, quando executo a magia o script só verifica se o player está com a c. arrow com cargas, caso ele esteje com umas das arrows citadas acima o magia da erro e não faz nada. Segue a função. 

Ressalto que não sou scripter, só intendo um pouco de lógica.

Spoiler

function onCastSpell(cid, var)
        local Crystal = 2352
        local arrows = {7368, 2544, 2544, 2545, 7364, 6529, 2547, 7366, 7363, 2543} -- arrows que podem ser utilizadas
        local ammo = isInArray(arrows, getPlayerSlotItem(cid, CONST_SLOT_AMMO).itemid) and getPlayerSlotItem(cid, CONST_SLOT_AMMO) or
                isInArray(arrows, getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid) and getPlayerSlotItem(cid, CONST_SLOT_LEFT) or
                isInArray(arrows, getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid) and getPlayerSlotItem(cid, CONST_SLOT_RIGHT) or
                nil

if getPlayerSlotItem(cid, CONST_SLOT_AMMO).itemid == 2352 and getItemAttribute(getPlayerWeapon(cid).uid, "ChargesCrystal") >= 1 then
doItemSetAttribute(getPlayerWeapon(cid).uid, "ChargesCrystal", (getItemAttribute(getPlayerWeapon(cid).uid, "ChargesCrystal") - 1))
doItemSetAttribute(getPlayerWeapon(cid).uid, "name", "" ..getItemNameById(Crystal).." ["..getItemAttribute(getPlayerWeapon(cid).uid, "ChargesCrystal").." Charges]") 
                local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4, combat5 = combat5 }
                addEvent(onCastSpell1, 100, parameters)
                addEvent(onCastSpell2, 400, parameters)
                addEvent(onCastSpell3, 800, parameters)
                addEvent(onCastSpell4, 1200, parameters)
                addEvent(onCastSpell5, 1600, parameters)
                addEvent(onCastSpell5, 2900, parameters)
                return TRUE
                elseif ammo and doRemoveItem(ammo.uid, 3) then
 local parameters2 = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4, combat5 = combat5 }
                addEvent(onCastSpell1, 100, parameters2)
                addEvent(onCastSpell2, 400, parameters2)
                addEvent(onCastSpell3, 800, parameters2)
                addEvent(onCastSpell4, 1200, parameters2)
                addEvent(onCastSpell5, 1600, parameters2)
                addEvent(onCastSpell5, 2900, parameters2)
                return TRUE
        else
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa no minimo de 3 munições. Ou uma Crystal Arrou com cargas.")
                return FALSE
        end
        
end

Dê uma ajudinha aew...

up

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

Postado
11 horas atrás, Rogerio Js disse:

Olá pessoal do Tk, implantei um sistema de recarga no item 2352 (Crystal Arrow), e para tanto quando a magia é efetuda, ao invés de remover a o item 2352, a magia vai removendo a as cargas, só que no script, exitem duas condições para que a magia seja realizada, se o player estiver com algumas dessas Arrows abaixo, a magia acontece.

Caso contrário, se o player tiver uma C. arrow com cargas, a magia tbm deve acontecer, no entanto vejo que não consegui fazer que funcione com as duas condições, quando executo a magia o script só verifica se o player está com a c. arrow com cargas, caso ele esteje com umas das arrows citadas acima o magia da erro e não faz nada. Segue a função. 

Ressalto que não sou scripter, só intendo um pouco de lógica.

  Ocultar conteúdo

function onCastSpell(cid, var)
        local Crystal = 2352
        local arrows = {7368, 2544, 2544, 2545, 7364, 6529, 2547, 7366, 7363, 2543} -- arrows que podem ser utilizadas
        local ammo = isInArray(arrows, getPlayerSlotItem(cid, CONST_SLOT_AMMO).itemid) and getPlayerSlotItem(cid, CONST_SLOT_AMMO) or
                isInArray(arrows, getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid) and getPlayerSlotItem(cid, CONST_SLOT_LEFT) or
                isInArray(arrows, getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid) and getPlayerSlotItem(cid, CONST_SLOT_RIGHT) or
                nil

if getPlayerSlotItem(cid, CONST_SLOT_AMMO).itemid == 2352 and getItemAttribute(getPlayerWeapon(cid).uid, "ChargesCrystal") >= 1 then
doItemSetAttribute(getPlayerWeapon(cid).uid, "ChargesCrystal", (getItemAttribute(getPlayerWeapon(cid).uid, "ChargesCrystal") - 1))
doItemSetAttribute(getPlayerWeapon(cid).uid, "name", "" ..getItemNameById(Crystal).." ["..getItemAttribute(getPlayerWeapon(cid).uid, "ChargesCrystal").." Charges]") 
                local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4, combat5 = combat5 }
                addEvent(onCastSpell1, 100, parameters)
                addEvent(onCastSpell2, 400, parameters)
                addEvent(onCastSpell3, 800, parameters)
                addEvent(onCastSpell4, 1200, parameters)
                addEvent(onCastSpell5, 1600, parameters)
                addEvent(onCastSpell5, 2900, parameters)
                return TRUE
                elseif ammo and doRemoveItem(ammo.uid, 3) then
 local parameters2 = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4, combat5 = combat5 }
                addEvent(onCastSpell1, 100, parameters2)
                addEvent(onCastSpell2, 400, parameters2)
                addEvent(onCastSpell3, 800, parameters2)
                addEvent(onCastSpell4, 1200, parameters2)
                addEvent(onCastSpell5, 1600, parameters2)
                addEvent(onCastSpell5, 2900, parameters2)
                return TRUE
        else
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa no minimo de 3 munições. Ou uma Crystal Arrou com cargas.")
                return FALSE
        end
        
end

Dê uma ajudinha aew...

 

Da algum erro no executável?

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