Olá Xtibianos,
Vim trazer sistema de stream para seu site.
faça o download dos arquivos:
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
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:
Créditos:
EU que fiz o script todo
Kamil Karkus por fornecer o outfit.php e as imagens
DkAngel - Pelo video