Jump to content
Close
Morgaroth Noia

Scripting converte scripts exclusive cave

Recommended Posts

alguem de bom 💕 converte esses script pra min?

para tfs 1.3

grato...

 

local m_1 = {x=17024, y=16855, z=8}
local m_2 = {x=17031, y=16854, z=8}
local m_3 = {x=17024, y=16861, z=8}
local m_4 = {x=17030, y=16861, z=8}

function onUse(cid, item, frompos, itemEx, topos)
	
	local ran_2 = math.random(1, 100)
	local ran_3 = math.random(1, 100)
	local ran_4 = math.random(1, 100)
	if(itemEx.itemid == 9825) then
        if getPlayerStorageValue(cid, 45315) <= 0 then -- QTD = 1
			doCreateMonster("Cave Frost Dragon", m_1, false, true);
		elseif getPlayerStorageValue(cid, 45315) == 1 then -- QTD = 2
			if (ran_2 <= 85) then
				doCreateMonster("Cave Frost Dragon", m_2, false, true);
			end
			doCreateMonster("Cave Frost Dragon", m_1, false, true);
			
		elseif getPlayerStorageValue(cid, 45315) == 2 then -- QTD = 3
			if (ran_2 <= 85) then
				doCreateMonster("Cave Frost Dragon", m_2, false, true);
			end
			if (ran_3 <= 60) then
				doCreateMonster("Cave Frost Dragon", m_3, false, true);
			end
			doCreateMonster("Cave Frost Dragon", m_1, false, true);
			
		elseif getPlayerStorageValue(cid, 45315) == 3 then -- QTD = 4
			if (ran_2 <= 85) then
				doCreateMonster("Cave Frost Dragon", m_2, false, true);
			end
			if (ran_3 <= 60) then
				doCreateMonster("Cave Frost Dragon", m_3, false, true);
			end
			if (ran_4 <= 50) then
				doCreateMonster("Cave Frost Dragon", m_4, false, true);
			end
			doCreateMonster("Cave Frost Dragon", m_1, false, true);
		end
			
        doTransformItem(item.uid, 9826)
		doDecayItem(item.uid)
		
	elseif(itemEx.itemid == 9826) then
        doPlayerSendCancel(cid, "Aguarde 15 segundos para usar novamente.") 
    end
	return true
end
-- Config # --
local areafrom = {x = 695, y = 104, z = 8} -- ENTRADA from
local areato = {x = 706, y = 115, z = 8} -- ENTRADA to
local pos_exit = {x = 708, y = 110, z = 8} -- POS SAIDA
local pos_entrance = {x = 706, y = 110, z = 8} -- POS ENTRADA

local global_stor = 30058
local player_stor = 45327

local timetokick_free = {60, "min"} -- tempo
local timetokick_vip = {90, "min"} -- tempo
-- END --

local function convertTime(a)
  if(type(tonumber(a)) == "number" and a > 0) then
    if (a <= 3599) then
      local minute = math.floor(a/60)
      local second = a - (60 * minute)
      if(second == 0) then
        return ((minute)..((minute > 1) and " minutos" or " minuto"))
      else
        return ((minute ~= 0) and ((minute>1) and minute.." minutos e " or minute.." minuto e ").. ((second>1) and second.." segundos" or second.." segundo") or ((second>1) and second.." segundos" or second.. " segundo"))
      end
    else
      local hour = math.floor(a/3600)
      local minute = math.floor((a - (hour * 3600))/60)
      local second = (a - (3600 * hour) - (minute * 60))
      if (minute == 0 and second > 0) then
        return (hour..((hour > 1) and " horas e " or " hora e "))..(second..((second > 1) and " segundos" or " segundo"))
      elseif (second == 0 and minute > 0) then
        return (hour..((hour > 1) and " horas e " or " hora e "))..(minute..((minute > 1) and " minutos" or " minuto"))
      elseif (second == 0 and minute == 0) then
        return (hour..((hour > 1) and " horas" or " hora"))
      end
      return (hour..((hour > 1) and " horas, " or " hora, "))..(minute..((minute > 1) and " minutos e " or " minuto e "))..(second..((second > 1) and " segundos" or " segundo"))
    end
  end
end

local function doRemoveMonstersInArea(from, to)
	for x = from.x, to.x do
		for y = from.y, to.y do
			local pos = {x=x, y=y, z = from.z}
			local m = getTopCreature(pos).uid
			if m > 0 and isMonster(m) then
				doRemoveCreature(m)
			end
		end
	end
end

local function getPlayersInArea(fromPos, toPos)
local cave_exc_players = {}
    for _, pid in ipairs(getPlayersOnline()) do
        if isInRange(getPlayerPosition(pid), fromPos, toPos) then
            table.insert(cave_exc_players, pid)
        end
    end
   
	return cave_exc_players
end

local function kickPlayerFromArea(cid, p)
	for _, pid in ipairs(getPlayersOnline()) do
		if isPlayer(pid) and isInRange(getPlayerPosition(pid), p[1], p[2]) then
			doTeleportThing(pid, p[3])
			doSendMagicEffect(p[3], CONST_ME_TELEPORT)
			doCreatureSay(pid, 'You were kicked out of the room.', TALKTYPE_ORANGE_1)
		end
	end
end

local function mathtime(table) -- by dwarfer
local unit = {"sec", "min", "hour", "day"}
	for i, v in pairs(unit) do
		if v == table[2] then
			return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1)
		end
	end
	
	return error("Bad declaration in mathtime function.")
end

function onUse(cid, item, frompos, item2, topos)
local check_player = getPlayersInArea(areafrom, areato);
	
	if getGlobalStorageValue(cid, global_stor) - os.time() <= 0 and getPlayerStorageValue(cid, player_stor) - os.time() > 0 then
		doPlayerSendTextMessage(cid, 27, "Infelizmente o servidor deu SaveServer ou caiu e você perdeu sua Cave Exclusiva. Lamentamos muito o ocorrido, aguarde ".. convertTime(getPlayerStorageValue(cid, player_stor) - os.time()) .." para acessar alguma Cave Exclusiva novamente.")
	
	elseif getGlobalStorageValue(cid, global_stor) - os.time() > 0 and getPlayerStorageValue(cid, player_stor) - os.time() <= 0 then
		if #check_player > 0 then
			doPlayerSendTextMessage(cid, 27, "Possui um jogador nesta Cave Exclusiva. Aguarde ".. convertTime(getGlobalStorageValue(cid, global_stor) - os.time()) ..".")
		else
			doPlayerSendTextMessage(cid, 27, "Esta Cave Exclusiva está ocupada, o jogador não se encontra nela no momento, mas pode voltar. Aguarde ".. convertTime(getGlobalStorageValue(cid, global_stor) - os.time()) ..".")
		end

	elseif getGlobalStorageValue(cid, global_stor) - os.time() > 0 and getPlayerStorageValue(cid, player_stor) - os.time() > 0 then
		if #check_player > 0 then
			doTeleportThing(cid, pos_exit)
			doSendMagicEffect(getCreaturePosition(cid), 12)
			doPlayerSendTextMessage(cid, 27, "Você saiu da Cave Exclusiva. Você ainda possui ".. convertTime(getGlobalStorageValue(cid, global_stor) - os.time()) ..".")
			return true
		else
			doTeleportThing(cid, pos_entrance)
			doSendMagicEffect(getCreaturePosition(cid), 12)
			doPlayerSendTextMessage(cid, 27, "Você entrou na Cave Exclusiva. Você ainda possui ".. convertTime(getGlobalStorageValue(cid, global_stor) - os.time()) ..".")
			return true
		end	
		
	elseif getGlobalStorageValue(cid, global_stor) - os.time() <= 0 and getPlayerStorageValue(cid, player_stor) - os.time() <= 0 and getPlayerItemCount(cid, 12707) >= 1 then
		if getPlayerStorageValue(cid, 45343) - os.time() > 0 then
			doPlayerSendTextMessage(cid, 27, "Você já possui uma Cave Exclusiva. Só pode haver 1 Cave Exclusiva por personagem.")
			return true
		end
		
		if doPlayerRemoveItem(cid, 12707, 1) then
			if isPremium(cid) then
				setGlobalStorageValue(cid, global_stor, os.time()+90*60)
				setPlayerStorageValue(cid, player_stor, os.time()+90*60)
				setPlayerStorageValue(cid, 45343, os.time()+90*60)
				addEvent(kickPlayerFromArea, mathtime(timetokick_vip) * 1000, cid, {areafrom, areato, pos_exit})
			else
				setGlobalStorageValue(cid, global_stor, os.time()+60*60)
				setPlayerStorageValue(cid, player_stor, os.time()+60*60)
				setPlayerStorageValue(cid, 45343, os.time()+60*60)
				addEvent(kickPlayerFromArea, mathtime(timetokick_free) * 1000, cid, {areafrom, areato, pos_exit})
			end
			doRemoveMonstersInArea(areafrom, areato)
			doTeleportThing(cid, pos_entrance)
			doSendMagicEffect(getCreaturePosition(cid), 12)
			doPlayerSendTextMessage(cid, 27, "Você entrou na Cave Exclusiva. Você possui ".. convertTime(getGlobalStorageValue(cid, global_stor) - os.time()) ..".")
		end
	else
		doPlayerSendTextMessage(cid, 27, "Você não possui o item.")
	end
	return true
end

 


Edited by Morgaroth Noia (see edit history)

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.


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!

×
×
  • Create New...