Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Ola membros do TK.

 

Estou com um servidor 
Pokemon Dash Advanced (1.0),
Version 8.54

Estou tendo o seguinte problema..

Tenho um sistema de TV / CAM  Esta funcionando normal quando se utiliza no CP porem quando a TV e utilizada em sua HOUSE o player que estava assistindo e teleportado para o player que estava com a CAM aberta
 

Segue abaixo as informações dos arquivos  

tvsystem.lua

function doPlayerWatchOther(cid, target)

	if not isCreature(cid) then return true end

	local hasOutfitCond = getCreatureCondition(cid, CONDITION_OUTFIT) and getCreatureOutfit(cid).lookType or -1
	setPlayerStorageValue(cid, 99282, getCreatureSpeed(cid))
	setPlayerStorageValue(cid, 99283, hasOutfitCond)

	setPlayerStorageValue(cid, 99285, target)

	local o = getCreatureOutfit(cid)
	local olddir = getCreatureLookDir(cid)
	local oldpos = getThingPos(cid)

	doCreatureSetHideHealth(cid, true)
	doCreatureSetNick(cid, "") --, " ")
	doPlayerLock(cid)

	local dir = "data/npc/TVNPC.xml"
	local a = io.open(dir, "a+")
	local b = a:read("*all")
	a:close()

	local npcname = 'name="'..getCreatureName(cid)..'  "'
	local npchealth = 'health now="'..getCreatureHealth(cid)..'" max="'..getCreatureMaxHealth(cid)..'"'
	local npcoutfit = 'look type="'..o.lookType..'" head="'..o.lookHead..'" body="'..o.lookBody..'" legs="'..o.lookLegs..'" feet="'..o.lookFeet..'"'

	b = string.gsub(b, 'name="(.-)"', npcname)
	b = string.gsub(b, 'health now="(.-)" max="(.-)"', npchealth)
	b = string.gsub(b, 'look type="(.-)" head="(.-)" body="(.-)" legs="(.-)" feet="(.-)"', npcoutfit)

	local c = io.open(dir, "w")
	c:write(b)
	c:close()

	o.lookType = 814

	doCreatureSetOutfit(cid, o, -1)
	doTeleportThing(cid, getThingPos(target), false)

	local n = doCreateNpc("TVNPC", oldpos)
	doCreatureSetLookDir(n, olddir)
	setPlayerStorageValue(n, 9891, getPlayerSex(cid))
	setPlayerStorageValue(n, 697548, getPlayerDesc(n, cid, true)) --alterado v1.7
	doPlayerSetVocation(cid, 1)
	doChangeSpeed(cid, -getCreatureSpeed(cid))
	doChangeSpeed(cid, getCreatureSpeed(target))

end

function doPlayerStopWatching(cid)

	if not isCreature(cid) then return true end

	doPlayerUnlock(cid)
	doCreatureSetNick(cid, "") --, getCreatureName(cid))

	local pos = {}
	local speed = getPlayerStorageValue(cid, 99282)
	local npc = getCreatureByName(getCreatureName(cid).."  ")
	local olddir = 0
		if isCreature(npc) then
			olddir = getCreatureLookDir(npc)
			local pos = getThingPos(npc)
			doRemoveCreature(npc)
			doTeleportThing(cid, pos, false)
		end
	doChangeSpeed(cid, -getCreatureSpeed(cid))
	doChangeSpeed(cid, speed)
	doCreatureSetHideHealth(cid, false)
	doCreatureSetLookDir(cid, olddir)
	doCreatureSetNick(cid, getCreatureName(cid))
	setPlayerStorageValue(cid, 99285, -1)

	local outfit = getPlayerStorageValue(cid, 99283)
		if outfit >= 1 then
			local newOutfit = getCreatureOutfit(cid)
			newOutfit.lookType = outfit
			doCreatureSetOutfit(cid, newOutfit, -1)
		else
			doCreatureRemoveCondition(cid, CONDITION_OUTFIT)
		end

end


function getWatchingPlayersFromPos(cid, pos)
	local ret = {}

	local cp = {}
	cp.x = pos.x
	cp.y = pos.y
	cp.z = pos.z

	for a = 0, 255 do
		cp.stackpos = a
		local b = getTileThingByPos(cp).uid
		if isCreature(b) and getCreatureOutfit(b).lookType == 814 and getPlayerStorageValue(b, 99285) == cid then
			table.insert(ret, b)
		end
	end
return ret
end


tvsys.lua

function onJoinChannel(cid, channelId, users, isTv)

	if channelId == 10 then
		doShowPokemonStatistics(cid)
	return false
	end

	if channelId == 11 then
		if reloadHighscoresWhenUsingPc then
			doReloadHighscores()
		end
           doPlayerPopupFYI(cid, getHighscoreString(8))
	return false
	end

	if channelId == 12 then
		if reloadHighscoresWhenUsingPc then
			doReloadHighscores()
		end
           doPlayerPopupFYI(cid, getHighscoreString(6))
	return false
	end
	--////////////////////////////////////////////////////////////////////////////////////////--
	if channelId >= 19 and channelId <= 21 then     --alterado v1.8  \/
	   setPlayerStorageValue(cid, 52480, (channelId-18))
	   setPlayerStorageValue(cid, 52484, ((channelId-18)*2)-1)
	   doSendAnimatedText(getThingPosWithDebug(cid), (channelId-18).."x"..(channelId-18), COLOR_BURN)
	   doPlayerSetVocation(cid, 8) 
       openChannelDialog(cid)
       return false
	end

	if channelId >= 13 and channelId <= 18 then
	   local sid = getPlayerByName(getPlayerStorageValue(cid, 52483):match("(.*),"))
	   ----------------  Proteçao para ter um oponente valido!
       if not isCreature(sid) then
	      doPlayerSendTextMessage(cid, 20, "The other player isn't online! Duel is canceled!")
	      doPlayerSetVocation(cid, 1)  
	      for i = 1, #storagesDuel do
              setPlayerStorageValue(cid, storagesDuel[i], -1)
          end
          doCreatureSetSkullType(cid, 0)
          return false
       end   
	   ----------------  Proteçao para os 2 players terem a qntdade de pokes pro duel
	   local pokes1 = getLivePokeballs(cid, getPlayerSlotItem(cid, 3).uid, true)  
	   local pokes2 = getLivePokeballs(sid, getPlayerSlotItem(sid, 3).uid, true)
	   if #pokes1 < (channelId-12) or #pokes2 < (channelId-12) then
	      local tpw = getPlayerStorageValue(cid, 52480) > 1 and "ally" or "opponent"
	      doPlayerSendTextMessage(cid, 20, "You or your "..tpw.." doesn't have that amount of pokemons in their bags! Duel are canceled!")
	      doPlayerSetVocation(cid, 1)  
	      for i = 1, #storagesDuel do
              setPlayerStorageValue(cid, storagesDuel[i], -1)
          end
          doCreatureSetSkullType(cid, 0)
          return false
       end   
       ----------------
       if getPlayerStorageValue(cid, 52480) > 1 then
          setPlayerStorageValue(cid, 52482, getPlayerStorageValue(cid, 52482).. getCreatureName(sid)..",")
          setPlayerStorageValue(cid, 52483, "")
       end
       ----------------
       
	   doSendAnimatedText(getThingPos(cid), (channelId-12).." Poke"..(channelId > 13 and "s" or ""), COLOR_BURN)
	   setPlayerStorageValue(cid, 52481, (channelId-12))      
          
          setPlayerStorageValue(sid, 52485, getCreatureName(cid))
          setPlayerStorageValue(sid, 52481, (channelId-12))     
          
          local players, pokes = getPlayerStorageValue(cid, 52480), getPlayerStorageValue(cid, 52481)
          local str = {}                           --alterado v1.9 \/
           
          table.insert(str, getCreatureName(cid).." is inviting you to a duel! Use order in him to accept it!\n")
          table.insert(str, "Info Battle: Duel "..players.."x"..players.." - "..pokes.." pokes.")
          doPlayerSendTextMessage(sid, 20, table.concat(str))
       
	    addEvent(doSendAnimatedText, 1000, getThingPos(cid), "BATTLE", COLOR_ELECTRIC) 
       doPlayerSetVocation(cid, 1)  
       return false   
    end
    --////////////////////////////////////////////////////////////////////////////////////////--
	if channelId >= 100 and channelId <= 10000 then

	local owner =  getPlayerByGUID(getChannelOwner(channelId))

		if isChannelTv(channelId) then
			if isCreature(owner) then
				if owner ~= cid then
					doPlayerWatchOther(cid, owner)
					local plural = #users == 1 and "" or "s"
					doPlayerSendChannelMessage(owner, "TV Channel", getCreatureName(cid)..' is now watching your channel (currently '..#users..' player'..plural..' watching this channel).', 15, channelId)
				else
					setPlayerStorageValue(cid, 99284, 1)
				end
			end
		elseif owner == cid then
			setPlayerStorageValue(cid, 99284, 2)
		end

	return true
	end

return true
end

function onLeaveChannel(cid, channelId, users)  

	if channelId >= 100 and channelId <= 10000 then

	local owner =  getPlayerByGUID(getChannelOwner(channelId))

		if isChannelTv(channelId) then
			if owner ~= cid and getCreatureOutfit(cid).lookType == 814 then
				doPlayerStopWatching(cid)
				local plural = #users == 2 and "" or "s"
				doPlayerSendChannelMessage(owner, "TV Channel", getCreatureName(cid)..' is not watching your channel anymore (currently '..#users - (1)..' player'..plural..' watching this channel).', 15, channelId)
			elseif owner == cid then
				setPlayerStorageValue(cid, 99284, -1)
				doSendAnimatedText(getThingPos(cid), "CAM OFF", 180)
				for stops = 1, #users do
					if users[stops] ~= owner then
						doPlayerStopWatching(users[stops])
					end
				end
			end
		elseif owner == cid then
			setPlayerStorageValue(cid, 99284, -1)
		end

	return true
	end

return true
end

function onWalk(cid, fromPosition, toPosition)



	-- Código não é mais necessário, feito em c++
	-- Code deprecated, made in c++
	--if not canWalkOnPos(toPosition, false, false, false, true, false) and getPlayerStorageValue(cid, 17000) >= 1 then
	--	doTeleportThing(cid, fromPosition, false)
	--	doPlayerSendCancel(cid, "Sorry, not possible.")
	--end

	if getPlayerStorageValue(cid, 99284) <= 0 then return true end

	local speed = getCreatureSpeed(cid)
	local a = getWatchingPlayersFromPos(cid, fromPosition)

	for b = 1, #a do
		if getCreatureSpeed(a[b]) ~= speed then
			doChangeSpeed(a[b], - getCreatureSpeed(a[b]))
			doChangeSpeed(a[b], speed)
		end
		doTeleportThing(a[b], toPosition, true)
	end

return true
end

local permited = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
"t", "u", "v", "x", "w", ",", "'", '"',
"y", "z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", ".", "!", "@", "#", "$", "%", "&", "*", "(", ")",
"-", "_", "+", "/", ";", ":", "?", "^", "~", "{", "[", "}", "]", ">", "<", "£", "¢", "¬"}

function onTextEdit(cid, item, newText)

	if item.itemid == 12330 then

		if getPlayerStorageValue(cid, 99284) >= 1 then
			doPlayerSendCancel(cid, "You are already on air!")
		return false
		end

		local channelName = getCreatureName(cid).."'s TV Channel"

		if string.len(newText) <= 0 then
			doPlayerSendCancel(cid, "Your channel is going to be shown as \""..getCreatureName(cid).."'s TV Channel\".")
		elseif string.len(newText) > 25 then
			doPlayerSendCancel(cid, "Your channel name can't have more than 25 characters.")
		return false
		else
			channelName = newText
		end


		setPlayerStorageValue(cid, 99284, 1)
		setPlayerStorageValue(cid, 99285, "")
		setPlayerStorageValue(cid, 99285, channelName)
		doPlayerCreatePrivateChannel(cid, channelName)
		doSendAnimatedText(getThingPos(cid), "ON AIR!", COLOR_GRASS)

	return false
	end

return true
end


Television.lua

 

function onUse(cid, item, frompos, item2, topos)

	if getPlayerStorageValue(cid, 99284) == 1 then
		doPlayerSendCancel(cid, "You can't watch TV while recording.")
	return true
	end

	local a = getThingPos(cid)

	if item.itemid >= 11416 and item.itemid <= 11418 then
		if a.y <= topos.y then
			doPlayerSendCancel(cid, "Please, stay in front of the television.")
			doPlayerSetVocation(cid, 1)
		return true
		end
	end

	if item.itemid == 11418 then
		if a.x < topos.x then
			doPlayerSendCancel(cid, "Please, stay in front of the television.")
			doPlayerSetVocation(cid, 1)
		return true
		end
	elseif item.itemid == 11416 then
		if a.x > topos.x then
			doPlayerSendCancel(cid, "Please, stay in front of the television.")
			doPlayerSetVocation(cid, 1)
		return true
		end
	end

	doPlayerSetVocation(cid, 2)

	if not checkChannelsList(cid) then
		doPlayerSendCancel(cid, "There aren't any channels on air right now.")
		doPlayerSetVocation(cid, 1)
	return true
	end

	if #getCreatureSummons(cid) >= 1 then
		doReturnPokemon(cid, getCreatureSummons(cid)[1], getPlayerSlotItem(cid, 8), pokeballs[getPokeballType(getPlayerSlotItem(cid, 8).itemid)].effect)
	end

	openChannelDialog(cid)	

return true
end

 

 

Por favor me deem uma luz..

Link para o post
Compartilhar em outros sites

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 LeoTK
      Salve galera neste tópico irei postar algumas prints do mapa do servidor para quem queira acompanhar e quem sabe até utilizar de inspiração para mapear o seu NTO.
       
      #Att 11/08/2022

       
       
       
       
      Konoha (Em Desenvolvimento)
       
       
       
       
    • Por DiigooMix
      Como o título já diz, será que alguém possui sprite do hitto e se possível as transformações dele?
    • Por OmegaZero
      Olá gostaria que alguém me ajudasse com uma "scripting" não sei se é pela mesma, seria o seguinte uma determinada arma teria a chance de dar double hit e não sei oque fazer alguem poderia ajudar?

      OBS:não sei se é o local correto se não for mova, desculpe
    • Por Madarasenju
      Olá galera do Tibia King, queria por uns npc's no meu server que não tem função de trade nem nada do tipo, queria que eles só andassem como enfeite, Rep+ Pra quem me ajudar... grato desde já.
    • Por SilenceRoot
      A magia é assim o você usa a a magia e ela ficará ativado por 10 segundos, até que o inimigo lance a primeira magia ou todos de uma vez, quando ele lançar a primeira magia, ele não lhe acertará ou seja esquivando dela, e logo em seguida será teletransportado aleatoriamente ao redor do inimigo que usou.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo