Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Como Funciona:

O evento começa e X pessoas entram no portal, então ele fecha determinado período.

Items iram aparecer no mapa, o objetivo é quem pegar mais, para ganhar o evento.


<?xml version="1.0" encoding="UTF-8"?>

<mod name="Catch the item" version="1.00" author="Kimo" contact="otland.net" enabled="yes">

<config name="catchtheitem_config"><![CDATA[

config = {

center_pos = {x = 2736, y = 3497, z = 7},

item = 8304,

aid = 4003,

effect = CONST_ANI_FIRE,

teleportPosition = {x = 74, y = 136, z = 9, stackpos = 1}, -- Onde o teleporte vai ser criado

teleportToPosition = {x = 78, y = 136, z = 9}, -- Onde o teleporte enviará as pessoas

teleportId = 1387, -- Id do teleporte

spawnItemTime1 = 1, -- Tempo que o primeiro item vai ser criado

spawnItemTime2 = 1, -- Tempo que o primeiro item vai ser criado

timeToStartEvent = 1, -- Minutos após o teleporte ser fechado.

itemRewards = {{2160,10}, {13305,1}, {13539,1}}

}			  

]]></config>


<talkaction words="!catch" event="script"><![CDATA[

function onSay()

		domodlib('catchtheitem_config')

		local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition)

		doItemSetAttribute(tp, "aid", config.teleportActionId)

		doBroadcastMessage("Catch the item is starting in "..config.timeToStartEvent.." minute!", MESSAGE_EVENT_ADVANCE)

		addEvent(startEvent, config.timeToStartEvent * 1000 * 10)

		print(getGlobalStorageValue(3333))

	   return true

end


function startEvent()

	domodlib('catchtheitem_config')

		local get = getThingfromPos(config.teleportPosition)

		if get.itemid == config.teleportId then

				doRemoveItem(get.uid, 1)

				doBroadcastMessage("Catch the item teleport have been removed and the first items wave will start in " .. config.spawnItemTime1 .. " ", MESSAGE_EVENT_ADVANCE)

				addEvent(SpawnItem1, config.timeToStartEvent * 1000 * 10)

		end

end


function SpawnItem1()

domodlib('catchtheitem_config')

		local field = {}

		local k = config.center_pos

		for i = -2, 3 do

				for j = -2, 4 do

						table.insert(field, {x=k.x+i, y=k.y+j, z=k.z})

				end

		end

		for i = 1, 8 do

				local a = math.random(1, #field)

				local c = {x=field[a].x, y=field[a].y, z=field[a].z}

				if getThingFromPos({x=c.x, y=c.y, z=c.z, stackpos=1}).itemid ~= 9767 then

						local b = doCreateItem(config.item, {x=c.x, y=c.y, z=c.z, stackpos=1})

						doItemSetAttribute(b, "aid", config.aid)

						doItemSetAttribute(c, "moveable", 0)

						doSendDistanceShoot(config.center_pos, c, config.effect)

				end

		end

		doBroadcastMessage("Items wave 1 has been finished wave 2 in "..config.spawnItemTime2.." minute ", MESSAGE_EVENT_ADVANCE)

		addEvent(SpawnItem2, config.spawnItemTime2 * 1000 * 10)

end



function SpawnItem2()

domodlib('catchtheitem_config')

		local field = {}

		local k = config.center_pos

		for i = -2, 3 do

				for j = -1, 2 do

						table.insert(field, {x=k.x+i, y=k.y+j, z=k.z})

				end

		end

		for i = 1, 8 do

				local a = math.random(1, #field)

				local c = {x=field[a].x, y=field[a].y, z=field[a].z}

				if getThingFromPos({x=c.x, y=c.y, z=c.z, stackpos=1}).itemid ~= 9767 then

						local b = doCreateItem(config.item, {x=c.x, y=c.y, z=c.z, stackpos=1})

						doItemSetAttribute(b, "aid", config.aid)

						doSendDistanceShoot(config.center_pos, c, config.effect)

				end

		end

		doBroadcastMessage("Items wave 2 is finished and results in 1 minute", MESSAGE_EVENT_ADVANCE)

		addEvent(EndEvent, 1 * 1000 * 10)

end



function EndEvent()

domodlib('catchtheitem_config')

local function maximum(a)

		local mi = 1

		local m = a[mi]

		for i,val in ipairs(a) do

				if val > m then

						mi = i

						m = val

				end

		end

		return m

end


local first = {}

local second = 0

local third = 0

local players = getPlayersOnline()

local winamount = {}

local storage = 7777 --event storage

for i, pid in ipairs(players) do

		if getPlayerStorageValue(pid, storage) >= 0 then

				table.insert(winamount, getPlayerStorageValue(pid, storage))

		end

end

local winningamount = maximum(winamount)

local price = math.random(1, #config.itemRewards)

		for i, pid in ipairs(players) do

				if getPlayerStorageValue(pid, storage) == winningamount then

						table.insert(first, getPlayerName(pid))

				end

		end

		if #first > 1 then

				doBroadcastMessage('[Catch the item]\n We have a draw between '..first[1]..' and '..first[2]..'!\nTherefor NO PRICES will be given!')

		else

				for i, pid in ipairs(players) do

						if getPlayerStorageValue(pid, storage) == winningamount then

								doBroadcastMessage('[Catch the item]\n And the winner is:\n'..first[1]..' with a total score of '..winningamount..'\nYour Price: '..config.itemRewards[price][2]..' x '..getItemNameById(config.itemRewards[price][1])..'\nCongratulations!')

								doPlayerAddItem(pid, config.itemRewards[price][1], config.itemRewards[price][2])

						end

				end

		end

		for i, pid in ipairs(players) do

				if getPlayerStorageValue(pid, storage) == (winningamount-1) then

						if second == 0 then

								doBroadcastMessage('[Catch the item]\n 2nd place is:\n'..getPlayerName(pid)..' with a total score of '..getPlayerStorageValue(pid, storage)..'\nCongratulations!')

								second = 1

						end

				end

		end

		for i, pid in ipairs(players) do

				if getPlayerStorageValue(pid, storage) == (winningamount-2) then

						if third == 0 then

								doBroadcastMessage('[Catch the item]\n 3rd place is:\n'..getPlayerName(pid)..' with a total score of '..getPlayerStorageValue(pid, storage)..'\nCongratulations!')

								third = 1

						end

				end

		end

		addEvent(EndEvent2, 1 * 1000 * 10)

	   end


function EndEvent2()

setGlobalStorageValue(4444, 0)

setGlobalStorageValue(3333, 0)

		for _, kid in ipairs(getPlayersOnline()) do

				if(getPlayerStorageValue(kid, 7776) > 0) then

						doTeleportThing(kid, getTownTemplePosition(getPlayerTown(kid)))

						setPlayerStorageValue(kid, 7776, 0)

						setPlayerStorageValue(kid, 7777, 0)

				end

		end

end

]]></talkaction>


<action actionid="4003" event="script"><![CDATA[

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

		if item.actionid == 4003 then

				doRemoveItem(getThingFromPos(fromPosition).uid, 6119)

				setPlayerStorageValue(cid,7777, getPlayerStorageValue(cid,7777)+1)

				local score = getPlayerStorageValue(cid, 7777)

			  doCreatureSay(cid, "Point!\nScore ="..getPlayerStorageValue(cid, 7777), 34)

			  return true

		end

end

]]></action>


<movevent type="StepIn" actionid="3000" event="script"><![CDATA[

local config = {

		playerCount = 3333, -- Storage global que contara quantos iram participar

		maxPlayers = 20 -- Número máximo que pode participar

}

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)

		if getGlobalStorageValue(config.playerCount) < config.maxPlayers then

						setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)+1)

								if getGlobalStorageValue(config.playerCount) == config.maxPlayers then

										doBroadcastMessage("Catch the item event is now full [" .. getGlobalStorageValue(config.playerCount) .. " players]! The event will soon start.")

								else

						doBroadcastMessage(getPlayerName(cid) .. " entered catch the item event! Currently " .. getGlobalStorageValue(config.playerCount) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED)

				end

		else

				doTeleportThing(cid, fromPosition)

				doPlayerSendCancel(cid, "The event is full. There is already " .. config.maxPlayers .. " players participating in the event.")

				return false

		end

				print(getGlobalStorageValue(config.playerCount) .. " Players in catch the item event.")

		return true

end

]]></movevent>

</mod>

Créditos:

kimokimo & Skydangerous(Traduzir)

 http://baiakuza.com/
IP: baiakuza.com
TIBIA: 10.96
Baiak Custom [ High Exp Rate ]

 

 

 

 

Link para o post
Compartilhar em outros sites
  • 3 months later...

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Skydangerous
      O script é bem simples, ele salva a sua posição no mapa para que você possa retornar no lugar quando quiser.



      Salvando a posição(waypoint) no mapa






      Voltando novamente na posição






      Se tentar novamente não irá conseguir




      Crie um arquivo chamado funtele.lua na pasta talkaction/scripts

      function doMarkPos(cid, posx, posy, posz) setPlayerStorageValue(cid, 19000, posx) setPlayerStorageValue(cid, 19001, posy) setPlayerStorageValue(cid, 19002, posz) end function getMarkPos(cid) return {x=getPlayerStorageValue(cid, 19000), y=getPlayerStorageValue(cid, 19001), z=getPlayerStorageValue(cid, 19002)} end function onSay(cid, words, param) local pos = getCreaturePosition(cid) if words == "!salvar" then if getMarkPos(cid).x < 1 then doSendMagicEffect(pos,15) doMarkPos(cid, pos.x, pos.y, pos.z) doPlayerSendTextMessage(cid, 4, "Você salvou posicao no mapa.") else doPlayerSendCancel(cid, "Você já gravou posição.") end elseif words == "!voltar" then if getMarkPos(cid).x > 0 then doTeleportThing(cid, getMarkPos(cid)) doMarkPos(cid, 0, 0, 0) doPlayerSendTextMessage(cid, 21,"Você foi teleportado para o waypoint") doSendMagicEffect(pos,11) else doPlayerSendCancel(cid, "Você não gravou uma posição.") end end return TRUE end agora em talkaction.xml cole essa tag <talkaction words="!salvar;!voltar" event="script" value="funtele.lua"> Agradecimentos: DemonBholder & Apocarai(jaohd) </talkaction>
    • Por Skydangerous
      Testado no TFS 0.3.6
      A função faz pega tal coisa dentre de uma posição


      function getCreatureInRange(type, fromPos, toPos, toGet, itemid) local types = { ["player"] = isPlayer, ["monster"] = isMonster, ["npc"] = isNpc, ["creature"] = isCreature } local tmp = {} local type = types[type] if(not type) then print('[getCreatureInRange]>> Unknow type') return 0 end local thing = nil for x = fromPos.x, toPos.x do for y = fromPos.y, toPos.y do for z = fromPos.z, toPos.z do for s = 1, 253 do local position = {x = x, y = y, z = z, stackpos = s} thing = getTileThingByPos(position) if(type(thing.uid) == true) then table.insert(tmp, thing.uid) end end end end end if(toGet == "count") then return table.maxn(tmp) elseif(toGet == "name") then return tmp else print('[getCreatureInRange]>> Unknow creature to get') return 0 end return true end Como Usar: local fromPos = {x = 100, y = 100, z = 7, stackpos = 1} local toPos = {x = 150, y = 150, z = 7, stackpos = 1} local t = getCreatureInRange("monster", fromPos, toPos, "count") print('>> There are ' .. t .. ' monsters) Exemplo como vai retornar: local fromPos = {x = 100, y = 100, z = 7, stackpos = 1} local toPos = {x = 150, y = 150, z = 7, stackpos = 1} local t = getCreatureInRange("monster", fromPos, toPos, "name") for i = 1, table.maxn(t) do print('>> The names are ' .. getCreatureName(t[i])) end

      Exemplo como vai retornar:





      Creditos:



      darkhaos

    • Por Vodkart
      Mapa BattleField Feito Por AnneMotta :

      Mapa Battlefield.rar

      Scan: https://www.virustot...sis/1346548669/


      Imagens do mapa



      Descrição:

      - O evento é automático e acontece em determinado dia e hora da semana
      - Logo após é aberto um teleport então apenar um número limitado de players entra no evento
      - São formados por dois times, os "Black Assassins" e os "Red Barbarians"
      - Os times são balanceados automaticamente, quando o último jogador entra, esse teleport é fechado e depois de 5 minutos o evento começa, os 5 minutos são para os players ter tempo de planejar um ataque.
      - O sistema tem por finalidade matar todos do time inimigo, e os players que sobreviverem recebem um prêmio.

      Bônus:

      - Durante o evento é mostrado na tela somente dos jogadores que estão no evento um placar de times.

      - Até o último player entrar no evento, ficam mandando broadcast dizendo quanto players faltam para dar inicio ao jogo.

      - Se o evento abrir e não atingir a meta de players colocada, o evento é finalizado e os players voltam para o templo.




      Lembre-se:

      - De colocar Pvp Tool na área
      - De colocar área NoLogout


      Imagens:




      Instalação:

       
      Data > Lib       Data > CreatureScript > Script     Data > GlobalEvents > Scripts       Data > Movements > Script             Configurações do evento
    • Por Skydangerous
      não fique chateado por suas notas, olha a minha e seja feliz )
    • Por Skydangerous
      Veii que triste (

      quando ocorreu esse acidente, eu estava em uma festa de formatura, fiquei imaginando gritarias , gente correndo, pisando nos outros, deixando seus amigos para trás..

      caralho to triste d + (
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo