Ir para conteúdo
Propaganda

subhe

Membro
  • Registro em

  • Última visita

Tudo que subhe postou

  1. @Vodkart funcionou REP+ teria como botar esse script pra poder pegar 3 tasks ao mesmo tempo ?
  2. Oii, eu queria que o npc da task, ao falar com ele... ele diria o nome dos monstros ex: Hi, tasks, (npc fala o nome de todas as tasks adicionadas) parecido com o global creio que essa mudança seja feita pelo script do npc vou deixar ele aqui em baixo script do npc e qualquer coisa vou deixar o link do sistema aqui tbm
  3. foda que seria 4 baus diferentes na quest uma pra cada promotion Ediiiit: conseguiiii peguei uma linha de cada script que tinha aqui no forum sobre isso e fiz o script do jeitinho que queria kkkkk funcionou muito obrigado a todos que tentaram me ajudar, vou da rep+ a todos
  4. @Platinun e como eu faria dessa forma que vc ta falando ? pode me ajudar ?
  5. @Platinun é que queria colocar pra ganhar essa promotion em uma quest
  6. @Platinun Testei aqui, mesmo dando save no server, ele perde a promotion
  7. @Platinun fiz o que vc falou, funcionou.. ele ganha a promotion, mas agora, quando desloga, ele perde a promotion e não pode pegar novamente kkkk
  8. @LeoTK esqueci de informar isso kkkk siim uso Alissow Server, version 0.4.1 8.60
  9. Eu de novo ?‍♂️ Estava tentando adicionar 4 novas vocações, que seriam um second promotion deixei certinho no Vocation.xml e adicionei na lib tbm botei pra ganhar essa segunda promotion em uma quest. ao clicar no bau, ele "ganha" o promotion, porem fica dessa forma " 17:01 You see yourself. You are . " OBS: Alissow Server, version 0.4.1 8.60 e aparece esse erro na distro [Warning - Vocations::getVocation] Vocation 4294967295 not found. vou deixar aqui a action que usei pra adicionar a quest local storage = 23232 function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, storage) < 1 then if getPlayerVocation(cid) > 4 then doPlayerSetVocation(cid, getPlayerVocation(cid)+4) doPlayerSendTextMessage(cid, 25, "Parabens, voce foi promovido!") doPlayerSetStorageValue(cid, storage, 1) else doPlayerSendCancel(cid, "Voce precisa ser promovido pra se promover novamente.") end else doPlayerSendCancel(cid, "The chest is empty.") end return true end Vocation.XML lib 031-vocations
  10. @Vodkart Agora não da erro nenhum, o comando !metin está funcionando, obrigado teria como deixar ele automático ? ele só ta iniciando por meio de talkaction, mesmo eu botando o dia e hora pro evento acontecer, ele não acontece, só se eu usar o comando e se não for muito incomodo, daria pra por pra cada stone aparecer em um determinado tempo.. pra não aparecer todas ao mesmo tempo Tipo, definir o horário de cada uma ou elas aparecer com algum intervalo de tempo (ex: 20 min) ou até, só aparecer outra, dps que a primeira morrer sla kkkk, o que for mais fácil de fazer ja ganhou REP+ OBS: As stones não estão summonando os monstros, quando chega em x porcentagem de HP @Vodkart ediiit: Precisa mais não, mexi aqui e consegui fazer funcionar muito obrigado pela ajuda mano, se me ajudou muito
  11. @Vodkart Deletei as partes que vc pediu, agora não está aparecendo o erro ao summonar os monstros. só aparece esse erro, quando eu tento iniciar o evento por talkaction [01/03/2020 15:11:52] [Error - TalkAction Interface] [01/03/2020 15:11:52] buffer:onSay [01/03/2020 15:11:52] Description: [01/03/2020 15:11:52] attempt to index a nil value [01/03/2020 15:11:52] stack traceback: [01/03/2020 15:11:52] [C]: in function 'doCreateMonster' [01/03/2020 15:11:52] [string "loadBuffer"]:7: in function <[string "loadBuffer"]:2> Sim eu criei o monstro Wind Stone
  12. @Vodkart o MOD eu peguei desse link AQUI pq eu queria definir em quais lugares cada stone iria aparecer agora os monstros eu peguei desse link AQUI
  13. @Vodkart pode me ajudar ?
  14. é kkk eu vi aqui então.. ele não executa o evento agora e não da erro nenhum na distro, porem quando eu summono as stones com o GOD.. Aparece esse erro [Warning - Monster::Monster] Unknown event name - metinStoneCombat e se eu for iniciar por talkaction " !metin " aparece o seguinte erro... [28/02/2020 04:23:47] [Error - TalkAction Interface] [28/02/2020 04:23:47] buffer:onSay [28/02/2020 04:23:47] Description: [28/02/2020 04:23:47] attempt to index a nil value [28/02/2020 04:23:47] stack traceback: [28/02/2020 04:23:47] [C]: in function 'doCreateMonster' [28/02/2020 04:23:47] [string "loadBuffer"]:7: in function <[string "loadBuffer"]:2>
  15. Aparece esse erro e o servidor não abre, fica só aparecendo esses erros [27/02/2020 19:08:00] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: database disk image is malformed (SELECT "name" FROM "sqlite_master" WHERE "type" = 'table' AND "name" = 'server_config';) [27/02/2020 19:08:00] > Updating database to version: 1... [27/02/2020 19:08:00] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: database disk image is malformed (CREATE TABLE IF NOT EXISTS "server_config" ("config" VARCHAR(35) NOT NULL DEFAULT '', "value" INTEGER NOT NULL);) [27/02/2020 19:08:00] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: database disk image is malformed (INSERT INTO "server_config" VALUES ('db_version', 1);) [27/02/2020 19:08:00] > SQLite migration from 0.2 support not available, please use latest database! [27/02/2020 19:08:00] > Database has been updated to version: 1.
  16. Boa noite, achei esse evento em um site gringo, mas ele está dando alguns erros, alguém poderia me ajudar ? eu tentei mexer nele, mas como sou iniciante nessa área, não sei bem se estraguei mais ou melhorei ? Meu servidor é o Alissow Server, version 0.4.1 8.60 Desde já agradeço Esses são os erros que aparecem na distro [25/02/2020 05:33:24] > Loading [MOD] Evento Metin Stone.xml... [25/02/2020 05:33:24] [Error - CreatureScript Interface] [25/02/2020 05:33:24] buffer [25/02/2020 05:33:24] Description: [25/02/2020 05:33:24] [string "names = {'earth stone', 'icy stone', 'fire stone', 'wind stone'..."]:9: unexpected symbol near '=' [25/02/2020 05:33:24] [Error - TalkAction Interface] [25/02/2020 05:33:24] buffer [25/02/2020 05:33:24] Description: [25/02/2020 05:33:24] [string "names = {'earth stone', 'icy stone', 'fire stone', 'wind stone'..."]:9: unexpected symbol near '=' [25/02/2020 05:33:24] [Error - GlobalEvent Interface] [25/02/2020 05:33:24] buffer [25/02/2020 05:33:24] Description: [25/02/2020 05:33:24] [string "names = {'earth stone', 'icy stone', 'fire stone', 'wind stone'..."]:9: unexpected symbol near '=' [25/02/2020 05:33:24] [Error - GlobalEvent Interface] [25/02/2020 05:33:24] buffer [25/02/2020 05:33:24] Description: [25/02/2020 05:33:24] [string "loadBuffer"]:3: attempt to get length of global 'stones_name' (a nil value) [25/02/2020 05:33:24] [Warning - Event::loadScript] Cannot load script (domodlib("Stones_config") [25/02/2020 05:33:24] local daysOpen = {} [25/02/2020 05:33:24] local monst = stones_name[math.random(1, #stones_name)] [25/02/2020 05:33:24] local poss = pos[math.random(1, #pos)] [25/02/2020 05:33:24] for k, v in pairs(days) do [25/02/2020 05:33:24] table.insert(daysOpen, k) [25/02/2020 05:33:24] end [25/02/2020 05:33:24] function onThink(interval) [25/02/2020 05:33:24] if isInArray(daysOpen, os.date('%A')) then [25/02/2020 05:33:24] if isInArray(days[os.date('%A')], os.date('%X', os.time())) then [25/02/2020 05:33:24] print(monst, poss) [25/02/2020 05:33:24] if not(monst) then return TRUE end [25/02/2020 05:33:24] doCreateMonster(monst.name,poss.pos) [25/02/2020 05:33:24] doBroadcastMessage('[Event Stones]\n '.. monst.name ..' have been spawn. Find and defeat it!', 22) [25/02/2020 05:33:24] end [25/02/2020 05:33:24] end [25/02/2020 05:33:24] return true [25/02/2020 05:33:24] end [25/02/2020 05:33:24] ) Script MOD <?xml version="1.0" encoding="UTF-8"?> <mod name="Stones_Event Items" enabled="yes"> <config name="Stones_config"><![CDATA[ names = {'earth stone', 'icy stone', 'fire stone', 'wind stone'} stones_name = { [1] = {name="Earth Stone"}, [2] = {name="Icy Stone"}, [3] = {name="Fire Stone"}, [4] = {name="Wind Stone"} }, pos = { [1] = {{x=95, y=57, z=7}}, [2] = {{x=103, y=57, z=7}}, [3] = {{x=90, y=58, z=7}}, [4] = {{x=80, y=58, z=7}} }, days = {['Tuesday'] = {'05:29:00'}, ['Sunday'] = {'03:46:20'} }, stones = { ["earth stone"] = { [90] = {m = {'carniphila','earth elemental','bog raider'}, n = {6, 7}}, [80] = {m = {'bog raider','earth elemental'}, n = {6, 7}}, [70] = {m = {'giant spider','bog raider'}, n = {6, 7}}, [60] = {m = {'hydra','lich','giant spider','bog raider'}, n = {6, 7}}, [50] = {m = {'hydra','bog raider','serpent spawn'}, n = {6, 7}}, [40] = {m = {'hydra','defiler','serpent spawn'}, n = {6, 7}}, [30] = {m = {'medusa','hydra','serpent spawn','defiler'}, n = {6, 7}}, [20] = {m = {'medusa','lost soul','hydra','serpent spawn'}, n = {6, 7}}, [10] = {m = {'juggernaut','son of verminor','medusa'}, n = {5, 6}}, [1] = {m = {'medusa','juggernaut'}, n = {5,7}} }, ["icy stone"] = { [90] = {m = {'ice golem','frost dragon'}, n = {6, 7}}, [80] = {m = {'frost dragon','frost dragon hatchling'}, n = {6, 7}}, [70] = {m = {'frost dragon','crystal spider'}, n = {6, 7}}, [60] = {m = {'frost dragon','crystal spider'}, n = {7, 7}}, [50] = {m = {'frost dragon','crystal spider'}, n = {7, 7}}, [40] = {m = {'frost dragon'}, n = {7, 7}}, [30] = {m = {'frost dragon'}, n = {7, 8}}, [20] = {m = {'frost dragon'}, n = {7, 8}}, [10] = {m = {'yeti','frost dragon'}, n = {5, 7}}, [1] = {m = {'yeti'}, n = {2,3}} }, ["fire stone"] = { [90] = {m = {'fire elemental','dragon','dragon lord',' dragon lord hatchling'}, n = {6, 7}}, [80] = {m = {'dragon lord hatchling','dragon lord'}, n = {6, 7}}, [70] = {m = {'dragon lord','diabolic imp'}, n = {6, 7}}, [60] = {m = {'dragon lord','diabolic imp'}, n = {6, 7}}, [50] = {m = {'dragon lord','demodras','diabolic imp'}, n = {6, 7}}, [40] = {m = {'dragon lord','diabolic imp','hellfire fighter'}, n = {5, 7}}, [30] = {m = {'diabolic imp','hellfire fighter','demon'}, n = {6, 7}}, [20] = {m = {'hellfire fighter','demon'}, n = {5, 6}}, [10] = {m = {'demon','hellhound'}, n = {5, 5}}, [1] = {m = {'demon'}, n = {5,5}} }, ["wind stone"] = { [90] = {m = {'gargoyle','stone golem','black knight'}, n = {6, 7}}, [80] = {m = {'black knight','behemoth'}, n = {5, 7}}, [70] = {m = {'black knight','behemoth'}, n = {6, 7}}, [60] = {m = {'behemoth','destroyer'}, n = {6, 7}}, [50] = {m = {'behemoth','destroyer','betrayed wraith'}, n = {6, 7}}, [40] = {m = {'behemoth','destroyer','betrayed wraith'}, n = {6, 7}}, [30] = {m = {'dark torturer','betrayed wraith'}, n = {3, 5}}, [20] = {m = {'dark torturer','grim reaper'}, n = {5, 6}}, [10] = {m = {'blightwalker','undead dragon','grim reaper'}, n = {5, 6}}, [1] = {m = {'undead dragon'}, n = {5,5}} } } function getPercent(number, all) return (number / all) * 100 end function choose(arg) return arg[math.random(#arg)] end ]]></config> <event type="combat" name="Kamulec" event="script"><![CDATA[ domodlib("Stones_config") function onCombat(cid, target) if isMonster(target) then registerCreatureEvent(target, 'Kamulec') end local t = getPercent(getCreatureHealth(target), getCreatureMaxHealth(target)) if isMonster(target) and isInArray(names, getCreatureName(target):lower()) then if t > 90 then doCreatureSetStorage(target, 1000, 91) end for k, v in pairs(stones[getCreatureName(target):lower()]) do if k >= t and getCreatureStorage(target, 1000) > k then local pos = getThingPos(target) for i = 1, math.random(v.n[1], v.n[2]) do local s = {x=pos.x,y=pos.y,z=pos.z} s.x = pos.x + math.random(-2,2) s.y = pos.y + math.random(-2,2) doCreateMonster(choose(v.m), pos, false, false, false) end return doCreatureSetStorage(target, 1000, k) end end end return TRUE end ]]></event> <talkaction log="yes" words="!metin" access="4" event="script"> <![CDATA[ domodlib("Stones_config") function onSay() local monst = stones_name[math.random(1, #stones_name)] local poss = pos[math.random(1, #pos)] print(monst, poss) if not(monst) then return TRUE end doCreateMonster(monst.name,poss.pos) doBroadcastMessage('[Event Stones]\n '.. monst.name ..' have been spawn. Find and defeat it!', 22) return TRUE end ]]> </talkaction> <globalevent name="metinStoneStart" interval="1000" event="script"><![CDATA[ domodlib("Stones_config") local daysOpen = {} local monst = stones_name[math.random(1, #stones_name)] local poss = pos[math.random(1, #pos)] for k, v in pairs(days) do table.insert(daysOpen, k) end function onThink(interval) if isInArray(daysOpen, os.date('%A')) then if isInArray(days[os.date('%A')], os.date('%X', os.time())) then print(monst, poss) if not(monst) then return TRUE end doCreateMonster(monst.name,poss.pos) doBroadcastMessage('[Event Stones]\n '.. monst.name ..' have been spawn. Find and defeat it!', 22) end end return true end ]]></globalevent> <event type="login" name="metinStoneLogin" event="buffer"><![CDATA[ registerCreatureEvent(cid, 'Kamulec') ]]></event> </mod>
  17. @Vodkart eu entrei com 2 contas, uma delas é a conta do god, porem foi com um char que criei pra test será que pode ser esse o problema ? vou fazer o test agora com 2 contas criadas na hora e testar jaja edito @Vodkart fiz o test com 2 contas criadas agora, dessa vez não apareceu nenhum zombie, pior que não da erro nenhum na distro msg na distro [24/02/2020 18:55:31] >> World Alissow server Online! [24/02/2020 18:55:32] Test one has logged in. [24/02/2020 18:55:35] Test Two has logged in. [24/02/2020 18:56:24] > Broadcasted message: "Zombie event starting in 5 minutes! The teleport will be closed when the event start!". [24/02/2020 18:56:26] > Broadcasted message: "Test Two entered the Zombie event! Currently 1 players have joined!". [24/02/2020 18:56:32] > Broadcasted message: "Test one entered the Zombie event! Currently 2 players have joined!". [24/02/2020 18:57:24] > Broadcasted message: "Zombie event starting in 4 minutes! The teleport will be closed when the event start!". [24/02/2020 18:58:24] > Broadcasted message: "Zombie event starting in 3 minutes! The teleport will be closed when the event start!". [24/02/2020 18:59:24] > Broadcasted message: "Zombie event starting in 2 minutes! The teleport will be closed when the event start!". [24/02/2020 19:00:24] > Broadcasted message: "Zombie event starting in 1 minutes! The teleport will be closed when the event start!". [24/02/2020 19:01:24] > Broadcasted message: "The Zombie event is now full [2 players]! The event will soon start.". Ediiiiit: Consegui kkkk foi um erro meu, as coordenadas do mapa estavam "erradas" vi que as coordenadas tinham que pegar o mapa todo, e eu nao tinha colocado o mapa todo kkkk o script está funcionando agora Parabéns pelo script REPUTADO
  18. Olá, fiz vários testes com esse evento, se eu colocar pra ser automático ele "funciona" entrega as recompensas, horário de abrir e fechar tp certinhos.. porem só aparece 1 zombie, fiquei 20 minutos na sala e só apareceu 1 se eu fizer o evento manual, ai não aparece o zombie não da erro nenhum na distro, as vezes a msg avisando que "em 30 segundos irá começar os spawn" não aparece tem como alguém me ajudar ? eu só coloquei as coordenadas do mapa e pronto, não mexi em mais nada Uso o Alissow Server, version 0.4.1 (Alissow) Script: <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Perfect Zombie System" version="8.6" author="Vodkart" contact="tibiaking.com" enabled="yes"> <config name="zombie_config"><![CDATA[ zombie_config = { storages = {172100, 172101, 172102}, -- n edite players = {min = 2, max = 30}, -- min, max players no evento rewards = {items ={{2160,10},{2494,1}}, trophy = 5805}, timeToStartEvent = 30, -- segundos para começar o evento CheckTime = 5, -- tempo que o TP fica aberto para os jogadores adrentarem o evento teleport = {{x=83, y=43, z=7}, {x=160 , y=717, z=7}}, -- position do tp onde aparece, position para onde o jogador vai ao entrar no tp arena = {{x=144,y=698,z=7},{x=181,y=744,z=7}}, -- area positions monster_name = "Zombie Event", timeBetweenSpawns = 20, min_Level = 20 } zombie_days = { ["Monday"] = {"13:11","18:00","20:00","22:00"}, ["Tuesday"] = {"13:12","18:00","22:50","22:00"}, ["Wednesday"] = {"21:57","18:00","20:00","23:17"}, ["Thursday"] = {"13:09","18:00","20:00","22:00"}, ["Friday"] = {"13:13","18:00","21:45","22:00"}, ["Saturday"] = {"13:14","18:00","20:00","22:00"}, ["Sunday"] = {"14:05","18:00","20:00","22:00"} } function removeZombieTp() local t = getTileItemById(zombie_config.teleport[1], 1387).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(zombie_config.teleport[1], CONST_ME_POFF) end function ZerarStoragesZombie() for _, stor in pairs(zombie_config.storages) do setGlobalStorageValue(stor, 0) end end function getPlayersInZombieEvent() local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), zombie_config.arena[1], zombie_config.arena[2]) and getPlayerAccess(pid) < 3 then t[#t+1] = pid end end return t end function getZombieRewards(cid, items) local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID for _, i_i in ipairs(items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(backpack, item, amount) else for i = 1, amount do doAddContainerItem(backpack, item, 1) end end end end function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function HaveCreatureZombie(area, remove) for x = area[1].x - 1, area[2].x + 1 do for y = area[1].y - 1, area[2].y + 1 do local pos = {x=x, y=y, z=area[1].z} local m = getTopCreature(pos).uid if remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end end end end function spawnZombie() if #getPlayersInZombieEvent() > 1 then local pos = {x=math.random(zombie_config.arena[1].x, zombie_config.arena[2].x), y=math.random(zombie_config.arena[1].y,zombie_config.arena[2].y), z=zombie_config.arena[1].z} if not isWalkable(pos, false, false, false) then spawnZombie() else doSummonCreature(zombie_config.monster_name, pos) doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA) doSendMagicEffect(pos, CONST_ME_MORTAREA) setGlobalStorageValue(zombie_config.storages[2], getGlobalStorageValue(zombie_config.storages[2]) <= 0 and 1 or getGlobalStorageValue(zombie_config.storages[2])+1) doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(zombie_config.storages[2]) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED) addEvent(spawnZombie, zombie_config.timeBetweenSpawns *1000) end end end function CheckZombieEvent(delay) if getGlobalStorageValue(zombie_config.storages[1]) ~= (zombie_config.players.max+1) then if delay > 0 and getGlobalStorageValue(zombie_config.storages[1]) < zombie_config.players.max then doBroadcastMessage("Zombie event starting in " .. delay .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) elseif delay == 0 and getGlobalStorageValue(zombie_config.storages[1]) < zombie_config.players.min then for _, cid in pairs(getPlayersInZombieEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) end removeZombieTp() doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. zombie_config.players.min .. " players is needed!", MESSAGE_STATUS_WARNING) ZerarStoragesZombie() elseif delay == 0 and getGlobalStorageValue(zombie_config.storages[1]) >= zombie_config.players.min then removeZombieTp() doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(zombie_config.storages[1]) .. " players]! The event will soon start.") for _, var in pairs(getPlayersInZombieEvent()) do doPlayerSendTextMessage(var, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. zombie_config.timeToStartEvent .. " seconds! Good luck!") end addEvent(spawnZombie, zombie_config.timeToStartEvent*1000) end addEvent(CheckZombieEvent, 60000, delay-1) end end]]></config> <event type="statschange" name="ZombieStats" event="script"><![CDATA[ domodlib('zombie_config') if isPlayer(cid) and isMonster(attacker) and getCreatureName(attacker) == zombie_config.monster_name then if isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then if #getPlayersInZombieEvent() > 1 then doBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED) local corpse = doCreateItem(getPlayerSex(cid) == 1 and 3058 or 6081, 1, getPlayerPosition(cid)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) if #getPlayersInZombieEvent() == 1 then local winner = getPlayersInZombieEvent()[1] doBroadcastMessage(getCreatureName(winner)..' has survived at zombie event!') local goblet = doPlayerAddItem(winner, zombie_config.rewards.trophy, 1) doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(winner) .. " for winning the Zombie event.") getZombieRewards(winner, zombie_config.rewards.items) doTeleportThing(winner, getTownTemplePosition(getPlayerTown(winner)), false) doSendMagicEffect(getPlayerPosition(winner), CONST_ME_TELEPORT) doBroadcastMessage(getPlayerName(winner).." won the Zombie event! Congratulations!") HaveCreatureZombie(zombie_config.arena, true) ZerarStoragesZombie() end else doBroadcastMessage("No one survived in the Zombie Event.", MESSAGE_EVENT_ADVANCE) HaveCreatureZombie(zombie_config.arena, true) ZerarStoragesZombie() end return false end end return true]]></event> <globalevent name="Zombie_Start" interval="60" event="script"><![CDATA[ domodlib('zombie_config') function onThink(interval, lastExecution) if zombie_days[os.date("%A")] then local hrs = tostring(os.date("%X")):sub(1, 5) if isInArray(zombie_days[os.date("%A")], hrs) and getGlobalStorageValue(zombie_config.storages[3]) <= 0 then local tp = doCreateItem(1387, 1, zombie_config.teleport[1]) doItemSetAttribute(tp, "aid", 45110) CheckZombieEvent(zombie_config.CheckTime) setGlobalStorageValue(zombie_config.storages[1], 0) setGlobalStorageValue(zombie_config.storages[2], 0) HaveCreatureZombie(zombie_config.arena, true) end end return true end]]></globalevent> <event type="login" name="Zombie_Login" event="script"><![CDATA[ domodlib('zombie_config') function onLogin(cid) registerCreatureEvent(cid, "ZombieBattle") registerCreatureEvent(cid, "ZombieStats") if isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true end]]></event> <event type="combat" name="ZombieBattle" event="script"><![CDATA[ domodlib('zombie_config') if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then doPlayerSendCancel(cid, "You may not attack this player.") return false end return true ]]></event> <movevent type="StepIn" actionid ="45110" event="script"><![CDATA[ domodlib('zombie_config') function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, zombie_config.teleport[2]) end if getPlayerLevel(cid) < zombie_config.min_Level then doTeleportThing(cid, fromPosition, true) doPlayerSendCancel(cid, "You need to be at least level " .. zombie_config.min_Level .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end if getGlobalStorageValue(zombie_config.storages[1]) <= zombie_config.players.max then doTeleportThing(cid, zombie_config.teleport[2]) setGlobalStorageValue(zombie_config.storages[1], getGlobalStorageValue(zombie_config.storages[1])+1) doBroadcastMessage(getPlayerName(cid) .. " entered the Zombie event! Currently " .. getGlobalStorageValue(zombie_config.storages[1]) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) if getGlobalStorageValue(zombie_config.storages[1]) == zombie_config.players.max then setGlobalStorageValue(zombie_config.storages[1], getGlobalStorageValue(zombie_config.storages[1])+1) removeZombieTp() doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(zombie_config.storages[1])-1 .. " players]! The event will soon start.") for _, var in pairs(getPlayersInZombieEvent()) do doPlayerSendTextMessage(var, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. zombie_config.timeToStartEvent .. " seconds! Good luck!") end addEvent(spawnZombie, zombie_config.timeToStartEvent*1000) end end return true end]]></movevent> <talkaction words="/zombiestart;!zombiestart" access="5" event="buffer"><![CDATA[ domodlib('zombie_config') if getGlobalStorageValue(zombie_config.storages[3]) > 0 then doPlayerSendCancel(cid, "The event is already starting.") return true elseif not param or not tonumber(param) then doPlayerSendCancel(cid, "Use only numbers.") return true end local param = tonumber(param) <= 0 and 1 or tonumber(param) local tp = doCreateItem(1387, 1, zombie_config.teleport[1]) doItemSetAttribute(tp, "aid", 45110) CheckZombieEvent(tonumber(param)) ZerarStoragesZombie() setGlobalStorageValue(zombie_config.storages[3], 1) HaveCreatureZombie(zombie_config.arena, true) ]]></talkaction> <globalevent name="ZombieDebug-Start" type="start" event="buffer"><![CDATA[ domodlib('zombie_config') ZerarStoragesZombie() return true]]></globalevent> </mod> Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  19. @Vodkart boa tarde, fiz vários testes com esse evento, se eu colocar pra ser automático ele "funciona" entrega as recompensas, horário de abrir e fechar tp certinhos.. porem só aparece 1 zombie, fiquei 20 minutos na sala e só apareceu 1 se eu fizer o evento manual, ai não aparece o zombie não da erro nenhum na distro, as vezes a msg avisando que "em 30 segundos irá começar os spawn" não aparece tem como me ajudar ? eu só coloquei as coordenadas do mapa e pronto, não mexi em mais nada Uso o Alissow Server, version 0.4.1 (Alissow) Script: <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Perfect Zombie System" version="8.6" author="Vodkart" contact="tibiaking.com" enabled="yes"> <config name="zombie_config"><![CDATA[ zombie_config = { storages = {172100, 172101, 172102}, -- n edite players = {min = 2, max = 30}, -- min, max players no evento rewards = {items ={{2160,10},{2494,1}}, trophy = 5805}, timeToStartEvent = 30, -- segundos para começar o evento CheckTime = 5, -- tempo que o TP fica aberto para os jogadores adrentarem o evento teleport = {{x=83, y=43, z=7}, {x=160 , y=717, z=7}}, -- position do tp onde aparece, position para onde o jogador vai ao entrar no tp arena = {{x=144,y=698,z=7},{x=181,y=744,z=7}}, -- area positions monster_name = "Zombie Event", timeBetweenSpawns = 20, min_Level = 20 } zombie_days = { ["Monday"] = {"13:11","18:00","20:00","22:00"}, ["Tuesday"] = {"13:12","18:00","22:50","22:00"}, ["Wednesday"] = {"21:57","18:00","20:00","23:17"}, ["Thursday"] = {"13:09","18:00","20:00","22:00"}, ["Friday"] = {"13:13","18:00","21:45","22:00"}, ["Saturday"] = {"13:14","18:00","20:00","22:00"}, ["Sunday"] = {"14:05","18:00","20:00","22:00"} } function removeZombieTp() local t = getTileItemById(zombie_config.teleport[1], 1387).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(zombie_config.teleport[1], CONST_ME_POFF) end function ZerarStoragesZombie() for _, stor in pairs(zombie_config.storages) do setGlobalStorageValue(stor, 0) end end function getPlayersInZombieEvent() local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), zombie_config.arena[1], zombie_config.arena[2]) and getPlayerAccess(pid) < 3 then t[#t+1] = pid end end return t end function getZombieRewards(cid, items) local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID for _, i_i in ipairs(items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(backpack, item, amount) else for i = 1, amount do doAddContainerItem(backpack, item, 1) end end end end function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function HaveCreatureZombie(area, remove) for x = area[1].x - 1, area[2].x + 1 do for y = area[1].y - 1, area[2].y + 1 do local pos = {x=x, y=y, z=area[1].z} local m = getTopCreature(pos).uid if remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end end end end function spawnZombie() if #getPlayersInZombieEvent() > 1 then local pos = {x=math.random(zombie_config.arena[1].x, zombie_config.arena[2].x), y=math.random(zombie_config.arena[1].y,zombie_config.arena[2].y), z=zombie_config.arena[1].z} if not isWalkable(pos, false, false, false) then spawnZombie() else doSummonCreature(zombie_config.monster_name, pos) doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA) doSendMagicEffect(pos, CONST_ME_MORTAREA) setGlobalStorageValue(zombie_config.storages[2], getGlobalStorageValue(zombie_config.storages[2]) <= 0 and 1 or getGlobalStorageValue(zombie_config.storages[2])+1) doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(zombie_config.storages[2]) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED) addEvent(spawnZombie, zombie_config.timeBetweenSpawns *1000) end end end function CheckZombieEvent(delay) if getGlobalStorageValue(zombie_config.storages[1]) ~= (zombie_config.players.max+1) then if delay > 0 and getGlobalStorageValue(zombie_config.storages[1]) < zombie_config.players.max then doBroadcastMessage("Zombie event starting in " .. delay .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) elseif delay == 0 and getGlobalStorageValue(zombie_config.storages[1]) < zombie_config.players.min then for _, cid in pairs(getPlayersInZombieEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) end removeZombieTp() doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. zombie_config.players.min .. " players is needed!", MESSAGE_STATUS_WARNING) ZerarStoragesZombie() elseif delay == 0 and getGlobalStorageValue(zombie_config.storages[1]) >= zombie_config.players.min then removeZombieTp() doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(zombie_config.storages[1]) .. " players]! The event will soon start.") for _, var in pairs(getPlayersInZombieEvent()) do doPlayerSendTextMessage(var, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. zombie_config.timeToStartEvent .. " seconds! Good luck!") end addEvent(spawnZombie, zombie_config.timeToStartEvent*1000) end addEvent(CheckZombieEvent, 60000, delay-1) end end]]></config> <event type="statschange" name="ZombieStats" event="script"><![CDATA[ domodlib('zombie_config') if isPlayer(cid) and isMonster(attacker) and getCreatureName(attacker) == zombie_config.monster_name then if isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then if #getPlayersInZombieEvent() > 1 then doBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED) local corpse = doCreateItem(getPlayerSex(cid) == 1 and 3058 or 6081, 1, getPlayerPosition(cid)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) if #getPlayersInZombieEvent() == 1 then local winner = getPlayersInZombieEvent()[1] doBroadcastMessage(getCreatureName(winner)..' has survived at zombie event!') local goblet = doPlayerAddItem(winner, zombie_config.rewards.trophy, 1) doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(winner) .. " for winning the Zombie event.") getZombieRewards(winner, zombie_config.rewards.items) doTeleportThing(winner, getTownTemplePosition(getPlayerTown(winner)), false) doSendMagicEffect(getPlayerPosition(winner), CONST_ME_TELEPORT) doBroadcastMessage(getPlayerName(winner).." won the Zombie event! Congratulations!") HaveCreatureZombie(zombie_config.arena, true) ZerarStoragesZombie() end else doBroadcastMessage("No one survived in the Zombie Event.", MESSAGE_EVENT_ADVANCE) HaveCreatureZombie(zombie_config.arena, true) ZerarStoragesZombie() end return false end end return true]]></event> <globalevent name="Zombie_Start" interval="60" event="script"><![CDATA[ domodlib('zombie_config') function onThink(interval, lastExecution) if zombie_days[os.date("%A")] then local hrs = tostring(os.date("%X")):sub(1, 5) if isInArray(zombie_days[os.date("%A")], hrs) and getGlobalStorageValue(zombie_config.storages[3]) <= 0 then local tp = doCreateItem(1387, 1, zombie_config.teleport[1]) doItemSetAttribute(tp, "aid", 45110) CheckZombieEvent(zombie_config.CheckTime) setGlobalStorageValue(zombie_config.storages[1], 0) setGlobalStorageValue(zombie_config.storages[2], 0) HaveCreatureZombie(zombie_config.arena, true) end end return true end]]></globalevent> <event type="login" name="Zombie_Login" event="script"><![CDATA[ domodlib('zombie_config') function onLogin(cid) registerCreatureEvent(cid, "ZombieBattle") registerCreatureEvent(cid, "ZombieStats") if isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true end]]></event> <event type="combat" name="ZombieBattle" event="script"><![CDATA[ domodlib('zombie_config') if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then doPlayerSendCancel(cid, "You may not attack this player.") return false end return true ]]></event> <movevent type="StepIn" actionid ="45110" event="script"><![CDATA[ domodlib('zombie_config') function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, zombie_config.teleport[2]) end if getPlayerLevel(cid) < zombie_config.min_Level then doTeleportThing(cid, fromPosition, true) doPlayerSendCancel(cid, "You need to be at least level " .. zombie_config.min_Level .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end if getGlobalStorageValue(zombie_config.storages[1]) <= zombie_config.players.max then doTeleportThing(cid, zombie_config.teleport[2]) setGlobalStorageValue(zombie_config.storages[1], getGlobalStorageValue(zombie_config.storages[1])+1) doBroadcastMessage(getPlayerName(cid) .. " entered the Zombie event! Currently " .. getGlobalStorageValue(zombie_config.storages[1]) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) if getGlobalStorageValue(zombie_config.storages[1]) == zombie_config.players.max then setGlobalStorageValue(zombie_config.storages[1], getGlobalStorageValue(zombie_config.storages[1])+1) removeZombieTp() doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(zombie_config.storages[1])-1 .. " players]! The event will soon start.") for _, var in pairs(getPlayersInZombieEvent()) do doPlayerSendTextMessage(var, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. zombie_config.timeToStartEvent .. " seconds! Good luck!") end addEvent(spawnZombie, zombie_config.timeToStartEvent*1000) end end return true end]]></movevent> <talkaction words="/zombiestart;!zombiestart" access="5" event="buffer"><![CDATA[ domodlib('zombie_config') if getGlobalStorageValue(zombie_config.storages[3]) > 0 then doPlayerSendCancel(cid, "The event is already starting.") return true elseif not param or not tonumber(param) then doPlayerSendCancel(cid, "Use only numbers.") return true end local param = tonumber(param) <= 0 and 1 or tonumber(param) local tp = doCreateItem(1387, 1, zombie_config.teleport[1]) doItemSetAttribute(tp, "aid", 45110) CheckZombieEvent(tonumber(param)) ZerarStoragesZombie() setGlobalStorageValue(zombie_config.storages[3], 1) HaveCreatureZombie(zombie_config.arena, true) ]]></talkaction> <globalevent name="ZombieDebug-Start" type="start" event="buffer"><![CDATA[ domodlib('zombie_config') ZerarStoragesZombie() return true]]></globalevent> </mod>
  20. Obrigado amigo, funcionou certinho aqui REP++
  21. Pessoal, ja tem um tempo que não mexo com OT, então to meio esquecido de tudo. Queria pedir ajuda de vcs pra fazer um script que funcionaria assim.... Ex: São 2 portais... 1 dos portais deverá sair da cave e o outro vc será levado para um bixo mt forte, onde provavelmente vc irá morrer... então, eu queria que esses 2 portais, funcionasse aleatoriamente.. você entrar em um, e ter a chance de sair ou morrer... no caso seria na sorte... tem como fazer algo do tipo ? para servidor 8.60
  22. Boa noite pessoal, eu tenho uma duvida, eu estou querendo criar um mapa do zero.. então abri o rme e fui editando e futuramente irei colocar em alguma base de algum servidor.. só que eu tive uma ideia de querer fazer novas sprites pro meu mapa, e eu queria substituir as que tem no cliente original pelas minhas sou novato nisso, mas dei uma pesquisada e pelo que vi, é feito pelo ObjectBuilder, eu mudei algumas lá e compilei pra fazer um teste substitui o que eu editei no cliente e botei no rme tbm... mas quando eu abro o meu mapa, as sprites que botei não aparece alguem me diz se to fazendo errado ou tem algo a mais pra fazer, por favor Pra deixar mais claro... eu quero substituir um item existente no tibia pelo item que eu criei e quero que ele apareça no RME

Informação Importante

Confirmação de Termo