Ir para conteúdo
  • Cadastre-se

Posts Recomendados

passa seu tvsystem na pasta lib e seu tvsys na pasta creaturescript

----------------------------------------------------------- lib --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
 
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, 1634, 1)
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)
setPlayerStorageValue(cid, 1634, -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

----------------------------------------------------------- creature script --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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, -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, -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) ~= speed then
doChangeSpeed(a, - getCreatureSpeed(a))
doChangeSpeed(a, speed)
end
doTeleportThing(a, 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
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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo