Ir para conteúdo

Featured Replies

Postado
44 minutos atrás, Felipe Lotz disse:

 

Vacilo meu, achei que o position era a posição do SQM, mas o sqm é pela action... Valeu bro! Graças a você POI 100% funcionando e o NPC challenge também. Por acaso manja da funcionamento da Yalahar last room?

 

Meu script funciona até o final, ele tira os portais pra ninguém descer no meio da quest, porém quando acaba e eles voltam, param de funcionar. E também a sala não reseta pro próximo time.

Posta o script pra eu dar uma olhada

  • Respostas 22
  • Visualizações 2k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Tem um ( sobrando aí, tira ele, deixa: if getPlayerStorageValue(cid, 10274, 10275, 10276, 10277, 10278, 10279, 10280) == 1 then Se não der, use o and: if getPlayerStorageValue(cid, 10274) =

  • 1 - local tab = { price = 50, -- Preco BLESS, 50 = 50k price2 = 20 -- Preco AOL, 20 = 20k } local bless = {1, 2, 3, 4, 5} local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandl

  • local tab = { level = 100, pos = {x = 1071, y = 1135, z = 10}, storage = 6666 -- Storage } local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) Npc

Postado
  • Autor

@Kemmlly

 

actions/scripts/azerus.lua

 

local BlindField = {x = 488, y = 179, z = 7, stackpos=1} 
 
function mapArea(fromPos, toPos, stack) 
        local pos = {x=fromPos.x, y=fromPos.y-1, z=fromPos.z} 
        return function() 
                if (pos.y < toPos.y) then 
                        pos.y = pos.y+1 
                elseif (pos.x <= toPos.x) then 
                        pos.y = fromPos.y 
                        pos.x = pos.x+1 
                else 
                        pos.x = fromPos.x 
                        pos.y = fromPos.y 
                        pos.z = pos.z+1 
                end 
                if (pos.x <= toPos.x and pos.y <= toPos.y or pos.z < toPos.z) then 
                        if (stack == nil) then 
                                return pos 
                        else 
                                pos.stackpos = stack  
                                return pos, getThingfromPos(pos) 
                        end 
                end 
        end 
end 


function getMonstersfromArea(fromPos, toPos) 
        local monsters = {}     
        for _, thing in mapArea(fromPos, toPos, 253) do 
                if isMonster(thing.uid) == TRUE then 
                        table.insert(monsters, thing.uid) 
            end 

        end 
          local bfm = getThingfromPos(BlindField) 
            if isMonster(bfm.uid) == TRUE then 
            table.insert(monsters, bfm.uid) 
            end 
        return monsters 
end 


function onUse(cid, item, fromPosition, itemEx, toPosition) 
	local topLeft = {x = 480, y = 178, z = 7}
	local buttomRight = {x = 499, y = 198, z = 7}
	local monsters = getMonstersfromArea(topLeft, buttomRight) 
	local monsters1 = getMonstersfromArea(topLeft, buttomRight) 
	local tp = {x = 490, y = 197, z = 7}
	local glo = {x = 490, y = 188, z = 7}

	local function FirstWave() 
		doSummonCreature("Rift Worm", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Worm", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y + 4,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y + 5,z=glo.z}) 
		doSummonCreature("Azerus", {x=glo.x,y=glo.y - 5,z=glo.z}) 
	end 
	local function FifthWave() 
		doSummonCreature("Rift Worm", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Worm", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y + 4,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y + 5,z=glo.z}) 
	end 

	local function SecondWave() 
		local monsters1 = getMonstersfromArea(topLeft, buttomRight) 
		for _, monster in pairs(monsters1) do 
			if getCreatureName(monster) == "Azerus" then 
				doRemoveCreature(monster) 
			end 
		end 
		
		doSummonCreature("Azerus1", {x=glo.x,y=glo.y - 5,z=glo.z}) 
		doSummonCreature("Rift Brood", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Brood", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y + 4,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y + 5,z=glo.z}) 
	end 
	local function SixthWave() 
		doSummonCreature("Rift Brood", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Brood", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y + 4,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y + 5,z=glo.z}) 
	end
	
	local function ThirdWave() 
		local monsters1 = getMonstersfromArea(topLeft, buttomRight) 

		for _, monster in pairs(monsters1) do 
			if getCreatureName(monster) == "Azerus" then 
				doRemoveCreature(monster) 
			end 
		end 
		doSummonCreature("Azerus2", {x= glo.x - 5,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x=glo.x,y=glo.y + 4,z=glo.z}) 
	end 

	local function ThirdWave1() --  with 2s delay 
		doSummonCreature("Rift Scythe", {x=glo.x,y=glo.y + 4,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x=glo.x,y=glo.y + 5,z=glo.z}) 
	end 

	local function FourthWave() 
		doSummonCreature("War Golem", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("War Golem", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("War Golem", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("War Golem", {x=glo.x,y=glo.y + 4,z=glo.z}) 
	end 

	local function SevenWave() 
		local monsters1 = getMonstersfromArea(topLeft, buttomRight) 
		for _, monster in pairs(monsters1) do 
			if getCreatureName(monster) == "Azerus" then 
				doRemoveCreature(monster) 
			end 
		end 
		
		doSummonCreature("Azerus3", {x= glo.x - 5,y=glo.y,z=glo.z}) 
		doSummonCreature("War Golem", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("War Golem", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("War Golem", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("War Golem", {x=glo.x,y=glo.y + 4,z=glo.z}) 
	end 

	local function Glllobe()
		local monst = getMonstersfromArea(topLeft, buttomRight) 
		for i = 1, #monst do
			doRemoveCreature(monst[i])

		end

		local item1 = getTileItemById(glo, 9767)
		doItemSetAttribute(item1.uid, "aid", 58261)
	end

	local function createWall(p)
		local janek = doCreateItem(1387,1,{x = 491, y = 199, z = 6})
		doItemSetAttribute(janek, "aid", 9105)
	end

	local function createWalll(i)
		local ela = doCreateItem(1387,1,{x = 490, y = 197, z = 7})
		doItemSetAttribute(ela, "aid", 9106)
	end
	
	local wall0 = {x = 491, y = 199, z = 6, stackpos=1}
	local getwall0 = getThingfromPos(wall0)
	local wall1 = {x = 490, y = 197, z = 7, stackpos=1}
	local getwall1 = getThingfromPos(wall1)
	local monsters = getMonstersfromArea(topLeft, buttomRight) 
	local monsters1 = getMonstersfromArea(topLeft, buttomRight) 
	local tele_chk = getTileItemById(tp, 1387)
	if item.actionid == 58261 then
		doItemSetAttribute(item.uid, "aid", 58263)
	end

	if tele_chk.uid > 0 then 
		doRemoveItem(getTileItemById(tp,1387).uid) 
		doRemoveItem(getwall0.uid,1)
		addEvent(FirstWave, 0) 
		addEvent(FifthWave, 30000)
		addEvent(SecondWave, 60000) 
		addEvent(SixthWave, 90000) 
		addEvent(ThirdWave, 120000) 
		addEvent(ThirdWave1, 150000) 
		addEvent(FourthWave, 180000) 
		addEvent(SevenWave, 210000) 
		addEvent(Glllobe, 400000)  
		p = {wallid = getwall0.itemid}
		addEvent(createWall, 300*1000, p)
		i = {wallid = getwall1.itemid}
		addEvent(createWalll, 300*1000, i)
	end
	
	if item.actionid == 58263 then 
		doCreatureSay(cid, "You have to wait some time before this globe will charge.", TALKTYPE_ORANGE_1)
	end
	return TRUE 
end

movements/scripts/azerusarmy

function onStepIn(cid, item, position, fromPosition) 
        if item.actionid == 58262 then 
            if getPlayerStorageValue(cid,    10510) == -1  then         
            doCreatureSay(cid, "It seems by defating Azerus you have stopped this army from entering your world! Better leave this gastly place forever.", TALKTYPE_ORANGE_1) 
            setPlayerStorageValue(cid, 10510, 1) 
        end 
    return TRUE 
end  
end

movements/scripts/azerusdeath

function onStepIn(cid, item, position, fromPosition) 

local yalahar = {x = 543, y = 185, z = 5, stackpos=253} 
        if item.itemid == 9738 then 
        doTeleportThing(cid, yalahar, TRUE) 
        doSendMagicEffect(yalahar,12) 
        end 
     
    return TRUE 
end

E aproveitando eu fiz a WOTE e funcionou tudo certinho. Mas os itens de Zao paracem não estar danos os bonus de skill e absorb.

    <item id="12644" article="a" name="shield of corruption">
        <attribute key="weight" value="4900" />
        <attribute key="defense" value="36" />
        <attribute key="weaponType" value="shield" />
        <attribute key="skillSword" value="3" />
        <attribute key="showattributes" value="1" />
    </item>

O código parece estar certo e outros itens dão o bonus normal, apenas os de zao não.

Angelina_Me_by_msklotz.png

 

Atenciosamente,

Felipe Lotz.

 

Postado
57 minutos atrás, Felipe Lotz disse:

@Kemmlly

 

actions/scripts/azerus.lua

 


local BlindField = {x = 488, y = 179, z = 7, stackpos=1} 
 
function mapArea(fromPos, toPos, stack) 
        local pos = {x=fromPos.x, y=fromPos.y-1, z=fromPos.z} 
        return function() 
                if (pos.y < toPos.y) then 
                        pos.y = pos.y+1 
                elseif (pos.x <= toPos.x) then 
                        pos.y = fromPos.y 
                        pos.x = pos.x+1 
                else 
                        pos.x = fromPos.x 
                        pos.y = fromPos.y 
                        pos.z = pos.z+1 
                end 
                if (pos.x <= toPos.x and pos.y <= toPos.y or pos.z < toPos.z) then 
                        if (stack == nil) then 
                                return pos 
                        else 
                                pos.stackpos = stack  
                                return pos, getThingfromPos(pos) 
                        end 
                end 
        end 
end 


function getMonstersfromArea(fromPos, toPos) 
        local monsters = {}     
        for _, thing in mapArea(fromPos, toPos, 253) do 
                if isMonster(thing.uid) == TRUE then 
                        table.insert(monsters, thing.uid) 
            end 

        end 
          local bfm = getThingfromPos(BlindField) 
            if isMonster(bfm.uid) == TRUE then 
            table.insert(monsters, bfm.uid) 
            end 
        return monsters 
end 


function onUse(cid, item, fromPosition, itemEx, toPosition) 
	local topLeft = {x = 480, y = 178, z = 7}
	local buttomRight = {x = 499, y = 198, z = 7}
	local monsters = getMonstersfromArea(topLeft, buttomRight) 
	local monsters1 = getMonstersfromArea(topLeft, buttomRight) 
	local tp = {x = 490, y = 197, z = 7}
	local glo = {x = 490, y = 188, z = 7}

	local function FirstWave() 
		doSummonCreature("Rift Worm", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Worm", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y + 4,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y + 5,z=glo.z}) 
		doSummonCreature("Azerus", {x=glo.x,y=glo.y - 5,z=glo.z}) 
	end 
	local function FifthWave() 
		doSummonCreature("Rift Worm", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Worm", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y + 4,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("Rift Worm", {x=glo.x,y=glo.y + 5,z=glo.z}) 
	end 

	local function SecondWave() 
		local monsters1 = getMonstersfromArea(topLeft, buttomRight) 
		for _, monster in pairs(monsters1) do 
			if getCreatureName(monster) == "Azerus" then 
				doRemoveCreature(monster) 
			end 
		end 
		
		doSummonCreature("Azerus1", {x=glo.x,y=glo.y - 5,z=glo.z}) 
		doSummonCreature("Rift Brood", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Brood", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y + 4,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y + 5,z=glo.z}) 
	end 
	local function SixthWave() 
		doSummonCreature("Rift Brood", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Brood", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y + 4,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("Rift Brood", {x=glo.x,y=glo.y + 5,z=glo.z}) 
	end
	
	local function ThirdWave() 
		local monsters1 = getMonstersfromArea(topLeft, buttomRight) 

		for _, monster in pairs(monsters1) do 
			if getCreatureName(monster) == "Azerus" then 
				doRemoveCreature(monster) 
			end 
		end 
		doSummonCreature("Azerus2", {x= glo.x - 5,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x=glo.x,y=glo.y + 4,z=glo.z}) 
	end 

	local function ThirdWave1() --  with 2s delay 
		doSummonCreature("Rift Scythe", {x=glo.x,y=glo.y + 4,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("Rift Scythe", {x=glo.x,y=glo.y + 5,z=glo.z}) 
	end 

	local function FourthWave() 
		doSummonCreature("War Golem", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("War Golem", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("War Golem", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("War Golem", {x=glo.x,y=glo.y + 4,z=glo.z}) 
	end 

	local function SevenWave() 
		local monsters1 = getMonstersfromArea(topLeft, buttomRight) 
		for _, monster in pairs(monsters1) do 
			if getCreatureName(monster) == "Azerus" then 
				doRemoveCreature(monster) 
			end 
		end 
		
		doSummonCreature("Azerus3", {x= glo.x - 5,y=glo.y,z=glo.z}) 
		doSummonCreature("War Golem", {x= glo.x - 4,y=glo.y,z=glo.z}) 
		doSummonCreature("War Golem", {x= glo.x + 4,y=glo.y,z=glo.z}) 
		doSummonCreature("War Golem", {x=glo.x,y=glo.y - 4,z=glo.z}) 
		doSummonCreature("War Golem", {x=glo.x,y=glo.y + 4,z=glo.z}) 
	end 

	local function Glllobe()
		local monst = getMonstersfromArea(topLeft, buttomRight) 
		for i = 1, #monst do
			doRemoveCreature(monst[i])

		end

		local item1 = getTileItemById(glo, 9767)
		doItemSetAttribute(item1.uid, "aid", 58261)
	end

	local function createWall(p)
		local janek = doCreateItem(1387,1,{x = 491, y = 199, z = 6})
		doItemSetAttribute(janek, "aid", 9105)
	end

	local function createWalll(i)
		local ela = doCreateItem(1387,1,{x = 490, y = 197, z = 7})
		doItemSetAttribute(ela, "aid", 9106)
	end
	
	local wall0 = {x = 491, y = 199, z = 6, stackpos=1}
	local getwall0 = getThingfromPos(wall0)
	local wall1 = {x = 490, y = 197, z = 7, stackpos=1}
	local getwall1 = getThingfromPos(wall1)
	local monsters = getMonstersfromArea(topLeft, buttomRight) 
	local monsters1 = getMonstersfromArea(topLeft, buttomRight) 
	local tele_chk = getTileItemById(tp, 1387)
	if item.actionid == 58261 then
		doItemSetAttribute(item.uid, "aid", 58263)
	end

	if tele_chk.uid > 0 then 
		doRemoveItem(getTileItemById(tp,1387).uid) 
		doRemoveItem(getwall0.uid,1)
		addEvent(FirstWave, 0) 
		addEvent(FifthWave, 30000)
		addEvent(SecondWave, 60000) 
		addEvent(SixthWave, 90000) 
		addEvent(ThirdWave, 120000) 
		addEvent(ThirdWave1, 150000) 
		addEvent(FourthWave, 180000) 
		addEvent(SevenWave, 210000) 
		addEvent(Glllobe, 400000)  
		p = {wallid = getwall0.itemid}
		addEvent(createWall, 300*1000, p)
		i = {wallid = getwall1.itemid}
		addEvent(createWalll, 300*1000, i)
	end
	
	if item.actionid == 58263 then 
		doCreatureSay(cid, "You have to wait some time before this globe will charge.", TALKTYPE_ORANGE_1)
	end
	return TRUE 
end

movements/scripts/azerusarmy


function onStepIn(cid, item, position, fromPosition) 
        if item.actionid == 58262 then 
            if getPlayerStorageValue(cid,    10510) == -1  then         
            doCreatureSay(cid, "It seems by defating Azerus you have stopped this army from entering your world! Better leave this gastly place forever.", TALKTYPE_ORANGE_1) 
            setPlayerStorageValue(cid, 10510, 1) 
        end 
    return TRUE 
end  
end

movements/scripts/azerusdeath


function onStepIn(cid, item, position, fromPosition) 

local yalahar = {x = 543, y = 185, z = 5, stackpos=253} 
        if item.itemid == 9738 then 
        doTeleportThing(cid, yalahar, TRUE) 
        doSendMagicEffect(yalahar,12) 
        end 
     
    return TRUE 
end

E aproveitando eu fiz a WOTE e funcionou tudo certinho. Mas os itens de Zao paracem não estar danos os bonus de skill e absorb.


    <item id="12644" article="a" name="shield of corruption">
        <attribute key="weight" value="4900" />
        <attribute key="defense" value="36" />
        <attribute key="weaponType" value="shield" />
        <attribute key="skillSword" value="3" />
        <attribute key="showattributes" value="1" />
    </item>

O código parece estar certo e outros itens dão o bonus normal, apenas os de zao não.

Verifica no movements.xml se os itens estão declarados lá, se n tiver n funciona os atributos, e esse shield tá adicionando skill sword, mas n ta absorvendo nada, tem q adicionar outra tag para absorver.

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