Ir para conteúdo

Stream Live tfs 1.0 e 1.2


Masterlokinhon

Posts Recomendados

Olá Xtibianos,

Vim trazer sistema de stream para seu site.

 

faça o download dos arquivos:

 

sql

stream

outfit

imagens

streamglobalevents

 

Como funciona:

Quando o server tiver abrindo ele carrega o mapa e envia para o mysql isso da um delay de 20 segundos +-

e ele fica enviando informação da posição dos players para o mysql a cada 1 segundo

 

Adicionar:

  • executes os arquivos na pasta sql no seu banco de dados do seu servidor do tibia
  • extraia a pasta stream para o seu site o arquivo loadplayer.data.php coloque na pasta principal do seu site
  • extraia as pastas outfit e imagens para dentro da pasta stream que você extraiu no seu site
  • extraia a pasta streamglobalevents dentro da pasta globalevents/scripts do seu servidor
caso queira usar no tfs 1.2 edite streamloadplayer.lua por esse

 

 

 

function onThink(interval)
local stream = {
pos = {x = 1274, y = 1546, z = 7},
posmax = {x = 20, y = 16}
}
local posx = math.floor(tonumber((stream.pos.x) - (stream.posmax.x/2)))
local posy = math.floor(tonumber((stream.pos.y) - (stream.posmax.y/2)))
local posx2 = math.floor(tonumber((stream.pos.x) + (stream.posmax.x/2)))
local posy2 = math.floor(tonumber((stream.pos.y) + (stream.posmax.y/2)))
db.query("UPDATE `stream_player` SET `del` = 1")
fromArea = {{x = posx, y = posy, z = stream.pos.z},{x = posx2, y = posy2, z = stream.pos.z}}
for x = fromArea[1].x, fromArea[2].x do
for y = fromArea[1].y, fromArea[2].y do
for z = fromArea[1].z, fromArea[2].z do
local tile = Tile({x = x, y = y, z = z})
if tile then
if tile:getCreatures() then
for _, cid in pairs(tile:getCreatures()) do
if cid:isPlayer() then
local c = Player(cid)
local name = c:getName()
local dir = c:getDirection()
local otf = c:getOutfit()
local selectQuery = db.storeQuery("SELECT * FROM `stream_player` WHERE `id` = "..db.escapeString(c.uid))
if selectQuery ~= false then
db.query("UPDATE `stream_player` SET `posx` = ".. x ..", `posy` = "..y..", `del` = 0, `dir` = "..dir..", `outfit` = "..otf.lookType..",`head` = "..otf.lookHead..",`body` = "..otf.lookBody..",`legs` = "..otf.lookLegs..",`feet` = "..otf.lookFeet..",`addon` = "..otf.lookAddons..",`mount` = "..otf.lookMount.." WHERE `id` = "..db.escapeString(c.uid))
else
db.query("INSERT INTO `stream_player` (`id`, `posx`, `posy`,`name`,`dir`,`del`,`outfit`,`head`,`body`,`legs`,`feet`,`addon`,`mount`) VALUES ("..db.escapeString(c.uid)..",".. x ..", "..y..", "..db.escapeString(name)..", "..dir..",0, "..otf.lookType..", "..otf.lookHead..", "..otf.lookBody..", "..otf.lookLegs..", "..otf.lookFeet..", "..otf.lookAddons..", "..otf.lookMount..")")
end
elseif cid:isNpc() then
local c = Creature(cid)
local name = c:getName()
local dir = c:getDirection()
local otf = c:getOutfit()
local selectQuery = db.storeQuery("SELECT * FROM `stream_player` WHERE `id` = "..db.escapeString(c.uid))
if selectQuery ~= false then
db.query("UPDATE `stream_player` SET `posx` = ".. x ..", `posy` = "..y..", `del` = 0, `dir` = "..dir..", `outfit` = "..otf.lookType..",`head` = "..otf.lookHead..",`body` = "..otf.lookBody..",`legs` = "..otf.lookLegs..",`feet` = "..otf.lookFeet..",`addon` = "..otf.lookAddons..",`mount` = "..otf.lookMount.." WHERE `id` = "..db.escapeString(c.uid))
else
db.query("INSERT INTO `stream_player` (`id`, `posx`, `posy`,`name`,`dir`,`del`,`outfit`,`head`,`body`,`legs`,`feet`,`addon`,`mount`) VALUES ("..db.escapeString(c.uid)..",".. x ..", "..y..", "..db.escapeString(name)..", "..dir..", 0, "..otf.lookType..", "..otf.lookHead..", "..otf.lookBody..", "..otf.lookLegs..", "..otf.lookFeet..", "..otf.lookAddons..", "..otf.lookMount..")")
end
elseif cid:isMonster() then
local c = Monster(cid)
local name = c:getName()
local dir = c:getDirection()
local otf = c:getOutfit()
local selectQuery = db.storeQuery("SELECT * FROM `stream_player` WHERE `id` = "..db.escapeString(c.uid))
if selectQuery ~= false then
db.query("UPDATE `stream_player` SET `posx` = ".. x ..", `posy` = "..y..", `del` = 0, `dir` = "..dir..", `outfit` = "..otf.lookType..",`head` = "..otf.lookHead..",`body` = "..otf.lookBody..",`legs` = "..otf.lookLegs..",`feet` = "..otf.lookFeet..",`addon` = "..otf.lookAddons..",`mount` = "..otf.lookMount.." WHERE `id` = "..db.escapeString(c.uid))
else
db.query("INSERT INTO `stream_player` (`id`, `posx`, `posy`,`name`,`dir`,`del`,`outfit`,`head`,`body`,`legs`,`feet`,`addon`,`mount`) VALUES ("..db.escapeString(c.uid)..",".. x ..", "..y..", "..db.escapeString(name)..", "..dir..", 0, "..otf.lookType..", "..otf.lookHead..", "..otf.lookBody..", "..otf.lookLegs..", "..otf.lookFeet..", "..otf.lookAddons..", "..otf.lookMount..")")
end
elseif cid:isSummon() then
local c = Creature(cid):getMaster()
local name = c:getName()
local dir = c:getDirection()
local otf = c:getOutfit()
local selectQuery = db.storeQuery("SELECT * FROM `stream_player` WHERE `id` = "..db.escapeString(c.uid))
if selectQuery ~= false then
db.query("UPDATE `stream_player` SET `posx` = ".. x ..", `posy` = "..y..", `del` = 0, `dir` = "..dir..", `outfit` = "..otf.lookType..",`head` = "..otf.lookHead..",`body` = "..otf.lookBody..",`legs` = "..otf.lookLegs..",`feet` = "..otf.lookFeet..",`addon` = "..otf.lookAddons..",`mount` = "..otf.lookMount.." WHERE `id` = "..db.escapeString(c.uid))
else
db.query("INSERT INTO `stream_player` (`id`, `posx`, `posy`,`name`,`dir`,`del`,`outfit`,`head`,`body`,`legs`,`feet`,`addon`,`mount`) VALUES ("..db.escapeString(c.uid)..",".. x ..", "..y..", "..db.escapeString(name)..", "..dir..", 0, "..otf.lookType..", "..otf.lookHead..", "..otf.lookBody..", "..otf.lookLegs..", "..otf.lookFeet..", "..otf.lookAddons..", "..otf.lookMount..")")
end
elseif cid:isCreature() then
local c = Creature(cid)
local name = c:getName()
local dir = c:getDirection()
local otf = c:getOutfit()
local selectQuery = db.storeQuery("SELECT * FROM `stream_player` WHERE `id` = "..db.escapeString(c.uid))
if selectQuery ~= false then
db.query("UPDATE `stream_player` SET `posx` = ".. x ..", `posy` = "..y..", `del` = 0, `dir` = "..dir..", `outfit` = "..otf.lookType..",`head` = "..otf.lookHead..",`body` = "..otf.lookBody..",`legs` = "..otf.lookLegs..",`feet` = "..otf.lookFeet..",`addon` = "..otf.lookAddons..",`mount` = "..otf.lookMount.." WHERE `id` = "..db.escapeString(c.uid))
else
db.query("INSERT INTO `stream_player` (`id`, `posx`, `posy`,`name`,`dir`,`del`,`outfit`,`head`,`body`,`legs`,`feet`,`addon`,`mount`) VALUES ("..db.escapeString(c.uid)..",".. x ..", "..y..", "..db.escapeString(name)..", "..dir..", 0, "..otf.lookType..", "..otf.lookHead..", "..otf.lookBody..", "..otf.lookLegs..", "..otf.lookFeet..", "..otf.lookAddons..", "..otf.lookMount..")")
end
end
end
end
end
end
end
end
db.query("DELETE FROM `stream_player` WHERE `del` = 1")
return true
end

 

 

adicione as seguintes tags no globalevents.xml dentro da pasta globalevents

 

<globalevent name="streamLoadMap" type="startup" script="streamloadmap.lua"/>
<globalevent name="streamLoadPlayer" interval="1000" script="streamloadplayer.lua"/>
Como usar:

 

configure os arquivos dentro da pasta globalevents aonde estraiu streamloadmap.lua e streamloadplayer.lua

local stream = {
     pos = {x = 1006, y = 993, z = 5}, -- A POSIÇÃO DO CENTRO DA STREAM
     posmax = {x = 20, y = 16} -- NÃO MUDE NADA
}
configure o arquivo mysql.php com as informação do seu MYSQL

$mysql = mysql_connect("HOST", "USER", "PASSWORD");
if (!$mysql) die ("<h1>ERROR: mysql</h1>");
$db = mysql_select_db("DB");
para adicionar o stream para seu site só colocar

include('stream/index.php');
Correções:

[21/07/2015] correção de imagens no site

[21/07/2015] correção dos nomes no site

[21/07/2015] melhoramento no carregamento da página

[21/07/2015] bug de carregamento de player no tfs 1.2

[21/07/2015] tfs 1.2 mostra summon e criaturas

 

Imagens:

post-267354-0-88896000-1437167987_thumb.png

 

post-267354-0-12442000-1437167965_thumb.png

 

https://youtu.be/DtzIdveeA_U

 

Créditos:

EU que fiz o script todo

Kamil Karkus por fornecer o outfit.php e as imagens

DkAngel - Pelo video

Editado por Masterlokinhon
Link para o comentário
Compartilhar em outros sites

Sim, o mysql esta configurado coma s informações corretas mas reparei que mesmo que coloque uma info errada ele não acusa, digo colocar nome da db errada ou senha diferente ele manda a informação no console como se tivesse tudo bem, mas as informações colocadas estão certas, foi somente um teste com info errada..

 

sobre o include vai na ss e tbm a tela quando acesso o stream, se precisar de algo mais detalhado basta informar, grato pelo apoio

 

[edit] postei img erada, vou reupar a img correta

 

Desculpa a minha ignorância mas o include é para colocar no index.php do site né, certo eu havia colocado no index errado (se for), colocando o o include no index da raiz o sit enão aparece, tirando ele volta a aparecer..

 

Uzqh4L9.jpg

 

e sem o include no index o site funciona mas se acessar direto o /stream a tela fica branca tbm sem erro algum..do mesmo jeito que esta aparecendo o localhost aí.

 

[edit] o problema do localhost em branco é que eu havia colocado o include no index do stream, removi e o site voltou a aparecer mas acessando o stream direto localhost/stream a tela continua branca

 

nMVOChH.jpg

Editado por DkAngel
Link para o comentário
Compartilhar em outros sites

O erro deve ser porque você ta colocando no index do gesior

 

tenta fazer um teste assim entra na pasta pages e abre o latestenews.php

logo depois do <?php coloque include("stream/index.php"); ve se vai ficar tudo ok

 

post-267354-0-55658900-1437244833_thumb.png

Editado por Masterlokinhon
Link para o comentário
Compartilhar em outros sites

Bem, continuo agradecendo pelo suporte..

 

colocando o include no latestnews e carregando o site ele fica assim

 

VFian3t.jpg

a area informada em ambos os lua começa no ponto indicado na proxima img

 

do mapa

function onStartup()
	local stream = {
		pos = {x = 1281, y = 1547, z = 7},
		posmax = {x = 20, y = 16}
	}

e do player

function onThink(interval)
	local stream = {
		pos = {x = 1281, y = 1547, z = 7},
		posmax = {x = 20, y = 16}
	}

MwqmdJn.jpg

Link para o comentário
Compartilhar em outros sites

<globalevent name="streamLoadMap" type="startup" script="streamloadmap.lua"/>

<globalevent name="streamLoadPlayer" interval="1000" script="streamloadplayer.lua"/>

 

Você colocou certinho ?

 

da uma olhada no mysql vai no stream_map ve se tem alguma coisa lah ?

Abre o localhost/stream, vê se vai aparecer algum erro e se vai ficar preto tbm ?

Link para o comentário
Compartilhar em outros sites

Desculpe por lhe fazer perder tanto tempo, as imgs não estavam aparecendo pois eu criei a pasta imagens com nome errado, no stream_map esta carregado todos os tiles, só os players que não estão aparecendo.. o globalevents esta correto como o informado.

 

A pagina principal, com o client aberto com um char na posição gravavel tem ja uns 6 minutos e nada de char no stream

 

KCNFlxJ.jpg

 

o stream_player

QbFcx5T.png

 

para evitar outra 'cabacisse' minha eu conferi o nome da pasta e esta da forma informada

na pasta raiz www/stream/outfits/ e a numeração de cada um por em pastas de 1 até 700 e alguma coisa

Editado por DkAngel
Link para o comentário
Compartilhar em outros sites

Nenhum erro sequer.. segue a imagem

 

bQhSAfk.png

 

segue o streamloadplayer.lua que foi só descompactado com a posição alterada

function onThink(interval)
	local stream = {
		pos = {x = 1274, y = 1546, z = 7},
		posmax = {x = 20, y = 16}
	}
	local posx = math.floor(tonumber((stream.pos.x) - (stream.posmax.x/2)))
	local posy = math.floor(tonumber((stream.pos.y) - (stream.posmax.y/2)))
	local posx2 = math.floor(tonumber((stream.pos.x) + (stream.posmax.x/2)))
	local posy2 = math.floor(tonumber((stream.pos.y) + (stream.posmax.y/2)))
	db.query("UPDATE `stream_player` SET `del` = 1")
	fromArea = {{x = posx, y = posy, z = stream.pos.z},{x = posx2, y = posy2, z = stream.pos.z}}
	for x = fromArea[1].x, fromArea[2].x do
		for y = fromArea[1].y, fromArea[2].y do
			for z = fromArea[1].z, fromArea[2].z do
				if(getThingfromPos({x = x, y = y, z = z, stackpos = 255}).uid > 0) then
					if(isPlayer(getThingfromPos({x = x, y = y, z = z, stackpos = 255}).uid))then
						local c = Player(getThingfromPos({x = x, y = y, z = z, stackpos = 255}).uid)
						local name = c:getName()
						local dir = c:getDirection()
						local otf = c:getOutfit()
						local selectQuery = db.storeQuery("SELECT * FROM `stream_player` WHERE `name` = "..db.escapeString(name))
						if selectQuery ~= false then
							db.query("UPDATE `stream_player` SET `posx` = ".. x ..", `posy` = "..y..", `del` = 0, `dir` = "..dir..", `outfit` = "..otf.lookType..",`head` = "..otf.lookHead..",`body` = "..otf.lookBody..",`legs` = "..otf.lookLegs..",`feet` = "..otf.lookFeet..",`addon` = "..otf.lookAddons..",`mount` = "..otf.lookMount.." WHERE `name` = "..db.escapeString(name))
						else
							db.query("INSERT INTO `stream_player` (`id`, `posx`, `posy`,`name`,`dir`,`del`,`outfit`,`head`,`body`,`legs`,`feet`,`addon`,`mount`) VALUES (1,".. x ..", "..y..", "..db.escapeString(name)..", "..dir..",0, "..otf.lookType..", "..otf.lookHead..", "..otf.lookBody..", "..otf.lookLegs..", "..otf.lookFeet..", "..otf.lookAddons..", "..otf.lookMount..")")
						end
					elseif (isNpc(getThingfromPos({x = x, y = y, z = z, stackpos = 255}).uid)) then
						local c = Creature(getThingfromPos({x = x, y = y, z = z, stackpos = 255}).uid)
						local name = c:getName()
						local dir = c:getDirection()
						local otf = c:getOutfit()
						local selectQuery = db.storeQuery("SELECT * FROM `stream_player` WHERE `name` = "..db.escapeString(name))
						if selectQuery ~= false then
							db.query("UPDATE `stream_player` SET `posx` = ".. x ..", `posy` = "..y..", `del` = 0, `dir` = "..dir..", `outfit` = "..otf.lookType..",`head` = "..otf.lookHead..",`body` = "..otf.lookBody..",`legs` = "..otf.lookLegs..",`feet` = "..otf.lookFeet..",`addon` = "..otf.lookAddons..",`mount` = "..otf.lookMount.." WHERE `name` = "..db.escapeString(name))
						else
							db.query("INSERT INTO `stream_player` (`id`, `posx`, `posy`,`name`,`dir`,`del`,`outfit`,`head`,`body`,`legs`,`feet`,`addon`,`mount`) VALUES ( 0,".. x ..", "..y..", "..db.escapeString(name)..", "..dir..", 0, "..otf.lookType..", "..otf.lookHead..", "..otf.lookBody..", "..otf.lookLegs..", "..otf.lookFeet..", "..otf.lookAddons..", "..otf.lookMount..")")
						end
					end
				end
			end
		end
	end
	db.query("DELETE FROM `stream_player` WHERE `del` = 1")
	return true
end
Editado por DkAngel
Link para o comentário
Compartilhar em outros sites

Coloca

 

function isPlayer(cid) return Player(cid) ~= nil end

function isNpc(cid) return Npc(cid) ~= nil end

 

antes disso

 

function onThink(interval)

local stream = {

pos = {x = 1006, y = 993, z = 5},

posmax = {x = 20, y = 16}

}

 

no streamLoadPlayer.lua

Editado por Masterlokinhon
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...