Ir para conteúdo
  • 0

[Actions, Talkactions] Não Usar O Dance System Em Cima De Uma Actions


kelvinvictor

Pergunta

Tipo do script: Actions, Talkactions

Protocolo (versão do Tibia): 8.60

Servidor utilizado: Baiak

Nível de experiência: Médio

Adicionais/Informações: Bom, vou começar do principio, meu servidor, quando o player da exit nos treiners, eles ficam la AFK, o otserv baniu, como falsificação de dados, eu tinha removido a action do tile que faz o player deslogar, mais vou colcoar DENOVO ( http://www.xtibia.com/forum/topic/134811-movement-ant-exit/ ) Só que se o player usar o comando !dance start ( http://www.xtibia.com/forum/topic/134984-moveevent-dance-system/ ) ele não desloga.

 

Gostaria que ao player estivesse no tile com uma actions 25000 não podesse usar o !dance start, só o stop, ou, ao dar exit, o !dance start, automaticamente desse !dance stop, meu servidor é serio, dedicado, precisso disso urgente.

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Isso resolvera seu problema.

 

Em data/movements/movements.xml cole as tags:

<movevent type="StepIn" actionid="25000" event="script" value="tiledance.lua"/>
<movevent type="StepOut" actionid="25000" event="script" value="tiledance.lua"/>

 

Duplica um arquivo em data/movements/scripts e nomeia para "tiledance" sem as aspas e nele cole:

function onStepIn(cid, item, pos)
if (getPlayerStorageValue(cid, 302124) > 0) then
doPlayerSendTextMessage(cid, 22, "Você não pode subir com dancing system ativado.")
return false
end
setPlayerStorageValue(cid, 302123, 1)
return TRUE
end

function onStepOut(cid, item, pos)
setPlayerStorageValue(cid, 302123, 0)
return TRUE
end

 

Agora em talkactions/scripts, troque seu arquivo "dancing.lua" por esse:

local conf = {}
-- // config // ---
conf.danceTexts = {"GO GO DANCE!", "DANCE NOW!", "DANCE IS FUNY!"}
conf.textSpeed = 1500 -- how fast animated texts is sending?
conf.danceSpeed = 100 -- dance speed
conf.outfitSpeed = 250 -- outfit changer speed
conf.outfitMale = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325} -- all male outfits
conf.outfitFemale = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324} -- all female outfits
-- // end // --



function dancer(tab)
if isPlayer(tab[1]) then
	local dirs = {[0] = {1,3},[1] = {0,2},[2] = {1,3},[3] = {0,2}}
	local look = dirs[getCreatureLookDirection(tab[1])]
	doCreatureSetLookDir(tab[1], look[math.random(1,2)])
	tab[2].dancer = addEvent(dancer,conf.danceSpeed, {tab[1], tab[2]})
end
end

function messager(tab)
if isPlayer(tab[1]) then
	doCreatureSay(tab[1], conf.danceTexts[math.random(1, #conf.danceTexts)], TALKTYPE_ORANGE_2)
	tab[2].messager = addEvent(messager,conf.textSpeed, tab)
end
end

function outfitChanger(tab)
if isPlayer(tab[1]) then
	if getPlayerSex(tab[1]) == PLAYERSEX_FEMALE then
		outs = conf.outfitFemale
	else
		outs = conf.outfitMale
	end
	local outfit = {
	lookType = outs[math.random(1, #outs)],
	lookHead = math.random(1,133),
	lookBody = math.random(1,133),
	lookLegs = math.random(1,133),
	lookFeet = math.random(1,133),
	lookTypeEx = math.random(1,133),
	lookAddons = math.random(0,3)}
	doCreatureChangeOutfit(tab[1], outfit)
	tab[2].outfitChanger = addEvent(outfitChanger,conf.outfitSpeed, tab)
end
end
backOutfit = {}
local backOutfit = {}

function onSay(cid, words, param, channel)

local pid = getPlayerGUID(cid)

if type(events[pid]) ~= "table" then
	events[pid] = {}
end

if (getPlayerStorageValue(cid, 302123) > 0) then
doPlayerSendTextMessage(cid, 22, "Você não pode ativar o dancing system no trainer.")
return true
end

if string.lower(param) == "start" and not(events[pid].dancer) then
	outBack = getCreatureOutfit(cid)
	backOutfit[pid] = outBack
	backOutfit[pid].lookType = outBack.lookType
	backOutfit[pid].lookAddons = outBack.lookAddons
	dancer({cid, events[pid]})
	messager({cid, events[pid]})
	outfitChanger({cid, events[pid]})
	setPlayerStorageValue(cid, 302124, 1)
elseif string.lower(param) == "stop" and events[pid].dancer then
	stopEvent(events[pid].dancer)
	stopEvent(events[pid].messager)
	stopEvent(events[pid].outfitChanger)
	events[pid] = {}
	doCreatureChangeOutfit(cid, backOutfit[pid])
	setPlayerStorageValue(cid, 302124, 0)
end
return TRUE
end

Editado por Jhon992
Link para o comentário
Compartilhar em outros sites

  • 0

Vo testar, se der certo, de tou REP+. É porque estou trabalhando e fica corrido pra min. Mais concerteza vou testar

 

@Edit

 

Como vai ficar se eu ja uso 25000?

 

vai ficar assim?

 

 

<movevent type="StepIn" actionid="25000" event="script" value="autokick.lua"/>

<movevent type="StepOut" actionid="25000" event="script" value="autokick.lua"/>

<movevent type="StepIn" actionid="25000" event="script" value="tiledance.lua"/>

<movevent type="StepOut" actionid="25000" event="script" value="tiledance.lua"/>

 

Vai dar duplicate actionid

Editado por kelvinvictor
Link para o comentário
Compartilhar em outros sites

  • 0

O Meu autokick é o mesmo do tópico original, ai vai:

 

local config = { 
tempo = 15, -- Tempo em minutos 
storage = 20000, -- não mexa aqui 
teleport = {x=160, y=54, z=7} -- coordenadas do seu templo 
} 

function onStepIn(cid, item, frompos, topos)
if isPlayer(cid) == TRUE then
if getPlayerStorageValue(cid, config.storage) <= 0 then 
kick1 = addEvent(setPlayerStorageValue, config.tempo*60*1000-1000, cid, config.storage, -1) 
kick2 = addEvent(doTeleportThing, config.tempo*60*1000-500, cid, config.teleport) 
kick = addEvent(doRemoveCreature, config.tempo*60*1000, cid) 
doPlayerSendTextMessage(cid, 22, "[Trainer]: Movimente-se a cada " .. config.tempo .. " minutos, caso contrário, seu char será deslogado.") 
setPlayerStorageValue(cid, config.storage, 1) 
end 
end
end 

function onStepOut(cid, item, frompos, topos)
if isPlayer(cid) == TRUE then
if getPlayerStorageValue(cid, config.storage) >= 1 then 
setPlayerStorageValue(cid, config.storage, -1) 
doPlayerSendTextMessage(cid, 23, "System kick off!") 
stopEvent(kick) 
stopEvent(kick1) 
stopEvent(kick2) 
end 
end
end

Link para o comentário
Compartilhar em outros sites

  • 0

Exclui o tiledance.lua da pasta movementes e no lugar do teu auto-kick poem isso:

 


local config = {
tempo = 15, -- Tempo em minutos
storage = 20000, -- não mexa aqui
teleport = {x=160, y=54, z=7} -- coordenadas do seu templo
}

function onStepIn(cid, item, frompos, topos)
if (getPlayerStorageValue(cid, 302124) > 0) then
doPlayerSendTextMessage(cid, 22, "Você não pode subir com dancing system ativado.")
   doTeleportThing(cid, fromPosition, false)
return true
end
if isPlayer(cid) == TRUE then
if getPlayerStorageValue(cid, config.storage) <= 0 then
kick1 = addEvent(setPlayerStorageValue, config.tempo*60*1000-1000, cid, config.storage, -1)
kick2 = addEvent(doTeleportThing, config.tempo*60*1000-500, cid, config.teleport)
kick = addEvent(doRemoveCreature, config.tempo*60*1000, cid)
doPlayerSendTextMessage(cid, 22, "[Trainer]: Movimente-se a cada " .. config.tempo .. " minutos, caso contrário, seu char será deslogado.")
setPlayerStorageValue(cid, config.storage, 1)
end
end
end

function onStepOut(cid, item, frompos, topos)
setPlayerStorageValue(cid, 302123, 0)
if isPlayer(cid) == TRUE then
if getPlayerStorageValue(cid, config.storage) >= 1 then
setPlayerStorageValue(cid, config.storage, -1)
doPlayerSendTextMessage(cid, 23, "System kick off!")
stopEvent(kick)
stopEvent(kick1)
stopEvent(kick2)
end
end
end

 

E preserve apenas as 2 tags do autokick no xml.

E use o talk de dancesystem como eu te passei no primeiro post.

Editado por Jhon992
Link para o comentário
Compartilhar em outros sites

  • 0

Dessa vez, ele mandou a mensagem de que não poderia subir com o dance system ativado, porem, não voltou o player para o sqm antigo, ou seja, ele apenas recebeu a mensagem e pode treinar normalmente.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...