Ir para conteúdo

[Duvida] Criar Script Talkaction


SkyDangerous

Posts Recomendados

Bom , eu resolvi a fazer script .. antes eu só sabia editar ela ..

 

1º Coisa só queria saber se existe programa pra ficar mais facil?

 

Agora vamos o que interessa.

 

Minha dificuldade em fazer os script é assim.

 

Eu não tenho noção de onde devo colocar os script , pq se colocar em lugar errado parece que ele dá erros.

 

 

function onSay(cid, words, param)

 

^ Bom , em ingles significa mais ou menos , função quando falar .. isso é obrigatório no começo de toda as talkaction né?

 

if(words == "!vipdays") then

^ Aqui significa ^ se as palavras for igual a !vipdays então .. ou seja se ele falar !vipdays irá funcionar o talkaction certo?

 

 

é assim mais ou menos que eu sei ..

 

Eu queria saber sobre as variaves , por exemplo os comandos que eu devo adicionar para tal efeito.

 

Como Exemplo:

 

 

 

local price = 1000000

local days = 2

if doPlayerRemoveMoney(cid, price) then

addVipDays(cid, days)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou "..days.." dia(s) de vip, agora você possui "..getVipDays(cid).." dia(s) de vip.")

else

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de "..price.." para adicionar "..days.." dia(s) de vip.")

end

 

 

 

local price = 1000000

local days = 2

if doPlayerRemoveMoney(cid, price) then

addVipDays(cid, days)

 

^ Pq uso isso ?

 

 

Plxx alguem sabe um tutorial com todos os comandos e pra que serve , pra eu aprender a montar .. eu iria agradecer de mais .. e se tiver programa mais ainda.

 

Qual diferença de get , do .. essas coisinhas.

 

E

 

return TRUE

end

 

^ Toda hora que acabar uma parte de um script e passar para outro deve colocar no final ?

 

 

Vlw !

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

Primeiramente se você quiser criar uma talkactions tem que usa a função

 

function onSay(cid, words, param)

 

como você mesmo disse,esse script só será executado quando o jogador falar algo.

 

---

 

porque usar

 

if(words == "!vipdays") then ?

 

Na verdade só usamos essa funções para colocar mais de um Comando no mesmo arquivo.lua

 

 

if(words == "test1") then

script

....

elseif(words == "test2") then

script

...

end

 

a partir que vc usa if words ou elseif words os scripts não poderão conctar entre si...

 

exemplo:

 

if(words == "test1") then
local storage = 1234
if getPlayerStorageValue(cid, storage) >= 1 
doPlayerAddItem(cid,2123,1)
end -- fecha if getPlayerStorageValue(cid, storage) >= 1 no test1
elseif(words == "test2") then
if getPlayerStorageValue(cid, storage) >= 1 
doPlayerAddItem(cid,2124,1)
end -- fecha if getPlayerStorageValue(cid, storage) >= 1 no test2
end -- fecha o if do test1 then

 

o test2 não vai funcionar nesse caso.., porque?

porque a variavel storage não foi declarada como no test1...

 

 

------

 

locais

 

locais são tabelas para armazenar algum tipo de informação.

 

exemplo: do seu

 

local price = 1000000
local days = 2
if doPlayerRemoveMoney(cid, price) then
addVipDays(cid, days)
end

 

mais facil para organizar certo?

pois soh mudar ali no local a informação para que ela seja executada depois

 

tbm poderia ser assim:

if doPlayerRemoveMoney(cid, 1000000) then
addVipDays(cid, 2)
end

 

 

----

 

get -- pegar informação do jogador

set -- trocar alguma informação do jogador

 

exemplo:

 

if getPlayerStorageValue(cid, 12345) <= 0 then
setPlayerStorageValue(cid, 12345,1) -- mudei a storage do player para 1
end

 

 

 

-- return false e return true

 

são saídas simples função retornando um valor booleano

return FALSE serve para parar um evento

sobre o return TRUE é para retorna Verdadeiro se essa ação ocorreu

 

exemplo:

 

if doPlayerRemoveMoney(cid, 1000000) == FALSE then
return false -- vai parar o script
end

Link para o comentário
Compartilhar em outros sites

Opa

 

é mais ou menos assim .. aonda to aprendendo.

 

Mais .. não existe programa pra fazer ñ?

 

Além do mais , por exemplo eu não sei os comandos que eu posso utilizar

 

if getPlayerAccess(cid) == 5 then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")

 

Aonde eu encontro mais comandos com o if e o do ?

 

Ai .. vo treinar aqui fazendo scripts faceis .. e pretendo melhorar.

 

Qual eu queria um script que teleporta..

 

local teleporte = {

["depot"] =

pos = {x=129, y=54, z=6},level = 5,price = 1000},

 

Só que por exemplo , pra funcionar esse script a cima , tenho que ter mais alguma coisa certo?

 

essas coisas mais ou menos né?

 

doPlayerSendTextMessage(cid, 22, "Descupel mais nao existe esse lugar que quer teleportar")

 

Existe mais coisas ..

 

Ahh , precisso mais efeitos .. de do , esses local .. get uhauha !

Link para o comentário
Compartilhar em outros sites

esse do teleport é script meu

só que nesse caso é usado tabbles,mais pra frente vc vai ver isso...

 

não entendi com oque vc quis dizer encontrar mais comandos if e do?

 

vc quis dizer funções?

 

:X

 

abraços

Link para o comentário
Compartilhar em outros sites

Sim , quis dizer funções.

 

Sim o script de teleporte e seu .. aquele de vip.

 

Então , eu também queria aprender a mecher com script + banco de dados. mais esse eu espero.

 

Se tiver programa ficaria melhor , é quis dizer funções ;P

Link para o comentário
Compartilhar em outros sites

eu não uso nenhum programa mais um que pode te ajudar é o do colex chamado: OTScript Live!

 

alguns links para vc:

 

 

todos os get,do,set: http://www.zonegames.com.br/t14301/

 

http://www.xtibia.com/forum/topic/130494-funcoes-tirado-da-pastinha-doc-tfs-034/

 

http://www.tibialife.com/forum/lista-fun-es-t185.html

Link para o comentário
Compartilhar em outros sites

Vlw

 

Rep +

 

Agora só uma coisa

 

uid

cid

 

QUAL DIferença?

 

Por exemplo : getPlayerAccess(uid)

 

essa função é pra escolher qual player poderá comprar o item se tiver o acesso né?

 

só que como eu termino ele?

 

Ex:

 

doPlayerAddMana(cid,mana)

faço como?

 

doPlayerAddMana(cid,15000) <-- ai ao usar o talkaction ele irá adicionar 15k de mana?

 

Outro Ex:

 

doPlayerAddExp(cid,exp)

 

doPlayerAddExp(cid,5000)

 

ele irá ganhar 5k de exp ?

 

Como Funciona esses : cid , uid , itemid , count , rank , nick , looktype , addons , condition , text , new_type ,

 

é

 

Em que parte tenho que adicionar if , do ?

 

Todas as funções serve para talkaction ?

 

ou tem próprios?

Link para o comentário
Compartilhar em outros sites

actionid: vc utiliza para criar uma ação em alguma coisa,já com um script Pronto,pode ser colocado ActionID em, mais de um item.

 

uniquiid: eh um id que somente um unico item pode ter,também serve para criar alguma ação,você não pode adicionar mais que um UniqueID em items.

 

 

sobre o

 

getPlayerAccess(uid)

 

if getPlayerAccess(cid) >= 3 then or getPlayerAccess(player) >= 3 then

mana = 15000

exp = 5000

doPlayerAddMana(cid,mana)

doPlayerAddExp(cid,exp)

end

 

"player" teriamos que identificar com um param para pegar o nome dele.

 

cid = proprio jogador que executo a ação

 

itemid -- determina a ação em um certo item

exemplo: item.itemid == 2123 then

 

count -- quantidade

exemplo: if getPlayerItemCount(cid, 2145) >= 5 then

 

rank -- rank acho que é acess,nao sei mto

looktype, = numero da ropa do jogador

addons, - addons 1,2 ou 3(full)

condition, adiciona uma condição ao jogador (ex: battle)

new_type, da uma nova ropa ao jogador

 

como e quando usar o if,then e else?

 

"if" significa "se"

"then" significa "então"

"else" significa "senão"

"end" significa "fim"

 

"se" Jogador_for_level_ >= 8 "então"

script...

"senão"

mandar_msg_de_level

"fim"

 

obs:

 

> maior que

< menor que

>= igual ou maior que

<= igual ou menor que

 

 

em lua:

 

"if" Jogador_for_level_ >= 8 "then"

script...

"else"

mandar_msg_de_level

"end" -- fecha o if

 

todo "if" se fecha com "end".

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

  • 2 weeks later...

hm.... perguntinha

 

olha esse talk ak

 

 

--[[

Talking Tp/signs/tiles for TFS 0.2+

70%shawak,30%Damadgerz

Idea by Damadgerz

]]--

local time = 3 -- 1 = 1 sec, 1 = 1 sec, ...

 

local say_events = {}

local function SayText(cid)

if isPlayer(cid) == TRUE then

if say_events[getPlayerGUID(cid)] ~= nil then

if isPlayer(cid) == TRUE then

doSendAnimatedText(getPlayerPosition(cid),"'. , . ',", math.random(01,255))

end

say_events[getPlayerGUID(cid)] = addEvent(SayText, time * 300 / 1, cid)

end

end

return TRUE

end

 

 

function onSay(cid, words, param, channel)

if(param == '') then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")

return true

end

if param == "on" then

if isPlayer(cid) == TRUE then

doSendAnimatedText(getPlayerPosition(cid),". ´ , ´", math.random(01,255))

end

say_events[getPlayerGUID(cid)] = addEvent(SayText, time * 200, cid)

 

 

doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING,"You Now Stated you are Gema Espiritual.")

elseif param == "off" then

stopEvent(say_events[getPlayerGUID(cid)])

say_events[getPlayerGUID(cid)] = nil

doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING,"You Now stated your are not Gema Espiritual.")

end

return TRUE

end

 

esse é só para subir escritos mais por exemplo como faço para subir mais de uma palavra?

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

×
×
  • Criar Novo...