Postado Outubro 7, 2017 7 anos Galera preciso de um script de porta , onde só vai passar quem matar os monstros que são pedidos, é para uma quest, de 11 etapas que estou fazendo, aí cada etapa vai ter um monstro diferente, e depois de matar esses 11 monstros eu ganho acesso a porta, para sempre, mais ou menos assim, urgente agradeço rep +.
Postado Outubro 8, 2017 7 anos Solução 1º Em data/creaturescripts/scripts adicione um arquivo chamado Quest_Bosses.lua e cole isso dentro: local Configs = { Bosses = { ["Nome do boss"] = 60000, ["Nome do boss"] = 60001, ["Nome do boss"] = 60002, ["Nome do boss"] = 60003, ["Nome do boss"] = 60004, ["Nome do boss"] = 60005, ["Nome do boss"] = 60006, ["Nome do boss"] = 60007, ["Nome do boss"] = 60008, ["Nome do boss"] = 60009, ["Nome do boss"] = 60010, } } function onDeath(cid, corpse, deathList) for Name, Storage in pairs(Configs.Bosses) do if getCreatureName(cid) == Name then for i = 1, #deathList do setPlayerStorageValue(deathList[i], Storage, 1) end end end registerCreatureEvent(cid, "Quest_Bosses") return true end 2º Configure o script pra o nome dos boss corretamente, Exemplo: ["Rat"], ["Orc"] etc 3º Em data/creaturescripts/scripts/login.lua adicione isso dps de qualquer registerCreatureEvent registerCreatureEvent(cid, "Quest_Bosses") 4º Em data/creaturescripts/creaturescripts.xml adicione essa tag: <event type="death" name="Quest_Bosses" event="script" value="Quest_Bosses.lua"/> 5º Em data/actions/scripts cria um arquivo chamado Quest_Bosses.lua e cole isso: local Configs = { Door_AID = 6000, Bosses = { [1] = {60000, "Nome do Boss1"}, [2] = {60001, "Nome do Boss2"}, [3] = {60002, "Nome do Boss3"}, [4] = {60003, "Nome do Boss4"}, [5] = {60004, "Nome do Boss5"}, [6] = {60005, "Nome do Boss6"}, [7] = {60006, "Nome do Boss7"}, [8] = {60007, "Nome do Boss8"}, [9] = {60008, "Nome do Boss9"}, [10] = {60009, "Nome do Boss10"}, [11] = {60010, "Nome do Boss11"}, } } local function CheckKillBosses(cid) for i = 1, #Configs.Bosses do if getPlayerStorageValue(cid, Configs.Bosses[i][1]) < 0 then return false end end return true end local function EmptyBosses(cid) local Table = {} for i = 1, #Configs.Bosses do if getPlayerStorageValue(cid, Configs.Bosses[i][1]) < 0 then table.insert(Table, Configs.Bosses[i][2]) end end return table.concat(Table, ', ') end function onUse(cid, item, fromPosition, itemEx, toPosition) local Player_Pos = getThingPos(cid) if item.aid == Configs.Door_AID then if CheckKillBosses(cid) then if Player_Pos.x == toPosition.x then if Player_Pos.y < toPosition.y then Player_Pos.y = toPosition.y + 1 else Player_Pos.y = toPosition.y - 1 end elseif Player_Pos.y == toPosition.y then if Player_Pos.x < toPosition.x then Player_Pos.x = toPosition.x + 1 else Player_Pos.x = toPosition.x - 1 end end doTeleportThing(cid, Player_Pos, true) doSendMagicEffect(Player_Pos, CONST_ME_TELEPORT) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Falta voce matar: ".. EmptyBosses(cid) ..".") end end return true end 6º Em data/actions/actions.xml adicione a tag: <action actionid="6000" event="script" value="Quest_Bosses.lua"/> 7º Configure o nome dos bosses corretamente e não esqueça de colocar a porta com ActionID 6000 no seu remeres map editor! 8º No xml de todos os bosses coloque isso antes de </monster>: <script> <event name="Quest_Bosses"/> </script> Caso tenha alguma dúvida ou não funcione só falar! Editado Outubro 8, 2017 7 anos por Danyel Varejao (veja o histórico de edições)
Postado Outubro 8, 2017 7 anos Autor Opa meu amigo, vou testar aqui, caso algum erro já te mando aqui senão, rep +.... Mas desde já agradeço. 14 minutos atrás, Danyel Varejao disse: 1º Em data/creaturescripts/scripts adicione um arquivo chamado Quest_Bosses.lua e cole isso dentro: local Configs = { Bosses = { ["Nome do boss"] = 60000, ["Nome do boss"] = 60001, ["Nome do boss"] = 60002, ["Nome do boss"] = 60003, ["Nome do boss"] = 60004, ["Nome do boss"] = 60005, ["Nome do boss"] = 60006, ["Nome do boss"] = 60007, ["Nome do boss"] = 60008, ["Nome do boss"] = 60009, ["Nome do boss"] = 60010, } } function onDeath(cid, corpse, deathList) for Name, Storage in pairs(Configs.Bosses) do if getCreatureName(cid) == Name then for i = 1, #deathList do setPlayerStorageValue(deathList[i], Storage, 1) end end end registerCreatureEvent(cid, "Quest_Bosses") return true end 2º Configure o script pra o nome dos boss corretamente, Exemplo: ["Rat"], ["Orc"] etc 3º Em data/creaturescripts/scripts/login.lua adicione isso dps de qualquer registerCreatureEvent registerCreatureEvent(cid, "Quest_Bosses") 4º Em data/creaturescripts/creaturescripts.xml adicione essa tag: <event type="death" name="Quest_Bosses" event="script" value="Quest_Bosses.lua"/> 5º Em data/actions/scripts cria um arquivo chamado Quest_Bosses.lua e cole isso: local Configs = { Door_AID = 6000, Bosses = { [1] = {60000, "Nome do Boss1"}, [2] = {60001, "Nome do Boss2"}, [3] = {60002, "Nome do Boss3"}, [4] = {60003, "Nome do Boss4"}, [5] = {60004, "Nome do Boss5"}, [6] = {60005, "Nome do Boss6"}, [7] = {60006, "Nome do Boss7"}, [8] = {60007, "Nome do Boss8"}, [9] = {60008, "Nome do Boss9"}, [10] = {60009, "Nome do Boss10"}, [11] = {60010, "Nome do Boss11"}, } } local function CheckKillBosses(cid) for i = 1, #Configs.Bosses do if getPlayerStorageValue(cid, Configs.Bosses[i][1]) < 0 then return false end end return true end local function EmptyBosses(cid) local Table = {} for i = 1, #Configs.Bosses do if getPlayerStorageValue(cid, Configs.Bosses[i][1]) < 0 then table.insert(Table, Configs.Bosses[i][2]) end end return table.concat(Table, ', ') end function onUse(cid, item, fromPosition, itemEx, toPosition) local Player_Pos = getThingPos(cid) if item.aid == Configs.Door_AID then if CheckKillBosses(cid) then if Player_Pos.x == toPosition.x then if Player_Pos.y < toPosition.y then Player_Pos.y = toPosition.y + 1 else Player_Pos.y = toPosition.y - 1 end elseif Player_Pos.y == toPosition.y then if Player_Pos.x < toPosition.x then Player_Pos.x = toPosition.x + 1 else Player_Pos.x = toPosition.x - 1 end end doTeleportThing(cid, Player_Pos, true) doSendMagicEffect(Player_Pos, CONST_ME_TELEPORT) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Falta voce matar: ".. EmptyBosses(cid) ..".") end end return true end 6º Configure o nome dos bosses corretamente e não esqueça de colocar a porta com ActionID 6000 no seu remeres map editor! 7º No xml de todos os bosses coloque isso antes de </monster>: <script> <event name="Quest_Bosses"/> </script> Caso tenha alguma dúvida ou não funcione só falar! amigo, fiz tudo que você pediu , só que não dar nenhum erro nem nada, eu mato o monstro que coloquei pra testar e a porta nem sinal dar de nada kk, nem a mensagem que era pra enviar caso eu não tivesse matado , não aparece também.
Postado Outubro 8, 2017 7 anos Em creaturescripts/scripts, crie um arquivo.lua: Spoiler local monsters = { "dwarf", "dwarf soldier", "dwarf guard", "axeitus headbanger", "foreman kneebiter", "cyclops", "elf", "elf scout", "elf arcanist", "cyclops smith", "cyclops drone" } local dooraid = 56802 -- coloque aqui o actionid da porta function onKill(cid, target, damage, flags) local name = getCreatureName(target):lower() if isPlayer(target) or getCreatureMaster(target) or (not isInArray(monsters, name)) then return true end if isInArray(monsters, name) then if getPlayerStorageValue(cid, 56803) == -1 then setPlayerStorageValue(cid, 56803, "") end local monster = getPlayerStorageValue(cid, 56803) local t = string.explode(monster:gsub("'",""), ",") local monster_already = monster..",'"..name.."'" if (not isInArray(t, name)) then local killed = getPlayerStorageValue(cid, 56801) + 1 setPlayerStorageValue(cid, 56801, killed) setPlayerStorageValue(cid, 56803, tostring(monster_already)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Killed: ["..(killed + 1).."/" .. #monsters .. "]") if (killed+1) == #monsters then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Congratulations! You have killed [" .. (killed + 1) .. "/" .. #monsters .. "] monsters. You are allowed to pass the door now.") setPlayerStorageValue(cid, 56801, killed + 1) setPlayerStorageValue(cid, dooraid, 1) end end end return true end No login.lua, registre o evento: registerCreatureEvent(cid, "KillQuest") Em creaturescripts.xml, adicione a tag: <event type="kill" name="KillQuest" event="script" value="NOMEDOSEUARQUIVO.lua"/> Depois, é só colocar o actionid que configurou no script (dooraid) na porta, coloquei como exemplo o 56802. Utilize aquelas portas de quest, como as do id 6261 se não me engano. Contato: Email: [email protected] Discord: Dwarfer#2715
Postado Outubro 8, 2017 7 anos 1 hora atrás, ZeenG disse: Opa meu amigo, vou testar aqui, caso algum erro já te mando aqui senão, rep +.... Mas desde já agradeço. amigo, fiz tudo que você pediu , só que não dar nenhum erro nem nada, eu mato o monstro que coloquei pra testar e a porta nem sinal dar de nada kk, nem a mensagem que era pra enviar caso eu não tivesse matado , não aparece também. Eu editei lá, faltou eu colocar a tag da action, tá tudo certinho agr, só instalar corretamente!
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.