Cast [TV] System 1.0

Roksas
Por Roksas
em Mods, funções e outros
  • 1
  • 2

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Cast System 1.0

Como vãao galera? Há quanto tempo não? Hoje eu vim trazer para vocês um sisteminha bem simples e legal, aonde você pode assistir os outros jogadores e vice-versa.

 

Versão testada: TFS 8.6 0.4 and TFS 0.3.6 8.6

 

Comandos utilizados in-game:

!cast on -- Ativa o seu Cast System, e permite os outros jogadores te assistirem;
!cast off -- Desativa o seu Cast System;
!cast exit -- Você sai do Cast no qual está assistindo;
!cast NAME -- Começa a assistir um jogador (NAME).

Instalação

Vá em data/talkactions/scripts crie um arquivo chamado castSys.lua e adicione o seguinte código dentro do mesmo:

--[[ Perfect Cast System 1.0 by Roksas

Acesse ja XTibia.com =) ]]--

function onSay(cid, words, param)
local player = getPlayerByName(param)


if not isInArray({"list", "exit", "off", "on"}, param) and not param or param == "" then
    doSendMagicEffect(getThingPos(cid), 2)
    doPlayerSendTextMessage(cid, 20, "Enter the name of the player, which you want to cast in parameters.")
    return true
end

if param == "on" then

if getPlayerStorageValue(cid, 10359) >= 1 then
    doSendMagicEffect(getThingPos(cid), 2)
    doPlayerSendTextMessage(cid, 20, "Your Cast System is already running ONLINE!")
    return true
end

    castOn(cid)
    doSendMagicEffect(getThingPos(cid), 39)
    doPlayerSendTextMessage(cid, 20, "You have activated your Cast System, now others can cast you, to disable this feature, use the parameter '!cast off'.")
    return true
end

if param == "off" then

    if getPlayerStorageValue(cid, 10359) < 1 then
    doSendMagicEffect(getThingPos(cid), 2)
    doPlayerSendTextMessage(cid, 20, "Your Cast System is already OFFLINE!")
    return true
end

    castOff(cid)
    doSendMagicEffect(getThingPos(cid), 39)
    doPlayerSendTextMessage(cid, 20, "You have disabled your Cast System, from now on no one can watch you, unless you turn on the Cast, using the parameter '!cast on'.")
    return true
end

if param == "exit" then

    if getPlayerStorageValue(cid, 12269) < 1 then
    doSendMagicEffect(getThingPos(cid), 2)
    doPlayerSendTextMessage(cid, 20, "You no are casting players.")
    return true
end

    cancelCast(cid)
    doSendMagicEffect(getThingPos(cid), 39)
    doPlayerSendTextMessage(cid, 20, "You stopped casting, use the parameter '!cast list' to see who can be casted.")
    return true
end

if param == "list" then

    if #whoCasted() < 1 then
    doSendMagicEffect(getThingPos(cid), 2)
    doPlayerSendTextMessage(cid, 20, "At this time, no player can be casted, try again later.")
    return true
end

    doPlayerSendTextMessage(cid, 20, "Players can be casteds:\n\n")
    for k, v in ipairs(whoCasted()) do
    doPlayerSendTextMessage(cid, 20, " - "..getCreatureName(v).."")
end            

    return true
end

if not isPlayer(player) then
    doSendMagicEffect(getThingPos(cid), 2)
    doPlayerSendTextMessage(cid, 20, "This player is offline or does not exist. Use the parameter '!cast list' to see who can be casted.")
    return true
end

if getPlayerStorageValue(player, 10359) < 1 then
    doSendMagicEffect(getThingPos(cid), 2)
    doPlayerSendTextMessage(cid, 20, "You can only cast one person with the Cast System is activated, use the parameter '!cast list' to see who can be assisted.")
    return true
end

if getPlayerStorageValue(cid, 10359) >= 1 then
    doSendMagicEffect(getThingPos(cid), 2)
    doPlayerSendTextMessage(cid, 20, "To cast a player, you must first disable your Cast System using the parameter '!cast off'.")
    return true
end

if not getTileInfo(getThingPos(cid)).protection then
    return doPlayerSendTextMessage(cid, 20, "You need enter in Protection Zone to use the Cast System.") and true
end

    setPlayerStorageValue(cid, 12269, 1)
    castPlayer(cid, player)
    doSendMagicEffect(getThingPos(cid), 39)
    doPlayerSendTextMessage(cid, 20, "You are casting the player "..getCreatureName(player)..", to exit just use the command '!cast exit'.")
    doPlayerSendTextMessage(player, 20, "You are casted by "..getCreatureName(cid).." player to disable your Cast, simply use the parameter '!cast off'.")
    return true
end

function cancelCast(uid)

mayNotMove(uid, false)
    doCreatureSetHideHealth(uid, false)
    setPlayerStorageValue(uid, 12269, -1)
    doRemoveCondition(uid, CONDITION_OUTFIT)                                                
    return doTeleportThing(uid, getTownTemplePosition(getPlayerTown(uid))) or doTeleportThing(uid, getPlayerMasterPos(uid)) and true
end

function castOn(uid)
    return setPlayerStorageValue(uid, 10359, 1) and true
end

function castOff(uid)
    return setPlayerStorageValue(uid, 10359, -1) and true
end

function castPlayer(uid, player)
if not isPlayer(player) then
    cancelCast(uid)
    return true
end

if getPlayerStorageValue(player, 10359) < 1 then
    cancelCast(uid)
    return true
end

if getPlayerStorageValue(uid, 12269) < 1 then
    cancelCast(uid)
    return true
end

mayNotMove(uid, true)
    doSetItemOutfit(uid, 1934, -1)
    doCreatureSetHideHealth(uid, true)
    doTeleportThing(uid, getThingPos(player))
    return addEvent(castPlayer, 1 * 1000, uid, player) and true
end

function whoCasted()
local casteds = {}

for _, pid in ipairs(getPlayersOnline()) do
    if getPlayerStorageValue(pid, 10359) >= 1 then
    table.insert(casteds, pid)
end
end

    return #casteds > 0 and casteds or {}
end

Volte uma pasta (data/talkaction) abra com algum editor de texto o arquivo talkactions.xml e adicione essa tag em qualquer lugar:

<talkaction words="!cast;/cast" event="script" value="castSys.lua"/>

Muito bem, após isso siga para a pasta data/creaturescripts/scripts, faça o mesmo, crie um arquivo chamado castSys.lua e adicione isso dentro:

function onLogout(cid)

if getPlayerStorageValue(cid, 12269) > 0 then
    doPlayerSendCancel(cid, "To logout, you need to exit the Cast System first. Use the parameter '!cast exit'.")
    return false
end

setPlayerStorageValue(cid, 10359, -1)
    return true
end

function onStatsChange(cid, attacker, type, combat, value)

if not isCreature(cid) then
    return true
end

if getPlayerStorageValue(cid, 12269) >= 1 and isMonster(attacker) or isPlayer(attacker) then
    return false
end

    return true
end

function onAttack(cid, target)

if not isPlayer(cid) or not isPlayer(target) then
    return true
end

if getPlayerStorageValue(cid, 12269) > 0 then
    doRemoveCondition(cid, CONDITION_INFIGHT)
    return false
end

    return true
end

Já no arquivo creaturescripts.xml, você vai adicionar essa tag:

<event type="attack" name="castAttack" event="script" value="castSys.lua"/>
<event type="statschange" name="castHits" event="script" value="castSys.lua"/>
<event type="logout" name="castLogout" event="script" value="castSys.lua"/>

E no arquivo login.lua você vai adicionar essas 3 linhas:

registerCreatureEvent(cid, "castAttack")
registerCreatureEvent(cid, "castHits")
registerCreatureEvent(cid, "castLogout")

Para que o player que está assitindo ao outro não use magias enquanto está assistindo, coloque essas linhas abaixo dentro de cada script das magias, debaixo da linha:

function onCastSpell(cid, var)

Coloque:

if getPlayerStorageValue(cid, 12269) >= 1 then
    return doPlayerSendCancel(cid, "You is casting, not is possible.") and false
end

Faça a mesma coisa com as quests, embaixo de:

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

Prontinho galera, basta reiniciar o servidor e usar, é isto por hoje, espero que tenham gostado, ideias/sugestões para futuras versões, bugs ou críticas sobre o sistema, basta deixar um simples comentário aí no tópico, estarei aqui para atendê-los.

 

Obrigado pela atenção, façam bom uso.

 

 

 

2u9mxcp.jpg


jikdpv.jpg

 

 

 


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

aguinho600

Zero
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 23/12/10Posts: 211

Muito bom...Continue postando mais sistemas assim :D

Aqueles que conhecem o "ódio", também conhecem à "tristeza".

 

 

Ajudei ? + REP, apenas por respeito

;)

AlphaLove

Força de vontade :)
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 12/06/10Posts: 408Char no Tibia: Nakamura

Parabéns Roksas, vai ajudar muita gente mesmo véi.

reputado :D


Fan Bar:

nakamurafans.gif

"A guerra inflige morte, ferimentos e dor para ambos os lados.
A morte de alguém querido é difícil de se aceitar.
Nos convencemos de que não há como eles morrerem.
É apenas natural, particularmente, da nossa geração...
Nós não conhecemos a guerra.
Tentam encontrar significado na morte, mas há apenas dor.
Um ódio insuportável... Mortes sem sentido... Ódio eterno... E a dor que não cura.
É isso que a guerra é."


.

Enself

banido
avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 03/06/13Posts: 213

Muito Bom, arrumo aquele negocio do exit quando o player da cast no outro por exemplo. estou numa hunt com o cast ligado alguem da cast em min, quando da !cast exit eles teleporta no player?

Usuário banido por divulgação indevida.

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Sim, está teleportando para o templo ^^


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

RodriigoRobson

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 19/12/12Posts: 465

O verdadeiro cast system e na hora de logar e aparece a lista dos jogadores e etc... isso ta parecendo mais um spectator que cast system mais esta Genial Bom demais o sistema parabens

29475_4.png

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Creio que não EXISTA um 'verdadeiro', cada um cada um. Oo

Mas tudo bem, rsrs, obrigado cara


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

Spik3ex

avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 06/06/13Posts: 66

Muito bom, só que quando coloquei o script nas minhas magias de healing, elas pararam de funcionar, da para usar a magia mais ela não heala. Tens solução?

Não comprem em uma empresa que faz spam em fórums.

Usuário banido por falsa propaganda e SPAM.

pedreroxx

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 03/01/09Posts: 50Char no Tibia: cleber de pira

Olá.. Estou com o mesmo problema do amigo a cima!! Todas as magias de healing.. pararam de funcionar!! Gostaria de ajuda pois realmente o sistema é fantastico.. mais sem magias de healing não rola rs Obrigado!!Rep+

Spik3ex

avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 06/06/13Posts: 66

Eu retirei esse sistema, totalmente inútil, com esse bug das magias, ainda vai achar mais amigo Pedreroxx, como o dono do tópico diz, é uma réplica, tá certo, ficou ótimo o sistema, mais precisa arrumar ainda várias coisas.

 

Vou falar só uma falha, só uma, contém várias.

O player que estiver no final de uma quest (aonde fica o báu), ele pode ativar o /cast on, e outro jogador ir até ele /cast NickDeQuemEstaNaFinalQuest , e o jogador "telespectador" também pode dar use no baú e pegar o prémio, não importa o level, etc, ele também pega o prémio.

Fora essas 2 grandes falhas que achei neste sistema, contém outras, nem vou comentar.

Minha opnião é, não vale apena usar esse sistema até quando arrumarem tudo.

 

Grande abraços.

Não comprem em uma empresa que faz spam em fórums.

Usuário banido por falsa propaganda e SPAM.

pedreroxx

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 03/01/09Posts: 50Char no Tibia: cleber de pira

OMG!!! Que falha cara... Obrigado Por Avisar!! Precisar estamos a disposição Spikex!

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

Session Start

cleber.16mb.com
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 25/04/12Posts: 752Gênero: Masculino

No treco das quests.. é só colocar pra checar a storage de estar assistindo o cast... e já era o.O

 

Ex:

if getPlayerStorageValue(cid, 42361) ~= 1 and getPlayerStorageValue(cid, 12269) <= 0 then

 

recebe a quest

 

else

 

voce está assistindo ao cast :3

 

end

 

# TOPIC REP + MANO :)

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

No treco das quests.. é só colocar pra checar a storage de estar assistindo o cast... e já era o.O

 

Ex:

if getPlayerStorageValue(cid, 42361) ~= 1 and getPlayerStorageValue(cid, 12269) <= 0 then

 

recebe a quest

 

else

 

voce está assistindo ao cast :3

 

end

 

# TOPIC REP + MANO :)

Nao fica muito pratico fazer isso em todas as quests...

E tambem quem esta assistindo pode mover os itens que estao por perto e tambem ficar falando.

 

O script eh otimo, nao posso negar, mas preciso arrumar os bugs antes de usar...

cs007

Vim de longe
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 10/07/08Posts: 574Gênero: MasculinoChar no Tibia: Hebi Of Amera

Tenho mapa global, é complicado editar todas as magias... Mesmo assim parabéns.

  • 1
  • 2