Postado Maio 26, 2016 9 anos 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..
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.