
Tudo que 9k22 postou
-
Projeto Subyth
Infelizmente @Matk. Map custom não iria sair de 10 players online ainda mas em um servidor com uma dificuldade dessas. Estava desenvolvendo o servidor em um mapa Yurots completamente refeito mas do jeito original, estava ficando muito bom. Pensando em players, serv hard com teleports e/ou mapa pequeno ficamos nessa dúvida entre yurots e global. O estilo do servidor será idêntico ao Medivia Online, soq sem aqueles monstros editados e na versão 8.60! O mapa global que vou utilizar é da versão 10.37 porém sendo suportado na versão 8.60
-
Ground bugando trocando id
Em C:\Program Files (x86)\Remere's Map Editor\data clica na pasta da versão que você está utilizando. Coloca o items.otb e items.xml dentro e abre novamente o remere's
-
ANTI MC [EVENTOS]
Nunca fiz script na minha vida mas fiz uma ganbiarra aqui.. tenta ae local config = { max = 1, -- Número de players permitido com o mesmo IP. } local accepted_ip_list = {} -- Lista dos players permitidos passar com o mesmo ip, exemplo: {"200.85.3.60", "201.36.5.222"} local function antiMC(p) if #getPlayersByIp(getPlayerIp(p.pid)) >= p.max then doTeleportThing(cid, fromPosition, TRUE) doPlayerSendCancel(cid, 'Você não pode estar com MC para passar.') end return true end function onStepIn(cid, item, position, fromPosition, toPosition) if isPlayer(cid) and getPlayerLevel(cid) < level then if isInArray(accepted_ip_list,doConvertIntegerToIp(getPlayerIp(cid))) == false then addEvent(antiMC, 1000, {pid = cid, max = config.max+1}) end end return true end Meu primeiro script q dlç '-'
-
Quests Prontas - Dúvida
Boa tarde amigo, tudo bom? Então, seguinte. No fórum existem muitas quests e sistemas prontos, basta clicar aqui. Você pode postar no mesmo local no devido sub-topic, lembrando que estão sujeitos para aprovação de 24 a 48hrs. Ahh, e dar Up em tópicos é proibido no fórum. Possui um botão logo acima do seu tópico no qual você pode clicar para ele subir.
-
[ERRO] Task Count!
Ouwnnt seu dlç KEOPKEPO POD DEIXA
-
Projeto Subyth
Global RpG (HardCore) (ainda não tive tempo para pensar em um nome para o servidor/equipe) Um pouco sobre mim! A muito tempo sempre gostei de criar servidores HardCores e inovadores. Já tive muitos projetos, criei muitos servidores sendo alguns de sucesso e outros de imenso fracasso. E estou agora fazendo algo que sempre sonhei em ter, algo que me faz ter aquela vontade de jogar, que seja prazeroso. Quando descobri os servidores de otserv's meu mapa preferido era yurots, aquele velho e bom yurots com xp hardcore, sempre pegava TOP ou ficava entre eles (era muito viciado naquela época), mas me divertia bastante. Hoje em dia só vejo servidores Xp 400~9999 com resets e hp/mana bugada, mapas completos de defeitos e quests sem funcionar, apenas pisos em uma reta com bau no final. Sobre meus projetos passados! Fui Admin do ExtremeOT(8.4), era mapper e support (eu tinha o mapa completo do servidor mas deletei), o projeto tinha chegado ao fim! O Lucas (dono do mesmo) desistiu de tudo. Fui dono de um dos servidores que ficaram um bom tempo no topo da otservlist(média de 400~700 players), WarZone-Global (10.37 / 10.41), quem jogou, deve me conhecer pelo nick GOD Vovozona rsrs Também criei outros servidores mas não me recordo de todos, apenas alguns tais como Baiak-Warzone, Draconia, Globaltera, BaiakZone e outros que não me lembro. Sobre o projeto atual! Resolvi fazer este tópico para que vocês possam me ajudar dando ideias para este projeto. É um servidor sem fins lucrativos (digo isso pois não haverá hunt ou XP maior para VIP's). Todo o projeto e desenvolvimento está sendo feito por mim e pelo Raniere (um amigo RL meu). Também estou tendo ajuda com o Dalvorsn em scripts FreeLancers e com toda a ajuda de vocês! O servidor é HardCore 2x(ou 1.5x). Feito do ZERO (mapa, npc, monsters...). A jogabilidade vai ser difícil porém com Runas (ih, uh) que de certeza ajudará muito. Lembrando que o servidor é 8.60 porém voltado para 7.4, dito isso, todas as fórmulas de runas será de acordo com tal versão (7.4). #ChangeLog# { MODIFICADO = [M] ADICIONADO = [A] DELETADO = [D] CORREÇÕES = [C] Todos os scripts ADICIONADOS foram testados para evitar o máximo de bugs possíveis. } v1.0____________________________________________________________________________________ #[A] DATAPACK_Patch_OTX 2.6(Tfs_0.3.7) > Pasta DATA com todos os arquivos zerados para melhor estabilidade com o executável do servidor. ---------------------------------------------------------------------------------------- #[A] MAP GLOBAL Tracked (version 9.31 to 8.60) - UPDATED > Todas as hunts novas da versão 11.0 que forem possíveis de fazer downgrade será adicionado ao mapa. > MAP By by J.Dre | Edited by Subyth ---------------------------------------------------------------------------------------- #[A] Town's e seus respectivos Depots configurados ---------------------------------------------------------------------------------------- #[A] Todos npc's em seus respectivos locais > Todos os npc's ainda estão com script 'default'. Scripts serão adicionados em próximos updates. ---------------------------------------------------------------------------------------- #[C] Todas as door's e alguns bugs no mapa > Algumas Door's acusavam 'It is locked' ao clicar. ---------------------------------------------------------------------------------------- #[A] obj.topic em {lib-npc}npchandler.lua > Para poder usar npcHandler.topic[cid] ---------------------------------------------------------------------------------------- #[C] Bug crítico em npcs > Ao falar 'HI' e em seguida 'NO' ou quando o script não reconhecia o [topic], dava erro no distro. ---------------------------------------------------------------------------------------- #[A] Npc Bank 100% (deposit / transfer / withdraw / changegold) ---------------------------------------------------------------------------------------- #[A] Todos Npc's e quests de RookGaard 100% ---------------------------------------------------------------------------------------- #[A] The Oracle 100% > Ele envia apenas para (carlin / venore / thais / kazzordoon / ab'dendriel) ---------------------------------------------------------------------------------------- #[C] Windows.lua > Ao clicar em janelas (sem ser houses) acusava erro no distro caso estivessem em primeiro andar ou superior. ---------------------------------------------------------------------------------------- #IMAGENS# OBS: Estas imagens possuem o mapa yurots porém o servidor será global. Em breve edito! Lembrando que o servidor é voltado ao RPG e XP 2x. Questlog? Sim! Não se esqueçam de votar na enquete sempre que possível, ajuda muito em relação a dúvidas sobre os sistemas/configurações do servidor. Quero que comentem, falem sobre, o que acharam do projeto... Anteciosadamente, Subyth!
-
[ERRO] Task Count!
Caraca funcionou. Muito obrigado '-' Meus reps acabaram, amanhã eu te dou REP bele?
-
[ERRO] Task Count!
Pronto! Desculpe, é que já vi em alguns tópicos que os mesmos mandam marcar caso precise de ajuda, só achei q seria correto.
-
[ERRO] Task Count!
Servidor utilizado: TFS 0.4_REV 3777 (8.60) Estou com um problema na task do meu servidor. Tudo funciona perfeitamente a não ser o task count. O problema é o seguinte, EXEMPLO: Eu pego a task com o npc Grizzly Adams 01:18 Grizzly Adams: Welcome back GOD Subyth. What brings you here this time? 01:18 GOD Subyth [11]: task 01:18 Grizzly Adams: All right, what would you like to hunt? Crocodiles, tarantulas, carniphilas, stone golems or mammoths? 01:18 GOD Subyth [11]: crocodiles 01:18 Grizzly Adams: They are a nuisance! You'll find them here in the jungle near the river. Hunt 10 crocodiles and you'll get a nice reward. Interested? 01:18 GOD Subyth [11]: yes 01:18 Grizzly Adams: Happy hunting, old chap! Come back to me when you are through with your task. A task funciona normal, o count também. ... 01:19 Task (CROCODILE): 8 / 10 01:19 Task (CROCODILE): 9 / 10 01:19 Task (CROCODILE): Completed! Ai volto ao npc, reporto e o npc manda matar o boss 'the snapper'. 01:21 Grizzly Adams: Welcome back GOD Subyth. What brings you here this time? 01:21 GOD Subyth [11]: task 01:21 Grizzly Adams: Spiffing work, old chap. Now I have a special task for you. Recently several citizens of Port Hope have vanished. It is rumoured that they were killed by a crocodile. The people call it 'Snapper'. Hunt down and kill that evil man eating beast. Ai que ta o problema. Ao entregar a task e o npc me passar a especial task para matar o boss 'the snapper'... se eu matar algum crocodile, ele conta... 01:22 Task (CROCODILE): 13 / 10 01:22 Task (CROCODILE): 14 / 10 01:22 Task (CROCODILE): 15 / 10 E após matar o boss eu reporto normalmente e ganho points normal mas quando vou tenta pegar outra task ele diz que eu estou em uma e pergunta se quero sair 01:23 Grizzly Adams: Welcome back GOD Subyth. What brings you here this time? 01:23 GOD Subyth [11]: task 01:23 Grizzly Adams: Fantastic! If you're up for another hunting mission just ask me for a task. 01:23 GOD Subyth [11]: task 01:23 Grizzly Adams: You are not done with your task yet. Come back to me when you are. Or do you want to abort your task to start a different one? OBS: Se eu por exemplo pegar a task de crocodile, matar todos e o npc mandar eu matar o boss. Caso eu não mate nenhum crocodile no caminho, tudo funciona perfeitamente. RESUMO: O erro é esse, ao terminar a task de crocodile por exemplo e o npc mandar matar o boss, se eu matar algum crocodile no caminho ele conta e passa do limite, contando infinitamente e após matar o boss e entregar a task, ao tenta pegar outra o npc acusa dizendo que já estou em uma task e pergunta se quero sair dela para fazer outra... 01:27 Task (CROCODILE): 58 / 10 01:27 Task (CROCODILE): 59 / 10 01:27 Task (CROCODILE): 60 / 10 01:27 Task (CROCODILE): 61 / 10 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- NPC/SCRIPT/Grizzly Adams.xml CREATURESCRIPT/SCRIPTS/task.lua LIB/000-CONSTANT.LUA ADICIONEI MOVEMENTS/SCRIPT/task.lua Já registrei o creaturescript em login.lua Bem, é isso. Obrigado para quem puder me ajudar. @xWhiteWolf @Vodkart @login12 @KotZletY @Absolute @vankk
-
(Resolvido)[ERRO] NPCSAY
Sim, estou tentando resolver o problema do npc mandar matar o boss e se matar monstro conta... Assim que resolver posto aqui para aqueles que estiverem o mesmo problema, possa compartilhar.
-
(Resolvido)[ERRO] NPCSAY
Certo, vou dar uma checada lá. Obrigado novamente
-
(Resolvido)[ERRO] NPCSAY
Sim, muito obrigado! Como assim erro no sistema de tasks? Você diz em creaturescripts?
-
(Resolvido)[ERRO] NPCSAY
Certo, estou testando aqui jaja edito @login12 Apareceu um outro problema no script.. Bem, ainda estou testando esse da "promotion" porém apareceu outro. Exemplo: Eu faço a task de crocodiles, mato 300 e vou entregar no npc, ai ele manda eu matar o boss.. Porém, se eu matar algum crocodilo ele conta 19:24 Task (CROCODILE): 302 / 300, ai eu mato o boss e entrego normalmente pro npc, porém ao pegar outra task ele diz q eu estou em outra e pergunta se quero sair ... Tipo, se eu matar os 300 crocodile e entregar, assim q o npc manda eu matar o boss e eu mato algum outro crocodilo, ele conta Uu
-
(Resolvido)[ERRO] NPCSAY
Opa @login12 tudo bom? Obrigado por me responder. Desculpa, esqueci totalmente de falar as config do distro kk TFS 0.4 8.6_REV 3777 Na verdade, se eu falar "promotion" antes de completar 5 tasks o npc não responde nada. Assim que completo as 5 tasks, o npc fala que completei 5 tasks e manda falar "promotion". Soq ao falar ele não fala nada, porém eu recebo a promotion normal. Ele só não fala nada, apenas 10:52 Grizzly Adams:
-
(Resolvido)[ERRO] NPCSAY
Bem, o npc funciona perfeitamente, porém possui um erro ao digitar "promotion". O npc fala porém não sai palavras alguma: 10:52 GOD Weslley [20]: promotion 10:52 Grizzly Adams: NPC.LUA local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local Topic = {} local data = { [14007] = {'crocodile', 'Happy hunting, old chap! Come back to me when you are through with your task.', 'Alright, then return to your duties! Day light is a-wasting! You have already smashed %u crocodiles. Come back to me when you are done.', 'Spiffing work, old chap. Now I have a special task for you. Recently several citizens of Port Hope have vanished. It is rumoured that they were killed by a crocodile. The people call it \'Snapper\'. Hunt down and kill that evil man eating beast.', 800, 1, 'Snapper', }, [14008] = {'tarantula', 'Happy hunting, old chap! Come back to me when you are through with your task.', 'Alright, then return to your duties! Day light is a-wasting! You have already smashed %u tarantulas. Come back to me when you are done.', 'Nicely done! Now I shall assign you a special task. Rumour has it that there is an ancient and evil tarantula who preys on humans. She is called \'Hide\'. Track her down and kill her! Good luck, old chap.', 1500, 1, 'Hide'}, [14009] = {'carniphila', 'Good show, old chap! Speak to me again when you are done hunting.', 'Alright, then return to your duties! Day light is a-wasting! You have already smashed %u carniphilas. Come back to me when you are done.', 'That took some time, huh? Good hunting though. If you\'re up for another hunting mission just ask me for a {task}.', 1500, 1}, [14010] = {'stone golem', 'Happy hunting, friend! When you have finished hunting, return here. ', 'Alright, then return to your duties! Day light is a-wasting! You have already smashed %u stone golems. Come back to me when you are done.', 'Good show, old chap. If you\'re up for another hunting mission just ask me for a task.', 2000, 1}, [14011] = {'mammoth', 'Happy hunting, friend! Come back to me when you are done hunting.', 'Alright, then return to your duties! Day light is a-wasting! You have already smashed %u mammoths. Come back to me when you are done.', 'Jolly good job you did there, but now I have a special task for you. The citizens of Svargrond live in fear because of a frightfully bad-tempered mammoth they call \'Blood Tusk\'. Go there and put an end to him. Happy hunting!', 'Bloodtusk', 4000, 1}, [14012] = {'ice golem', 'Happy hunting, friend! Come back to me when you are done hunting.', 'Alright, then return to your duties! Day light is a-wasting! You have already smashed %u ice golems. Come back to me when you are done.', 'As i see it, you need more of a challenge! I have heard that there is an ice golem the hunters in Svargrond call \'Shardhead\'. He is an extremely dangerous example of his kind! I believe you are equal to the task, %s!', 15000, 1, 'Shardhead'}, [14013] = {'quara constrictor scout', 'Happy hunting, friend! Come back to me when you are done hunting.', 'Alright, then you should go on with your task. You have already killed %u quara scouts in total. Come back to me when you are done.', 'Jolly good show! What a hunter! If you\'re up for another hunting mission just ask me for a {task}.', 10000, 1}, -- ? [14014] = {'quara constrictor', 'Happy hunting, friend! Come back to me when you are done hunting.', 'Alright, then you should go on with your task. You have already killed %u underwater quaras in total. Come back to me when you are done.', 'Superb work. However, there is something else I want you to do. It is said that there is a Quara general named \'Thul\' who is responsible for the attacks on Liberty Bay. Find him and kill him and bring peace to Liberty bay!', 12000, 1, 'Thul'}, -- OK [14015] = {'water elemental', 'Happy hunting, my old mocker! Come back to me when you are done hunting. ', 'Alright, then return to your duties! Day light is a-wasting! You have already smashed %u water elementals. Come back to me when you are done.', 'Fantastic! If you\'re up for another hunting mission just ask me for a {task}.', 7000, 1}, [14016] = {'earth elemental', 'Happy hunting, friend! Come back to me when you are done hunting. ', 'Alright, then return to your duties! Day light is a-wasting! You have already smashed %u earth elementals. Come back to me when you are done.', 'Fantastic! If you\'re up for another hunting mission just ask me for a {task}.', 10000, 1}, [14017] = {'energy elemental', 'Happy hunting, pal! Come back to me when you are done hunting. ', 'Alright, then return to your duties! Day light is a-wasting! You have already smashed %u energy elementals. Come back to me when you are done.', 'Fantastic! If you\'re up for another hunting mission just ask me for a {task}.', 10000, 1}, [14018] = {'fire elemental', 'Happy hunting, old friend! Come back to me when you are done hunting. ', 'Alright, then return to your duties! Day light is a-wasting! You have already smashed %u fire elementals. Come back to me when you are done.', 'Fantastic! If you\'re up for another hunting mission just ask me for a {task}.', 7000, 1}, [14019] = {'mutated rat', 'Happy hunting, old chap! Come back to me when you are done hunting. ', 'Alright, then stop dilly dallying here and go on with your task. You have already exterminated %u mutated rats. Come back to me when you are done.', {'Very good work, old chap. Lucky you are here - I have just been told of a task which is perfect for you. ...', 'The Yalaharians are having a spot of bother with a huge mutated rat. They call it \'Esmeralda\' and you should find her somewhere in the sewers. Good hunting!'}, 10000, 1, 'Esmeralda'}, -- OK [14020] = {'giant spider', 'Jolly good show! Come back to me when you are done hunting. ', 'Alright, then return to your duties! Day light is a-wasting! You have already smashed %u giant spiders. Come back to me when you are done.', 'Well THAT was a hunt. Good job. Have you heared about \'The Old Widow\'? It must have a hideout. Try to find it and slay the beast.', 5000, 1, 'Old Widow'}, [14021] = {'hydra', 'Happy hunting, old chap! Come back to me when you are done hunting.', 'Alright, then return to your duties! Day light is a-wasting! You have already smashed %u hydras. Come back to me when you are done.', {'With Nornur the God of Fate as my witness, you are truly born to hunt. If anyone can do this task, you can! Listen: ...', 'It is said that the Lizards of Chor are training hydras for attacks against us. They have already successfully bred a hydra named \'The Many\'. Find her and kill her!'}, 0, 2, 'Many'}, [14001] = {'sea serpent', 'Happy hunting, old chap! Come back to me when you are done hunting.', 'Alright, then return to your duties! Day light is a-wasting! You have already smashed %u sea serpents. Come back to me when you are done.', 'Good job, old chap! Are you up for a challenge? Have you heard of the legendary sea serpent called \'The Leviathan\'? It must be somewhere near the spot you found. This is a true test of your hunting skills - find it and kill it. Good hunting!', 0, 2, 'Leviathan'}, [14022] = {'behemoth', 'Happy hunting, old chap! Come back to me when you are done hunting.', 'Alright, then return to your duties! Day light is a-wasting! You have already smashed %u behemoths. Come back to me when you are done.', 'Such marvellous hunting skills! Perhaps you can help me with this one. Have you heard about \'Stonecracker\'? ...', 0, 2, 'Stonecracker'}, -- OK [14002] = {'serpent spawn', 'Happy hunting, old chap! Come back to me when you are done hunting.', 'Alright, then return to your duties! Day light is a-wasting! You have already smashed %u serpent spawns. Come back to me when you are done.', 'My - you can be proud of yourself! However, you\'re not finished yet. There are rumours about a being called \'The Noxious Spawn\' which was seen deep down in the ruins of Banuta. Try to find its hideout.', 0, 2, 'Noxious Spawn'}, } local curTask = 14500 local points = 14501 local rank = 14502 local questLog = 14503 local tiquanda = 14505 local demodras = 14506 function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function greetCallback(cid) local cur, r, msg = getPlayerStorageValue(cid, points), getPlayerStorageValue(cid, rank) if cur >= 5 and r < 1 then msg = 'Welcome back |PLAYERNAME|. You have completed 5 tasks for our society. Ask me for a {promotion} to advance your rank!' elseif cur >= 10 and r < 2 then msg = 'Good to see you again |PLAYERNAME|. You have completed 10 tasks for our society. Ask me for a {promotion} to advance your rank!' elseif cur >= 20 and r < 3 then msg = 'Salutations |PLAYERNAME|. You have completed 20 tasks for our society. Ask me for a {promotion} to advance your rank!' elseif cur >= 30 and r < 4 then msg = 'Always good to welcome you back, |PLAYERNAME|. You have completed 30 tasks for our society. Ask me for a {promotion} to advance your rank!' elseif cur >= 50 and r < 5 then msg = 'By the gods....50 hunting tasks....this is astounding! Ask me for a {promotion} to advance your rank! And while you are here, I also have another {special} task for you.' else msg = 'Welcome back |PLAYERNAME|. What brings you here this time?' end npcHandler:setMessage(MESSAGE_GREET, msg) Topic[cid] = 0 return true end function creatureSayCallback(cid, _type, msg) if not npcHandler:isFocused(cid) then return false end if msgcontains(msg, 'task') then local cur = getPlayerStorageValue(cid, curTask) if cur < 1 or (cur ~= 14006 and getPlayerStorageValue(cid, cur) == tasks[data[cur][1]].amount + 1 and getPlayerStorageValue(cid, cur + 100) == -1) then local v, lvl = '', getPlayerLevel(cid) if lvl < 50 then v, Topic[cid] = '{Crocodiles}, {tarantulas}, {carniphilas}, {stone golems} or {mammoths}', 1 elseif lvl < 90 then v, Topic[cid] = '{Ice golems}, {Quara}, {elementals}, {mutated rats} or {giant spiders}', 2 elseif 90 <= lvl then v, Topic[cid] = '{Hydras}, {sea serpents}, {behemoths}' .. (getPlayerStorageValue(cid, rank) == 5 and ', {serpent spawns} or {demons}' or ' or {serpent spawns}'), 3 end selfSay('All right, what would you like to hunt? ' .. v .. '?', cid) elseif cur == 14006 and getPlayerStorageValue(cid, cur) == tasks['demon'].amount then selfSay({'Such derring do deserves a special reward! Take this holy icon. It neutralizes great evil and gives you access to areas which are protected by those forces. But remember ...', 'This is a one time opportunity! You won\'t get the holy icon twice.'}, cid) doPlayerAddItem(cid, 10305, 1) setPlayerStorageValue(cid, curTask, -1) elseif cur ~= 14006 and getPlayerStorageValue(cid, cur) == tasks[data[cur][1]].amount and getPlayerStorageValue(cid, cur + 100) < 1 then local tmp if type(data[cur][4]) == 'table' then tmp = {} for i = 1, #data[cur][4] do tmp[i] = string.format(data[cur][4][i], getCreatureName(cid)) end end selfSay(tmp or string.format(data[cur][4], getCreatureName(cid)), cid) if data[cur][5] > 0 then doPlayerAddExp(cid, data[cur][5]) doSendAnimatedText(getThingPos(cid), data[cur][5], 215) end if data[cur][6] then setPlayerStorageValue(cid, points, getPlayerStorageValue(cid, points) + 1) end if data[cur][7] then -- special task (he sends you to kill the boss) setPlayerStorageValue(cid, cur + 100, 1) end setPlayerStorageValue(cid, cur, getPlayerStorageValue(cid, cur) + 1) Topic[cid] = 0 elseif getPlayerStorageValue(cid, cur + 100) == 2 then setPlayerStorageValue(cid, points, getPlayerStorageValue(cid, points) + (isInArray({14001, 14002, 14021, 14022}, cur) and 2 or 1)) selfSay('Fantastic! If you\'re up for another hunting mission just ask me for a {task}.', cid) setPlayerStorageValue(cid, cur + 100, -1) else selfSay(getPlayerStorageValue(cid, cur + 100) < 1 and 'You are not done with your task yet. Come back to me when you are. Or do you want to abort your task to start a different one?' or string.format('Find %s\'s hideout. I hope for you that you are skilled enough to kill him. Or do you want to abort your task to start a different one?', data[cur][7]), cid) Topic[cid] = 4 end elseif msgcontains(msg, 'trade') and getPlayerStorageValue(cid, rank) >= 1 then local items = { {name='antlers', id=11208, sell=50}, {name='bloody pincers', id=10549, sell=50}, {name='crab pincers', id=11183, sell=35}, {name='cyclops toe', id=10573, sell=55}, {name='frosty ear of a troll', id=10564, sell=30}, {name='hydra head', id=11193, sell=600}, {name='lancer leetle shell', id=11366, sell=80}, {name='mutated bat ear', id=10578, sell=420}, {name='sabretooth', id=11222, sell=400}, {name='sandcrawler shell', id=11367, sell=20}, {name='scarab pincers', id=10547, sell=280}, {name='terramite legs', id=11365, sell=60}, {name='terramite shell', id=11363, sell=170}, {name='terrorbird beak', id=11184, sell=95}, {name='cyclops trophy', id=7398, sell=500}, {name='minotaur trophy', id=7401, sell=500}, } if getPlayerStorageValue(cid, rank) >= 3 then table.insert(items, {name='deer trophy', id=7397, sell=1000}) table.insert(items, {name='lion trophy', id=7400, sell=1000}) table.insert(items, {name='wolf trophy', id=7394, sell=1000}) end if getPlayerStorageValue(cid, rank) >= 4 then table.insert(items, {name='behemoth trophy', id=7396, sell=6000}) table.insert(items, {name='demon trophy', id=7393, sell=8000}) table.insert(items, {name='dragon lord trophy', id=7399, sell=5000}) table.insert(items, {name='demon backpack', id=10518, buy=1000}) end openShopWindow(cid, items, function(cid, itemid, subType, amount, ignoreCap, inBackpacks) customCallbackOnBuy(cid, itemid, subType, amount, ignoreCap, inBackpacks, items) end, function(cid, itemid, subType, amount, ignoreCap, inBackpacks) customCallbackOnSell(cid, itemid, subType, amount, ignoreCap, inBackpacks, items) end ) selfSay("Alright, show me what you've got.", cid) elseif Topic[cid] == 4 then local cur = getPlayerStorageValue(cid, curTask) if msgcontains(msg, 'yes') or msgcontains(msg, 'abort') then selfSay('Alright, as you wish. Ask me for a task if you are interested in a different hunting mission.', cid) setPlayerStorageValue(cid, cur, -1) setPlayerStorageValue(cid, curTask, -1) if getPlayerStorageValue(cid, cur + 100) > 0 then setPlayerStorageValue(cid, cur + 100, -1) end else selfSay(cur == 14006 and string.format('Alright, then stop dilly dallying here and go on with your task. You have already exterminated %u demons. Come back to me when you are done.', getPlayerStorageValue(cid, cur)) or getPlayerStorageValue(cid, cur + 100) < 1 and string.format(data[getPlayerStorageValue(cid, curTask)][3], getPlayerStorageValue(cid, cur)) or 'Alright, then you should go on with your task.', cid) end Topic[cid] = 0 elseif Topic[cid] == 1 and msgcontains(msg, 'crocodile') then local v = tasks['crocodile'] selfSay('They are a nuisance! You\'ll find them here in the jungle near the river. Hunt ' .. v.amount .. ' crocodiles and you\'ll get a nice reward. Interested?', cid) Topic[cid] = v.storage elseif Topic[cid] == 1 and msgcontains(msg, 'tarantula') then local v = tasks['tarantula'] selfSay('There is a veritable plague of tarantulas living in the caves north of the river to the east. Can you squish ' .. v.amount .. ' tarantulas for the Hunting Elite. What do you say?', cid) Topic[cid] = v.storage elseif Topic[cid] == 1 and msgcontains(msg, 'carniphila') then local v = tasks['carniphila'] selfSay('Damn walking weed-thingies! You\'ll find them deeper in the jungle. Weed out ' .. v.amount .. ' carniphilas for our society. Alright?', cid) Topic[cid] = v.storage elseif Topic[cid] == 1 and msgcontains(msg, 'golem') then local v = tasks['stone golem'] selfSay('They can be found all over Tibia. You\'ll find them in mountain caves or rocky dungeons. Hunt ' .. v.amount .. ' of them and come back to me. Understood?', cid) Topic[cid] = v.storage elseif Topic[cid] == 1 and msgcontains(msg, 'mammoth') then local v = tasks['mammoth'] selfSay('This particular species are found in Svargrond. Impressive beasts, but you wouldn\'t want one in your back garden. Hunt ' .. v.amount .. ' of them. Alright?', cid) Topic[cid] = v.storage elseif Topic[cid] == 2 and msgcontains(msg, 'golem') then local v = tasks['ice golem'] selfSay('The ice golems on the glacier of Hrodmir are becoming a threat to the civilians in Svargrond. Travel to the Ice Islands and hunt ' .. v.amount .. ' Ice Golems. Do you accept this task?', cid) Topic[cid] = v.storage elseif Topic[cid] == 2 and msgcontains(msg, 'quara') then selfSay('There are different types of quaras. The weaker {scouts} which can be found on Malada, one of the shattered Islands and the more skilled {underwater} kind which can be found in Calassa and some smaller colonies. Which one do you wish to hunt?', cid) Topic[cid] = 5 elseif Topic[cid] == 5 and msgcontains(msg, 'scout') then local v = tasks['quara constrictor scout'] selfSay('Good choice! Hunt down those Quara scouts - remember no less than ' .. v.amount .. '! Focus! Do you accept this task?', cid) Topic[cid] = v.storage elseif Topic[cid] == 5 and msgcontains(msg, 'underwater') then local v = tasks['quara constrictor'] selfSay('As you wish. Seek out a Quara settlement and hunt ' .. v.amount .. ' Quaras, it doesn\'t matter which type you hunt. Alright?', cid) Topic[cid] = v.storage elseif Topic[cid] == 2 and msgcontains(msg, 'elemental') then selfSay({'Since the creation of the elemental shrines and the portals, the curtain separating the worlds is thin, allowing the elementals to surge into our world. They have to be contained. ...', 'The choice as to which kind of elementals you hunt is yours, as long as they are in the lands of Tibia. Hunt 70 {earth}, {energy}, {fire} or {water} elementals. Which one do you choose?'} , cid) Topic[cid] = 6 elseif Topic[cid] == 6 and msgcontains(msg, 'water') then local v = tasks['water elemental'] selfSay('Alright, go hunt ' .. v.amount .. ' water elementals or massive water elementals. Don\'t forget your umbrella! Alright?', cid) Topic[cid] = v.storage elseif Topic[cid] == 6 and msgcontains(msg, 'earth') then local v = tasks['earth elemental'] selfSay('Good choice! I need you to slay ' .. v.amount .. ' earth elementals or massive earth elementals. There are some in the so called Taboo-area in the eastern jungle of Tiquanda and I heard about a cave in Edron where you\'ll find them. Are you game?', cid) Topic[cid] = v.storage elseif Topic[cid] == 6 and msgcontains(msg, 'energy') then local v = tasks['energy elemental'] selfSay('A brave hunter! Kill ' .. v.amount .. ' energy elementals or massive energy elementals. You\'ll find them in the mountains between Darama and Tiquanda. Are you sure you want to do this?', cid) Topic[cid] = v.storage elseif Topic[cid] == 6 and msgcontains(msg, 'fire') then local v = tasks['fire elemental'] selfSay('Don\'t get burnt! Your challenge, should you choose to accept it, is to kill ' .. v.amount .. ' fire elementals or massive fire elementals. Are you ready?', cid) Topic[cid] = v.storage elseif Topic[cid] == 2 and msgcontains(msg, 'mutated rat') then local v = tasks['mutated rat'] selfSay('Recently, I heard of a disturbing development in Yalahar - a plague of monstrous Mutated rats! If they were to spread to the rest of Tibia.. <shudders> My task for you is to contain their numbers in Yalahar. Hunt ' .. v.amount .. ' of them. What do you say?', cid) Topic[cid] = v.storage elseif Topic[cid] == 2 and msgcontains(msg, 'giant spider') then local v = tasks['giant spider'] selfSay('Never liked spiders. Entirely too many legs. And I always find them in my bath! Those nasty creepy crawlies are a threat to the hygiene of every living being in Tibia. Hunt ' .. v.amount .. ' of them. Okay?', cid) Topic[cid] = v.storage elseif Topic[cid] == 3 and msgcontains(msg, 'hydra') then local v = tasks['hydra'] selfSay('The hydras are located in the eastern jungle of Tiquanda and there are several mountain caves that are inhabited by them. Your task is to hunt a mere ' .. v.amount .. ' hydras. Are you willing to do that?', cid) Topic[cid] = v.storage elseif Topic[cid] == 3 and msgcontains(msg, 'sea serpent') then local v = tasks['sea serpent'] selfSay({'The sea serpents are a threat to honest seafarers! Captain Haba knows where to find them. ...', 'Go to Svargrond and talk to him. ' .. v.amount .. ' sea serpents should be enough to reduce the threat - but not their young though! After all, they are an endangered species! Got it?'}, cid) Topic[cid] = v.storage elseif Topic[cid] == 3 and msgcontains(msg, 'behemoth') then local v = tasks['behemoth'] selfSay('Behemoths must be kept away from the settlements at all costs. You\'ll find them east of here in the taboo-area or under the cyclopolis in Edron. Go there and hunt a few of them - shall we say... ' .. v.amount .. '? Are you up for that?', cid) Topic[cid] = v.storage elseif Topic[cid] == 3 and msgcontains(msg, 'serpent spawn') then local v = tasks['serpent spawn'] selfSay('Very dangerous, nasty, slimey creatures. They live deep in the old ruins of Banuta. I think a mere ' .. v.amount .. ' serpent spawns should do the trick. What do you say?', cid) Topic[cid] = v.storage elseif Topic[cid] == 3 and getPlayerStorageValue(cid, rank) == 5 and msgcontains(msg, 'demon') and getPlayerStorageValue(cid, curTask) < 1 then local v = tasks['demon'] selfSay('The spawn of pure evil must be erased from Tibia. You\'ll find demons lurking in the northern ruins of Edron as well as in some of other deeper dungeons of Tibia. We need to wipe them out! Slay ' .. v.amount .. ' demons for the Greater Good!', cid) setPlayerStorageValue(cid, curTask, v.storage) setPlayerStorageValue(cid, v.storage, 0) Topic[cid] = 0 elseif Topic[cid] >= 14000 and msgcontains(msg, 'yes') then selfSay(data[Topic[cid]][2], cid) setPlayerStorageValue(cid, curTask, Topic[cid]) setPlayerStorageValue(cid, Topic[cid], 0) if getPlayerStorageValue(cid, questLog) < 1 then setPlayerStorageValue(cid, questLog, 1) setPlayerStorageValue(cid, points, 0) end Topic[cid] = 0 elseif msgcontains(msg, 'special') and getPlayerStorageValue(cid, rank) == 5 then local v, k = getPlayerStorageValue(cid, tiquanda), getPlayerStorageValue(cid, demodras) if v < 1 then if getPlayerLevel(cid) >= 90 then setPlayerStorageValue(cid, tiquanda, 1) selfSay({'Have you heard about {Tiquandas Revenge}? It is said that the jungle itself is alive and takes revenge for all the bad things people have done to it. ...', 'I myself believe that there is some truth in this clap trap. Something \'real\' which therefore must have a hideout somewhere. Go find it and take revenge yourself! Ask me about the {special} task when you\'re done.'}, cid) else selfSay('Your eagerness is commendable, and your rank within our hunting elite is great buuuut I\'m afraid you\'re a little bit too weak for the special tasks. Get more experience and the special tasks will be no match for you.', cid) end elseif v == 2 then selfSay('Great achievement, old chap! You are an outstanding hunter, no doubt about it!', cid) setPlayerStorageValue(cid, tiquanda, 3) elseif v == 3 and k < 1 then if getPlayerLevel(cid) >= 100 then setPlayerStorageValue(cid, demodras, 1) selfSay('This task is a very dangerous one. I want you to look for {Demodras}\' hideout. It might be somewhere under the {Plains of Havoc}. Good luck, old chap, come back in one piece and ask me about the {special} task when you\'re done.', cid) else selfSay('Your eagerness is commendable, and your rank within our hunting elite is great buuuut I\'m afraid you\'re a little bit too weak for the special tasks. Get more experience and the special tasks will be no match for you.', cid) end elseif k == 2 then selfSay('Great achievement, old chap! You are an outstanding hunter, no doubt about it!', cid) setPlayerStorageValue(cid, demodras, 3) end elseif msgcontains(msg, 'promotion') then local cur, r, msg, exp, item = getPlayerStorageValue(cid, points), getPlayerStorageValue(cid, rank) if cur >= 5 and r < 1 then msg, exp = {'You have completed 5 tasks! Let me promote you to the first rank: Huntsman. Congratulations! ...', 'If you find any trophies that you don\'t need, feel free to ask me for a {trade}.'}, 5000 elseif cur >= 10 and r < 2 then msg, exp = {'You have completed 10 hunting tasks. It\'s time for a promotion. You advance to the rank of \'Ranger\'. Congratulations! ...', 'Oh, I made a deal with Lorek. He ships Rangers from our society - and higher ranks of course - to Banuta, Chor or near the mountain pass to Darama. Just ask him for a passage.'}, 8000 elseif cur >= 20 and r < 3 then msg, exp = {'Good show! You have completed 20 hunting tasks for the \'Paw and Fur - Hunting Elite. You have earned the right to join the ranks of those known as \'Big game hunter\'. Congratulations! ...', 'From now on I\'ll buy more trophies from you!'}, 10000 elseif cur >= 30 and r < 4 then msg, exp, item = 'Spiffing! You have done 30 hunting tasks! From now on you can call yourself a \'Trophy hunter\'. As a reward I have this special backpack for you and in addition you can sell some more rare trophies to me.', 15000, 10518 elseif cur >= 50 and r < 5 then msg, exp = 'Congratulations! You have made the highest rank: \'Elite hunter\'. If haven\'t yet done so ask me for the {special} task.', 30000 end if msg then selfSay(msg, cid) setPlayerStorageValue(cid, rank, math.max(1, r + 1)) if exp then doPlayerAddExp(cid, exp) doSendAnimatedText(getThingPos(cid), exp, 215) end if item then doPlayerAddItem(cid, item, 1) end end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setMessage(MESSAGE_FAREWELL, 'Happy hunting, old chap!') npcHandler:setMessage(MESSAGE_WALKAWAY, 'Happy hunting, old chap!') npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:addModule(FocusModule:new())
-
[ERRO] Movements Task System
Bem, quando o player sai da ROOM, é como o script estivesse executando sem parar... local function roomIsOccupied(centerPosition, rangeX, rangeY) local spectators = Game.getSpectators(centerPosition, false, true, rangeX, rangeX, rangeY, rangeY) if #spectators ~= 0 then return true end return false end function clearBossRoom(playerId, bossId, centerPosition, rangeX, rangeY, exitPosition) local spectators, spectator = Game.getSpectators(centerPosition, false, false, rangeX, rangeX, rangeY, rangeY) for i = 1, #spectators do spectator = spectators if spectator:isPlayer() and spectator.uid == playerId then spectator:teleportTo(exitPosition) exitPosition:sendMagicEffect(CONST_ME_TELEPORT) end if spectator:isMonster() and spectator.uid == bossId then spectator:remove() end end end local bosses = { [3230] = {bossName = 'the snapper', storage = 35000, playerPosition = Position(32610, 32723, 8), bossPosition = Position(32617, 32732, 8), centerPosition = Position(32613, 32727, 8), rangeX = 5, rangeY = 5, flamePosition = Position(32612, 32733, 8)}, [3231] = {bossName = 'hide', storage = 35001, playerPosition = Position(32815, 32703, 8), bossPosition = Position(32816, 32712, 8), centerPosition = Position(32816, 32707, 8), rangeX = 6, rangeY = 5, flamePosition = Position(32810, 32704, 8)}, [3232] = {bossName = 'deathbine', storage = 35002, playerPosition = Position(32715, 32736, 8), bossPosition = Position(32714, 32713, 8), centerPosition = Position(32716, 32724, 8), rangeX = 9, rangeY = 13, flamePosition = Position(32726, 32727, 8)}, [3233] = {bossName = 'the bloodtusk', storage = 35003, playerPosition = Position(32102, 31124, 2), bossPosition = Position(32102, 31134, 2), centerPosition = Position(32101, 31129, 2), rangeX = 5, rangeY = 6, flamePosition = Position(32093, 31130, 2)}, [3234] = {bossName = 'shardhead', storage = 35004, playerPosition = Position(32150, 31137, 3), bossPosition = Position(32159, 31132, 3), centerPosition = Position(32155, 31136, 3), rangeX = 5, rangeY = 7, flamePosition = Position(32149, 31137, 3)}, [3235] = {bossName = 'esmeralda', storage = 35005, playerPosition = Position(32759, 31252, 9), bossPosition = Position(32759, 31258, 9), centerPosition = Position(32759, 31254, 9), rangeX = 4, rangeY = 4, flamePosition = Position(32758, 31248, 9)}, [3236] = {bossName = 'fleshcrawler', storage = 35006, playerPosition = Position(33100, 32785, 11), bossPosition = Position(33121, 32797, 11), centerPosition = Position(33112, 32789, 11), rangeX = 15, rangeY = 13, flamePosition = Position(33106, 32775, 11)}, [3237] = {bossName = 'ribstride', storage = 35007, playerPosition = Position(33012, 32813, 13), bossPosition = Position(33013, 32801, 13), centerPosition = Position(33012, 32805, 13), rangeX = 10, rangeY = 9, flamePosition = Position(33018, 32814, 13)}, [3238] = {bossName = 'bloodweb', storage = 35008, playerPosition = Position(32019, 31037, 8), bossPosition = Position(32032, 31033, 8), centerPosition = Position(32023, 31033, 8), rangeX = 11, rangeY = 11, flamePosition = Position(32010, 31031, 8)}, [3239] = {bossName = 'thul', storage = 35009, playerPosition = Position(338, 721, 9), bossPosition = Position(344, 722, 9), centerPosition = Position(344, 722, 9), rangeX = 6, rangeY = 6, flamePosition = Position(344, 722, 9)}, [3240] = {bossName = 'the old widow', storage = 35010, playerPosition = Position(1094, 1212, 10), bossPosition = Position(1087, 1213, 10), centerPosition = Position(32801, 32276, 8), rangeX = 5, rangeY = 5, flamePosition = Position(32808, 32283, 8)}, [3241] = {bossName = 'hemming', storage = 35011, playerPosition = Position(32999, 31452, 8), bossPosition = Position(33013, 31441, 8), centerPosition = Position(33006, 31445, 8), rangeX = 9, rangeY = 7, flamePosition = Position(33005, 31437, 8)}, [3242] = {bossName = 'tormentor', storage = 35012, playerPosition = Position(32043, 31258, 11), bossPosition = Position(32058, 31267, 11), centerPosition = Position(32051, 31264, 11), rangeX = 11, rangeY = 14, flamePosition = Position(32051, 31249, 11)}, [3243] = {bossName = 'flameborn', storage = 35013, playerPosition = Position(1131, 1267, 9), bossPosition = Position(1131, 1259, 9), centerPosition = Position(32944, 31060, 8), rangeX = 11, rangeY = 10, flamePosition = Position(32818, 31026, 7)}, [3244] = {bossName = 'fazzrah', storage = 35014, playerPosition = Position(847, 803, 7), bossPosition = Position(855, 800, 7), centerPosition = Position(33003, 31177, 7), rangeX = 14, rangeY = 6, flamePosition = Position(33007, 31171, 7)}, [3245] = {bossName = 'tromphonyte', storage = 35015, playerPosition = Position(781, 792, 8), bossPosition = Position(790, 801, 8), centerPosition = Position(33113, 31188, 8), rangeX = 11, rangeY = 18, flamePosition = Position(33109, 31168, 8)}, [3246] = {bossName = 'sulphur scuttler', storage = 35016, playerPosition = Position(33269, 31046, 9), bossPosition = Position(33274, 31037, 9), centerPosition = Position(33088, 31012, 8), rangeX = 11, rangeY = 11, flamePosition = Position(0, 0, 0)}, [3247] = {bossName = 'bruise payne', storage = 35017, playerPosition = Position(33237, 31006, 2), bossPosition = Position(33266, 31016, 2), centerPosition = Position(33251, 31016, 2), rangeX = 22, rangeY = 11, flamePosition = Position(33260, 31003, 2)}, [3248] = {bossName = 'the many', storage = 35018, playerPosition = Position(32921, 32893, 8), bossPosition = Position(32926, 32903, 8), centerPosition = Position(32921, 32898, 8), rangeX = 5, rangeY = 6, flamePosition = Position(32921, 32890, 8)}, [3249] = {bossName = 'the noxious spawn', storage = 35019, playerPosition = Position(1123, 573, 9), bossPosition = Position(1123, 579, 9), centerPosition = Position(32843, 32670, 11), rangeX = 5, rangeY = 5, flamePosition = Position(0, 0, 0)}, [3250] = {bossName = 'gorgo', storage = 35020, playerPosition = Position(1121, 462, 9), bossPosition = Position(1123, 472, 9), centerPosition = Position(32759, 32440, 11), rangeX = 9, rangeY = 10, flamePosition = Position(32768, 32440, 11)}, [3251] = {bossName = 'stonecracker', storage = 35021, playerPosition = Position(1474, 843, 15), bossPosition = Position(1470, 850, 15), centerPosition = Position(33259, 31670, 15), rangeX = 5, rangeY = 7, flamePosition = Position(33259, 31689, 15)}, [3252] = {bossName = 'leviathan', storage = 35022, playerPosition = Position(1963, 626, 8), bossPosition = Position(1954, 631, 8), centerPosition = Position(31909, 31072, 10), rangeX = 8, rangeY = 7, flamePosition = Position(31918, 31071, 10)}, [3253] = {bossName = 'kerberos', storage = 35023, playerPosition = Position(32048, 32581, 15), bossPosition = Position(32032, 32565, 15), centerPosition = Position(32041, 32569, 15), rangeX = 11, rangeY = 13, flamePosition = Position(32030, 32555, 15)}, [3254] = {bossName = 'ethershreck', storage = 35024, playerPosition = Position(766, 791, 10), bossPosition = Position(772, 779, 10), centerPosition = Position(33088, 31012, 8), rangeX = 11, rangeY = 11, flamePosition = Position(33076, 31007, 8)}, [3255] = {bossName = 'paiz the pauperizer', storage = 35025, playerPosition = Position(33069, 31110, 1), bossPosition = Position(33082, 31105, 1), centerPosition = Position(33076, 31110, 1), rangeX = 8, rangeY = 6, flamePosition = Position(33076, 31110, 1)}, [3256] = {bossName = 'bretzecutioner', storage = 35026, playerPosition = Position(1505, 546, 8), bossPosition = Position(1498, 536, 8), centerPosition = Position(31973, 31177, 10), rangeX = 15, rangeY = 10, flamePosition = Position(31973, 31166, 10)}, [3257] = {bossName = 'zanakeph', storage = 35027, playerPosition = Position(1387, 1240, 7), bossPosition = Position(33082, 31056, 12), centerPosition = Position(1396, 1251, 7), rangeX = 13, rangeY = 10, flamePosition = Position(33070, 31039, 12)}, [3258] = {bossName = 'demodras', storage = Storage.KillingInTheNameOf.DemodrasTeleport, playerPosition = Position(770, 1050, 10), bossPosition = Position(762, 1055, 10), centerPosition = Position(762, 1055, 10), rangeX = 6, rangeY = 5, flamePosition = Position(762, 1055, 10)}, [3259] = {bossName = 'tiquandas revenge', storage = Storage.KillingInTheNameOf.TiquandasRevengeTeleport, playerPosition = Position(1166, 671, 4), bossPosition = Position(1160, 676, 4), centerPosition = Position(32748, 32293, 10), rangeX = 8, rangeY = 7, flamePosition = Position(33076, 31029, 11)}, [17521] = {bossName = 'necropharus', storage = 17521, playerPosition = Position(33028, 32426, 12), bossPosition = Position(33026, 32422, 12), centerPosition = Position(33028, 32424, 12), rangeX = 6, rangeY = 5, flamePosition = Position(33070, 31035, 12)}, [17522] = {bossName = 'the horned fox', storage = 17522, playerPosition = Position(32458, 31994, 9), bossPosition = Position(32458, 32005, 9), centerPosition = Position(32450, 31400, 9), rangeX = 5, rangeY = 8, flamePosition = Position(33070, 31029, 12)} } function onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() if not player then return true end local boss = bosses[item.uid] if not boss then return true end if player:getStorageValue(boss.storage) ~= 1 or roomIsOccupied(boss.centerPosition, boss.rangeX, boss.rangeY) then player:teleportTo(fromPosition) return true end player:setStorageValue(boss.storage, 0) player:teleportTo(boss.playerPosition) boss.playerPosition:sendMagicEffect(CONST_ME_TELEPORT) local monster = Game.createMonster(boss.bossName, boss.bossPosition) if not monster then return true end addEvent(clearBossRoom, 60 * 10 * 1000, player.uid, monster.uid, boss.centerPosition, boss.rangeX, boss.rangeY, fromPosition) player:say('You have ten minutes to kill and loot this boss. Otherwise you will lose that chance and will be kicked out.', TALKTYPE_MONSTER_SAY) return true end RESOLVIDO! Troquei todo script de task e esse movements ai eu deletei.
-
O TK está vivão!
Está na BAD é @Matk ? KOPEKEPOKEPOKE Realmente, mas não é apenas este aqui. A galera não está tão interessada em ajudar/incentivar outros usuários. Junta uma parte em um projeto e outros em outra. Percebo que muitos aqui não criam mais servidores de Tibia, muitos com poke e servidores modificados, com o OTC e projetos de todo tipo. Hoje em dia não postam servidores tão bugados como antes. Os que possuem o pessoal mesmo já aprendeu a arrumar. O pior de tudo que não só esse como outros fóruns, sempre perdem os tópicos criados em "Pedido" ou não movem para uma área de "pedidos atendidos" talvez até por não existir tal sub-topic, fica uma bagunça e muitos perdem até a graça de ajudar. Como o @ xWhiteWolf mesmo já falou, REP é algo apenas para um legado. Será que dava para fazer algo com isto? As vezes até penso em desistir do meu projeto, muitos não gostam de inovação no tibia fazendo o mesmo não crescer tanto. Estou criando um projeto de yurots mas sei que não vai lotar, sei porque já estou a muito tempo no ramo de otservs. Poderia lotar se eu fizesse em um mapa global do mesmo estilo por exemplo.
- [8.60] The Forgotten Server 0.4 By Fir3Element (SQL and MYSQL)
- [8.60] The Forgotten Server 0.4 By Fir3Element (SQL and MYSQL)
-
[AJUDA] ANIHI
Bem. Estou utilizando um Tfs 0.4 3777 8.60 Estou com um script da annihilator aqui. Ele aparentemente funciona normal.. Da o exaust na alavanca, avisa que faltam players etc.. Porém ele não está teleportando para a sala dos Demons =/ OBS: Não aparece nenhum erro no distro. OBS²: Acabei de ver aqui, ele sumona os Demons e quando clico na alavanca novamente ele checa os demons na sala e sumona apenas os que eu matei com GOD. OBS³: Ele também está checando se tem player na sala (Usei o GM como test), ele não deixa puxar a alavanca e avisa que tem player na sala Nesse caso, acho que está tudo funcionando, o problema mesmo é só q o player não teleporta Uu Ele tem que teleportar e ganhar storage tempAid (3029). local c = { daily = "no", -- Permitir apenas 1 entrada por dia withEffects = "yes", -- Permitir Efeitos onlyOnce = "yes", -- Permitir apenas 1x a entrada de um player (se ele terminar a quest, não pode entrar) anniStor = 3030, -- Se onlyOnce for "yes" isto salvará o storage. Pode ser o mesmo U.ID da alavanca. level = 100, -- player level tempAid = 3029, -- Isto salvará o storage na porta e piso. Tem que ser diferente da anniStor e alavanca. mob = "Demon", -- monster name customMobs = "no", -- Sim para mobs aleatorios normalMap = "no", -- Não mecha aqui. Risco de BUG test = "yes", -- Coloque Yes caso queira testar com apenas 1 player ^^ fightTime = 15, -- Em minutos. Quanto tempo os players podem ficar na sala dos demons exhaustion = 10, -- Em segundos. Exaust da alavanca exhaustionStor = 3028, -- Salva storage do exaust da alavanca entry = { {x=194, y=118, z=9}, -- 1 player, The first position just behind switch! {x=193, y=118, z=9}, {x=192, y=118, z=9}, {x=191, y=118, z=9} }, des = { {x=228, y=120, z=9}, -- 1 player {x=229, y=120, z=9}, {x=230, y=120, z=9}, {x=231, y=120, z=9} }, mobPos = { -- you cann ignore this if you have 'normalMap = "yes"' {x=228, y=118, z=9}, {x=230, y=118, z=9}, -- here position opposite 1 {x=229, y=122, z=9}, -- here position opposite 2 {x=231, y=122, z=9}, {x=227, y=120, z=9}, {x=226, y=120, z=9} }, customMobName = { -- you cann ignore this if you have 'customMobs = "no"' "Rat", "Rat", "Cave Rat", -- where position opposite 1 "Cave Rat", -- where position opposite 2 "Rat", "Rat" } } c.daily = getBooleanFromString(c.daily) c.withEffects = getBooleanFromString(c.withEffects) c.onlyOnce = getBooleanFromString(c.onlyOnce) c.customMobs = getBooleanFromString(c.customMobs) c.normalMap = getBooleanFromString(c.normalMap) c.test = getBooleanFromString(c.test) local anniEvent = 0 function onUse(cid, item, fromPosition, itemEx, toPosition) if(item.itemid == 1946) then if(not c.daily) or c.test then doTransformItem(item.uid, 1945) else doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) end return true end if(item.itemid ~= 1945) then return true end if(exhaustion.check(cid, c.exhaustionStor)) then return true end exhaustion.set(cid, c.exhaustionStor, c.exhaustion) local fighter = {} fighter = getSpectators(c.des[1], 3, 3) if fighter ~= nil then for _, pid in ipairs(fighter) do if isPlayer(pid) then if(c.withEffects) then doCreatureSay(cid, "Halo! Halo!\nWe are still fighting here!", TALKTYPE_MONSTER, nil, cid, c.des[1]) end return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) end end for _, pid in ipairs(fighter) do if isCreature(pid) then doRemoveCreature(pid) end end end if(anniEvent ~= 0) then stopEvent(anniEvent) end local players = {} for _, position in ipairs(c.entry) do local pid = getTopCreature(position).uid if(pid == 0 or not isPlayer(pid) or getPlayerLevel(pid) < c.level) then if(c.withEffects) then doCreatureSay(cid, "Need a player with lvl "..c.level, TALKTYPE_MONSTER, nil) doSendMagicEffect(position, CONST_ME_TUTORIALARROW) end return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) elseif(c.onlyOnce and getCreatureStorage(pid, c.anniStor) > 0) then if(c.withEffects) then doCreatureSay(cid, "That fighter\ncan't do anni again.", TALKTYPE_MONSTER, nil) doSendMagicEffect(position, CONST_ME_TUTORIALARROW) end return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) end table.insert(players, pid) if c.test then break end end if normalMap then local zmienne = {{'-3','-2'}, {'-1','-2'}, {'-2','2'}, {'0','2'}, {'1','0'}, {'2','0'}} -- horizontally for i, pos in ipairs(zmienne) do c.mobPos = c.des[1] c.mobPos.x = c.mobPos.x + tonumber(pos[1]) c.mobPos.y = c.mobPos.y + tonumber(pos[2]) doCreateMonster(c.customMobs and c.customMobName or c.mob, c.mobPos) end else for i, pos in ipairs(c.mobPos) do doCreateMonster(c.customMobs and c.customMobName or c.mob, pos) end end for i, pid in ipairs(players) do doSendMagicEffect(c.entry, CONST_ME_POFF) doTeleportThing(pid, c.des, false) doSendMagicEffect(c.des, CONST_ME_ENERGYAREA) doCreatureSetStorage(pid, c.tempAid, 1) if c.test then break end end doTransformItem(item.uid, 1946) anniEvent = addEvent(function() for i, pid in ipairs(players) do if getCreatureStorage(pid, c.tempAid) == 1 then doCreatureSetStorage(pid, c.tempAid, -1) doRemoveCondition(pid, CONDITION_INFIGHT) local pos = getClosestFreeTile(cid, c.entry, false, false) pos.y = pos.y +1 doTeleportThing(pid, pos, false) doSendMagicEffect(getThingPosition(pid), CONST_ME_TELEPORT) doCreatureSay(pid, "Time is up!", TALKTYPE_MONSTER) end end doTransformItem(item.uid, 1945) end, c.fightTime*60*1000) return true end @UP
-
[PEDIDO]
Vixii kk Obrigado a todos! Vou ver aqui, talvez faça mesmo um clone do item com o otb editor REP+ os 2
-
[PEDIDO]
Bom, a arcane Staff (id:2453) está como club. Gostaria de deixa-la como club (para knights) e wand (para mages) EXEMPLO: Se um knight estiver usando, ela ficará 2 mãos e será um club. ............... Se um Mage estiver usando, ela ficará 1 mão e será uma wand. Gostaria de saber se é possível realizar tal feito, desde já, obrigado!
-
Show OFF - Yurots Classic [REMAKE]
Bem galera.. Estou com um projeto (em desenvolvimento) soq gostei tanto do meu trabalho no mapa que resolvi postar aqui para vocês darem uma olhada de como está ficando OBS: Tentei o máximo igualar com o Yurots Clássico da versão 7.4 (sou fã do map) Quem conhece o mapa yurots antigo vai saber +/- onde foi tirada kd print rsrs
- Itens Iniciais
-
ESSE FORUM NAO ESTÁ POPULAR
ETAA CUZAOO