Bom galera com muita gente quer o tal cast tv está ai, LEMBRADO É SISTEMA REPLICA DO PARAGUAI , ENTÃO BOM USO
Versão testada: TFS 8.6 0.4 e 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:
--[[PerfectCastSystem1.0byRoksas]]--
function onSay(cid, words, param) local player = getPlayerByName(param)
ifnot isInArray({"list","exit","off","on"}, param)andnot param or param ==""then doSendMagicEffect(getThingPos(cid),2) doPlayerSendTextMessage(cid,20,"Enter the name of the player, which you want to cast in parameters.") returntrue end
if param =="on"then if getPlayerStorageValue(cid,10359)>=1then doSendMagicEffect(getThingPos(cid),2) doPlayerSendTextMessage(cid,20,"Your Cast System is already running ONLINE!") returntrue 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'.") returntrue end
if param =="off"then if getPlayerStorageValue(cid,10359)<1then doSendMagicEffect(getThingPos(cid),2) doPlayerSendTextMessage(cid,20,"Your Cast System is already OFFLINE!") returntrue 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'.") returntrue end
if param =="exit"then if getPlayerStorageValue(cid,12269)<1then doSendMagicEffect(getThingPos(cid),2) doPlayerSendTextMessage(cid,20,"You no are casting players.") returntrue end
cancelCast(cid) doSendMagicEffect(getThingPos(cid),39) doPlayerSendTextMessage(cid,20,"You stopped casting, use the parameter '!cast list' to see who can be casted.") returntrue 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.") returntrue end
doPlayerSendTextMessage(cid,20,"Players can be casteds:\n\n") for k, v in ipairs(whoCasted())do doPlayerSendTextMessage(cid,20," - "..getCreatureName(v).."") end
returntrue end
ifnot 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.") returntrue end
if getPlayerStorageValue(player,10359)<1then 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.") returntrue end
if getPlayerStorageValue(cid,10359)>=1then doSendMagicEffect(getThingPos(cid),2) doPlayerSendTextMessage(cid,20,"To cast a player, you must first disable your Cast System using the parameter '!cast off'.") returntrue end
ifnot getTileInfo(getThingPos(cid)).protection then return doPlayerSendTextMessage(cid,20,"You need enter in Protection Zone to use the Cast System.")andtrue 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'.") returntrue end
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
function onLogout(cid)
if getPlayerStorageValue(cid,12269)>0then doPlayerSendCancel(cid,"To logout, you need to exit the Cast System first. Use the parameter '!cast exit'.") returnfalse end
setPlayerStorageValue(cid,10359,-1) returntrue end
function onStatsChange(cid, attacker, type, combat, value)
ifnot isCreature(cid)then returntrue end
if getPlayerStorageValue(cid,12269)>=1and isMonster(attacker)or isPlayer(attacker)then returnfalse end
returntrue end
function onAttack(cid, target)
ifnot isPlayer(cid)ornot isPlayer(target)then returntrue end
if getPlayerStorageValue(cid,12269)>0then doRemoveCondition(cid, CONDITION_INFIGHT) returnfalse end
returntrue end
Já no arquivo creaturescripts.xml, você vai adicionar essa tag:
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)>=1then returnfalse end
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.
info
Grupo: Conde
Registrado: 15/06/15
Posts: 729
Reputação: +200
Bom galera com muita gente quer o tal cast tv está ai, LEMBRADO É SISTEMA REPLICA
DO PARAGUAI ,ENTÃO BOM USOVersão testada: TFS 8.6 0.4 e TFS 0.3.6 8.6
Comandos utilizados in-game:
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 ]]--
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
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 false
end
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.
Créditos:
Roksas
kekezitolhp