Postado Julho 22, 2016 8 anos 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
Postado Julho 22, 2016 8 anos 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. Atenciosamente, Felipe Lotz.
Postado Julho 22, 2016 8 anos 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.