Jump to content

Recommended Posts

Alguem Sabe o porque de não estar funcionando esse npc?? E se possivel,alguem poderia me ajudar nesse sistema,só consigo fazer a partida uma vez,na segunda buga e nao da para andar!

Arquivo do npc

 

 

 

 

https://tibiaking.com/forums/topic/10346-sistema-futebol-com-torcida-e-juiz/

 

 

Sem título.png

juiz.lua

Share this post


Link to post
Share on other sites

Nao posta os script como download, pega o codigo e poe aq


MEUS POSTS:

 

SE AJUDEI, DÁ O REP+, ESQUECE NÃO, VLW BB <3

Share this post


Link to post
Share on other sites

-- Configurações Gerais

local config = {

-- Posição que o jogadores devem estar na hora de puxar a alavanca

posJogador1 = {x=233,y=85,z=7, stackpos=1},

posJogador2 = {x=233,y=86,z=7, stackpos=1},


-- Posição inicial dos jogadores na partida

posTeleporte1 = {x=234,y=96,z=7, stackpos=1},

posTeleporte2 = {x=242,y=96,z=7, stackpos=1},


posBola = {x=238,y=96,z=7, stackpos=1}, -- Posição inicial da bola


nomeNpc = "Juiz", -- Lembrando que o npc deve existir

posNpc = {x=238,y=91,z=7, stackpos=1}, -- Posição inicial do npc


gols = 5, -- Quantidade de gols para ganhar o jogo


tempoPrePartida = 2, -- Tempo de espera para começar a partida (segundos)


quantidadeTorcedores = 7, -- Para cada equipe


-- Posição inicial em que o script irá começar preencher com os torcedores

posTorcida1 = {x=230,y=101,z=7, stackpos=1},

posTorcida2 = {x=239,y=101,z=7, stackpos=1},


-- Posição dos gols

posGol1 = {

{x=230,y=95,z=7, stackpos=1},

{x=230,y=96,z=7, stackpos=1},

{x=230,y=97,z=7, stackpos=1},

{x=230,y=98,z=7, stackpos=1}

},

posGol2 = {

{x=246,y=95,z=7, stackpos=1},

{x=246,y=96,z=7, stackpos=1},

{x=246,y=97,z=7, stackpos=1},

{x=246,y=98,z=7, stackpos=1}

}

}


local jogador1 = nil

local jogador2 = nil


local listaTorcedores1 = ""

local listaTorcedores2 = ""


local npcUid = nil


local placar = { 0,0 }


local eventoTorcida = nil

local eventoGol = nil


local function inicioJogo()

doCreatureSay(npcUid, "Valendo!", TALKTYPE_YELL)


doSendMagicEffect(config.posTeleporte1, 12)

doSendMagicEffect(config.posTeleporte2, 12)


doCreatureSetNoMove(jogador1, false)

doCreatureSetNoMove(jogador2, false)


end


local function torcida(nome1, nome2)

local chanceTorcida1 = math.random(1,2)

local chanceTorcida2 = math.random(1,2)


if(chanceTorcida1>1)then

local uids = string.explode(listaTorcedores1, ",")

local torcedor = uids[math.random(1,#uids)]

doCreatureSay(torcedor, "Vai "..nome1.."!", TALKTYPE_YELL)

end


if(chanceTorcida2>1)then

local uids = string.explode(listaTorcedores2, ",")

local torcedor = uids[math.random(1,#uids)]

doCreatureSay(torcedor, "Vai "..nome2.."!", TALKTYPE_YELL)

end


eventoTorcida = addEvent(torcida,2000, nome1, nome2)

end


local function delayMsg(msg)

doCreatureSay(npcUid, msg, TALKTYPE_YELL)

end


local function testeGol(nome1,nome2)

for i=1,#config.posGol1 do

for j=1,10 do

local testPos = {x=config.posGol1.x, y=config.posGol1.y, z=config.posGol1.z, stackpos=j}

local thing = getThingFromPos(testPos)


if(thing.itemid==2109)then

if(placar[2]==config.gols-1)then

doPlayerSendTextMessage(jogador2, MESSAGE_INFO_DESCR, "Parabéns! Você ganhou a partida.")

doPlayerSendTextMessage(jogador1, MESSAGE_INFO_DESCR, "Lamento, mas você perdeu o jogo.")


doTeleportThing(jogador1, config.posJogador1)

doTeleportThing(jogador2, config.posJogador2)


doSendMagicEffect(config.posJogador1, 12)

doSendMagicEffect(config.posJogador2, 12)


local item = doPlayerAddItem(jogador2, 5805)

doItemSetAttribute(item, "description", nome2.." conquistou este troféu apos derrotar "..nome1.." em uma partida de futebol.")


doRemoveCreature(npcUid)


stopEvent(eventoTorcida)

stopEvent(eventoGol)


local uids1 = string.explode(listaTorcedores1, ",")

local uids2 = string.explode(listaTorcedores2, ",")


for k = 1, #uids1 do

doRemoveCreature(uids1[k])

doRemoveCreature(uids2[k])

end


jogador1 = nil

jogador2 = nil


listaTorcedores1 = ""

listaTorcedores2 = ""


config.posTorcida1 = {x=76,y=165,z=7, stackpos=1}

config.posTorcida2 = {x=84,y=165,z=7, stackpos=1}


npcUid = nil


placar = { 0,0 }


else


doTeleportThing(jogador1, config.posTeleporte1)

doTeleportThing(jogador2, config.posTeleporte2)


doSendMagicEffect(config.posTeleporte1, 10)

doSendMagicEffect(config.posTeleporte2, 10)


doCreatureSetNoMove(jogador1, true)

doCreatureSetNoMove(jogador2, true)


doCreatureSetLookDirection(jogador1, 1)

doCreatureSetLookDirection(jogador2, 3)


doCreateItem(2109, 1, config.posBola)

doSendMagicEffect(config.posBola, 13)


local uids = string.explode(listaTorcedores2, ",")


for k = 1, #uids do

doCreatureSay(uids[k], "GOOOOL!", TALKTYPE_YELL)

end


placar[2] = placar[2]+1


local msg = "Gol do "..nome2.."! O placar atual é "..nome1..": "..placar[1].." e "..nome2..": "..placar[2].."."

addEvent(delayMsg,1000, msg)


msg = "A próxima rodada irá começar em cerca de "..config.tempoPrePartida.." segundos. Concentrem-se!"

addEvent(delayMsg,2000, msg)


addEvent(inicioJogo,3000+(config.tempoPrePartida*1000))

end


doRemoveItem(thing.uid)

end

end

end


for i=1,#config.posGol2 do

for j=1,10 do

local testPos = {x=config.posGol2.x, y=config.posGol2.y, z=config.posGol2.z, stackpos=j}

local thing = getThingFromPos(testPos)


if(thing.itemid==2109)then

if(placar[1]==config.gols-1)then

doPlayerSendTextMessage(jogador1, MESSAGE_INFO_DESCR, "Parabéns! Você ganhou a partida.")

doPlayerSendTextMessage(jogador2, MESSAGE_INFO_DESCR, "Lamento, mas você perdeu o jogo.")


doTeleportThing(jogador1, config.posJogador1)

doTeleportThing(jogador2, config.posJogador2)


doSendMagicEffect(config.posJogador1, 12)

doSendMagicEffect(config.posJogador2, 12)


local item = doPlayerAddItem(jogador1, 5805)

doItemSetAttribute(item, "description", nome1.." conquistou este troféu apos derrotar "..nome2.." em uma partida de futebol.")


doRemoveCreature(npcUid)


stopEvent(eventoTorcida)

stopEvent(eventoGol)


local uids1 = string.explode(listaTorcedores1, ",")

local uids2 = string.explode(listaTorcedores2, ",")


for k = 1, #uids1 do

doRemoveCreature(uids1[k])

doRemoveCreature(uids2[k])

end


jogador1 = nil

jogador2 = nil


listaTorcedores1 = ""

listaTorcedores2 = ""


config.posTorcida1 = {x=76,y=165,z=7, stackpos=1}

config.posTorcida2 = {x=84,y=165,z=7, stackpos=1}


npcUid = nil


placar = { 0,0 }


else


doTeleportThing(jogador1, config.posTeleporte1)

doTeleportThing(jogador2, config.posTeleporte2)


doSendMagicEffect(config.posTeleporte1, 10)

doSendMagicEffect(config.posTeleporte2, 10)


doCreatureSetNoMove(jogador1, true)

doCreatureSetNoMove(jogador2, true)


doCreatureSetLookDirection(jogador1, 1)

doCreatureSetLookDirection(jogador2, 3)


doCreateItem(2109, 1, config.posBola)

doSendMagicEffect(config.posBola, 13)


local uids = string.explode(listaTorcedores1, ",")


for k = 1, #uids do

doCreatureSay(uids[k], "GOOOOL!", TALKTYPE_YELL)

end


placar[1] = placar[1]+1


local msg = "Gol do "..nome1.."! O placar atual é "..nome1..": "..placar[1].." e "..nome2..": "..placar[2].."."

addEvent(delayMsg,1000, msg)


msg = "A próxima rodada irá começar em cerca de "..config.tempoPrePartida.." segundos. Concentrem-se!"

addEvent(delayMsg,2000, msg)


addEvent(inicioJogo,3000+(config.tempoPrePartida*1000))

end


doRemoveItem(thing.uid)

end

end

end


eventoGol = addEvent(testeGol,100,nome1,nome2)

end


function onUse(cid, item, fromPosition, itemEx, toPosition)


if (isPlayer(jogador1) == true and isPlayer(jogador2) == true)then

doPlayerSendCancel(cid, "Lamento, mas o campo ja está em uso.")

doSendMagicEffect(fromPosition, 2)

return false

end


local coisa1 = getThingFromPos(config.posJogador1).uid

local coisa2 = getThingFromPos(config.posJogador2).uid


if(isPlayer(coisa1))then

jogador1 = coisa1

end


if(isPlayer(coisa2))then

jogador2 = coisa2

end


if(jogador1==nil or jogador2==nil)then

doPlayerSendCancel(cid, "Desculpe, mas você precisa de outro player para começar um jogo.")

doSendMagicEffect(fromPosition, 2)

return false

else

doTeleportThing(jogador1, config.posTeleporte1)

doTeleportThing(jogador2, config.posTeleporte2)


doSendMagicEffect(config.posTeleporte1, 10)

doSendMagicEffect(config.posTeleporte2, 10)


doCreatureSetNoMove(jogador1, true)

doCreatureSetNoMove(jogador2, true)


doCreatureSetLookDirection(jogador1, 1)

doCreatureSetLookDirection(jogador2, 3)


doCreateItem(2109, 1, config.posBola)

doSendMagicEffect(config.posBola, 13)


npcUid = doCreateNpc(config.nomeNpc, config.posNpc)

doCreatureSetLookDirection(npcUid, 2)

doSendMagicEffect(config.posNpc, 10)

doCreatureSetNoMove(npcUid, true)


local nome1 = getCreatureName(jogador1)

local nome2 = getCreatureName(jogador2)


local msg = "Saudações "..nome1.." e "..nome2..". Serei o juiz desta partida. Ganhará o primeiro a fazer "..config.gols.." gols."

addEvent(delayMsg,1000, msg)


msg = "A partida irá começar em cerca de "..config.tempoPrePartida.." segundos. Concentrem-se!"

addEvent(delayMsg,2000, msg)


local uidMonstro

local randomOutfit


for i=1,config.quantidadeTorcedores do

uidMonstro = doCreateMonster("Torcedor",config.posTorcida1)

doCreatureSetLookDirection(uidMonstro, 0)

doSendMagicEffect(config.posTorcida1, 10)

doCreatureSetNoMove(uidMonstro, true)


config.posTorcida1.x = config.posTorcida1.x + 1


randomOutfit = {

lookType = 128,

lookHead = math.random(1,66),

lookAddons = math.random(0,2),

lookLegs = math.random(1,66),

lookFeet = math.random(1,66)

}


doCreatureChangeOutfit(uidMonstro, randomOutfit)


if(listaTorcedores1=="")then

listaTorcedores1 = uidMonstro

else

listaTorcedores1 = listaTorcedores1..","..uidMonstro

end

end


for i=1,config.quantidadeTorcedores do

uidMonstro = doCreateMonster("Torcedor",config.posTorcida2)

doCreatureSetLookDirection(uidMonstro, 0)

doSendMagicEffect(config.posTorcida2, 10)

doCreatureSetNoMove(uidMonstro, true)


config.posTorcida2.x = config.posTorcida2.x + 1


randomOutfit = {

lookType = 128,

lookHead = math.random(67,132),

lookAddons = math.random(0,2),

lookLegs = math.random(67,132),

lookFeet = math.random(67,132)

}


doCreatureChangeOutfit(uidMonstro, randomOutfit)


if(listaTorcedores2=="")then

listaTorcedores2 = uidMonstro

else

listaTorcedores2 = listaTorcedores2..","..uidMonstro

end

end


addEvent(inicioJogo,2000+(config.tempoPrePartida*1000))

eventoTorcida = addEvent(torcida,2000+(config.tempoPrePartida*1000), nome1, nome2)

eventoGol =  addEvent(testeGol,2000+(config.tempoPrePartida*1000), nome1, nome2)


local teste = string.explode(listaTorcedores1,",")


end


return true

end

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By Lisbeky
      .Qual servidor ou website você utiliza como base? 
      0.36
       
      Boa noite pessoal!
       
      Então, mais uma vez venho pedir ajuda... pesquisei bastante aqui no fórum e encontrei um script, testei e não deu certo, mas estarei postando aqui para quem sabe alguém solucionar o problema.
       
      o script ele faz um monstro X ao chegar aos 50% de life , ele se transforma em outro monstro Y, mas também queria ele dando storage para todos os players que atacarem ele...
       
      o que esta errado? 
      então não da erro na distro, nem quando ligo o servidor e nem quando mato o boss. mas o problema esta quando chega na metade da vida do primeiro boss, ele não aparece o outro, logo, não esta dando a storage também.
       
      obs: já pedi um suporte de um script que os playrs matam o boss e recebem a storage, esta corretíssimo funcionando, mas esse aqui é diferente, então atenção, não estou pedindo a mesma coisa :D
       
      então o script esta assim...
       
       function onStatsChange(cid, attacker, type, combat, value) local storage = 47000 local stor = 354867 -- n mexa local monster = "Phanta" -- Monstro que irá atingir o 50% e sumir local monstro = "Demo" -- Monstro que irá ser invocado local msg = "Enough playing. I am the Divinity of this house." -- Mensagem quando o monstro for sumir if not isMonster(cid) then return true end if type == STATSCHANGE_HEALTHLOSS and getCreatureName(cid):lower() == monster:lower() then local monsterPercent = 100/(getCreatureMaxHealth(cid)/getCreatureHealth(cid)) if monsterPercent <= 50 and monsterPercent >= 49 then if getGlobalStorageValue(stor) - os.time() <= 0 then doCreatureSay(cid, msg, 1) setGlobalStorageValue(stor, os.time() + 120) addEvent(doCreateMonster, 1000, monstro, getCreaturePosition(cid)) addEvent(doRemoveCreature, 1000, cid) for _, check in pairs(deathList) do if isPlayer(check) then setPlayerStorageValue(check, storage, 5) end end end end end return true end  
       
       
    • By Doidodepeda
      Entao galera, tenho esse script de top level que fica aparecendo na tela do player.
      queria saber se alguem pode modificar pra aparacer os resetes no lugar do level.
       
      Script:

      function onThink(interval, lastExecution)
          local max, query = 5, db.getResult("SELECT `name`, `level` FROM `players` WHERE `id` > 6 AND `group_id` < 2 ORDER BY `level` DESC, `name` ASC;")
          local str = "TOP Rank Level do Server:\n"
          if (query:getID() ~= -1) then 
              k = 1 
              while true do
                  str = str .. "\n " .. k .. " - "..query:getDataString("name").." - ["..query:getDataInt("level").."]"
                  k = k + 1
                  if not(query:next()) or k > max then
                      break 
                  end 
              end 
              query:free()
          end
          doBroadcastMessage(str, 22)
          return true
      end
       
       
       
      Sistema de resete que uso:
       
       
    • By Senju uchira
      ola gostaria de tira uma duvida e fazer um pedido ao mesmo tempo-se possivel;
      e possivel o sumon x usa a spell com um comando, exemplo ; eu faço ele usa a spell com o comando X etals. como faço
       
    • By shanden4502
      Boa noite, então eu tenho esse codigo:
       
      local STORAGE_SKILL_LEVEL = 10009 local STORAGE_SKILL_TRY = 10007 local config = { levels = { {level = {0,9}, quant = {1,1}, percent = 5}, {level = {10,19}, quant = {1,1}, percent = 10}, {level = {20,29}, quant = {1,1}, percent = 15}, {level = {30,39}, quant = {1,1}, percent = 20}, {level = {40,49}, quant = {1,1}, percent = 25}, {level = {50,59}, quant = {1,1}, percent = 30}, {level = {60,69}, quant = {1,1}, percent = 30}, {level = {70,79}, quant = {1,1}, percent = 35}, {level = {80,89}, quant = {1,1}, percent = 35}, {level = {90,99}, quant = {1,1}, percent = 40}, {level = {100}, quant = {1,1}, percent = 50} }, rocks = {5092}, -- Id das rochas que podem ser quebradas rocks2 = {5093}, rocks3 = {5094}, rocks4 = {5095}, stones = {5097}, -- Modelo = {rock_id, rock_id} stones2 = {5099}, stones3 = {5100}, stones4 = {5098}, rock_delay = 60, -- Tempo de volta da rocha (Em segundos) bonus_chance = 3, -- Chance (em porcentagem) de se conseguir um bonus de exp bonus_exp = 1 -- Bonus extra } ------------------------------------ -- END Configurations --- ------------------------------------ function getCuttingLevel(cid) return getPlayerStorageValue(cid, STORAGE_SKILL_LEVEL) end function setPlayerCuttingLevel(cid, n) setPlayerStorageValue(cid, STORAGE_SKILL_LEVEL, n) end function addCuttingLevel(cid, n) setPlayerCuttingLevel(cid, getCuttingLevel(cid) + (isNumber(n) and n or 1)) setCuttingTry(cid, 0) end function getCuttingInfo(cid) for i = 1, #config.levels do min = config.levels[i].level[1]; max = config.levels[i].level[2] if (getCuttingLevel(cid) >= min and getCuttingLevel(cid) <= max) then return {quantity = {min = config.levels[i].quant[1], max = config.levels[i].quant[2]}, chance = config.levels[i].percent} end end end function getStoneByRock(rockid) for i = 1, #config.stones do if (config.stones[2] == rockid) then return config.stones[1] elseif (config.stones2[3] == rockid2) then return config.stones2[4] end end end function getCuttingTries(cid) return getPlayerStorageValue(cid, STORAGE_SKILL_TRY) end function setCuttingTry(cid, n) setPlayerStorageValue(cid, STORAGE_SKILL_TRY, n) end function addCuttingTry(cid, bonus) setCuttingTry(cid, getCuttingTries(cid) + 1 + (bonus and config.bonus_exp or 0)) if (getCuttingTries(cid) >= getCuttingExpTo(getCuttingLevel(cid))) then -- Up doPlayerSendTextMessage(cid, 22, "You advanced from level " .. getCuttingLevel(cid) .. " to level ".. (getCuttingLevel(cid) + 1) .." in miner.") if ((getCuttingLevel(cid)+1) == getCuttingMaxLevel()) then doPlayerSendTextMessage(cid, 22, "Max level reached in miner.") end addCuttingLevel(cid) doSendMagicEffect(getCreaturePosition(cid), math.random(28,30)) setCuttingTry(cid, 0) end end function getCuttingExpTo(level) return ((level*1.5)+((level+1)*7)) end function getCuttingMaxLevel() return config.levels[#config.levels].level[#config.levels[#config.levels].level] end --------------------------- function onUse(cid, item, fromPosition, itemEx, toPosition) rock = { id = itemEx.itemid, uid = itemEx.uid, position = toPosition } player = { position = getCreaturePosition(cid) } if (getCuttingLevel(cid) < 0) then setPlayerCuttingLevel(cid, 0) end if (isInArray(config.rocks, rocks2, rocks3, rocks4, rock.id, rock.id2, rock.id3, rock.id4)) then addCuttingTry(cid) if (math.random(1,100) <= getCuttingInfo(cid).chance) then local collected = math.random(getCuttingInfo(cid).quantity.min, getCuttingInfo(cid).quantity.max) doPlayerAddItem(cid, getStoneByRock(rock.id), collected) doPlayerSendTextMessage(cid, 22, "You got " .. collected .. " brass" .. (collected > 1 and "s" or "") .. " ore.") if (math.random(1,100) <= config.bonus_chance) then -- Bonus calc addCuttingTry(cid, true) doSendAnimatedText(player.position, "Bonus!", COLOR_ORANGE) end event_rockCut(rock) else if (math.random(0,100) <= (0-getCuttingInfo(cid).chance/0)) then doPlayerSendTextMessage(cid, 22, "You got nothing.") event_rockCut(rock) else doSendMagicEffect(rock.position, 3) doSendAnimatedText(rock.position, "Poff!", COLOR_GREEN) end end else doPlayerSendCancel(cid, "This can't be cut.") end end function event_rockCut(rock) addEvent(event_rockGrow, config.rock_delay * 1000, rock.position, rock.id) doTransformItem(rock.uid, 5104) doSendMagicEffect(rock.position, 3) doSendAnimatedText(rock.position, "Tack!", COLOR_GREEN) doItemSetAttribute(rock.uid, "name", "A trunk of " .. getItemNameById(rock.id)) end function event_rockGrow(rockPos, old_id) local rock = getThingFromPos(rockPos).uid doTransformItem(rock, old_id) doItemSetAttribute(rock, "name", getItemNameById(old_id)) doSendMagicEffect(rockPos, 3) end eu estou tentando editar para que dependendo da pedra, exemplo, 5092, venha o minerio 5097 e somente ele, eu tentei:
       
      if (config.stones[2] == rockid) then return config.stones[1] elseif (config.stones2[3] == rockid2) then return config.stones2[4] end mas não estou tendo resultado nenhum, nem erro, alguem poderia me dar uma luz?
    • By Lisbeky
      Boa noite galera! 
       
      Postei cedo sobre esse script, a duvida foi sanada, mas surgiu outro problema depois que teste.
       
      esse script serve para setar uma storage e criar um tp de saída para quando o boss for morto e isso esta acontecendo certinho, mas existe um problema, ele esta setando somente para o player que mata o boss e não para o time inteiro.
       
      Então gostaria de pedir o suporte a vocês. Será que da para por o storage para setar para todos os players dentro de uma determinada área?
       
      por exemplo usar, frompos e topos da área e fazer com que todos os players dentro desta posição , após matar o boss todos setarem a storage (46000, 5)
       
      Meus sinceros agradecimentos a todos do TibiaKing!
       
      local tps = { ["hyaena"] = {pos = {x=349, y=1103, z=15}, toPos = {x = 518, y = 840, z = 7}, time = 10, storage = 46000}, } local storage = 46000 local function removeTp(tp) local t = getTileItemById(tp.pos, 5023).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(tp.pos, CONST_ME_POFF) end function onKill(cid, target) local tp = tps[getCreatureName(target)] if tp then setPlayerStorageValue(cid, tp.storage, 5) doCreateTeleport(5023, tp.toPos, tp.pos) doCreatureSay(target, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1) addEvent(removeTp, tp.time*1000, tp) end return true end   
       
       
  • Recently Browsing   0 members

    No registered users viewing this page.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

Tibia King Recomenda

DokeHost - Soluções em Hospedagem

VPS Windows
VPS Linux
Servidor VPS
×
×
  • Create New...