drakylucas 160 Postado Julho 13, 2012 Share Postado Julho 13, 2012 (editado) Bom, esse sistema é requisitado por muitos donos de servidores.. sempre quando pedem as pessoas fazem e enviam por PM, por ser meio dificil... Essa é minha versão desse sistema Créditos 90% Draky Lucas (eu) 10% Vodkart (uma função que utilizei e me explicou como funcionaria o sistema, q os players nao sabem explica direito kk) O que ele é? o GM do servidor digita /arena X, onde o X é o numero de jogadores necessarios para o evento começar.. supondo que o GM digitou /arena 5: o evento criaria um teleport na posição configurada; esperaria 5 players entrarem nesse teleport (não contando os GM's.. também configuravel); assim que o 5º player entrasse, o evento esperaria um delay (configuravel) e sumonaria os bixos de cada level do evento (monstros e leveis configuraveis), e assim que criasse os monstros, contaria o mesmo delay varias veses para ir avançando de nivel (e criando mais monstros), os que sobreviverem ao ultimo nivel (configuravel) ganham premios (configuraveis). Não se morre no evento e não se adquire loot dos monstros, mas ganha exp dos monstros também! [SIM, É CONFUSO DE ENTENDER.. COLOQUE NO SERVIDOR E VEJA VOCÊ MESMO] TESTADO COM The Lost Server 8.6 (Caso dê erro de storage, é pq não sei se no TFS/Baiak tem as funçoes setStorage com esse nome, mas me avise que eu arrumo a versão TFS/BAIAK) Instalando o sistema: Mapa: Script: na pasta onde fica o executavel do server, há uma pasta chamada Mods, entre nela e crie um arquivo chamado arena.xml e nele coloque isso: [PS: Editado 01:39 - 14/07/2012 por correção de um erro ortográfico do forum que comeu um parenteses do script] <?xml version="1.0" encoding="UTF-8"?> <mod name="Arena" version="1.0" author="DrakyLucas" contact="XTibia" enabled="yes"> <config name="arena_config"><![CDATA[ config = { delay = 60, -- tempo de um level para o outro posicaoPlayer = {x = 37,y = 96,z = 7}, -- posição q o player vai cair dps de entra no TP posicaoArena = {{x = 35,y = 94,z = 7},{x = 42,y = 99,z = 7}}, premio = { {2160,70}, {2152,50}, }, -- ID, Quantidade... só aceita de 1 a 100 por vez, e você pode adicionar quantos itens quiser. storage = 15444, -- não mecha.. posicaoTp = {x = 37, y = 91, z = 7}, -- posicao que o teleporte vai aparecer acesso = 3, -- acesso minimo para ser ignorado pelo evento, e o mesmo acesso para poder inicializa-lo } -- você pode adicionar quantos leveis desejar -- [NumeroDoLevel] = {{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade}}, leveis = { [1] = {{"Dragon",5}}, [2] = {{"Dragon",5},{"Dragon Lord",2}}, [3] = {{"Dragon Lord",5}}, [4] = {{"Demodras",2},{"Demon",1}}, [5] = {{"Demon",5},{"Orshabaal",1},{"Ferumbras",1}}, } function abrirTeleport(n) doItemSetAttribute(doCreateItem(1387, config.posicaoTp), "aid", 2941) -- cria o tp e deixa aid 2941 doBroadcastMessage("O Evento arena vai começar! teleport foi aberto e faltam ".. n .. " pessoas para o evento iniciar!") doSetStorage(config.storage, n) end function fecharTPeAguardarEvento() doRemoveItem(getTileItemById(config.posicaoTp, 1387).uid,100) doBroadcastMessage("O evento ja concluio " .. #getPlayersInArena() .. " players e começará em " .. config.delay .. " segundos!") addEvent(evento,config.delay*1000,1) end function HaveCreatureArena(area, remove, clean) -- função do Vodkart 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 if clean ~= false then doCleanTile(pos, false) end end end end function resetEvento() doSetStorage(config.storage, -1) end function criarMonstros(lv) local monstro = leveis[lv] local area = {config.posicaoArena[1],config.posicaoArena[2]} for i = 1,#monstro do for k=1,monstro[i][2]do pos = {x=math.random(area[1].x,area[2].x), y=math.random(area[1].y,area[2].y), z=area[1].z} monstrinho = doCreateMonster(monstro[i][1], pos) registerCreatureEvent(monstrinho, "removerCorpse") end end end function evento(i) if #getPlayersInArena() == 0 then doBroadcastMessage("Ninguem sobreviveu a arena =/") doBroadcastMessage("EVENTO TERMINADO!") HaveCreatureArena({config.posicaoArena[1],config.posicaoArena[2]}, true, true) -- remove monstros, itens da arena resetEvento() return true end if i == (#leveis +1) then HaveCreatureArena({config.posicaoArena[1],config.posicaoArena[2]}, true, true) doBroadcastMessage("Evento finalizado, " .. #getPlayersInArena() .. " sobreviveram ao evento!") for _, pid in ipairs(getPlayersInArena()) do doPlayerSendTextMessage(pid,22,"Parabens, você sobreviveu ao evento!") addItens(pid) doTeleportThing(pid,getTownTemplePosition(getPlayerTown(pid))) end resetEvento() return true end for _, pid in ipairs(getPlayersInArena()) do doPlayerSendTextMessage(pid,22,"GoGo Nivel " .. i .. " !!!") end criarMonstros(i) addEvent(evento,config.delay*1000,i+1) end function addItens(pid) for i=1,#config.premio do doPlayerAddItem(pid,config.premio[i][1],config.premio[i][2]) end doPlayerSendTextMessage(pid,22,"Parabens, voce recebeu seus premios!") end function getPlayersInArena() local t = {} for _, pid in pairs(getPlayersOnline()) do if getPlayerAccess(pid) < config.acesso then if isInRange(getCreaturePosition(pid), config.posicaoArena[1], config.posicaoArena[2]) then table.insert(t, pid) end end end return t end ]]></config> <talkaction words="/arena" event="buffer"><![CDATA[ domodlib('arena_config') if getPlayerAccess(cid) < config.acesso then return doPlayerSendCancel(cid,"Voce nao tem acesso para esse comando") end if tonumber(param) ~= nil then -- se o parametro é numerico if tonumber(param) > 0 then doSetStorage(config.storage, param) abrirTeleport(param) end else doPlayerSendTextMessage(cid,19,"Digite /arena e um numero.. \n exemplo: \n/arena 5") end ]]></talkaction> <movevent type="StepIn" actionid="2941" event="script"><![CDATA[ domodlib('arena_config') if getPlayerAccess(cid) > config.acesso then doTeleportThing(cid, config.posicaoPlayer) return false end -- GM nao conta doSetStorage(config.storage,getStorage(config.storage) - 1) doTeleportThing(cid, config.posicaoPlayer) registerCreatureEvent(cid, "naoAtacarPlayer") registerCreatureEvent(cid, "morrerNaArena") if getStorage(config.storage) <= 0 then fecharTPeAguardarEvento() end return true ]]></movevent> <event type="login" name="VerSeTaNaArenaEExpulsa" event="script"><![CDATA[ domodlib('arena_config') if isInRange(getCreaturePosition(cid), config.posicaoArena[1], config.posicaoArena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true ]]></event> <event type="combat" name="naoAtacarPlayer" event="script"><![CDATA[ domodlib('arena_config') if isPlayer(cid) and isPlayer(target) then if isInRange(getPlayerPosition(cid), config.posicaoArena[1], config.posicaoArena[2]) and isInRange(getPlayerPosition(target), config.posicaoArena[1], config.posicaoArena[2]) then doPlayerSendCancel(cid, "Nao ataque seus amigos.") return false end end return true ]]></event> <event type="death" name="removerCorpse" event="script"><![CDATA[ domodlib('arena_config') doCreatureSay(cid,"Ninguem terá meu loot! Buaahahahha",1) pos = getCreaturePosition(cid) addEvent(doCleanTile,1,pos, false) return true ]]></event> <event type="statschange" name="morrerNaArena" event="script"><![CDATA[ domodlib('arena_config') if isInRange(getPlayerPosition(cid), config.posicaoArena[1], config.posicaoArena[2]) then if type == STATSCHANGE_HEALTHLOSS then if isPlayer(cid) then if value >= getCreatureHealth(cid) then doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid))) doPlayerSendTextMessage(pid,22,"Você morreu na arena =/.. veja pelo lado positivo, você nao perdeu nada!") doCreatureAddHealth(cid,getCreatureMaxHealth(cid) - getCreatureHealth(cid)) return false end end end end return true ]]></event> </mod> pronto, sistema adicionado.. agora vamos configurar: config = { delay = 10, -- tempo de um level para o outro posicaoPlayer = {x = 37,y = 96,z = 7}, -- posição q o player vai cair dps de entra no TP posicaoArena = {{x = 35,y = 94,z = 7},{x = 42,y = 99,z = 7}}, premio = { {2160,70}, {2152,50}, }, -- ID, Quantidade... só aceita de 1 a 100 por vez, e você pode adicionar quantos itens quiser. storage = 15444, -- não mecha.. posicaoTp = {x = 37, y = 91, z = 7}, -- posicao que o teleporte vai aparecer acesso = 3, -- acesso minimo para ser ignorado pelo evento, e o mesmo acesso para poder inicializa-lo } -- você pode adicionar quantos leveis desejar -- [NumeroDoLevel] = {{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade}}, leveis = { [1] = {{"Dragon",5}}, [2] = {{"Dragon",5},{"Dragon Lord",2}}, [3] = {{"Dragon Lord",5}}, [4] = {{"Demodras",2},{"Demon",1}}, [5] = {{"Demon",5},{"Orshabaal",1},{"Ferumbras",1}}, } Tempo entre cada level Posição que está em branco na foto Posições que estão em azul na foto Premios (copie e cole como está, mude valores, adicione mais itens.. não há um limite de premios) Posição que o TP aparecerá para os players entrarem no event Acesso minimo para dar /arena X Monstros de cada Level (Obs: você pode adicionar quantos leveis desejar para o evento) Possiveis Erros: caso dê erro citado por algumas pessoas no forum (logo abaixo) 20/07/2012 09:52:50] > Loading event.xml...[Error - ScriptingManager::loadFromXml] Cannot load mod mods/event.xml[20/07/2012 09:52:50] Line: 6, Info: Input is not proper UTF-8, indicate encoding ! [20/07/2012 09:52:50] Bytes: 0xE7 0xE3 0x6F 0x20 é porque vocês utilizam uma distro diferente da minha e incompativel com UTF-8 então mudem <?xml version="1.0" encoding="UTF-8"?> por <?xml version="1.0" encoding="ISO-8859-1"?> e tudo deverá funcionar. Correção do erro feita pelo usuario KUNGLOW obrigado pela atenção Obrigado .. EXCLUSIVO XTIBIA Editado Julho 22, 2012 por DrakyLucas Link para o comentário https://xtibia.com/forum/topic/189703-arena-sobrevivencia-event-system/ Compartilhar em outros sites More sharing options...
Vodkart 1515 Postado Julho 14, 2012 Share Postado Julho 14, 2012 até que fez rápido o sistema qndo eu tiver em casa vou testar, gostei da parte de remover o corpse do monster xD parabéns rep+ Link para o comentário https://xtibia.com/forum/topic/189703-arena-sobrevivencia-event-system/#findComment-1292413 Compartilhar em outros sites More sharing options...
beddy 118 Postado Julho 14, 2012 Share Postado Julho 14, 2012 Muito massa cara, acho que vou implementar para fazer um mini rank por DB de ganhadores do evento! Muito massa! Link para o comentário https://xtibia.com/forum/topic/189703-arena-sobrevivencia-event-system/#findComment-1292421 Compartilhar em outros sites More sharing options...
drakylucas 160 Postado Julho 14, 2012 Autor Share Postado Julho 14, 2012 comecei a faze la pas 2 e poco (hr q flei com vc vodk).. fiz ateh as 5 e poco, parei pa i pa academia, voltei e terminei de ajeita os detalhes tals, dae postei dicas de outros sistemas plz? Link para o comentário https://xtibia.com/forum/topic/189703-arena-sobrevivencia-event-system/#findComment-1292451 Compartilhar em outros sites More sharing options...
Subwat 405 Postado Julho 14, 2012 Share Postado Julho 14, 2012 aqui nao funcionou. uso o executavel do mix ot Link para o comentário https://xtibia.com/forum/topic/189703-arena-sobrevivencia-event-system/#findComment-1292462 Compartilhar em outros sites More sharing options...
drakylucas 160 Postado Julho 14, 2012 Autor Share Postado Julho 14, 2012 (editado) EDIT: Achei o erro (mais o erro foi do fórum, nao meu ¬¬).. eu salvei uma copia do meu script (q enviei no forum) e testei copiando e colando do forum... o forum apagou um parenteses na linha 122 ¬¬... é só colocar o parenteses que vai funciona.. eu atualizei aqui, copia dinovo o script e testa agora subwat EEEEEEEEEEEE Xtibianos em geral, vale lembra que só contam jogadores no evento que não são acesso acima de XX (definidos na configuração do mesmo), entao se o teleport for criado e você entrar com o GM, não irá funcionar mesmo.. crie um char normal e teste Editado Julho 14, 2012 por DrakyLucas Link para o comentário https://xtibia.com/forum/topic/189703-arena-sobrevivencia-event-system/#findComment-1292504 Compartilhar em outros sites More sharing options...
Subwat 405 Postado Julho 15, 2012 Share Postado Julho 15, 2012 ta dando a msma coisa Link para o comentário https://xtibia.com/forum/topic/189703-arena-sobrevivencia-event-system/#findComment-1292950 Compartilhar em outros sites More sharing options...
drakylucas 160 Postado Julho 15, 2012 Autor Share Postado Julho 15, 2012 se vc postasse o erro, ajudaria ¬¬ Link para o comentário https://xtibia.com/forum/topic/189703-arena-sobrevivencia-event-system/#findComment-1293195 Compartilhar em outros sites More sharing options...
RHCP 24 Postado Julho 16, 2012 Share Postado Julho 16, 2012 Não há como fazer ele funcionar por global event? ele poderia verificar o dia e automaticamente, fazer meio que o comando com um limite máximo de pessoas... Bem, só dei dica xD Link para o comentário https://xtibia.com/forum/topic/189703-arena-sobrevivencia-event-system/#findComment-1293727 Compartilhar em outros sites More sharing options...
MatheusEnjoy 70 Postado Julho 16, 2012 Share Postado Julho 16, 2012 Se foi você mesmo que escreveu o script parabéns, precisamos de mais iniciativas assim. Rep+ Vou testar depois. Link para o comentário https://xtibia.com/forum/topic/189703-arena-sobrevivencia-event-system/#findComment-1293729 Compartilhar em outros sites More sharing options...
drakylucas 160 Postado Julho 16, 2012 Autor Share Postado Julho 16, 2012 vlw... e sim, fui eu.. nao faço plagios.... ee galera se vcs duvidam q posso ser bom, eu e + 2 colegas (thalia e tk) vamos começar um projeto... logo + postarei teasers de sistemas feitos por nós Link para o comentário https://xtibia.com/forum/topic/189703-arena-sobrevivencia-event-system/#findComment-1293770 Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Julho 16, 2012 Share Postado Julho 16, 2012 quem é tk? Link para o comentário https://xtibia.com/forum/topic/189703-arena-sobrevivencia-event-system/#findComment-1293772 Compartilhar em outros sites More sharing options...
caotic 393 Postado Julho 16, 2012 Share Postado Julho 16, 2012 Muito e um script bem legal a ideia esta fastantica. Uso e abuso de de criaçoes funçoes. Fico grandinho mais esta otimo. So pela quantidade de verificaçoes nas posiçoes podem causar um pouco de laag Mais esta Incrivell. Parabens Link para o comentário https://xtibia.com/forum/topic/189703-arena-sobrevivencia-event-system/#findComment-1293775 Compartilhar em outros sites More sharing options...
drakylucas 160 Postado Julho 16, 2012 Autor Share Postado Julho 16, 2012 quem é tk? um amigo nosso... parça de old times ele num manja qse nd de scripting, mas sabe mapear bem e também da boas ideias pos servidores, alem do mais oq mais falta nesse mundo é criatividade, e ele tem muita Link para o comentário https://xtibia.com/forum/topic/189703-arena-sobrevivencia-event-system/#findComment-1293780 Compartilhar em outros sites More sharing options...
KennyConrad 5 Postado Julho 20, 2012 Share Postado Julho 20, 2012 aff adorei o sistema mais comigo não funciono da esse erro: [20/07/2012 09:52:50] > Loading event.xml...[Error - ScriptingManager::loadFromXml] Cannot load mod mods/event.xml[20/07/2012 09:52:50] Line: 6, Info: Input is not proper UTF-8, indicate encoding ! [20/07/2012 09:52:50] Bytes: 0xE7 0xE3 0x6F 0x20 ajuda ae Link para o comentário https://xtibia.com/forum/topic/189703-arena-sobrevivencia-event-system/#findComment-1296474 Compartilhar em outros sites More sharing options...
Posts Recomendados