Ir para conteúdo
  • Cadastre-se

Posts Recomendados

13 horas atrás, Celulose disse:

Testei na otx 2 8.60 , e move certinho

 

Menos a house , ele conta até 1 e não move e não da erro na distro

 

Não testei em OT derivados, mas nos demais funcionou certinho...

 

Lembrando que o comando é:

 

!tp house,NUMERO

 

por exemplo

 

!tp house,1

 

----------------------

 

 

@Daniel

 

Verdade!! Obrigado, amigo.

 

 

@victor4312

 

Obrigado, qualquer dúvida só postar!

 

 

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
  • 2 weeks later...
Em 19/09/2018 em 10:40, Matheus Chanavat disse:

Coloco tudo no talkaction ? aqui deu um erro "No such file or directory"

 

 

Diz que não encontrou o arquivo!! é tudo em talkactions sim!

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

Otimo Script, Tenho um servido derivado e esta funcionando perfeitamente a parte do teleport,

 exceto para houses de amigos invitados quando digito !tp house,2 aparece so a house do player 

 

queria saber se tem como colocar essa talkactions como recompensa de uma quest ??

Editado por FeehLoveCes (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
Em 22/09/2018 em 14:34, FeehLoveCes disse:

Otimo Script, Tenho um servido derivado e esta funcionando perfeitamente a parte do teleport,

 exceto para houses de amigos invitados quando digito !tp house,2 aparece so a house do player 

 

queria saber se tem como colocar essa talkactions como recompensa de uma quest ??

 

Creio que para servidores derivados não funcione devido á falta de função nas sources/lib.

 

Sobre a recompensa da quest, tem sim, dá para fazer por storages.

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
11 horas atrás, Vodkart disse:

Creio que para servidores derivados não funcione devido á falta de função nas sources/lib.

 

Sobre a recompensa da quest, tem sim, dá para fazer por storages.

 

é um derivado de tibia normal, e sobre a recompensa eu consegui fazer, obrigado 

Link para o post
Compartilhar em outros sites

Como colocar pra quando estiver acontecendo algum evento o comando não funcione? E aparece alguma mensagem.

Senhoras e senhores, se alguma resposta lhe ajudou, marque-a como a melhor resposta e de ponto positivo, assim você incentiva quem lhe ajudou a continuar ajudando!!.

Link para o post
Compartilhar em outros sites

tem como colocar restrição de lugar? tipo, se você estiver em uma área você não pode usar esse comando(se teleportar). estou pedindo isso por que sempre aparece muito marmanjo no ot pra anuncar, trolar o servidor, então eu prendo ele e ele usa o comando para sair de lá, ai não tem graça

Link para o post
Compartilhar em outros sites

@tetheuscunha

@Emanueldk 

 

vocês pode usar assim para bloquear areas que nao podera usar o teleporte:

 

Spoiler

--[[
Teleport System
Desenvolvido por Vodkart
Exclusivo TibiaKing
Versão : 1.0
]]--



--[[ Configuração ]]--


local time = 5 -- tempo que demora para ser teleportado		
local premium_teleport_houses = true -- se para teleportar para as houses precisa ser premium

local block_area = {
	{{x=909,y=1019,z=7}, {x=1000,y=1019,z=7}}, -- pos começo e final da area
	{{x=156,y=1019,z=7}, {x=200,y=1019,z=7}},
	{{x=200,y=1019,z=7}, {x=300,y=1019,z=9}}
	}



local teleports = { -- ["nome do lugar"] que poderá ir
	["depot"] = {pos = {x=129, y=54, z=6}, premium = false}, -- posição que irá e se precisa de premium para ir!
	["templo"] = {pos = {x=160, y=54, z=7}, premium = false},
	["arena"] = {pos = {x=125, y=351, z=9}, premium = false},
	["baiak city"] = {pos = {x=1028, y=1034, z=7}, premium = false}
}




--[[ Functions ]]--
function doTeleportWithDelay(cid, pos, delay) -- by vodkart
	if not isCreature(cid) then return LUA_ERROR end
	if delay > 0 then
		if getCreatureCondition(cid, CONDITION_INFIGHT) then
			setPlayerStorageValue(cid, 548745, 0) 
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} O teletransporte foi desativado pois você entrou em estado de combate.") return true
		end
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} "..delay.." segundos para se teletransportar.")
		addEvent(doTeleportWithDelay, 1000, cid, pos, delay-1)
	else
		doTeleportThing(cid, pos)
		doSendMagicEffect(getPlayerPosition(cid), 10)
	end
end
function getHouseInvite(cid) -- by vodkart
	local t = {}
	local qry = db.getResult("SELECT `house_id`,`list` FROM `house_lists`;")
	if (qry:getID() ~= -1) then
		repeat
			local lista = qry:getDataString("list")
			if string.find(lista, getCreatureName(cid)) then
				local id = qry:getDataInt("house_id")
				if not isInArray(t, id) then
					t[#t+1] = id
				end
				
			end
		until not qry:next()
		qry:free() 
	end
	return t
end	
function onSay(cid, words, param)
	local z = string.explode(param:lower(), ",")
	if getCreatureCondition(cid, CONDITION_INFIGHT) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Este comando só pode ser usado fora de combate.") return true
	elseif getPlayerStorageValue(cid, 548745) - os.time() > 0 then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} aguarde, você está em processo de teletransporte.") return true
	end
	for _, var in ipairs(block_area) do
		if isInRange(getCreaturePosition(cid), var[1], var[2]) then
			doPlayerSendCancel(cid, "você não pode teleportar nesta area..") return true
		end
	end
	if z[1] == "casa" or z[1] == "house" then
		local t,invite,str = {},getHouseInvite(cid),'{Teleport} As casas disponíveis para você se teletransportar são:\n'
		if premium_teleport_houses == true and not isPremium(cid) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} você precisa ser premium account para teleportar para houses.") return true
		end
		if getHouseByPlayerGUID(getPlayerGUID(cid)) ~= nil then
			t[#t+1] = getHouseByPlayerGUID(getPlayerGUID(cid))
		end
		if #invite ~= 0 then
			for i = 1,#invite do
				t[#t+1] = invite[i]	
			end
		end	
		if #t == 0 then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} você não tem nenhuma house para ir.") return true
		end	
		if not tonumber(z[2]) or tonumber(z[2]) > #t then 
			for i = 1, table.maxn(t) do
				local h = getHouseInfo(t[i])
				local hname, htown = getHouseName(t[i]),getTownName(h.town)
				
				str = str .. i .. ') '..hname..' [' .. htown..']'
				str = i ~= table.maxn(t) and str .. ', ' or str .. '.'
			end
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Você deve especificar uma das casas para se teletransportar usando !tp house,numeroDoIndice")
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str) return true
		end
		setPlayerStorageValue(cid, 548745, os.time()+time)
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Ativado.") 
		doTeleportWithDelay(cid, getHouseEntry(t[tonumber(z[2])]), time) return true
	end 
	if not teleports[z[1]] then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Desculpe, este lugar não existe, lugares disponíveis: house, depot, templo, arena, baiak city.") return true
	elseif teleports[z[1]].premium == true and not isPremium(cid) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Desculpe, você precisa ser premium para ir para este lugar.") return true 	
	end	
	setPlayerStorageValue(cid, 548745, os.time()+time)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Ativado.") 
	doTeleportWithDelay(cid, teleports[z[1]].pos, time) return true
end

 

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
13 horas atrás, Vodkart disse:

@tetheuscunha

@Emanueldk 

 

vocês pode usar assim para bloquear areas que nao podera usar o teleporte:

 

  Mostrar conteúdo oculto


--[[
Teleport System
Desenvolvido por Vodkart
Exclusivo TibiaKing
Versão : 1.0
]]--



--[[ Configuração ]]--


local time = 5 -- tempo que demora para ser teleportado		
local premium_teleport_houses = true -- se para teleportar para as houses precisa ser premium

local block_area = {
	{{x=909,y=1019,z=7}, {x=1000,y=1019,z=7}}, -- pos começo e final da area
	{{x=156,y=1019,z=7}, {x=200,y=1019,z=7}},
	{{x=200,y=1019,z=7}, {x=300,y=1019,z=9}}
	}



local teleports = { -- ["nome do lugar"] que poderá ir
	["depot"] = {pos = {x=129, y=54, z=6}, premium = false}, -- posição que irá e se precisa de premium para ir!
	["templo"] = {pos = {x=160, y=54, z=7}, premium = false},
	["arena"] = {pos = {x=125, y=351, z=9}, premium = false},
	["baiak city"] = {pos = {x=1028, y=1034, z=7}, premium = false}
}




--[[ Functions ]]--
function doTeleportWithDelay(cid, pos, delay) -- by vodkart
	if not isCreature(cid) then return LUA_ERROR end
	if delay > 0 then
		if getCreatureCondition(cid, CONDITION_INFIGHT) then
			setPlayerStorageValue(cid, 548745, 0) 
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} O teletransporte foi desativado pois você entrou em estado de combate.") return true
		end
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} "..delay.." segundos para se teletransportar.")
		addEvent(doTeleportWithDelay, 1000, cid, pos, delay-1)
	else
		doTeleportThing(cid, pos)
		doSendMagicEffect(getPlayerPosition(cid), 10)
	end
end
function getHouseInvite(cid) -- by vodkart
	local t = {}
	local qry = db.getResult("SELECT `house_id`,`list` FROM `house_lists`;")
	if (qry:getID() ~= -1) then
		repeat
			local lista = qry:getDataString("list")
			if string.find(lista, getCreatureName(cid)) then
				local id = qry:getDataInt("house_id")
				if not isInArray(t, id) then
					t[#t+1] = id
				end
				
			end
		until not qry:next()
		qry:free() 
	end
	return t
end	
function onSay(cid, words, param)
	local z = string.explode(param:lower(), ",")
	if getCreatureCondition(cid, CONDITION_INFIGHT) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Este comando só pode ser usado fora de combate.") return true
	elseif getPlayerStorageValue(cid, 548745) - os.time() > 0 then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} aguarde, você está em processo de teletransporte.") return true
	end
	for _, var in ipairs(block_area) do
		if isInRange(getCreaturePosition(cid), var[1], var[2]) then
			doPlayerSendCancel(cid, "você não pode teleportar nesta area..") return true
		end
	end
	if z[1] == "casa" or z[1] == "house" then
		local t,invite,str = {},getHouseInvite(cid),'{Teleport} As casas disponíveis para você se teletransportar são:\n'
		if premium_teleport_houses == true and not isPremium(cid) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} você precisa ser premium account para teleportar para houses.") return true
		end
		if getHouseByPlayerGUID(getPlayerGUID(cid)) ~= nil then
			t[#t+1] = getHouseByPlayerGUID(getPlayerGUID(cid))
		end
		if #invite ~= 0 then
			for i = 1,#invite do
				t[#t+1] = invite[i]	
			end
		end	
		if #t == 0 then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} você não tem nenhuma house para ir.") return true
		end	
		if not tonumber(z[2]) or tonumber(z[2]) > #t then 
			for i = 1, table.maxn(t) do
				local h = getHouseInfo(t[i])
				local hname, htown = getHouseName(t[i]),getTownName(h.town)
				
				str = str .. i .. ') '..hname..' [' .. htown..']'
				str = i ~= table.maxn(t) and str .. ', ' or str .. '.'
			end
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Você deve especificar uma das casas para se teletransportar usando !tp house,numeroDoIndice")
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str) return true
		end
		setPlayerStorageValue(cid, 548745, os.time()+time)
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Ativado.") 
		doTeleportWithDelay(cid, getHouseEntry(t[tonumber(z[2])]), time) return true
	end 
	if not teleports[z[1]] then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Desculpe, este lugar não existe, lugares disponíveis: house, depot, templo, arena, baiak city.") return true
	elseif teleports[z[1]].premium == true and not isPremium(cid) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Desculpe, você precisa ser premium para ir para este lugar.") return true 	
	end	
	setPlayerStorageValue(cid, 548745, os.time()+time)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Ativado.") 
	doTeleportWithDelay(cid, teleports[z[1]].pos, time) return true
end

 

 

 

Vlw funcionou. Como coloco pra quando começar a contagem regressiva o player não puder mexer, ficar travado no tile?

Senhoras e senhores, se alguma resposta lhe ajudou, marque-a como a melhor resposta e de ponto positivo, assim você incentiva quem lhe ajudou a continuar ajudando!!.

Link para o post
Compartilhar em outros sites
1 hora atrás, tetheuscunha disse:

Vlw funcionou. Como coloco pra quando começar a contagem regressiva o player não puder mexer, ficar travado no tile?

 

Tu tem o código fonte do servidor?
Se sim: https://otland.net/threads/tfs-1-2-creature-setnomove-bool-creature-canmove.241979/
(o tutorial é pra tfs 1.2 mas deve funcionar)

Editado por arierref (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
20 horas atrás, arierref disse:

Tu tem o código fonte do servidor?
Se sim: https://otland.net/threads/tfs-1-2-creature-setnomove-bool-creature-canmove.241979/
(o tutorial é pra tfs 1.2 mas deve funcionar)

 

Na minha versão tem como colocar, 0.4. Porém desconheço a função. Mas valeu pela a ajuda.

@Vodkart !!!

Senhoras e senhores, se alguma resposta lhe ajudou, marque-a como a melhor resposta e de ponto positivo, assim você incentiva quem lhe ajudou a continuar ajudando!!.

Link para o post
Compartilhar em outros sites
11 horas atrás, tetheuscunha disse:

Na minha versão tem como colocar, 0.4. Porém desconheço a função. Mas valeu pela a ajuda.

@Vodkart !!!

 

 

Spoiler

--[[
Teleport System
Desenvolvido por Vodkart
Exclusivo TibiaKing
Versão : 1.0
]]--



--[[ Configuração ]]--


local time = 5 -- tempo que demora para ser teleportado		
local premium_teleport_houses = true -- se para teleportar para as houses precisa ser premium

local block_area = {
	{{x=909,y=1019,z=7}, {x=1000,y=1019,z=7}}, -- pos começo e final da area
	{{x=156,y=1019,z=7}, {x=200,y=1019,z=7}},
	{{x=200,y=1019,z=7}, {x=300,y=1019,z=9}}
	}



local teleports = { -- ["nome do lugar"] que poderá ir
	["depot"] = {pos = {x=129, y=54, z=6}, premium = false}, -- posição que irá e se precisa de premium para ir!
	["templo"] = {pos = {x=160, y=54, z=7}, premium = false},
	["arena"] = {pos = {x=125, y=351, z=9}, premium = false},
	["baiak city"] = {pos = {x=1028, y=1034, z=7}, premium = false}
}




--[[ Functions ]]--
function doTeleportWithDelay(cid, pos, delay) -- by vodkart
	if not isCreature(cid) then return LUA_ERROR end
	if delay > 0 then
		if getCreatureCondition(cid, CONDITION_INFIGHT) then
			doCreatureSetNoMove(cid, false)
			setPlayerStorageValue(cid, 548745, 0) 
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} O teletransporte foi desativado pois você entrou em estado de combate.") return true
		end
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} "..delay.." segundos para se teletransportar.")
		addEvent(doTeleportWithDelay, 1000, cid, pos, delay-1)
	else
		doTeleportThing(cid, pos)
		doCreatureSetNoMove(cid, false)
		doSendMagicEffect(getPlayerPosition(cid), 10)
	end
end
function getHouseInvite(cid) -- by vodkart
	local t = {}
	local qry = db.getResult("SELECT `house_id`,`list` FROM `house_lists`;")
	if (qry:getID() ~= -1) then
		repeat
			local lista = qry:getDataString("list")
			if string.find(lista, getCreatureName(cid)) then
				local id = qry:getDataInt("house_id")
				if not isInArray(t, id) then
					t[#t+1] = id
				end
				
			end
		until not qry:next()
		qry:free() 
	end
	return t
end	
function onSay(cid, words, param)
	local z = string.explode(param:lower(), ",")
	if getCreatureCondition(cid, CONDITION_INFIGHT) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Este comando só pode ser usado fora de combate.") return true
	elseif getPlayerStorageValue(cid, 548745) - os.time() > 0 then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} aguarde, você está em processo de teletransporte.") return true
	end
	for _, var in ipairs(block_area) do
		if isInRange(getCreaturePosition(cid), var[1], var[2]) then
			doPlayerSendCancel(cid, "você não pode teleportar nesta area..") return true
		end
	end
	if z[1] == "casa" or z[1] == "house" then
		local t,invite,str = {},getHouseInvite(cid),'{Teleport} As casas disponíveis para você se teletransportar são:\n'
		if premium_teleport_houses == true and not isPremium(cid) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} você precisa ser premium account para teleportar para houses.") return true
		end
		if getHouseByPlayerGUID(getPlayerGUID(cid)) ~= nil then
			t[#t+1] = getHouseByPlayerGUID(getPlayerGUID(cid))
		end
		if #invite ~= 0 then
			for i = 1,#invite do
				t[#t+1] = invite[i]	
			end
		end	
		if #t == 0 then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} você não tem nenhuma house para ir.") return true
		end	
		if not tonumber(z[2]) or tonumber(z[2]) > #t then 
			for i = 1, table.maxn(t) do
				local h = getHouseInfo(t[i])
				local hname, htown = getHouseName(t[i]),getTownName(h.town)
				
				str = str .. i .. ') '..hname..' [' .. htown..']'
				str = i ~= table.maxn(t) and str .. ', ' or str .. '.'
			end
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Você deve especificar uma das casas para se teletransportar usando !tp house,numeroDoIndice")
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str) return true
		end
		setPlayerStorageValue(cid, 548745, os.time()+time)
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Ativado.")
		doCreatureSetNoMove(cid, true) 
		doTeleportWithDelay(cid, getHouseEntry(t[tonumber(z[2])]), time) return true
	end 
	if not teleports[z[1]] then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Desculpe, este lugar não existe, lugares disponíveis: house, depot, templo, arena, baiak city.") return true
	elseif teleports[z[1]].premium == true and not isPremium(cid) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Desculpe, você precisa ser premium para ir para este lugar.") return true 	
	end	
	setPlayerStorageValue(cid, 548745, os.time()+time)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Ativado.")
	doCreatureSetNoMove(cid, true)  
	doTeleportWithDelay(cid, teleports[z[1]].pos, time) return true
end

 

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
  • 2 weeks later...
  • 2 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 prot def
      Versão Beta já disponível no site: http://otshinobi.servegame.com/ 
      Servidor Online, aproveite e crie sua conta e baixe o client para Pc ou Android, todos os dados do seu personagem permanecerão intactos na versão definitiva que será lançada em breve!









      Já disponível em: Client 8.54 (Old) / New Client e Client Mobile para Android
      Temos 27 Vocações disponíveis
      Personagens FREE: Naruto, Sasuke, Sakura, Kakashi, Rock Lee, Shikamaru, Neji, Tenten, Hinata, Killer Bee, Gaara, Kiba, Temari, Kankuro, Shisui e Jiraiya.
      Personagens Shop Free (compre com Gold dentro do game): Obito, Tsunade, Kisame e Itachi.
      Personagens Shop VIP: Itachi (Shop), Obito (Shop) Minato (Shop) Madara (Shop) Tsunade (Shop) Hashirama (Shop) Nidaime (Tobirama) (Shop) Nagato (Shop) Raikage (Shop) Kisame (Shop)  (Você pode donatar pelo LivePix)
      Personagens Especiais obtidos através de eventos dentro do game: Orochimaru e Yamato.
      Transformações, jutsus e habilidades exclusivas para cada vocação
      Upe se divertindo pelo mapa, rate de experiência desafiante, ganhe jutsus e transformações exclusivas ao upar 
      Mapa exclusivo que terá atualizações periódicas:
      -> vilas disponíveis até o momento: Vila da Folha, Vila da Areia, Vila da Névoa, Vila da Pedra, Vila da Nuvem Vila da Chuva (Konoha, Kirigakure, Sunagakure, Iwagakure, Kumogakure, Amegakure) e País das Ondas.
      -> Area Vip: Várias Hunts para upar e farmar (Zetsu Covil, Member Akatsuki Covil, Northwest Island, Hunt Nagato, Hunt Samurais, Paper Island, Orochimaru Island) e Vila Shinobi Exclusiva para usuários Vip
      Sistema de graduação ninja: genin, chunin, jounin e anbu - Evolua seu ranking shinobi, apenas os merecedores se tornarão Kage.
      Exame Chunin completo, reviva o nostálgico arco do anime para se tornar Chunin
      Crie sua própria guild ou entre em uma existente
      Organização Akatsuki - torne-se membro da maior organização criminosa do mundo ninja
      Rank level (Figure entre os melhores jogadores do jogo)
      Reviva as sagas de Naruto Clássico e Naruto Shippuden
      Sistema de guilds - crie ou entre em uma guild e divirta-se com seus amigos
      Mundo PVP
      Eventos PVP
      Eventos de invasão, proteja a vila da destruição: Invasões em Konoha (Pain e Orochimaru) e Invasão de Deidara e Sasori em Sunagakure
      Compra e venda de casas para usuários Vip
      Npc Shop e NPC Shop Event - compre sua VIP ACCOUNT E VOCAÇÃO VIP ''totalmente'' GRÁTIS utilizando a moeda do jogo (GOLD).
      Npc Minoru - leva você diretamente para outras vilas e várias hunts do mapa. Area Free: Konoha, Kirigakure, Sunagakure, Iwagakure, Kumogakure, Amegakure, Valley of the End, South Forest, South Island, West Desert. Area VIP: Zetsu Covil, Member Akatsuki Covil, Northwest Island, Hunt Nagato, Hunt Samurais, Paper Island, Orochimaru Island, Vila Shinobi area com casas exclusivas para compra.
      Reviva vários arcos do Anime: Lute contra diversos personagens do anime com habilidades únicas
      Sistema Chakra Bijuu - torne-se jinchuuriki das bestas de cauda e utilize seu poder em batalha
      Diversas armas e equipamentos do anime
      Tasks da Tsunade - derrote os shinobi mais poderosos do mundo ninja e ganhe recompensas em Gold: 
      deidara da pedra 
      hidan das fonte
      itachi da folha 
      kabuto da folha
      kakuzo da cachoeira 
      kisame da nevoa
      konan da chuva
      madara da folha
      nagato da chuva
      orochimaru da folha
      pain da chuva
      sasori da areia
      tobi da folha
      Vários Npcs de Tasks espalhados pelo mapa: derrote inimigos e traga itens em troca de experiência e recompensas.
      Quests: Temos várias Quests Disponíveis e várias outras em desenvolvimento:
      ->Quest Nto Points FREE - Ganhe Nto Points para comprar itens vip com o Npc Shop (compre Premium Account, Vocações e itens)
      -> Shukaku Quest - Quest realizada em quatro pessoas 
      -> Sambi Quest - Quest realizada em duas pessoas 
      -> Akatsuki Ring Quest 
      -> Kurama Quest
      -> Quest Templo do Fogo
      -> Minato Quest
      -> Itachi Quest 
      -> Sasuke Boss Quest 
      -> Hidan Quest
      -> Kakuzo Quest 
      -> Sasori Quest 
      ->Pain Quest
      ->Tobirama Quest
      Jogo utiliza base parecida com o ntoultimate dos velhos tempos.
      Jogue e ajude a manter o servidor aberto até o lançamento da versão final
      Crie sua conta e baixe o jogo no site oficial: otshinobi.servegame.com 
      DIVIRTA-SE!
      DISPONÍVEL TAMBÉM CLIENT MOBILE!

    • Por Imperius
      O propósito é criar uma nova função em creaturescripts que será acionada toda vez que um novo report (CTRL + R) for aberto.
       
      Eu implementei para enviar uma notificação no grupo do Telegram, contendo os dados do report.
       
      Isso garantirá que os GMs tenham acesso aos reports dos jogadores mesmo quando não estiverem logados, e também evitará que algum report seja perdido caso o jogador saia do servidor.
      A parte do Telegram é apenas um exemplo. Você pode ajustar o script para executar outras ações desejadas.
       
      creatureevent.cpp:
      Dentro deste arquivo, localize a função:
       
      uint32_t CreatureEvent::executeChannelLeave(Player* player, uint16_t channelId, UsersMap usersMap)  
      abaixo dela, adicione:
       
      uint32_t CreatureEvent::executeOpenRuleViolation(Player* player, std::string message) { if (!m_interface->reserveEnv()) { std::clog << "[Error - CreatureEvent::executeOpenRuleViolation] Call stack overflow." << std::endl; return 0; } ScriptEnviroment* env = m_interface->getEnv(); env->setScriptId(m_scriptId, m_interface); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(player)); lua_pushstring(L, message.c_str()); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; }  
      Após, procure por:
       
      std::string CreatureEvent::getScriptEventName() const  
      abaixo de:
       
      case CREATURE_EVENT_CHANNEL_LEAVE: return "onLeaveChannel";  
      adicione:
       
      case CREATURE_EVENT_OPEN_RULE_VIOLATION: return "onOpenRuleViolation";  
      Agora, procure por:
       
      std::string CreatureEvent::getScriptEventParams() const  
      abaixo de:
       
      case CREATURE_EVENT_CHANNEL_LEAVE: return "cid, channel, users";  
      adicione:
       
      case CREATURE_EVENT_OPEN_RULE_VIOLATION: return "cid, message";  
      Procure por:
       
      bool CreatureEvent::configureEvent(xmlNodePtr p)  
      abaixo de:
       
      else if(tmpStr == "leavechannel") m_type = CREATURE_EVENT_CHANNEL_LEAVE;  
      adicione:
       
      else if(tmpStr == "openruleviolation") m_type = CREATURE_EVENT_OPEN_RULE_VIOLATION;  
       
      creatureevent.h:
      Dentro deste arquivo, localize:
       
      enum CreatureEventType_t  
      adicione "CREATURE_EVENT_OPEN_RULE_VIOLATION" como o último item de enum CreatureEventType_t
       
      Exemplo:
       
      enum CreatureEventType_t { // ... CREATURE_EVENT_OPEN_RULE_VIOLATION };  
      Agora, procure por:
       
      uint32_t executeChannelLeave(Player* player, uint16_t channelId, UsersMap usersMap);  
      abaixo dela, adicione:
       
      uint32_t executeOpenRuleViolation(Player* player, std::string message);  
      game.cpp:
      Dentro deste arquivo, localize:
       
      bool Game::playerReportRuleViolation(Player* player, const std::string& text)  
      e substitua por:
       
      bool Game::playerReportRuleViolation(Player* player, const std::string& text) { //Do not allow reports on multiclones worlds since reports are name-based if(g_config.getNumber(ConfigManager::ALLOW_CLONES)) { player->sendTextMessage(MSG_INFO_DESCR, "Rule violation reports are disabled."); return false; } cancelRuleViolation(player); boost::shared_ptr<RuleViolation> rvr(new RuleViolation(player, text, time(NULL))); ruleViolations[player->getID()] = rvr; ChatChannel* channel = g_chat.getChannelById(CHANNEL_RVR); if(!channel) return false; for(UsersMap::const_iterator it = channel->getUsers().begin(); it != channel->getUsers().end(); ++it) it->second->sendToChannel(player, SPEAK_RVR_CHANNEL, text, CHANNEL_RVR, rvr->time); CreatureEventList joinEvents = player->getCreatureEvents(CREATURE_EVENT_OPEN_RULE_VIOLATION); for(CreatureEventList::iterator it = joinEvents.begin(); it != joinEvents.end(); ++it) (*it)->executeOpenRuleViolation(player, text); return true; }  
      Agora é só compilar a source.
       
      depois em "data > creaturescripts > creaturescripts.xml", adicione:
       
      <event type="login" name="loginNotifyRuleViolation" script="notifyRuleViolation.lua"/> <event type="openruleviolation" name="openNotifyRuleViolation" script="notifyRuleViolation.lua"/>  
      em "data > creaturescripts > scripts", crie um arquivo notifyRuleViolation.lua e adicione:
       
      function onOpenRuleViolation(cid, message) local config = { token = "", -- Token do seu BOT no Telegram chatId = "" -- ID do chat do Telegram que será enviado a notificação. } local message = "Player: "..getCreatureName(cid).."\n\nReport:\n"..message.."" message = string.gsub(message, "\n", "%%0A") local url = "https://api.telegram.org/bot"..config.token.."/sendMessage" local data = "chat_id="..config.chatId.."&text="..message.."" local curl = io.popen('curl -d "'..data..'" "'..url..'"'):read("*a") return true end function onLogin(cid) registerCreatureEvent(cid, "openNotifyRuleViolation") return true end  
       
      Demonstração:
      1. Jogador abre um novo report (CTRL + R)

      2. notifyRuleViolation.lua, definido em creaturescripts.xml, é acionado para enviar uma notificação ao grupo do Telegram.
       

       
    • Por sirmagna
      Procuro equipe interessada em desenvolver um projeto de "Tibia HunterxHunter"
      Tenho um projeto pré-montado que estou criando sozinho
      estarei disponibilizando uma previa 
      das minhas sprites 
      preciso de uma equipe com boas ideias e criativa
      para concluir o ot e deixar online para todos desfrutarem dessa obra prima
       
      *******ate o momento o projeto contem sprites do Killua Zoldyck/Hisoka Morow/Gon Freecss/Chrollo Lucilfer/Kurapika
      >>>Previa:



      OTClient_2024-02-09_19-29-45.mp4
    • Por cloudrun2023
      CloudRun - Sua Melhor Escolha para Hospedagem de OTServer!
      Você está procurando a solução definitiva para hospedar seu OTServer com desempenho imbatível e segurança inigualável? Não procure mais! Apresentamos a CloudRun, sua parceira confiável em serviços de hospedagem na nuvem.
       
      Recursos Exclusivos - Proteção DDoS Avançada:
      Mantenha seu OTServer online e seguro com nossa robusta proteção DDoS, garantindo uma experiência de jogo ininterrupta para seus jogadores.
       
      Servidores Ryzen 7 Poderosos: Desfrute do poder de processamento superior dos servidores Ryzen 7 para garantir um desempenho excepcional do seu OTServer. Velocidade e estabilidade garantidas!
       
      Armazenamento NVMe de Alta Velocidade:
      Reduza o tempo de carregamento do jogo com nosso armazenamento NVMe ultrarrápido. Seus jogadores vão adorar a rapidez com que podem explorar o mundo do seu OTServer.
       
      Uplink de até 1GB:
      Oferecemos uma conexão de alta velocidade com até 1GB de largura de banda, garantindo uma experiência de jogo suave e livre de lag para todos os seus jogadores, mesmo nos momentos de pico.
       
      Suporte 24 Horas:
      Estamos sempre aqui para você! Nossa equipe de suporte está disponível 24 horas por dia, 7 dias por semana, para resolver qualquer problema ou responder a qualquer pergunta que você possa ter. Sua satisfação é a nossa prioridade.
       
      Fácil e Rápido de Começar:
      Configurar seu OTServer na CloudRun é simples e rápido. Concentre-se no desenvolvimento do seu jogo enquanto cuidamos da hospedagem.
       
      Entre em Contato Agora!
      Website: https://central.cloudrun.com.br/index.php?rp=/store/cloud-ryzen-brasil
      Email: [email protected]
      Telefone: (47) 99902-5147

      Não comprometa a qualidade da hospedagem do seu OTServer. Escolha a CloudRun e ofereça aos seus jogadores a melhor experiência de jogo possível. Visite nosso site hoje mesmo para conhecer nossos planos e começar!
       
      https://central.cloudrun.com.br/index.php?rp=/store/cloud-ryzen-brasil
       
      CloudRun - Onde a Velocidade Encontra a Confiabilidade!
       

    • Por luanluciano93
      Olá galera, em 02/12/23 o projeto Canary atualizou seu release para a versão 3.1.2 e como estou desenvolvendo um servidor usando esta base decidi divulga-la, pois a cada dia ela melhor muito, é um projeto promissor.

      Para quem não conhece, Canary é um projeto desenvolvido no github de um servidor completo na versão 13.21 (atualmente) com todas as features do tibia global. Ele tem duas opções de datapack que seriam o global e um custom.

      Aqui está o link do projeto para quem quiser conhecer melhor: https://github.com/opentibiabr/canary
      Aqui está o link do lançamento do release para a versão 3.1.2 e suas mudanças e melhorias: https://github.com/opentibiabr/canary/compare/v3.1.1...v3.1.2
      Aqui está o link do discord do projeto para dúvidas e etc: https://discord.com/invite/gvTj5sh9Mp
      Aqui está o link de tutoriais e a documentação do projeto: https://docs.opentibiabr.com/home/welcome

      Algumas das features existentes no projeto:

      BOOSTED CREATURE:

       
      EVENT SCHEDULE:

       
      CYCLOPEDIA:

       
      CHARMS:

       
      DAILY REWARD: 

       
      PREY:

       
      IMBUEMENTS:

       
      MARKET:

       
      STORE:

       
      CUSTOM CHARACTERS:


       
      DENTRE MUITOS OUTROS!
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo