Muito Perfeito Roksas...
Valeu parceiro s2
info
Grupo: Visconde
Registrado: 24/05/11
Posts: 391
Reputação: +102

Muito Perfeito Roksas...
Valeu parceiro s2
Bela idéia de sistema vo colocar no meu ot
info
Grupo: Administrador
Registrado: 08/07/05
Posts: 5.8k
Reputação: +1.4k
Gênero: Outro

Boa Roksas!
Gostei do Sistema! Perfeito mano! Obrigado ![]()
Continue trazendo sistemas bons como esse para nós ai, ahuha *-*
Valeu Roksas ![]()
info
Grupo: Visconde
Registrado: 24/11/12
Posts: 474
Reputação: +98
Gênero: Masculino

Muito Bom Roksas Rep +
info
Grupo: Herói
Registrado: 14/12/10
Posts: 3.6k
Reputação: +846
Gênero: Masculino

Obrigado galera, espero que façam bom uso, não foi muito difícil de fazer, apenas fiquei uma meia hora pensando numa lógica bem legalzinha, aqui funcionou certinho, espero que tenham boas ideias para usá-lo!
Próximas versões poderei ver se faço para Poketibia, etc ![]()
Thanks!
esse script é bem parecido com o do dalton, da vapus.
é bem legal, porém como já existe ai você poderia implementar algumas coisas a mais como por exemplo, a cada pessoa que se inscrever no torneio, no npc tem uma opção que você consiga ver todos os inscritos .. seria interessante , já fiz parecido.
info
Grupo: Visconde
Registrado: 10/02/11
Posts: 377
Reputação: +78

boa ficou show
pode ter certeza de q vou usar no meu ot =D
+ rep
info
Grupo: Herói
Registrado: 14/12/10
Posts: 3.6k
Reputação: +846
Gênero: Masculino

Não sabia que já existia, tem algo de diferente o outro deste?
Não sabia que já existia, tem algo de diferente o outro deste?
local config = {
temporaryArea = {
{x = 997, y = 1013, z = 7}, -- northwest corner of area where players must stand in order to join the event
{x = 1001, y = 1015, z = 7} -- south east corner
},
arenaArea = {
{x = 1003, y = 1009, z = 7}, -- nw corner of arena
{x = 1015, y = 1019, z = 7}, -- se corner of arena
{x = 1009, y = 1014, z = 7} -- center of arena
},
minPlayers = 2, -- min players required to start the battle
prize = {2160, 5467} -- rewards
}
function onThink(interval, lastExecution, thinkInterval)
local players, arenaPlayers = {}, {}
for x = (config.temporaryArea)[1].x, (config.temporaryArea)[2].x do
for y = (config.temporaryArea)[1].y, (config.temporaryArea)[2].y do
for z = (config.temporaryArea)[1].z, (config.temporaryArea)[2].z do
if(isPlayer(getTopCreature({x = x, y = y, z = z}).uid)) then
table.insert(players, getTopCreature({x = x, y = y, z = z}).uid)
end
end
end
end
for x = (config.arenaArea)[1].x, (config.arenaArea)[2].x do
for y = (config.arenaArea)[1].y, (config.arenaArea)[2].y do
for z = (config.arenaArea)[1].z, (config.arenaArea)[2].z do
if(isPlayer(getTopCreature({x = x, y = y, z = z}).uid)) then
table.insert(arenaPlayers, getTopCreature({x = x, y = y, z = z}).uid)
end
end
end
end
if(table.maxn(arenaPlayers) == 1) then
doTeleportThing(arenaPlayers[1], getPlayerMasterPos(arenaPlayers[1]))
doSendMagicEffect(getPlayerMasterPos(arenaPlayers[1]), CONST_ME_TELEPORT)
doPlayerSendTextMessage(arenaPlayers[1], MESSAGE_STATUS_CONSOLE_BLUE, "You win a battle and recived your reward.")
doPlayerAddItem(arenaPlayers[1], (config.prize)[math.random(1, table.maxn(config.prize))], 1)
elseif(table.maxn(arenaPlayers) < 1) then
if(table.maxn(players) >= config.minPlayers) then
for i = 1, config.minPlayers do
doTeleportThing(players[i], (config.arenaArea)[3])
doSendMagicEffect((config.arenaArea)[3], CONST_ME_TELEPORT)
doPlayerSendTextMessage(players[i], MESSAGE_STATUS_WARNING, "The battle begins. Survive for glory!")
end
end
end
return true
end
Mais complexo, enfim .. tente adicionar os nomes dos participantes .. ou então faça assim por categoria para evitar que um level 300 lute com level 100 .. seria interessante ![]()
desculpem por postar aqui Galera queria saber pq quando coloco area no logout em um canto o player n fica com battle exemplo:
ele n consegue logar mais n fica com battle queria saber como colocar para ficar com battle quero colocar um evento no meu ot mais
meu servidor tem um sistema !ir que so pode viajar sem battle ai se o tile ficar sem battle ele vai conseguir fujir do evento Vlw
Do rep + pra quem me ajudar!
info
Grupo: Herói
Registrado: 14/12/10
Posts: 3.6k
Reputação: +846
Gênero: Masculino

Jose, no evento, se ele atacar outra pessoa ele vai ficar com battle, não há nem como ele usar o comando "!ir" ![]()
~~
Galera, aguardem próximas versões ![]()
mais to falando do evento battlefield
se o player n gosta to time que entrou ele da /ir e entra portal d novo queria que qnd ele entra-se no portal ja fica-se com battle que n pode-se logar e tals
info
Grupo: Herói
Registrado: 14/12/10
Posts: 3.6k
Reputação: +846
Gênero: Masculino
Iaaae galera suave braaits ? Hoje venho trazer para vocês um sistema de Torneio, mas, como funciona?
Vários players entram numa sala, falando com o NPC (tem horário configurável para poder falar), e para poder participar deve pagar uma quantia, ao pagar você é teleportado á Arena aonde começa a batalha.
O último que sobreviver vence
Vamos á instalação?
~~
Vá em data/npc, copie algum arquivo .XML da pasta e cole, renomeie para Tournament,
cole isso dentro:
<?xml version="1.0" encoding="UTF-8"?> <npc name="Tournament" script="tournament.lua" walkinterval="2000" floorchange="0"> <health now="150" max="150"/> <look type="128" head="20" body="100" legs="50" feet="99" corpse="2212"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|. If you want to participate in the tournament say: {torneio} or {enter}."/> </parameters> </npc>Ok, agora vá em data/npc/scripts, copie algum arquivo dessa pasta e cole, renomeie para tournament, cole isso:
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 cid local cfg = { price = 100, -- Money to sign in tournament startPos = {x = 1016, y = 1025, z = 7}, -- Posição central da sala de torneio hour = "18:00:00", -- Hour to start maxhour = "18:15:00", -- Max to start } if msgcontains(msg, 'torneio') or msgcontains(msg, 'enter') then selfSay('You want to participate in the tournament by '..cfg.price..' gps / dollars?', cid) talkState[talkUser] = 2 elseif talkState[talkUser] == 2 then if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then if os.date("%X") < cfg.hour or os.date("%X") > cfg.maxhour then selfSay('Registration for the tournament finished, come back later.', cid) return true end if doPlayerRemoveMoney(cid, cfg.price) then doTeleportThing(cid, {x = 1007, y = 1018, z = 7}) doPlayerSendTextMessage(cid, 27, "Welcome to the tournament, the fights will start on time, good luck, hahaha!") else selfSay('You do not have enough money ('..cfg.price..').', cid) end else selfSay('Sure you do not want to participate? Okay, see you next time!!', cid) talkState[talkUser] = 0 end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())local cfg = { price = 100, -- Money to sign in tournament startPos = {x = 1016, y = 1025, z = 7}, -- Posição central da sala de torneio hour = "18:00:00", -- Hour to start maxhour = "18:15:00" -- Max to start }Price é o preço que paga para entrar no Torneio, startPos é as coordenadas do meio da sala de Torneio, e Hour é a hora do dia que começa, o Torneio no caso é diário, mude o horário de "18:00:00" para o horário desejado, entre aspas e no formato 00:00:00! Já o maxhour determina até quando o NPC vende inscrições, no caso coloquei por 15 minutos.
Agora vamos configurar a alavanca e o baú do vencedor! Vá em data/lib, abra o arquivo 050-function.lua ou function.lua, vá até a última linha de todas, pule 2 linhas e cole isso:
function getPlayersInArea(area) local players = {} for x = area.fromx,area.tox do for y = area.fromy,area.toy do for z = area.fromz,area.toz do local m = getTopCreature({x=x, y=y, z=z}).uid if m ~= 0 and isPlayer(m) then table.insert(players, m) end end end end return players endEssa é a lib que usaremos no nosso Torneio, muito bem, agora vá em data/actions/scripts, copie algum arquivo desta pasta e cole, renomeie para tournament e cole isso dentro:
function onUse(cid, item, frompos, item2, topos) local cfg = { salaAward = {x = 1016, y = 1014 , z = 7}, -- Coordenates of the award place } local area = {fromx = 1008, fromy = 1018, fromz = 7, tox = 1025, toy = 1033, toz = 7} -- Positions local check = getPlayersInArea(area) local maxhour = "18:15:00" if #check > 1 then doPlayerSendTextMessage(cid, 27, "Before everything ends up with other players!!") return true end if os.date("%X") < maxhour then doPlayerSendTextMessage(cid, 27, "Wait for all participants enter the arena!") return true end doTeleportThing(cid, cfg.salaAward) doPlayerSendTextMessage(cid, 20, "Congratulations, you won, take your prize in this room.") doBroadcastMessage("The player "..getCreatureName(cid).." wins the Tournament! Congratulations.", MESSAGE_STATUS_CONSOLE_RED) endlocal cfg = { salaAward = {x = 1016, y = 1014 , z = 7}, -- Coordenates of the award place }salaAward, coloque as coordenadas da sala de prêmio do vencedor do Torneio!
local area = {fromx = 1008, fromy = 1018, fromz = 7, tox = 1025, toy = 1033, toz = 7}fromx - fromy - fromz, coloque as coordenadas (X,Y e Z) do canto superior esquerdo da sala de Torneio, e tox - toy - toz, coloque as coordenadas (X, Y e Z) do canto inferior direito da sala de Torneio.
local maxhour = "18:15:00", coloque igual ao script do NPC!
Na mesma pasta crie outro arquivo, mas agora com o nome de tournamentchest e adicione isso dentro:
function onUse(cid, item, frompos, item2, topos) local cfg = { awardId = 2148, -- Item ID of winner prize awardAmount = 100, -- Amount of item ID } doPlayerAddItem(cid, cfg.awardId, cfg.awardAmount) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doPlayerSendTextMessage(cid, 27, "Thanks for sign, added +1 Tournament Points!") return true endlocal cfg = { awardId = 2148, -- Item ID of winner prize awardAmount = 100, -- Amount of item ID }awardId coloque o ID do item que vai receber ao ganhar o Torneio, e awardAmount a quantidade!
Em actions.xml adicione essas tags:
Muito bem, dirija-se á data/creaturescripts/scripts, copie algum arquivo da pasta e cole, renomeie para tournamentdeath, e adicione isso dentro:
local cfg = { leftPos = {x = 1008, y = 1018, z = 7}, rightPos = {x = 1025, y = 1033, z = 7}, } function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if isInRange(getCreaturePosition(pid), cfg.leftPos, cfg.rightPos) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doCreatureAddHealth(cid, getCreatureMaxHealth(cid), 65535, 256, true) doCreatureAddMana(cid, getCreatureMaxMana(cid)) doRemoveConditions(cid, false) return false end return true end
local cfg = { leftPos = {x = 1008, y = 1018, z = 7}, rightPos = {x = 1025, y = 1033, z = 7}, }leftPos coloque as coordenadas do canto superior esquerdo da Sala de Torneio, e rightPos coloque o canto inferior direito da sala
Agora em creaturescripts.xml adicione essa tag:
Prontinho galera, agora apenas adicione ACTION ID 13549 na alavanca e UNIQUE ID 5531 no baú do campeão
Download Mapa Tournament (Tibia) - 4shared
Editado Abril 21 por Roksas