Postado Janeiro 19, 2019 6 anos 8.6 forgotten 0.4 Bom, eu tenho esse script da anihilator abaixo, ele é ótimo, cria os monstros, não deixa outro time entrar enquanto tem time na área dele etc... Mas eu queria fazer uma modificação nele: alem de criar as criaturas no local pré determinada queria que criasse algumas criaturas aleatórias em uma área. Exemplo: Alem de ter isso: local monster_pos = { [1] = {pos = {33224, 31695, 14}, monster = "Demon"}, [2] = {pos = {33226, 31695, 14}, monster = "Demon"}, [3] = {pos = {33228, 31697, 14}, monster = "Demon"}, [4] = {pos = {33229, 31697, 14}, monster = "Demon"}, [5] = {pos = {33227, 31699, 14}, monster = "Demon"}, [6] = {pos = {33225, 31699, 14}, monster = "Demon"} } Ter também: local monsterale_pos = { [1] = {fromX = 33224 fromY= 31695 fromZ= 14 toX = 33250 toY = 31750 toZ = 12}, count = 40 monster = "Fire elemental"}, [2] = {fromX = 33224 fromY= 31695 fromZ= 14 toX = 33250 toY = 31750 toZ = 12}, count = 10 monster = "Hellfire Fighter"}, } Bom é isso galera... quem puder me ajudar... eu agradeceria muito!!! Mostrar conteúdo oculto local room = { -- room with demons fromX = 33229, fromY = 31697, fromZ = 14, toX = 33224, toY = 31697, toZ = 14 } local monster_pos = { [1] = {pos = {33224, 31695, 14}, monster = "Demon"}, [2] = {pos = {33226, 31695, 14}, monster = "Demon"}, [3] = {pos = {33228, 31697, 14}, monster = "Demon"}, [4] = {pos = {33229, 31697, 14}, monster = "Demon"}, [5] = {pos = {33227, 31699, 14}, monster = "Demon"}, [6] = {pos = {33225, 31699, 14}, monster = "Demon"} } local players_pos = { {x = 33224, y =31671, z = 13, stackpos = 253}, {x = 33223, y =31671, z = 13, stackpos = 253}, {x = 33222, y =31671, z = 13, stackpos = 253}, {x = 33221, y =31671, z = 13, stackpos = 253} } local new_player_pos = { {x = 33227, y = 31697, z = 14}, {x = 33226, y = 31697, z = 14}, {x = 33225, y = 31697, z = 14}, {x = 33224, y = 31697, z = 14} } local playersOnly = "no" local questLevel = 101 function onUse(cid, item, fromPosition, itemEx, toPosition) local all_ready, monsters, player, level = 0, 0, {}, 0 if item.itemid == 1945 then for i = 1, #players_pos do table.insert(player, 0) end for i = 1, #players_pos do player = getThingfromPos(players_pos) if player.itemid > 0 then if string.lower(playersOnly) == "yes" then if isPlayer(player.uid) == TRUE then all_ready = all_ready+1 else monsters = monsters+1 end else all_ready = all_ready+1 end end end if all_ready == #players_pos then for i = 1, #players_pos do player = getThingfromPos(players_pos) if isPlayer(player.uid) == TRUE then if getPlayerLevel(player.uid) >= questLevel then level = level+1 end else level = level+1 end end if level == #players_pos then if string.lower(playersOnly) == "yes" and monsters == 0 or string.lower(playersOnly) == "no" then for _, area in pairs(monster_pos) do doSummonCreature(area.monster,{x=area.pos[1],y=area.pos[2],z=area.pos[3]}) end for i = 1, #players_pos do doSendMagicEffect(players_pos, CONST_ME_POFF) doTeleportThing(player.uid, new_player_pos, FALSE) doSendMagicEffect(new_player_pos, CONST_ME_ENERGYAREA) doTransformItem(item.uid,1946) end else doPlayerSendTextMessage(cid,19,"Only players can do this quest.") end else doPlayerSendTextMessage(cid,19,"All Players have to be level "..questLevel.." to do this quest.") end else doPlayerSendTextMessage(cid,19,"You need "..table.getn(players_pos).." players to do this quest.") end elseif item.itemid == 1946 then local player_room = 0 for x = room.fromX, room.toX do for y = room.fromY, room.toY do for z = room.fromZ, room.toZ do local pos = {x=x, y=y, z=z,stackpos = 253} local thing = getThingfromPos(pos) if thing.itemid > 0 then if isPlayer(thing.uid) == TRUE then player_room = player_room+1 end end end end end if player_room >= 1 then doPlayerSendTextMessage(cid,19,"There is already a team in the quest room.") elseif player_room == 0 then for x = room.fromX, room.toX do for y = room.fromY, room.toY do for z = room.fromZ, room.toZ do local pos = {x=x, y=y, z=z,stackpos = 253} local thing = getThingfromPos(pos) if thing.itemid > 0 then doRemoveCreature(thing.uid) end end end end doTransformItem(item.uid,1945) end end return TRUEend Editado Janeiro 19, 2019 6 anos por Zabim (veja o histórico de edições)
Postado Janeiro 19, 2019 6 anos local room = { -- room with demons fromX = 33229, fromY = 31697, fromZ = 14, toX = 33224, toY = 31697, toZ = 14 } local monster_pos = { [1] = {pos = {33224, 31695, 14}, monster = "Demon"}, [2] = {pos = {33226, 31695, 14}, monster = "Demon"}, [3] = {pos = {33228, 31697, 14}, monster = "Demon"}, [4] = {pos = {33229, 31697, 14}, monster = "Demon"}, [5] = {pos = {33227, 31699, 14}, monster = "Demon"}, [6] = {pos = {33225, 31699, 14}, monster = "Demon"} } local monster_area = { area = { topLeftPos = {x = 33224, y = 31695, z = 14}, bottomRightPos = {x = 33250, y = 31750, z = 12}, }, monsters = { {name = "Fire Elemental", count = 5}, {name = "Hellfire Fighter", count = 2}, } } local players_pos = { {x = 33224, y =31671, z = 13, stackpos = 253}, {x = 33223, y =31671, z = 13, stackpos = 253}, {x = 33222, y =31671, z = 13, stackpos = 253}, {x = 33221, y =31671, z = 13, stackpos = 253} } local new_player_pos = { {x = 33227, y = 31697, z = 14}, {x = 33226, y = 31697, z = 14}, {x = 33225, y = 31697, z = 14}, {x = 33224, y = 31697, z = 14} } local playersOnly = "no" local questLevel = 101 function onUse(cid, item, fromPosition, itemEx, toPosition) local all_ready, monsters, player, level = 0, 0, {}, 0 if item.itemid == 1945 then for i = 1, #players_pos do table.insert(player, 0) end for i = 1, #players_pos do player = getThingfromPos(players_pos) if player.itemid > 0 then if string.lower(playersOnly) == "yes" then if isPlayer(player.uid) == TRUE then all_ready = all_ready+1 else monsters = monsters+1 end else all_ready = all_ready+1 end end end if all_ready == #players_pos then for i = 1, #players_pos do player = getThingfromPos(players_pos) if isPlayer(player.uid) == TRUE then if getPlayerLevel(player.uid) >= questLevel then level = level+1 end else level = level+1 end end if level == #players_pos then if string.lower(playersOnly) == "yes" and monsters == 0 or string.lower(playersOnly) == "no" then for _, area in pairs(monster_pos) do doSummonCreature(area.monster,{x=area.pos[1],y=area.pos[2],z=area.pos[3]}) end for i = 1, #monster_area.monsters do local PosX = math.random(monster_area.area.topLeftPos.x, monster_area.area.bottomRightPos.x) local PosY = math.random(monster_area.area.topLeftPos.y, monster_area.area.bottomRightPos.y) local PosZ = monster_area.area.topLeftPos.z local position = {x = PosX, y = PosY, z = PosZ} for k = 1, monster_area.monsters[i].count do doSummonCreature(monster_area.monsters[i].name, position, false, true) end end for i = 1, #players_pos do doSendMagicEffect(players_pos, CONST_ME_POFF) doTeleportThing(player.uid, new_player_pos, FALSE) doSendMagicEffect(new_player_pos, CONST_ME_ENERGYAREA) doTransformItem(item.uid,1946) end else doPlayerSendTextMessage(cid,19,"Only players can do this quest.") end else doPlayerSendTextMessage(cid,19,"All Players have to be level "..questLevel.." to do this quest.") end else doPlayerSendTextMessage(cid,19,"You need "..table.getn(players_pos).." players to do this quest.") end elseif item.itemid == 1946 then local player_room = 0 for x = room.fromX, room.toX do for y = room.fromY, room.toY do for z = room.fromZ, room.toZ do local pos = {x=x, y=y, z=z,stackpos = 253} local thing = getThingfromPos(pos) if thing.itemid > 0 then if isPlayer(thing.uid) == TRUE then player_room = player_room+1 end end end end end if player_room >= 1 then doPlayerSendTextMessage(cid,19,"There is already a team in the quest room.") elseif player_room == 0 then for x = room.fromX, room.toX do for y = room.fromY, room.toY do for z = room.fromZ, room.toZ do local pos = {x=x, y=y, z=z,stackpos = 253} local thing = getThingfromPos(pos) if thing.itemid > 0 then doRemoveCreature(thing.uid) end end end end doTransformItem(item.uid,1945) end end return TRUE end
Postado Janeiro 19, 2019 6 anos Autor Bom dia jogador, valeu por me ajudar, mas estava dando um erro esquisito: [10:41:47.881] [Error - Action Interface] [10:41:47.882] data/actions/scripts/dungeons/alavancainicio base.lua:onUse [10:41:47.883] Description: [10:41:47.884] (luaGetThingFromPos) Tile not found Consegui acertar o script! Segue abaixo funcionando. Créditos ao @Danyel Varejao!! Mostrar conteúdo oculto local room = { -- room with demons fromX = 3966, fromY = 2914, fromZ = 7, toX = 3982, toY = 2930, toZ = 7 } local monster_pos = { [1] = {pos = {3970, 2918, 7}, monster = "Demon"} } local monster_area = { area = { topLeftPos = {x = 3974, y = 2922, z = 7}, bottomRightPos = {x = 3980, y = 2928, z = 7}, }, monsters = { {name = "Fire Elemental", count = 5}, {name = "Hellfire Fighter", count = 2}, } } local players_pos = { {x = 4128, y = 3000, z = 6, stackpos = 253}, {x = 4129, y = 3000, z = 6, stackpos = 253} } local new_player_pos = { {x = 3973, y = 2921, z = 7}, {x = 3974, y = 2921, z = 7} } local playersOnly = "no" local questLevel = 10 function onUse(cid, item, fromPosition, itemEx, toPosition) local all_ready, monsters, player, level = 0, 0, {}, 0 if item.itemid == 1945 then for i = 1, #players_pos do table.insert(player, 0) end for i = 1, #players_pos do player = getThingfromPos(players_pos) if player.itemid > 0 then if string.lower(playersOnly) == "yes" then if isPlayer(player.uid) == TRUE then all_ready = all_ready+1 else monsters = monsters+1 end else all_ready = all_ready+1 end end end if all_ready == #players_pos then for i = 1, #players_pos do player = getThingfromPos(players_pos) if isPlayer(player.uid) == TRUE then if getPlayerLevel(player.uid) >= questLevel then level = level+1 end else level = level+1 end end if level == #players_pos then if string.lower(playersOnly) == "yes" and monsters == 0 or string.lower(playersOnly) == "no" then for _, area in pairs(monster_pos) do doSummonCreature(area.monster,{x=area.pos[1],y=area.pos[2],z=area.pos[3]}) end for i = 1, #monster_area.monsters do local PosX = math.random(monster_area.area.topLeftPos.x, monster_area.area.bottomRightPos.x) local PosY = math.random(monster_area.area.topLeftPos.y, monster_area.area.bottomRightPos.y) local PosZ = monster_area.area.topLeftPos.z local position = {x = PosX, y = PosY, z = PosZ} for k = 1, monster_area.monsters.count do doSummonCreature(monster_area.monsters.name, position, false, true) end end for i = 1, #players_pos do doSendMagicEffect(players_pos, CONST_ME_POFF) doTeleportThing(player.uid, new_player_pos, FALSE) doSendMagicEffect(new_player_pos, CONST_ME_ENERGYAREA) doTransformItem(item.uid,1946) end else doPlayerSendTextMessage(cid,19,"Only players can do this quest.") end else doPlayerSendTextMessage(cid,19,"All Players have to be level "..questLevel.." to do this quest.") end else doPlayerSendTextMessage(cid,19,"You need "..table.getn(players_pos).." players to do this quest.") end elseif item.itemid == 1946 then local player_room = 0 for x = room.fromX, room.toX do for y = room.fromY, room.toY do for z = room.fromZ, room.toZ do local pos = {x=x, y=y, z=z,stackpos = 253} local thing = getThingfromPos(pos) if thing.itemid > 0 then if isPlayer(thing.uid) == TRUE then player_room = player_room+1 end end end end end if player_room >= 1 then doPlayerSendTextMessage(cid,19,"There is already a team in the quest room.") elseif player_room == 0 then for x = room.fromX, room.toX do for y = room.fromY, room.toY do for z = room.fromZ, room.toZ do local pos = {x=x, y=y, z=z,stackpos = 253} local thing = getThingfromPos(pos) if thing.itemid > 0 then doRemoveCreature(thing.uid) end end end end doTransformItem(item.uid,1945) end end return TRUEend Podem encerrar tópico! Script funcionando 100% Editado Janeiro 19, 2019 6 anos por Zabim (veja o histórico de edições)
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.