Ir para conteúdo

Smart Maxx

Membro
  • Registro em

  • Última visita

Tudo que Smart Maxx postou

  1. Azeroth Server Versão: 8.60 Distro: TFS 0.4 Mapa Base: Yourots Edited e Mix Yourots Esse mapa particularmente foi um dos mais divertidos e legais que já gostei de editar... Hoje venho trazer a versão que podemos talvez chamar de v2.0 desse magnfico serve focado em rpg. Não tem como eu citar tudo que foi acrescentado e editado porque foi muitas coisas mesmo é só consigo lembrar das recentes ... Inicialmente o mapa contem 7 cidades que são elas : Azeroth Avalon Zatur Liberty Bay Gloria Sand Trap Tiquanda Estou trabalhando com um amigo em um mapa, que seria o novo continente desse serve com mais 9 cidades... talvez mais em breve eu posto algo relacionado à isso. > Mapa RPG bem detalhado para Ots Low e Mid rate. > Inúmeras invasões automáticas, Low e High lvl (ou iniciadas pelo comando /raid "nome"). > NPCs de Travel/Boat diferentes para cada cidade. > Mais de 70 quests (além das principais) espalhadas pelo mapa. > Quests especiais com NPCs > Arena PvP sem perda de items. > Sistema de Guerras pelo Castelo [entre guilds] > Sistema de Refinamento e Slot (mais detalhes abaixo). > Sistema de Mineração > Scripts e sistemas aprimorados para o servidor > Distro SEM erro algum > Principais Quests: Annihilator Blue Legs Pits of Inferno MMS The Inquisition The Death FireWalker Boots Demon Helmet Draken Hell Conquer ______________________________________________________________________________________________________________________ V2.0 > Muitas correções no mapa > Ajustes nos scripts de Slot > Ajustes nos scripts de Mineração > Ajustes em alguns npcs > Adicionado mais 4 npcs pro futuro novo continente > Adicionado Battlefield Evento funcionado 100% (comando /battlefield "numero de players") > Adicionado Evento Zombie 100% automatico > Pequenas alterações no Castle of Honor > Balanceado sistemas de minério > Mais de 40 Quest adicionadas > Adicionado comando de expulsar player inativo da house > Corrigido muitos bugs encontrados ao decorrer da edição do serve > Adicionada muitas hunts (Hunts do nosso querido @Daniel implementadas) > e muito mais ... Edição e postagem(leia): É Autorizado edições e repostagens do Azeroth Server (aliás, não posso proibir isso) mas peço a vocês que pelo menos respeitem o estilo do mapa. Eu não sei se poderei dar continuidade a ele, mas trata-se de um projeto RPG. Pensa só, Vmspk teve um trabalhão pra editar o server, ele fez tudo com mais amor do que o arroz que sua mãe faz com sazón, e você vai baixar, encher de teleportes e hunts quadradas, colocar armas com atk de 350000, sistemas VIPs sem propósito algum, vai copiar o tópico, retirar meus créditos e postar novamente? Reconsidere, pois não há nada mais desmotivador para um desenvolvedor do que isso, ver seu trabalho cair em desuso, como aconteceu com o Styller YourOts, Vancini e Baiak, que agora é um monstro sem pé nem cabeça (alguns gostam desse tipo de server, tudo bem, mas essa não é a proposta deste servidor). Se teve boas ideias e quer editar o servidor para postar, fique à vontade, mas não nos decepcione. ! Não há teleports diretos para hunts ou quests. Não há items ou monstros editados(além dos trainers). Não há sistema VIP, VIP 2, VIP 3, VIP 345456364. Não há raids com monstros excessivamente fortes nas cidades iniciais. Créditos < Unknow YourOts Edited > < Mix Yourots Team > < Crystal Server Team > < Tryller > < Mock > < TFS Team > < TonyHanks > < Centera World > < Vmspk > <EddyHavoc> <Smart Maxx> <Daniel> <White Wolf> <Absolute> < e muitos outros ... > Otserv : http://www.mediafire.com/download/43t9eh6te2e1v7c/otserv.rar Scan : https://www.virustotal.com/pt/file/7a4ae609b0dda80af75d6ff6aefa122e0f42c067983c353baa55cece17ad0c55/analysis/1416407066/ Db : https://www.mediafire.com/?xwj5piwca7ff2xz
  2. em data/globalevents/script procure algum arquivo relacionado a raid ou com o nome raid.lua [1] = { name = 'Morgaroth', type = 'weekly', days = {'friday'}, hour = 16, minu = 00 }, Só alterar o hour ou minu;
  3. Pronto; <?xml version="1.0" encoding="UTF-8"?> <stages> <config enabled="1"/> <stage minlevel="1" maxlevel="80" multiplier="500"/> <stage minlevel="81" maxlevel="100" multiplier="400"/> <stage minlevel="101" maxlevel="150" multiplier="300"/> <stage minlevel="151" maxlevel="250" multiplier="200"/> <stage minlevel="251" maxlevel="350" multiplier="150"/> <stage minlevel="351" maxlevel="400" multiplier="100"/> <stage minlevel="401" maxlevel="500" multiplier="50"/> <stage minlevel="501" maxlevel="600" multiplier="25"/> <stage minlevel="601" multiplier="0"/> </stages>
  4. <stage minlevel="251" maxlevel="350" multiplier="10"/> <stage minlevel="351" multiplier="5"/> Basta colocar 0 no multiplier <stage minlevel="351" multiplier="0"/> que ele não irá receber mais exp dps do level 350... basta procurar na pasta do seu servidor o arquivo XML que edita a exp... no meu caso que é de tibia se encontra em data/XML/stages.XML;
  5. Primeiramente o evento foi testado num servidor 8.6, TFS 0.4, sem apresentar nenhum problema. Em data/creaturescripts/scripts crie o arquivo zombieevent.lua : local config = { playerCount = 2001, -- Storage dos players que entram e sai do evento goblet = 5805, -- Troféu que vai pro vencedor do evento rewards = {2195, 2152, 2160}, -- Recompensas. moneyReward = {2160, 10, 1}, -- {moneyId, quantidade, usar}1 pra usar 0 pra não usar} -- Area que o zumbi vai spawnar fromPosition = {x = 543, y = 578, z = 7}, -- top de fromPosition até toPosition = {x = 577, y = 600, z = 7} -- em baixo toPostion } function onStatsChange(cid, attacker, type, combat, value) if isPlayer(cid) and isMonster(attacker) then if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then if getGlobalStorageValue(config.playerCount) >= 2 then doBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED) local corpse = doCreateItem(3058, 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) setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)-1) elseif getGlobalStorageValue(config.playerCount) == 1 then if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then doBroadcastMessage(getPlayerName(cid) .. " won the Zombie event! Congratulations!", MESSAGE_STATUS_WARNING) local goblet = doPlayerAddItem(cid, config.goblet, 1) doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(cid) .. " for winning the Zombie event.") local corpse = doCreateItem(3058, 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) for _,items in ipairs(config.rewards) do doPlayerAddItem(cid, items, 1) end if config.moneyReward[3] == 1 then doPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2]) end end for x = config.fromPosition.x, config.toPosition.x do for y = config.fromPosition.y, config.toPosition.y do for z = config.fromPosition.z, config.toPosition.z do areapos = {x = x, y = y, z = z, stackpos = 253} getMonsters = getThingfromPos(areapos) if isMonster(getMonsters.uid) then doRemoveCreature(getMonsters.uid) end end end end end return false end end return true end Na mesma pasta em login.lua antes do ultimo return true adicione : registerCreatureEvent(cid, "zombieevent") Agora em data/creaturescripts adicione em creturescripts.XML : <!-- ZOMBIE EVENT --> <event type="statschange" name="zombieevent" event="script" value="zombieevent.lua"/> Agora vamos em data/monster crie uma pasta com o nome ZombieEvent e dentro dessa pasta crie o arquivo chamado event zombie.XML : <?xml version="1.0" encoding="UTF-8"?><monster name="Event Zombie" nameDescription="an event zombie" race="undead" experience="280" speed="100" manacost="0"> <health now="500" max="500"/> <look type="311" corpse="9875"/> <targetchange interval="5000" chance="50"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="0"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="2000" min="-35000" max="-35000"/> </attacks> <defenses armor="15" defense="10"/> <immunities> <immunity paralyze="1"/> <immunity invisible="1"/> </immunities> <voices interval="5000" chance="10"> <voice sentence="You wont last long!"/> <voice sentence="Mmmmh.. braains!"/> </voices> <loot> <item id="2148" countmax="1" chance="100000"/><!-- gold coin --> </loot> </monster> voltando pra pasta data/monster abra o arquivo monsters.XML e adicione : <!-- ZombieEvent --> <monster name="event zombie" file="ZombieEvent/event zombie.xml"/> tudo ok até aqui ... então vamos pra pasta data/movements/scripts crie zombieevent.lua : local config = { playerCount = 2001, -- Storage do players do evento maxPlayers = 20, -- Maximo de players pra partiparem do evento minLevel = 17 -- Level minimo pra entrar no evento } function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if getPlayerLevel(cid) < config.minLevel then addEvent(tpBack, 1000, cid, fromPosition) doPlayerSendCancel(cid, "You need to be at least level " .. config.minLevel .. ".") return false end if getGlobalStorageValue(config.playerCount) < config.maxPlayers then setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)+1) if getGlobalStorageValue(config.playerCount) == config.maxPlayers then doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(config.playerCount) .. " players]! The event will soon start.") else doBroadcastMessage(getPlayerName(cid) .. " entered the Zombie event! Currently " .. getGlobalStorageValue(config.playerCount) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) end else addEvent(tpBack, 1000, cid, fromPosition) doPlayerSendCancel(cid, "The event is full. There is already " .. config.maxPlayers .. " players participating in the quest.") return false end print(getStorage(config.playerCount) .. " Players in the zombie event.") return true end function tpBack(cid, fromPosition) doTeleportThing(cid, fromPosition, true) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) end voltando pra data/movements abra o arquivo movements.XML e adicione : <!-- ZOMBIE event --> <movevent type="StepIn" actionid="2008" event="script" value="zombieevent.lua"/> agora vamos pra parte mais importante e que devemos mais prestar atenção... em data/globalevents/scripts crie zombieevent.lua : local config = { semana_mes = "semana", days = {1,2,3,4,5,6,7}, -- Dia das semanas que irá acontecer o evento goblet = 5805, -- Troféu que vai pro vencedor do evento rewards = {2195, 2152, 2160}, -- Recompensas. moneyReward = {2160, 10, 1},-- {moneyId, quantidade, usar}1 pra usar 0 pra não usar} playerCount = 2001, -- Storage dos players que entram e sai do evento zombieCount = 2002, -- Storage do zombie do event teleportActionId = 2008, -- Action ID do teleport teleportPosition = {x = 652, y = 1020, z = 7, stackpos = 1}, -- Onde o teleport é criado teleportToPosition = {x = 559, y = 589, z = 7}, -- Pra onde será teleportado teleportId = 1387, -- ID do teleporte timeToStartEvent = 2, -- Minutos que o portal irá ficar aberto até os player entrarem timeBetweenSpawns = 20, -- Segundos dps do evento ser startado começarem a aparecer os zombie zombieName = "event zombie", -- Nome do zombie sumonado playersNeededToStartEvent = 3, -- Players necessários pro evento ser iniciado -- Area que o zumbi vai spawnar fromPosition = {x = 543, y = 578, z = 7}, -- top de fromPosition até toPosition = {x = 577, y = 600, z = 7} -- -- em baixo toPostion } function onTime() local time = os.date("*t") if (config.semana_mes == "semana" and isInArray(config.days,time.wday)) or (config.semana_mes == "mes" and isInArray(config.days,time.day)) or config.semana_mes == "" then local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition) doItemSetAttribute(tp, "aid", config.teleportActionId) doBroadcastMessage("Zombie event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) setGlobalStorageValue(config.playerCount, 0) setGlobalStorageValue(config.zombieCount, 0) addEvent(startEvent, config.timeToStartEvent * 1000 * 60) end return TRUE end function startEvent() local fromp, top = config.fromPosition, config.toPosition if getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent then addEvent(spawnZombie, config.timeBetweenSpawns * 1000) doBroadcastMessage("Good luck in the zombie event people! The teleport has closed!", MESSAGE_STATUS_WARNING) for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do areapos = {x = x, y = y, z = z, stackpos = 253} getPlayers = getThingfromPos(areapos) if isPlayer(getPlayers.uid) then doPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. config.timeBetweenSpawns .. " seconds! Good luck!") pvgaylord() end end end end else doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING) for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do areapos = {x = x, y = y, z = z, stackpos = 253} getPlayers = getThingfromPos(areapos) if isPlayer(getPlayers.uid) then doTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false) doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT) end end end end end end function spawnZombie() if getGlobalStorageValue(config.playerCount) >= 2 then pos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z)} doSummonCreature(config.zombieName, pos) doSendMagicEffect(pos, CONST_ME_MORTAREA) setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1) doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED) addEvent(spawnZombie, config.timeBetweenSpawns * 1000) else local fromp, top = config.fromPosition, config.toPosition for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do areapos = {x = x, y = y, z = z, stackpos = 253} cid = getThingfromPos(areapos).uid if isPlayer(cid) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) doBroadcastMessage(getCreatureName(cid)..' has survived at zombie event!') for _,items in ipairs(config.rewards) do doPlayerAddItem(cid, items, 1) end if config.moneyReward[3] == 1 then doPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2]) end doBroadcastMessage(getPlayerName(cid) .. " won the Zombie event! Congratulations!", MESSAGE_STATUS_WARNING) local goblet = doPlayerAddItem(cid, config.goblet, 1) doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(cid) .. " for winning the Zombie event.") elseif isMonster(cid) then doRemoveCreature(cid) end end end end end end function pvgaylord() local fromp, top, p, m = config.fromPosition, config.toPosition, 0, 0 for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do local areapos = {x = x, y = y, z = z, stackpos = 253} local cid = getThingfromPos(areapos).uid if isPlayer(cid) then p = p+1 elseif isMonster(cid) then m = m+1 end end end end if p ~= getGlobalStorageValue(config.playerCount) then setGlobalStorageValue(config.playerCount, p) end if p < 2 then return true end addEvent(pvgaylord,100,nil) end na mesma pasta crie o arquivo fechazombie.lua : local teleportPos = {x = 652, y = 1020, z = 7, stackpos = 1} -- Posição em que se abre o teleport local teleportId = 1387 function onTimer() for i = 1, 255 do teleportPos.stackpos = i if getThingFromPos(teleportPos).itemid == teleportId then doRemoveItem(getThingFromPos(teleportPos).uid, 1) end end return true end agora em data/globalevents abra o arquivo globalevents.XML e adicione : <globalevent name="zombieevent" time="23:41" event="script" value="zombieevent.lua"/> <globalevent name="zombieventt" time="23:43" event="script" value="fechazombie.lua"/> Importante : time="Horário que irá acontecer o evento" e no fechazombie coloque 2 minutos a mais da hora que vc colocou pra iniciar, para assim fechar o teleport na hora em que o evento é startado (configuração padrão do script, se alterar lá terá que alterar aqui tb) Agora só abrir e desfrutar do seu novo sistema... Download de mapas : http://tibiaking.com...apa-modificado/ - tiago.bordin1988 http://tibiaking.com...mbie-event-v10/ - ricardo3 http://tibiaking.com...map-86-inovado/ - OhGod http://www.speedysha...ombieEvent.otbm Créditos... Fausto32 Sociopata Orochi Elf Phowned Smart Maxx

Informação Importante

Confirmação de Termo