Ir para conteúdo
  • Cadastre-se

[PEDIDO]-Transformar Script Talkaction em Movement


Posts Recomendados

Olá galera, tenho um problema com um script gringo.  

Então a Função do Script é Ficar Mudando o Addon e sua cor Continuamente. 

O único problema do script até agora é a hora que o player desloga. Como o Script continua funcionando mesmo com o player off, o script começa a dar vários erros e isso da um baita lag no server.  :facepalm:

Enfim, pensei em fazer do script um movement, e assim colocar um item como função para o script rodar. O item seria um Anel de ID: 7697. *(Versão do TFS 0.3.1)*  

Então, Este é o meu pedido: Transformar este TalkAction em Um Movement que utilize o id 7697, quando o player usar o anel, o seu addon irá mudar continuamente.

 

O Script(Talkaction) é este:

local conf = {}


-- // config // ---
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 // --

local condition_infight = createConditionObject(CONDITION_INFIGHT)
setConditionParam(condition_infight, CONDITION_PARAM_TICKS, -1)

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 = {}
local storage = 38417


function onSay(cid, words, param, channel)
local pidCheck = getPlayerStorageValue(cid, storage)
if(param == "") then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
return TRUE
end

local pid = getPlayerGUID(cid)

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

if (param == "start") then
if (pidCheck == -1) then
if (isPlayer(cid)) then
end
outBack = getCreatureOutfit(cid)
backOutfit[pid] = outBack
backOutfit[pid].lookType = outBack.lookType
backOutfit[pid].lookAddons = outBack.lookAddons
doPlayerSendCancel(cid, "Ai Que Loucuuura ")
outfitChanger({cid, events[pid]})
doAddCondition(cid, condition_infight)
doCreatureSetNoMove(cid, true)
setPlayerStorageValue(cid, storage, 1)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você está com o DANCE ligado, digite !dance stop.")
end
elseif (param == "stop") then
stopEvent(events[pid].outfitChanger)
stopEvent(events[pid].messager)
events[pid] = {}
doCreatureChangeOutfit(cid, backOutfit[pid])
doRemoveCondition(cid, CONDITION_INFIGHT)
doCreatureSetNoMove(cid, false)
setPlayerStorageValue(cid, storage, -1)
doPlayerSendCancel(cid, "Ai Que Loucuuura ")
end
return TRUE
end

 

O Erro que dá é este:

[02/08/2014 19:16:23] Lua Script Error: [TalkAction Interface]


[02/08/2014 19:16:23] in a timer event called from:
[02/08/2014 19:16:23] data/talkactions/scripts/dancing test.lua:onSay

[02/08/2014 19:16:24] luaDoCreatureChangeOutfit(). Creature not found

[02/08/2014 19:16:24] Lua Script Error: [TalkAction Interface]
[02/08/2014 19:16:24] in a timer event called from:
[02/08/2014 19:16:24] data/talkactions/scripts/dancing test.lua:onSay

[02/08/2014 19:16:24] luaDoCreatureChangeOutfit(). Creature not found

 

Dês de já, Agradeço. Darei Rep+ Para quem ajudar, mesmo que não funcione. Grato  :rock: 

Editado por eviltox (veja o histórico de edições)

                                                                                                230x230.jpg

 

Link para o post
Compartilhar em outros sites

Cara, creio que já mexi neste scripts, e por adicionar a condition_infight, players normais não podem logar.

Acho que eu mesmo já arrumei este script para você antes.

 

A não seu que esteja testando com GM, GOD ou na account dos mesmos, players não poderão logar com esta condition.

Temos até outras soluções, mas creio que o script esteja correto.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Então eu lembro disso, o problema é que quando o player morre o script volta a dar os erros. Também tem o kick após 15 minutos parado. Enfim, eu criei o tópico para ver se alguém poderia criar um movement com a mesma função do script que está em talkaction.

                                                                                                230x230.jpg

 

Link para o post
Compartilhar em outros sites

Então eu lembro disso, o problema é que quando o player morre o script volta a dar os erros. Também tem o kick após 15 minutos parado. Enfim, eu criei o tópico para ver se alguém poderia criar um movement com a mesma função do script que está em talkaction.

Bem, cara, modifiquei seu script, só que continua em talkaction, mas, não dará mais este erro(creio eu).

local conf = {}-- // config // ---conf.outfitSpeed = 250 -- outfit changer speedconf.outfitMale = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325} -- all male outfitsconf.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 // --local condition_infight = createConditionObject(CONDITION_INFIGHT)setConditionParam(condition_infight, CONDITION_PARAM_TICKS, -1)function outfitChanger(tab)if isPlayer(tab[1]) thenif getPlayerSex(tab[1]) == PLAYERSEX_FEMALE thenouts = conf.outfitFemaleelseouts = conf.outfitMaleendlocal 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)endendbackOutfit = {}local backOutfit = {}local storage = 38417function onSay(cid, words, param, channel)if isCreature(cid) thenlocal pidCheck = getPlayerStorageValue(cid, storage)if(param == "") thendoPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")return TRUEendlocal pid = getPlayerGUID(cid)if type(events[pid]) ~= "table" thenevents[pid] = {}endif (param == "start") thenif (pidCheck == -1) thenif (isPlayer(cid)) thenendoutBack = getCreatureOutfit(cid)backOutfit[pid] = outBackbackOutfit[pid].lookType = outBack.lookTypebackOutfit[pid].lookAddons = outBack.lookAddonsdoPlayerSendCancel(cid, "Ai Que Loucuuura ")outfitChanger({cid, events[pid]})doAddCondition(cid, condition_infight)doCreatureSetNoMove(cid, true)setPlayerStorageValue(cid, storage, 1)elsedoPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você está com o DANCE ligado, digite !dance stop.")endelseif (param == "stop") thenstopEvent(events[pid].outfitChanger)stopEvent(events[pid].messager)events[pid] = {}doCreatureChangeOutfit(cid, backOutfit[pid])doRemoveCondition(cid, CONDITION_INFIGHT)doCreatureSetNoMove(cid, false)setPlayerStorageValue(cid, storage, -1)doPlayerSendCancel(cid, "Ai Que Loucuuura ")endelsereturn trueendreturn TRUEend

Testa ai.

Editado por Snowsz (veja o histórico de edições)
                              _
                          .-'` `}
                  _./)   /       }
                .'o   \ |       }
                '.___.'`.\    {`
                /`\_/  , `.    }                                      ME DA UMA NOZ!
                \=' .-'   _`\  {
                 `'`;/      `,  }
                    _\   @   ;  }
                   /__`;-...'--'

Cluck!

Link para o post
Compartilhar em outros sites

Então eu lembro disso, o problema é que quando o player morre o script volta a dar os erros. Também tem o kick após 15 minutos parado. Enfim, eu criei o tópico para ver se alguém poderia criar um movement com a mesma função do script que está em talkaction.

Ah sim, agora entendi.

Vou fazer algumas modificações pra você.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Ok, estarei aguardando Adriano Swatt.

Snow tive um probleminha com o seu, como a formatação esta diferente, não consegui nem ao menos descobrir onde é.

O erro no Tfs é este:

[14/09/2014 11:21:40] Warning: [Event::loadScript] Event onSay not found. data/talkactions/scripts/dancing.lua

 

                                                                                                230x230.jpg

 

Link para o post
Compartilhar em outros sites

Este erro está ocorrendo porque ele colou o texto aqui no fórum de maneira que está sem formatação, está sem espaços, etc..

O launcher não está reconhecendo muitas das palavras.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Lol, ficou sem formatação, como... Desculpe, acho que foi o spoiler junto ao code que bugou...

 

Sem spoiler:

local conf = {}
-- // config // ---
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 // --

local condition_infight = createConditionObject(CONDITION_INFIGHT)
setConditionParam(condition_infight, CONDITION_PARAM_TICKS, -1)

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 = {}
local storage = 38417


function onSay(cid, words, param, channel)
if isCreature(cid) then
local pidCheck = getPlayerStorageValue(cid, storage)
if(param == "") then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
return TRUE
end

local pid = getPlayerGUID(cid)

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

if (param == "start") then
if (pidCheck == -1) then
if (isPlayer(cid)) then
end
outBack = getCreatureOutfit(cid)
backOutfit[pid] = outBack
backOutfit[pid].lookType = outBack.lookType
backOutfit[pid].lookAddons = outBack.lookAddons
doPlayerSendCancel(cid, "Ai Que Loucuuura ")
outfitChanger({cid, events[pid]})
doAddCondition(cid, condition_infight)
doCreatureSetNoMove(cid, true)
setPlayerStorageValue(cid, storage, 1)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você está com o DANCE ligado, digite !dance stop.")
end
elseif (param == "stop") then
stopEvent(events[pid].outfitChanger)
stopEvent(events[pid].messager)
events[pid] = {}
doCreatureChangeOutfit(cid, backOutfit[pid])
doRemoveCondition(cid, CONDITION_INFIGHT)
doCreatureSetNoMove(cid, false)
setPlayerStorageValue(cid, storage, -1)
doPlayerSendCancel(cid, "Ai Que Loucuuura ")
end
else
return true
end
return TRUE
end
Editado por Snowsz (veja o histórico de edições)
                              _
                          .-'` `}
                  _./)   /       }
                .'o   \ |       }
                '.___.'`.\    {`
                /`\_/  , `.    }                                      ME DA UMA NOZ!
                \=' .-'   _`\  {
                 `'`;/      `,  }
                    _\   @   ;  }
                   /__`;-...'--'

Cluck!

Link para o post
Compartilhar em outros sites

Então, o script rodou normalmente, ainda adiciona o battle para evitar que o player deslogue. Mas infelizmente, ao morrer o erro ainda persiste.  :wacko:  :wallbash:

Olha o erro:

[14/09/2014 16:01:07] Lua Script Error: [TalkAction Interface]


[14/09/2014 16:01:08] in a timer event called from:
[14/09/2014 16:01:08] data/talkactions/scripts/dancing tomara.lua:onSay

[14/09/2014 16:01:08] luaDoCreatureChangeOutfit(). Creature not found

Editado por eviltox (veja o histórico de edições)

                                                                                                230x230.jpg

 

Link para o post
Compartilhar em outros sites

Nao tem como criar uma condicao OnDeath ou OnLogout para desligar o script quando a pessoa logar/morrer?

Nao to com tempo pra mexer em scripts agora, mas é uma ideia ai pra voces pensarem.

Se quiser depois eu dou uma olhada no script.

[TalkAction] Comando !stamina e stamina potion.

http://www.tibiaking.com/forum/topic/38953-talkaction-stamina-recupera-stamina-e-d%C3%A1-uma-potion-de-stamina/

Krell Gaming, OTServer estará ONLINE em breve!

Training Offline

Tasks, Mounts, Addons, Outfits

Quests baú, Quests lógicas, Quests misteriosas

Mistery Box (Itens Aleatórios), Upgrade your Itens(Melhorar os atributos dos itens), Frag Remover, Monster Cards

Stamina System e Stamina Potion

Castle com sistema próprio

Área Free com variadas e equilibradas hunts.

Mapa RPG porém equilibrado às rates do servidor.

Rates Variadas (Stages que podem variar de exp alta pra baixa, não baixando sempre como a maioria)

Drop rate: variando entre 3 ou mais x

Skills e ML: 20/10

Houses apenas para premium accounts.

Premium Account = 15 reais um mês.

Aproveite!

Link para o post
Compartilhar em outros sites

Eu tentei fazer, mas não obtive sucesso  :buon:

 

Alguém sabe fazer ? '-' 

 

Obrigado gente que tentou e ajudou.  :rock:  (y).

Editado por eviltox (veja o histórico de edições)

                                                                                                230x230.jpg

 

Link para o post
Compartilhar em outros sites

Então, Este é o meu pedido: Transformar este TalkAction em Um Movement que utilize o id 7697, quando o player usar o anel, o seu addon irá mudar continuamente.

dancering.lua (data/movements/scripts):

local storage, value = 38417, -1
local text = {"Você está com o DANCE ativado, retire o anel para desativar.", "Ai Que Loucuuura"}
local sex = {
[0] = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324},
[1] = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325}
}

local condition_infight = createConditionObject(CONDITION_INFIGHT)
setConditionParam(condition_infight, CONDITION_PARAM_TICKS, -1)

function onEquip(cid, item, slot)
	local psex = sex[getPlayerSex(cid)]
	if psex then
		for _, n in pairs(psex) do
		otf = {lookType = math.random(n[1], n[21]), lookHead = math.random(1, 133), lookBody = math.random(1, 133), lookLegs = math.random(1, 133), lookFeet = math.random(1, 133)}
			doSetCreatureOutfit(cid, otf, -1)
			doAddCondition(cid, condition_infight)
			doCreatureSetNoMove(cid, 1)
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text[1])
			doPlayerSendCancel(cid, text[2])
			setPlayerStorageValue(cid, storage, value)
		end
	end
return 1
end
 
function onDeEquip(cid, item, slot)
	if getPlayerStorageValue(cid, storage) >= 1 then
		doRemoveCondition(cid, CONDITION_OUTFIT)
		doRemoveCondition(cid, CONDITION_INFIGHT)
		doCreatureSetNoMove(cid, 0)
		doPlayerSendCancel(cid, text[2])
		setPlayerStorageValue(cid, storage, value)
	end
return 1
end

Adicione as seguintes tags ao arquivo movements.xml (data/movements):

<movevent type="Equip" itemid="7697" slot="ring" event="script" value="dancering.lua"/>
<movevent type="DeEquip" itemid="7697" slot="ring" event="script" value="dancering.lua"/>

sombra7.png

stopdance.lua (data/creaturescripts/scripts):

local storage, value = 38417, -1

function onDeath(cid)
	if getPlayerStorageValue(cid, storage) >= 1 then
		setPlayerStorageValue(cid, storage, value)
	end
return 1
end

function onLogout(cid)
	if getPlayerStorageValue(cid, storage) >= 1 then
		setPlayerStorageValue(cid, storage, value)
	end
return 1
end

Na mesma pasta (data/creaturescripts/scripts), abra o arquivo login.lua e adicione as seguintes linhas ao final do script:

registerCreatureEvent(cid, "StopDanceonDeath")
registerCreatureEvent(cid, "StopDanceonLogout")

sombra7.png

Adicione estas tags ao arquivo creaturescripts.xml (data/creaturescripts):

<event type="death" name="StopDanceonDeath" event="script" value="stopdance.lua"/>
<event type="logout" name="StopDanceonLogout" event="script" value="stopdance.lua"/>

Créditos: meus

PS: não testei

Editado por Bizzle (veja o histórico de edições)

Se te ajudei com o que postei, clique em liked.png
Bizzle

Link para o post
Compartilhar em outros sites

Então, fiz tudo certinho, refiz para ver se não foi erro meu
Porem deu o seguinte erro

[14/09/2014 21:51:48] Lua Script Error: [MoveEvents Interface]


[14/09/2014 21:51:48] data/movements/scripts/dancering.lua:onEquip

[14/09/2014 21:51:48] data/movements/scripts/dancering.lua:15: attempt to index local 'n' (a number value)
[14/09/2014 21:51:49] stack traceback:
[14/09/2014 21:51:49] data/movements/scripts/dancering.lua:15: in function

 

 

Sei que é nesta parte:

for _, n in pairs(psex) do

Mas nem sei resolver '-'

Editado por eviltox (veja o histórico de edições)

                                                                                                230x230.jpg

 

Link para o post
Compartilhar em outros sites

@Up

                                                                                                230x230.jpg

 

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.

  • Conteúdo Similar

    • Por Rusherzin
      Olá galera do TK, venho aqui para trazer outro script que não foi eu quem fiz..
      (só editei umas partes para funcionar no 8.54)
       
      Como Funciona:
      O player fala "!rank" seguido de alguma das "palavras-chave". Ex: "!rank magic", "!rank sorcerer"
      São elas:
       
      (Skills)
      Fist, Club, Sword, Axe, Shielding/Shield, Distance, Fishing/Fish, Level, Magic, Health, Mana.
       
      (Vocations)
      Sorcerer, Druid, Paladin, Knight.
       
      Obs: mostra no rank, por exemplo, de sorcerers os players que são Sorcerers e Master Sorcerers
      (configurável)
       
       
      Agora vamos ao script:
       
      "data/talkactions/scripts/"
      ranks.lua
       



       
       
      "data/talkactions/"
      talkactions.xml
       



       
      Créditos:
      Crítico
    • Por thales123
      Podem me explica como uso attr ? tipo olhei vários aqui no forum nenhum me ajudou, Tipo queria attr de level mais não sei qual é o comando ! 
       
      OBS: Level do player não do pokémon
    • Por flauts
      Como Edita o Título Tibia??
       
      É client comum.  NAO é otclient.

    • Por kamus9629
      Boa noite Tou aki para pedir um sistema De addon Voce coloca Armor Ae addon aparece Voce remover Addon ele desaparece
    • Por Eremin
      EAE Galera, to com um probleminha no meu server que é o seguinte..Quando eu uso a spell de healar fica tudo certinho bonitinho,porém se eu uso a spell de healar e estiver dentro de outro player ou monstro, o heal dobra.. e isso se torna um problema quando os players ficam na escada.
                                                                                                        PRINTS \/
       
                                       
       
       
      Caso alguém saiba como arrumar, me ajudaria muito.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo