Postado Junho 24, 2018 7 anos Olá, estou tentando criar um evento PvP mas não esta funcionando então decidi recorrer ao TK, preciso que o script abaixo funcione.. Nele eu precisaria que fosse automatico todos os dias as 14:00 aparece um um TP e um broadcast dizendo "Jogador X entrou no evento PvP" este tp leva a uma sala de espera que quando acabar o tempo de espera (obvio) ele te manda até a arena para que o ultimo sobrevivente ganhe 1500 itens do id 2160, e 300 do id 824 logo após ser enviado ao templo. Aqui esta a script que eu estava usando, mas não esta automatizado e também não esta funcionando corretamente. Spoiler function onSay(cid, words, param) if getGlobalStorageValue(24658) >= 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Evento Já esta Online.") end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Evento Acabou de Ser Ativado.") local tempo_espera = 60 * 1000 -- ALTERAR tempo de espera na sala, 1 minuto doBroadcastMessage("Evento PVP foi Ativado.",22) -- ALTERAR frase que aparece para todos quando usar o comando setGlobalStorageValue(24658, 0) -- ALTERAR storage usado no sistema, deixar todos iguais addEvent( function () local pos_templo = {x = 1028, y = 915, z = 6} -- ALTERAR coordenada do templo do seu ot server doBroadcastMessage("Evento Iniciado.",22) -- ALTERAR frase quando todos forem para a arena setGlobalStorageValue(24658, 1) -- ALTERAR storage usado no sistema, deixar todos iguais local players = getPlayersOnline() local i = 1 local total_player = 0 while i <= #players do local pos_player = getPlayerPosition(players) local pos1_espera = {x = 1002, y = 800, z = 12} -- ALTERAR pos do canto superior esquerdo da sala de espera local pos2_espera = {x = 1016, y = 809, z = 12} -- ALTERAR pos do canto inferior direito da sala de espera if pos_player.x >= pos1_espera.x and pos_player.y >= pos1_espera.y and pos_player.x <= pos2_espera.x and pos_player.y <= pos2_espera.y then total_player = total_player + 1 end i = i + 1 end i = 1 if total_player <= 1 then doBroadcastMessage("Evento Cancelado, Players Insuficientes.",22) -- ALTERAR Frase de evento cancelado por falta de players setGlobalStorageValue(24658, -1) -- ALTERAR storage usado no sistema, deixar todos iguais while i <= #players do local pos_player = getPlayerPosition(players) local pos1_espera = {x = 1002, y = 800, z = 12} -- ALTERAR pos do canto superior esquerdo da sala de espera local pos2_espera = {x = 1016, y = 809, z = 12} -- ALTERAR pos do canto inferior direito da sala de espera if pos_player.x >= pos1_espera.x and pos_player.y >= pos1_espera.y and pos_player.x <= pos2_espera.x and pos_player.y <= pos2_espera.y then doTeleportThing(players, pos_templo) end i = i + 1 end return TRUE end while i <= #players do local pos_player = getPlayerPosition(players) local pos1_espera = {x = 1002, y = 800, z = 12} -- ALTERAR pos do canto superior esquerdo da sala de espera local pos2_espera = {x = 1016, y = 809, z = 12} -- ALTERAR pos do canto inferior direito da sala de espera local pos_arena = {x = 1095, y = 963, z = 12} -- ALTERAR do inicio da arena if pos_player.x >= pos1_espera.x and pos_player.y >= pos1_espera.y and pos_player.x <= pos2_espera.x and pos_player.y <= pos2_espera.y then doTeleportThing(players, pos_arena) doPlayerSendTextMessage(players, MESSAGE_STATUS_CONSOLE_BLUE, "Batalhe pela sua vida.") -- ALTERAR frase que vai aparecer para o player quando ele entrar na arena end i = i + 1 end end ,tempo_espera) return true end Editado Junho 24, 2018 7 anos por King Laker (veja o histórico de edições) Olá, que tal dar uma olhada no meu projeto? https://discord.gg/bsNkbsyJ3W
Postado Junho 24, 2018 7 anos Solução Terá que fazer algo parecido com o sitema de torneio usado em poketibia muda isso aqui no config.lua: Spoiler worldType = "pvp-enforced"protectionLevel = 1 data/lib adicione um arquivo .lua e renomeie para Torneio.lua e coloque dentro Spoiler torneio = {awardTournament = 2160,---- PremioawardAmount = 1500,---- quantia do PremioplayerTemple = {x = 1096, y = 1009, z = 7}, ---- posiçao do TemplotournamentFight = {x = 909, y = 978, z = 7}, ----- Area (Mapa) do torneioarea = {fromx = 899, fromy = 968, fromz = 7, tox = 919, toy = 989, toz= 7},---- fromx = 899, fromy = 968, fromz = 7 : posiçao superior a esquerda do Mapa do torneio /// tox = 919, toy = 989, toz= 7 : Posiçao inferior direito do Mapa do TorneiowaitPlace = {x = 992, y = 998, z = 7}, ---- Sala de Espera (Coloque No-logout na area)waitArea = {fromx = 987, fromy = 993, fromz = 7, tox = 997, toy = 1003, toz= 7}, ---- fromx = 899, fromy = 968, fromz = 7 : posiçao superior a esquerda do Mapa Sala de espera /// tox = 919, toy = 989, toz= 7 : Posiçao do Mapa sala de espera (piso)startHour = "14:00:00", ---- Hora que Inicia as Iscriçoes do TorneioendHour = "14:05:00", ----- Hora que Começa a Batalhaprice = 10000, ------ Custo para se inscrever no torneio}function getPlayersInArea(area)local players = {}for x = area.fromx,area.tox dofor y = area.fromy,area.toy dofor z = area.fromz,area.toz dolocal m = getTopCreature({x=x, y=y, z=z}).uidif m ~= 0 and isPlayer(m) thentable.insert(players, m)endendendendreturn playersend vai em Globaleevents adicione Torneio.lua e dentro dele coloque Spoiler function onTimer()if #getPlayersInArea(torneio.area) > 1 thendoBroadcastMessage("[Torneio] O torneio desta vez não teve vencedor, tentar na próxima vez!") return true end for _, pid in ipairs(getPlayersInArea(torneio.waitArea)) dodoTeleportThing(pid, torneio.tournamentFight)doPlayerSendTextMessage(pid, 21, "[Torneio] O torneio começou, e que vença o melhor ! HEHEHEHE.") -- mensagem de inicio do eventoendreturn trueend Adicione a tag em globalevents.xml Spoiler <globalevent name="TournamentStart" time="14:05" event="script" value="Torneio.lua"/> vai em Actions adicione Torneio.lua e dentro: Atençao: Voce faz uma area do Torneio no Map editor e Coloca PVP-Zone no Mapa editor e coloca uma Alavanca com a uid "18279" Spoiler function onUse(cid, item)if #getPlayersInArea(torneio.area) > 1 thendoPlayerSendTextMessage(cid, 20 ,"Somente o Ultimo Sobrevivente poderar Usar essa Alavanca") return true enddoTeleportThing(cid, torneio.playerTemple)doPlayerSendTextMessage(cid, 21, "[Torneio] Jovem Treinador Parabéns, você ganhou o torneio e ganhou ["..getItemNameById(torneio.awardTournament).."] .")setPlayerStorageValue(cid,130131,getPlayerStorageValue(cid,130131)+1)doPlayerSendTextMessage(cid,MESSAGE_EVENT_ORANGE,"[Torneio-Score] Voce Agora Tem ["..(getPlayerStorageValue(cid,130131) + 1).."] Torneio SCORES.")doPlayerAddItem(cid, torneio.awardTournament, torneio.awardAmount) doPlayerAddItem(cid, 824, 300)return trueendend Em Actions.xml adcione a tag Spoiler <action uniqueid="18279" event="script" value="Torneio.lua"/> Agora o NPC TORNEIO. em data/NPC adicione um xml, renomeie para o nome desejado e coloque Spoiler <?xml version="1.0" encoding="UTF-8"?><npc name="Tournament" script="Torneio.lua" walkinterval="2000" floorchange="0"><health now="150" max="150"/><look type="664" head="20" body="100" legs="50" feet="99" corpse="2212"/>]<parameters><parameter key="message_greet" value="Ola |PLAYERNAME|. Voce Gostaria de Participar de Um torneio? Digite [torneio/enter] !."/></parameters></npc> em NPC/SCRIPTS/seunpc.lua Spoiler local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} 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 creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cidif msgcontains(msg, 'torneio') or msgcontains(msg, 'enter') thenselfSay('Você quer participar do torneio por ['..torneio.price..'] dollars? [Sim/Yes]', cid) talkState[talkUser] = 2 elseif talkState[talkUser] == 2 thenif msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then if os.date("%X") < torneio.startHour or os.date("%X") > torneio.endHour thenselfSay('As inscrições para o torneio terminaram, volte Amanha AS 14:00 para nova inscriçao!.', cid) return true end if doPlayerRemoveMoney(cid, torneio.price) then doTeleportThing(cid, torneio.waitPlace) setPlayerStorageValue(cid,130130,1)doPlayerSendTextMessage(cid, 21, "Bem-vindo, esta é a sala de espera, você espera aqui enquanto o torneio não começa. hora de início: {"..torneio.endHour.."}.") elseselfSay('Voce nao Tem Dinheiro ('..torneio.price..').', cid) end elseselfSay('Voce nao quer participar do Torneio? Vem no Proximo Dia / Todos os Dias as [11:35]!', cid) talkState[talkUser] = 0 end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Já configurei para o horário e os premios que voce quer! Areas em AZUL é onde voce PODE MUDAR Areas em VERMELHO é onde voce DEVE MUDAR FusionPoké Estará aberto este mês para testes ! Curta A Page e Fique Por Dentro Das Novidades Do Servidor! Like Aqui!
Postado Junho 24, 2018 7 anos Autor Spoiler area = {fromx = 899, fromy = 968, fromz = 7, tox = 919, toy = 989, toz= 7},---- fromx = 899, fromy = 968, fromz = 7 : posiçao superior a esquerda do Mapa do torneio /// tox = 919, toy = 989, toz= 7 : Posiçao inferior direito do Mapa do TorneiowaitPlace = {x = 992, y = 998, z = 7}, ---- Sala de Espera (Coloque No-logout na area)waitArea = {fromx = 987, fromy = 993, fromz = 7, tox = 997, toy = 1003, toz= 7}, ---- fromx = 899, fromy = 968, fromz = 7 : posiçao superior a esquerda do Mapa Sala de espera /// tox = 919, toy = 989, toz= 7 : Posiçao do Mapa sala de espera (piso) como configuro a area? esse tox = 919, toy = 989, toz = 7.. me deixaram confuso Olá, que tal dar uma olhada no meu projeto? https://discord.gg/bsNkbsyJ3W
Postado Junho 24, 2018 7 anos Voce tem que ajustar as coordenadas para que formem um QUADRADO em volta da arena e sala de espera. fromx = Canto superior fromx = Da posição X (eixo x no mapa) tomx = Canto inferior tomx = Até A posição X (eixo no mapa) o mesmo fuciona para os demais, o Z são os andares da arena em waitPlace = {x = 992, y = 998, z = 7}, ---- Sala de Espera (Coloque No-logout na area) é o para a posição na sala de espera que o player sera teleportado FusionPoké Estará aberto este mês para testes ! Curta A Page e Fique Por Dentro Das Novidades Do Servidor! Like Aqui!
Postado Junho 24, 2018 7 anos Autor @J.L saquei.. obrigado ja vou testar 3 horas atrás, J.L disse: vai em Actions adicione Torneio.lua e dentro: Atençao: Voce faz uma area do Torneio no Map editor e Coloca PVP-Zone no Mapa editor e coloca uma Alavanca com a uid "18279" Spoiler [14:35:07.909] [Error - LuaInterface::loadFile] data/actions/scripts/Torneio.lua:16: '<eof>' expected near 'end' [14:35:07.910] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/Torneio.lua) [14:35:07.910] data/actions/scripts/Torneio.lua:16: '<eof>' expected near 'end' deu esse erro na action Olá, que tal dar uma olhada no meu projeto? https://discord.gg/bsNkbsyJ3W
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.