Muiitoo bom cara! obrigado por compartilhar com o pessoal do XTibia
- Fórum
- OTServ
- Recursos
- Scripting
- Globalevents e Spells
- [TFS 1.2] Evento Jogos Vorazes (com mapa)
[TFS 1.2] Evento Jogos Vorazes (com mapa)
Por DeCarvalho, 02 de ago. de 2015 em Globalevents e Spells
info
Grupo: Marquês
Registrado: 24/12/09
Posts: 1k
Reputação: +326
Gênero: Masculino
Char no Tibia: Necromanser

info
Grupo: Infante
Registrado: 27/01/13
Posts: 1.7k
Reputação: +104
Gênero: Masculino

Opa, amigo você poderia passar o mapa para 8.60? tentei abrir mas deu unsupported version
info
Grupo: Barão
Registrado: 28/10/10
Posts: 206
Reputação: +65
Char no Tibia: Mage Junkie

Muiitoo bom cara! obrigado por compartilhar com o pessoal do XTibia
Muito Obrigado ![]()
Opa, amigo você poderia passar o mapa para 8.60? tentei abrir mas deu unsupported version
iai fera, faz assim, abre um mapa novo e ir em file>import>import map
info
Grupo: Infante
Registrado: 27/01/13
Posts: 1.7k
Reputação: +104
Gênero: Masculino

Opa, deu certo obrigado.
info
Grupo: Administrador
Registrado: 08/07/05
Posts: 5.8k
Reputação: +1.4k
Gênero: Outro

Caramba!! Show de bola cara ![]()
info
Grupo: Barão
Registrado: 28/10/10
Posts: 206
Reputação: +65
Char no Tibia: Mage Junkie

Opa, deu certo obrigado.
Que bom ![]()
Caramba!! Show de bola cara
É muito maneiro.. apesar de eu não saber criar, gosto de procurar coisas interessantes pois sei que muita gente não procura por não saber ingles/espanhol ou por não ter intimidade com o 'computador'
.~^ mesmo que um ou 2 comentários, e umas curtidas já da uma animada em saber que não é tempo 'perdido'
estar garimpando os forums gringos em busca de 'coisas' interessantes ![]()
Grato pelos reps e comments ![]()
Editado Agosto 3 por DeCarvalho
info
Grupo: Herói
Registrado: 01/05/08
Posts: 2.6k
Reputação: +536
Gênero: Masculino

Muito legal esse evento, obrigado por compartilhar conosco!
info
Grupo: Lorde
Registrado: 17/01/09
Posts: 2.1k
Reputação: +395
Char no Tibia: Adra Sata

seria dahora transformar esse evento em um mod bem legal. tipo war system .. haha'
info
Grupo: Barão
Registrado: 28/10/10
Posts: 206
Reputação: +65
Char no Tibia: Mage Junkie

Muito legal esse evento, obrigado por compartilhar conosco!
maneiro mesmo ![]()
seria dahora transformar esse evento em um mod bem legal. tipo war system .. haha'
Agora basta alguém com conhecimento para tal e com vontade de fazê-lo ![]()
info
Grupo: Visconde
Registrado: 24/07/09
Posts: 356
Reputação: +28
Gênero: Masculino

Deu um erro aqui:

Me ajuda :v
info
Grupo: Barão
Registrado: 28/10/10
Posts: 206
Reputação: +65
Char no Tibia: Mage Junkie

Eu não posso dar suporte pois não entendo, eu trouxe o sistema, testei aqui e não tive problema.. posso primeiramente pensar que você pode estar usando alguma versão abaixo de 1.1 e/ou 'copiou' algo errado e/ou fez alguma alteração..
Caso esteja usando realmente o 1.2 mais novo, me informe o que fez para eu tentar replicar aqui e informar ao karain para poder ter um suporte correto..
Grato e desculpe
// Acabei de ver que você postou o erro lá no tópico dele
vou acompanhar para que caso seja resolvido eu possa 'atualizar' aqui o post (caso seja necessário)
// script hunger.lua em creaturescripts/scripts atualizado ... o erro acima citado se deve ao fato de um player atacar outro antes do evento começar.. mas ja havia sido corrigido, eu não atualizei pois não havia changelog no post principal do Karain..
script atualizado com a nova versão..
Editado Agosto 8 por DeCarvalho
info
Grupo: Barão
Registrado: 28/10/10
Posts: 206
Reputação: +65
Char no Tibia: Mage Junkie

Em 30/08 o usuário Mokerhamer apareceu com uma solução para o problema que fazia com que alguns players não conseguissem recuperar os items após o evento, adicionando uma função clone, então funciona abrindo ou não o dp antes do evento.. estou sem pc novamente então não pude testar e o Karain até o momento não se pronunciou, de qualquer maneira parece promissor então vou colocar aparte. alterem por conta e risco.
Altere a função player:getbackitems do código no arquivo hunger.lua em globalevents/scripts por este
function Player:getBackItems() -- function to clear the player's inventory local depotpos = Tile(Position(depotbox.x, depotbox.y, depotbox.z)):getItemByType(ITEM_TYPE_DEPOT) local depotid = getDepotId(depotpos:getUniqueId()) local depot = self:getDepotChest(depotid,true) local box = depot:getItem(0) for i= box:getSize()-1, 0, -1 do local item = box:getItem(i) if item then item:clone():moveTo(self) end end box:remove() --unqued this function to clean the depot after duplicating it to player. end
Post principal atualizado com a informação referente.. Caso alguma novidade apareça o mesmo será atualziado novamente e quantas vezes forem necessárias.
Grato
[edit]@Lumus uma vez você havia comentado que muitas vezes mesmo acessando o dp o problema ocorria.. não sei se você teria o sistema ai ainda, mas se tiver seria interessante dar uma testada
o Moker informa que com esse update o sistema esta agora 100%.. caso teste, ficaria grato por um feedback
traz mais credibilidade :3 :V
Editado Agosto 30 por DeCarvalho
Finciona para TFS 1.0?








info
Grupo: Barão
Registrado: 28/10/10
Posts: 206
Reputação: +65
Char no Tibia: Mage Junkie
Bem bem bem bem.. venho trazer aqui um sistema/script seja la como quiser chamar que me chamou bema a tenção por ser bem interessante.. Feito pelo Karain (qual pedi autorização para repostar).. inicialmente havia sido feito para 0.4, inspirado num mini game para mc mas com a tendência de mudança e pedidos da comunidade o mesmo foi atualizado..
Não me peçam 0.4 pois ele não disponibilizou.. e bem.. atualizem-se né... eu não suporto 0.4
(para quem não entende, não suporto de não apóio).~> Sobre o sistema - Como funciona <~.
Primeiramente, se o jogador decidir se juntar a lista de espera do evento ele irá utilizar o comando !join hunger games e pronto.. estará na lista de espera.
Depois de um tempo e quantidade de players para o evento (ambos configuráveis), assim que o evento começar eles serão teleportados para um local; terão todos seus items removidos de forma segura para um depot (configurável)
Em cada mapa haverá chests que tem uma chance (random) de conter alguns items, o player precisa encontrar e coletar com intenção de sobreviver e ser o último player vivo. Premio configurável
.~> Mapa<~.
o mapa não foi feito pelo Karain, caso você seja dono do mapa e tenha como provar, por favor informe para que seu nome seja colocado nos créditos
Download Do Mapa Aqui
P.s.: não sei colocar scan nem como faz, se for preciso scan alguém faz por favor que eu edito o post
Bug conhecido (mas acho que para server que não fique reiniciando isso não venha a ser um problema..) não testei essa parte para ver o que realmente ocorre.. //
[edit]Código para correção do bug (não oficial) após o hunger.lua do global events[/edit]
Changelog
.~> Códigos <~.
Em globalevents/globalevents.xml
Crie um arquivo chamado hunger.lua em globalevents/scripts e cole isso
currentgameid = 201 killstreak = 60013 depotbox= {x=700,y=760,z=5} --location of a depot box, recommended to be accessible by players incase of bugs or crashes game = {{name="Hunger Games Arena 1", cheststartid=60100, minplayers=8, maxplayers=16, chests=299, startpos={ {x = 814, y = 760, z = 7}, {x = 809, y = 758, z = 7}, {x = 807, y = 753, z = 7}, {x = 809, y = 748, z = 7}, {x = 814, y = 746, z = 7}, {x = 819, y = 748, z = 7}, {x = 821, y = 753, z = 7}, {x = 819, y = 758, z = 7}, {x = 811, y = 759, z = 7}, {x = 808, y = 756, z = 7}, {x = 808, y = 750, z = 7}, {x = 811, y = 747, z = 7}, {x = 817, y = 747, z = 7}, {x = 820, y = 750, z = 7}, {x = 820, y = 756, z = 7}, {x = 817, y = 759, z = 7} } }, { name="Hunger Games Arena 2", cheststartid=61100, minplayers=2, maxplayers=4, chests=299, startpos={ {x = 1036, y = 910, z = 6}, {x = 1032, y = 906, z = 6}, {x = 1036, y = 902, z = 6}, {x = 1040, y = 906, z = 6} } }, { name="Hunger Games Arena 3", cheststartid=62100, minplayers=4, maxplayers=8, chests=299, startpos={ {x = 1047, y = 1158, z = 7}, {x = 1048, y = 1158, z = 7}, {x = 1052, y = 1158, z = 7}, {x = 1053, y = 1158, z = 7}, {x = 1047, y = 1167, z = 7}, {x = 1048, y = 1167, z = 7}, {x = 1052, y = 1167, z = 7}, {x = 1053, y = 1167, z = 7} } } } availablearenas = {1,2,3} -- script starts with all arenas as "available" gameplayers = {} prize = {{2160,1},{5097,10},{2128,1}} function Player:removeAllItems() -- function to clear the player's inventory local depotpos = Tile(Position(depotbox.x, depotbox.y, depotbox.z)):getItemByType(ITEM_TYPE_DEPOT) local depotid = getDepotId(depotpos:getUniqueId()) local depot = self:getDepotChest(depotid,true) local box = depot:addItem(1988) box:setAttribute(ITEM_ATTRIBUTE_NAME,"player gear box") for i=1,10 do local item = self:getSlotItem(i) if item then item:moveTo(box) end end end function Player:getBackItems() -- function to clear the player's inventory local depotpos = Tile(Position(depotbox.x, depotbox.y, depotbox.z)):getItemByType(ITEM_TYPE_DEPOT) local depotid = getDepotId(depotpos:getUniqueId()) local depot = self:getDepotChest(depotid,true) local box = depot:getItem(0) for i= box:getSize()-1, 0, -1 do local item = box:getItem(i) if item then item:moveTo(self) end end --box:remove() end local function teleportThing(seconds) if seconds <= 0 and #queue >= 1 then local looparenas = availablearenas -- preventing possible conflicts with looping for a,b in pairs(looparenas) do if #queue >= game[looparenas[a]].minplayers then local p = 1 while p < game[looparenas[a]].maxplayers do for i, pname in pairs(queue) do local player = Player(pname) if player then player:setStorageValue(currentgameid, looparenas[a]) local pos = Position(game[looparenas[a]].startpos[p].x, game[looparenas[a]].startpos[p].y, game[looparenas[a]].startpos[p].z) player:teleportTo(pos) player:removeAllItems() player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Welcome to The Hunger Games, Your objective is to loot, kill and be the last man standing, Good luck!") if gameplayers[looparenas[a]] == nil then gameplayers[looparenas[a]] = {} end table.insert(gameplayers[looparenas[a]], player:getName()) table.remove(queue,i) end end p = p+1 end for i = game[looparenas[a]].cheststartid, game[looparenas[a]].cheststartid+game[looparenas[a]].chests do Game.setStorageValue(i, -1) end Game.broadcastMessage(MESSAGE_EVENT_ADVANCE,"Hunger Games started in " ..game[looparenas[a]].name.."!") for k,v in pairs(availablearenas) do if v == r then table.remove(availablearenas,i) end end else for _, player in pairs(queue) do Player(player):sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, There is not enough players to start "..game[availablearenas[a]].name) end end end return true end if seconds == 60 then for _, player in pairs(queue) do Player(player):sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "The Hunger Games will begin in " .. seconds/60 .. " minute, Get Ready!") end elseif seconds % 60 == 0 and seconds ~= 60 and seconds ~= 300 and seconds < 300 then for _, player in pairs(queue) do Player(player):sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "The Hunger Games will begin in " .. seconds/60 .. " minutes!") end elseif seconds == 300 then Game.broadcastMessage(MESSAGE_EVENT_ADVANCE,"The Hunger Games will begin in " .. seconds/60 .. " minutes! To join say /join hunger games") end if seconds ~= 0 then addEvent(teleportThing, 60000, seconds - 60) end return true end function onStartup() teleportThing(60) return true endEm 30/08 o usuário Mokerhamer apareceu com uma solução para o problema que fazia com que alguns players não conseguissem recuperar os items após o evento, adicionando uma função clone, então funciona abrindo ou não o dp antes do evento.. estou sem pc novamente então não pude testar e o Karain até o momento não se pronunciou, de qualquer maneira parece promissor então vou colocar aparte. alterem por conta e risco.
Altere a função player:getbackitems do código acima por este
Em creaturescripts/creaturescripts.xml
Em creaturescripts/scripts/login.lua antes do return true
player:registerEvent("hunger")Em creaturescripts/scripts/eventlogout.lua
Em creaturescripts/scripts/hunger.lua
Em talkactions/talkactions.xml
Em talkactions/scripts/join.lua
local gamename = { "hunger games" } queue = {} function onSay(player, words, param) local id = 0 for i=1, #gamename do if param == gamename[i] then id = i end end local currentgame = player:getStorageValue(currentgameid) if (id ~= 0) then if currentgame <= 0 then for _, playerid in pairs(queue) do if player:getName() == playerid then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You are already queue for this game.") return player:getPosition():sendMagicEffect(CONST_ME_POFF) end end table.insert(queue, player:getName()) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You have queued up for "..gamename[id].." with "..#queue.." total players") return player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You are already in a game.") return player:getPosition():sendMagicEffect(CONST_ME_POFF) end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "!join hunger games") return player:getPosition():sendMagicEffect(CONST_ME_POFF) end endEm talkactions/scripts/leave.lua
Em actions/actions.xml
Em actions/scripts/hunger.lua
local tier = { { --tier1 {id =2120 , chance = 10, count = 1}, --rope {id =2554 , chance = 5, count = 1}, --shovel {id =1991 , chance = 10, count = 1}, --bag {id =1998 , chance = 5, count = 1}, --backpack {id =2376 , chance = 10, count = 1}, --sword1 {id =2409 , chance = 5, count = 1}, --sword2 {id =2461 , chance = 10, count = 1}, --helmet1 {id =2458 , chance = 5, count = 1}, --helmet2 {id =2467 , chance = 10, count = 1}, --armor1 {id =2464 , chance = 5, count = 1}, --armor2 {id =2649 , chance = 10, count = 1}, --legs1 {id =2648 , chance = 5, count = 1}, --legs2 {id =2643 , chance = 10, count = 1}, --feet1 {id =2642 , chance = 5, count = 1}, --feet2 {id =2684 , chance = 20, count = 10}, --food1 {id =2689 , chance = 20, count = 10}, --food2 {id =2691 , chance = 20, count = 10}, --food3 {id =2677 , chance = 20, count = 20}, --food4 {id =2674 , chance = 20, count = 10}, --food5 {id =2386 , chance = 10, count = 1}, --axe1 {id =2441 , chance = 5, count = 1}, --axe2 {id =2437 , chance = 10, count = 1}, --club1 {id =2398 , chance = 5, count = 1}, --club2 {id =2190 , chance = 5, count = 1}, --wand1 {id =2191 , chance = 5, count = 1}, --wand2 {id =2456 , chance = 5, count = 1}, --bow1 {id =7438 , chance = 5, count = 1}, --bow2 {id =2512 , chance = 10, count = 1}, --shield1 {id =2529 , chance = 5, count = 1}, --shield2 {id =2331 , chance = 10, count = 10}, --rune1 {id =2313 , chance = 5, count = 10}, --rune2 {id =2544 , chance = 10, count = 10}, --ammo1 {id =2545 , chance = 5, count = 10}, --ammo2 {id =8704 , chance = 10, count = 1}, --potion1 {id =7618 , chance = 5, count = 1} --potion2 }, { --tier2 {id =2392 , chance = 10, count = 1}, --sword1 {id =7385 , chance = 5, count = 1}, --sword2 {id =2460 , chance = 10, count = 1}, --helmet1 {id =2480 , chance = 5, count = 1}, --helmet2 {id =2465 , chance = 10, count = 1}, --armor1 {id =2463 , chance = 5, count = 1}, --armor2 {id =2478 , chance = 10, count = 1}, --legs1 {id =2647 , chance = 5, count = 1}, --legs2 {id =11303 , chance = 10, count = 1}, --feet1 {id =7453 , chance = 5, count = 1}, --feet2 {id =2428 , chance = 10, count = 1}, --axe1 {id =2429 , chance = 5, count = 1}, --axe2 {id =2439 , chance = 10, count = 1}, --club1 {id =2423 , chance = 5, count = 1}, --club2 {id =2188 , chance = 5, count = 1}, --wand1 {id =8921 , chance = 5, count = 1}, --wand2 {id =8857 , chance = 5, count = 1}, --bow1 {id =8855 , chance = 5, count = 1}, --bow2 {id =2524 , chance = 10, count = 1}, --shield1 {id =2525 , chance = 5, count = 1}, --shield2 {id =2288 , chance = 10, count = 10}, --rune1 {id =2274 , chance = 5, count = 10}, --rune2 {id =7364 , chance = 10, count = 10}, --ammo1 {id =15648 , chance = 5, count = 10} --ammo2 } } function onUse(player, item, fromPosition, itemEx, toPosition, isHotkey) chesttier = math.floor(((item.actionid % 1000) + 100 ) / 200) if Game.getStorageValue(item:getActionId()) ~= 1 then for a=item:getSize()-1 , 0, -1 do item:getItem(i):remove() -- cleaning any old remaining items from previous games. end for i=1,20 do percentage = math.random(1,100) randomitem = math.random(1,#tier[chesttier]) if percentage <= tier[chesttier][randomitem].chance then item:addItem(tier[chesttier][randomitem].id, math.random(1,tier[chesttier][randomitem].count)) --adding random item end end Game.setStorageValue(item:getActionId(), 1) end endCurtiu da um rep ae né.. não arranca pedaço da mão e incentiva a trazer mais.. se você for sovina e n gostar de dar rep, ao menos um obrigado ja ta bom.. pelo menos mostra que esta valendo a pena ficar procurando sistemas maneiros para trazer, pedir autorização e traduzir as informações...
[edit] para evitar problemas façam testes antes, fui informado por pm que as vezes mesmo indo ao dp antes alguns items ainda não retornam.. eu fiz um teste básico no sistema e não tive esse problema.. mas é melhor prevenir, por isso antes de colocar o sistema on no seu server façam stress test
.Certamente o Karain esta tentando resolver mas mesmo assim eu fiz um post no seu tópico perguntando sobre informações mais detalhadas sobre e se esta sendo feito algo 
[edit 08/08] Alteração no script - vide Changelog
[edit 09/08] Alteração no script - vide Changelog
[edit 30/08] Alteração para o script - vide Changelog
Editado Agosto 30 por DeCarvalho