Ir para conteúdo
  • Cadastre-se

(Resolvido)Bless Amulet


Ir para solução Resolvido por Dwarfer,

Posts Recomendados

Um Bless Amulet, o que ele faz? Da as 5 bless se você morrer, e não deixa perder o loot, mesmo normal, pk, red, black... (infinito)

Link para o post
Compartilhar em outros sites
  • 2 weeks later...

@FearWar, comentar apenas para subir o tópico é proibido! Leia as regras:

2.7 - Dar "UP" para subir tópicos:
É totalmente proibido comentar "UP" para subir tópicos, caso você tenha a intenção você pode utilizar nosso recurso de subir tópicos e ele automaticamente irá te colocar um tempo de espera de 24 horas para realizar a função novamente. Caso o membro realize tal ato isso pode ser interpretado como flood.

Regras Gerais: http://www.tibiaking.com/forum/forums/topic/1281-regras-gerais/

 

Link para o post
Compartilhar em outros sites

Em creaturescripts/scripts crie um arquivo:

 

blessamulet.lua

 

Spoiler

local amulet = 1111 -- id do item

function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)
    if getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid == amulet then
        local p = getPlayerPosition(cid)
        doSendAnimatedText(p, "Protected", COLOR_ORANGE)
        doSendMagicEffect(p, CONST_ME_HOLYAREA)
        doCreatureSetDropLoot(cid, false)
        for i = 1, 5 do
            doPlayerAddBlessing(cid, i)
        end
    end
    return true
end

 

 

No login.lua, registre o evento: registerCreatureEvent(cid, "BlessAmulet")

 

Em creaturescripts.xml: <event type="preparedeath" name="BlessAmulet" event="script" value="blessamulet.lua"/>

Contato:

 

Link para o post
Compartilhar em outros sites
34 minutos atrás, Dwarfer disse:

Em creaturescripts/scripts crie um arquivo:

 

blessamulet.lua

 

  Ocultar conteúdo


local amulet = 1111 -- id do item

function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)
    if getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid == amulet then
        local p = getPlayerPosition(cid)
        doSendAnimatedText(p, "Protected", COLOR_ORANGE)
        doSendMagicEffect(p, CONST_ME_HOLYAREA)
        doCreatureSetDropLoot(cid, false)
        for i = 1, 5 do
            doPlayerAddBlessing(cid, i)
        end
    end
    return true
end

 

 

No login.lua, registre o evento: registerCreatureEvent(cid, "BlessAmulet")

 

Em creaturescripts.xml: <event type="preparedeath" name="BlessAmulet" event="script" value="blessamulet.lua"/>

Estou usando essa aqui

 

local corpse_ids = {
    [0] = 3065,
    [1] = 3058
}
 
 
function onPrepareDeath(cid, deathList)
    if getCreatureSkullType(cid) < 6 then
        if getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid == 12668 then
        doCreatureSetDropLoot(cid, false)
        doItemSetAttribute(doCreateItem(corpse_ids[getPlayerSex(cid)], 1, getThingPos(cid)), "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by " .. (isMonster(deathList[1]) and "a " .. string.lower(getCreatureName(deathList[1])) or isCreature(deathList[1]) and getCreatureName(deathList[1]) or "a field item") .. ".\nHis soul was protected for amulet!")
 
        end
    end
    return true
    end

Mas queria colocar a bless automática junto!

Link para o post
Compartilhar em outros sites
  • Solução

@FearWar

 

Spoiler

local corpse_ids = {
    [0] = 3065,
    [1] = 3058
}
 
function onPrepareDeath(cid, deathList)
    if getCreatureSkullType(cid) < 6 then
        if getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid == 12668 then
        doCreatureSetDropLoot(cid, false)
        for i = 1, 5 do
            doPlayerAddBlessing(cid, i)
        end
        doItemSetAttribute(doCreateItem(corpse_ids[getPlayerSex(cid)], 1, getThingPos(cid)), "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by " .. (isMonster(deathList[1]) and "a " .. string.lower(getCreatureName(deathList[1])) or isCreature(deathList[1]) and getCreatureName(deathList[1]) or "a field item") .. ".\nHis soul was protected for amulet!")
        end
    end
    return true
    end

 

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

Contato:

 

Link para o post
Compartilhar em outros sites
33 minutos atrás, Dwarfer disse:

@FearWar

 

  Ocultar conteúdo


local corpse_ids = {
    [0] = 3065,
    [1] = 3058
}
 
function onPrepareDeath(cid, deathList)
    if getCreatureSkullType(cid) < 6 then
        if getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid == 12668 then
        doCreatureSetDropLoot(cid, false)
        for i = 1, 5 do
            doPlayerAddBlessing(cid, i)
        end
        doItemSetAttribute(doCreateItem(corpse_ids[getPlayerSex(cid)], 1, getThingPos(cid)), "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by " .. (isMonster(deathList[1]) and "a " .. string.lower(getCreatureName(deathList[1])) or isCreature(deathList[1]) and getCreatureName(deathList[1]) or "a field item") .. ".\nHis soul was protected for amulet!")
        end
    end
    return true
    end

 

@Dwarfer, acho que não funcionou, porque eu uso o amuleto, retiro ele e morro e perde os items :(

 

Link para o post
Compartilhar em outros sites
6 minutos atrás, Dwarfer disse:

@FearWar Mas é claro, o amuleto vai prevenir apenas se ele estiver equipado quando o player morrer o.O

Se formos analisar a questão, o amuleto já faz essa função de previnir, o amulet seria no caso, ao invés do player comprar a bless, bastava ele usar o amuleto!

 

Vamos supor que é um player normal, sem skull nada, em um dia na WAR, e ele quiser usar "stone skin amulet" ai se ele morrer, não vai ter Bless porque ele não estaria com o amulet equipado!

 

Não sei se entendeu minha ideia?!

@Dwarfer se eu adicionar este código dentro:

 

local bless = {1, 2, 3, 4, 5}
local cost = 50000 -- Cost in gp.
 
function onSay(cid, words, param)
     local player = Player(cid)
     for i = 1, table.maxn(bless) do
         if player:hasBlessing(bless[i]) then
             return player:sendCancelMessage("You already have all blessings.")
         end
     end
 
     if player:removeMoney(cost) then
         for i = 1, table.maxn(bless) do
             player:addBlessing(bless[i])
         end
         player:sendTextMessage(MESSAGE_INFO_DESCR, "You have bought all blessings.")
         player:getPosition():sendMagicEffect(CONST_ME_FIREWORK_YELLOW)
     else
         player:sendCancelMessage("You don't have enough money.")
     end
     return true
end

Precisaria mudar toda a script?

Link para o post
Compartilhar em outros sites
46 minutos atrás, FearWar disse:

Se formos analisar a questão, o amuleto já faz essa função de previnir, o amulet seria no caso, ao invés do player comprar a bless, bastava ele usar o amuleto!

 

Vamos supor que é um player normal, sem skull nada, em um dia na WAR, e ele quiser usar "stone skin amulet" ai se ele morrer, não vai ter Bless porque ele não estaria com o amulet equipado!

 

Não sei se entendeu minha ideia?!

@Dwarfer se eu adicionar este código dentro:

 


local bless = {1, 2, 3, 4, 5}
local cost = 50000 -- Cost in gp.
 
function onSay(cid, words, param)
     local player = Player(cid)
     for i = 1, table.maxn(bless) do
         if player:hasBlessing(bless[i]) then
             return player:sendCancelMessage("You already have all blessings.")
         end
     end
 
     if player:removeMoney(cost) then
         for i = 1, table.maxn(bless) do
             player:addBlessing(bless[i])
         end
         player:sendTextMessage(MESSAGE_INFO_DESCR, "You have bought all blessings.")
         player:getPosition():sendMagicEffect(CONST_ME_FIREWORK_YELLOW)
     else
         player:sendCancelMessage("You don't have enough money.")
     end
     return true
end

Precisaria mudar toda a script?

 

 

Respondi o que o cara e você pediu, não precisa analisar nada, o amuleto tem a função de prevenir, mas não adicionava bless que serve para diminuir a perda de exp, além de prevenir os items. Não me interessa se o player vai usar ou não stone skin amulet, ou qualquer outro amuleto, o pedido foi atendido conforme quiseram, aí é outra questão que não tenho nada a ver. Caso queira DAR USE em um amuleto e receber as blessings, adicione uma action:

 

Spoiler

function onUse(cid, item, fromPosition, itemEx, toPosition)
    for i = 1, 5 do
        if getPlayerBlessing(cid, i) then
            return doPlayerSendCancel(cid, "You already have all blessings.")
        end
    end
    for i = 1, 5 do
        doPlayerAddBlessing(cid, i)
    end
    doRemoveItem(item.uid, 1)
    return true
end

 

 

 

 

 

 

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

Contato:

 

Link para o post
Compartilhar em outros sites
21 minutos atrás, Dwarfer disse:

 

 

Respondi o que o cara e você pediu, não precisa analisar nada, o amuleto tem a função de prevenir, mas não adicionava bless que serve para diminuir a perda de exp, além de prevenir os items. Não me interessa se o player vai usar ou não stone skin amulet, ou qualquer outro amuleto, o pedido foi atendido conforme quiseram, aí é outra questão que não tenho nada a ver. Caso queira DAR USE em um amuleto e receber as blessings, adicione uma action:

 

  Mostrar conteúdo oculto


function onUse(cid, item, fromPosition, itemEx, toPosition)
    for i = 1, 5 do
        if getPlayerBlessing(cid, i) then
            return doPlayerSendCancel(cid, "You already have all blessings.")
        end
    end
    for i = 1, 5 do
        doPlayerAddBlessing(cid, i)
    end
    doRemoveItem(item.uid, 1)
    return true
end

 

 

 

 

 

 

 

Obrigado REP!

Link para o post
Compartilhar em outros sites
  • 1 month later...

bom, eu queria que so o amuleto desse bless infinita com ou sem ele tipo, eu nao quero colar de red nem de black apenas a bless e se ele equipar o colar é como se ele tivesse comprado a bless e assim se ele tirar e botar outro amuleto n perder nada pq ele equipou o bless amulet... tem alguma script q possa me ajudar?

Link para o post
Compartilhar em outros sites
  • 2 years later...
Em 19/09/2017 em 12:42, Dwarfer disse:

@FearWar Mas é claro, o amuleto vai prevenir apenas se ele estiver equipado quando o player morrer o.O

 

kkk eu peguei ideia dele ele quer fazer um amuleto vip que tenha o mesmo efeito da bless soh que infinito mesmo quando vc morrer ficar com amuleto.

Em 09/09/2017 em 15:22, JcA disse:

Um Bless Amulet, o que ele faz? Da as 5 bless se você morrer, e não deixa perder o loot, mesmo normal, pk, red, black... (infinito)

 

Spoiler

        <item id="10719" article="an" name="VIP EK/RP Amulet">
      

Spoiler

bota assim "0"            -> <attribute key="charges" value="0" />


        <attribute key="weight" value="10" />
        <attribute key="slotType" value="necklace" />
        <attribute key="charges" value="1" />
        <attribute key="preventDrop" value="1" />

 

Editado por Rush Of Dead (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 2 years later...
Em 19/09/2017 em 12:05, Dwarfer disse:

@FearWar

 

  Ocultar conteúdo


local corpse_ids = {
    [0] = 3065,
    [1] = 3058
}
 
function onPrepareDeath(cid, deathList)
    if getCreatureSkullType(cid) < 6 then
        if getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid == 12668 then
        doCreatureSetDropLoot(cid, false)
        for i = 1, 5 do
            doPlayerAddBlessing(cid, i)
        end
        doItemSetAttribute(doCreateItem(corpse_ids[getPlayerSex(cid)], 1, getThingPos(cid)), "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by " .. (isMonster(deathList[1]) and "a " .. string.lower(getCreatureName(deathList[1])) or isCreature(deathList[1]) and getCreatureName(deathList[1]) or "a field item") .. ".\nHis soul was protected for amulet!")
        end
    end
    return true
    end

 

tem que colocar o id do item ali na frente ? itemid

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo