Criando Npcs Por Talkactions

Abacate123
em Tutoriais de Scripting

Abacate123

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 19/05/06Posts: 125

Bom sempre achei maior incomodo ter de esperar outro player acabar de falar com um npc para eu poder tentar falar com ele, dai vi o script do Thyrania(do servidor) que vc chegava na frente da estatua e falava com ela(via talkactions), dai pensei, se da para fazer um "npc" oraculo por talkactions, porque não fazer um npc de venda de itens?

Ai está passei a tarde toda para criar e editar esse script!

 

Vou fazer um modelo do vendedor de aol.

 

1º vai ser necessario paciencia!

2º saber mecher com scripts(actions, talkactions, etc)

3º abra a pasta data\talkactions\lib lá você encontrará o arquivo talkactions.lua. Abra-o!

4º dentro dele você irá encontrar isso:

-- Nothing --

 

coloque isso em seu lugar:

-- buy an item

-- aprimorado por kiko5

function buy(cid, itemid, count, cost)

cost = count*cost

amount = count

if doPlayerRemoveMoney(cid, cost) == 1 then

if getItemStackable(itemid) then

while count > 100 do

doPlayerAddItem(cid, itemid, 100)

count = count - 100

end

 

doPlayerAddItem(cid, itemid, count) -- add the last items, if there is left

else

while count > 0 do

doPlayerAddItem(cid, itemid, 1)

count = count - 1

end

end

 

if amount <= 1 then

doPlayerSendTextMessage(cid,22,'Aqui está seu '.. getItemName(itemid) .. '!')

else

doPlayerSendTextMessage(cid,22,'Aqui está seus '.. amount ..' '.. getItemName(itemid) .. 's!')

end

else

if amount <= 1 then

doPlayerSendTextMessage(cid,22,'Desculpe, você não tem dinheiro para comprar um '.. getItemName(itemid) .. '!')

else

doPlayerSendTextMessage(cid,22,'Desculpe, você não tem dinheiro para comprar '.. amount ..' '.. getItemName(itemid) .. '!')

end

end

end

essa é uma função(buy), que foi editada 50% por mim(eu transferi da pasta de origem[data\npc\scripts\lib] e como se deve perceber, se eu só a tivese passado de uma pasta para otra iria dar erros, então troquei os comandos assim retirando todos os erro possiveis, tambem tradizi o script para melhorar a vida dos players)

sintax:

buy(cid, itemid, count, cost)

exemplo:

buy(cid,2173,1,15000)

 

Legenda:

Verde:

Texto que aparecerá caso o player tenha dinhero para comprar o item.

Verde escuro:

a cor da mensagem(22 é verde)

Laranja:

Caso o player não tenha o dinhero necessario eirá aparecer essa msg.

Preto:

Codigos(não modificar anumcer que saiba oque está fazendo).

 

5º salve o arquivo e vamos para o proximo.

6º em data\talkactions\scripts crie um arquivo(.lua) com um nome qualquer(EX.: npc_aol1.lua)

7º abra-o e cole isso nele:

function onSay(cid, words, param)

maxdist = 5

pos = { x=716, y=1061, z=6, stackpos=1 }

npc = getThingfromPos(pos)

playerpos = getPlayerPosition(cid)

 

if math.max(math.abs(playerpos.x-pos.x), math.abs(playerpos.y-pos.y)) < maxdist then

doSendAnimatedText(pos, 'Olá!', 198)

doPlayerSendTextMessage(cid,22,"Diga aol(para compar o aol por 15k)")

 

return 0

else

doPlayerSendCancel(cid,"Desculpe, não é possivel.")

end

return 1

end

essa é a 1ª parte do npx, é onde ele diz oque vende, etc...

 

legenda:

Amarelo:

Posição do NPC.

Rosa:

distancia maxima que o player poderá estar para poder falar com o npc(distancia em SQM[para quem não sabe uque é, SQM são os "quadradinhos{tiles}" onde as coisas ficão])

Verde:

Texto que aparecerá quando o player dizer a palavra necessaria.

Verde escuro:

a cor da mensagem(22 é verde)(198 vermelho)

Vermelho:

essa messagem tem que ser cruta, pois não pode amostrar muito "texto" nela.(sugiro por somente 1 palavras no maximo 2)

Laranja:

Caso o player não dé algum erro e o player não possa falar com o npc.

8º salve.

9º crie outro arquivo(.lua), com um nome qualquer(ex.: npc_aol2.lua).

10º ponha isso dentro dele:

function onSay(cid, words, param)

maxdist = 5

pos = { x=716, y=1061, z=6, stackpos=1 }

pedra = getThingfromPos(pos)

playerpos = getPlayerPosition(cid)

 

if math.max(math.abs(playerpos.x-pos.x), math.abs(playerpos.y-pos.y)) < maxdist then

buy(cid,2173,1,15000)

doSendAnimatedText(pos, "Okay!", 198)

 

return 0

else

doPlayerSendCancel(cid,"Sorry, not possible.")

end

return 1

end

Aqui é a parte do npc onde ele vendo o item ao player.

 

Legenda:

Amarelo:

Posição do NPC.

Rosa:

distancia maxima que o player poderá estar para poder falar com o npc(distancia em SQM[para quem não sabe uque é, SQM são os "quadradinhos{tiles}" onde as coisas ficão])

Azul:

A função Buy(que agente pois na lib) respectivamente ID do item, quantidade, preço(em gps)

Verde escuro:

a cor da mensagem(22 é verde)(198 vermelho)

Vermelho:

essa messagem tem que ser cruta, pois não pode amostrar muito "texto" nela.(sugiro por somente 1 palavras no maximo 2)

Laranja:

Caso o player não dé algum erro e o player não possa falar com o npc.

 

11º salve o arquivo.

12º na pasta data\talkactions procure pelo arquivo talkactions.xml abra-o

13º adicione isso antes de </talkactions> e depois de <talkactions>:

<talkaction words="oi" script="npc_aol1.lua" />

<talkaction words="aol" script="npc_aol2.lua" />

ai estão as palavras magias para falar com o npc

 

legenda(se é que preisa...):

Vermelho:

palavras magicas

Azul:

Nome do arquivo que vc criou anteriormente(no meu caso é npc_aol1.lua e npc_aol2.lua)

 

14º salve o arquivo

15º ligue seu ot e se divirta

 

OBS.: eu testei sosinho e funcionou perfeitamente, não sei se em dupla(2 pessoas tentando falar com o npc) vai funcionar para os 2 ao mesmo tempo.

OBS².: eu testei no Thyrania 0.2.81 XML

OBS³.: qualquer duvida, reclamação, opinião, etc, podem postar.

 

Creditos:

Turtorial:

100% kiko5(Eu xP)

Script:

70% kiko5

30% equipe Thyrania

Lib:

50% kiko5

50% quem a criou(acho que é da equipe Thyrania, mas não tenho certesa)

 

Caso não coloquei os devidos creditos me comuniquem!

 

Se ja existe um turtorial igual a esse(que eu duvido muito), me comuniquem!

 

Se você quer postar esse turtorial em outro Forum, me comuniquem(caso contrario eu denucio por ripping)!

 

Se fdor por em outro forum e eu ja autorisei, ponhão os credito!

 

acho que é só galera, qualquer coisa só falar ^^

espero que aprovem meu turtorial xP

flws

Atenciosamente Kiko5

--------------------------------------







kiko5fanmf0.gif

By: Anokinha

sirAsL

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 27/08/07Posts: 103Char no Tibia: Tripida

show de bola ;D

Atenciosamente Sir Lokão ~~~!



Valeu Rayzfox!

Sou Fãn de:


MSN: adobido@hotmail.com


Valeu!

Abacate123

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 19/05/06Posts: 125

vlw Sir Lokao

é bom saber que alguem gostou ^^

Atenciosamente Kiko5

--------------------------------------







kiko5fanmf0.gif

By: Anokinha

gabrifer

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 26/10/07Posts: 100Char no Tibia: Climber Man

Tutorial muito legal cara!

Parabéns!

Só algums errinhos de português mas está muito bom!

APROVADO!

Abraços,

Escalador.



Sou Fan:




Ès meu Fan?

FireBlast

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 17/12/06Posts: 57

Realmente, ta muito legal.

 

Como o Escalador falou aí em cima: alguns errinhos de port.

 

Fora isso tá ótimo. Vou testar em outro server que nao seja o Thyrania e depois edito com a resposta.

 

Valeu, ate mais

Tprocheira

WOOOOW
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 23/12/07Posts: 566Char no Tibia: Tprocheira soldier

Achei legal isso. Só seria um problema criar uma estátua para vários items. Mas acho isso meio dificil, a não ser que você crie alguns paramentros como (if msg contains "blabalbal" then...

Northon

avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 08/08/07Posts: 701

Bem Organizado..

 

Hum..

 

aprovadojv5.png

 

Sem Mais.

 

Não dou suporte via PM ou MSN, utilize o fórum para isto.
© 2007 ~ 2009

Abacate123

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 19/05/06Posts: 125

@Tprocheira

 

na verdade não eu tive que adaptar esse código para fazer só para um item, na verdade era 2 itens que ele vendia xP

é muito fácil criar uma nova opção de item...

repita da 9ª até o fim

só que na 13ª ponha isso amais:

<talkaction words="nome do item" script="npc_aol3.lua" />

vermelho:

ponha o nome do item(que é a palavar magica xP)

 

7º abra-o e cole isso nele:
function onSay(cid, words, param)

maxdist = 5

pos = { x=716, y=1061, z=6, stackpos=1 }

npc = getThingfromPos(pos)

playerpos = getPlayerPosition(cid)

 

if math.max(math.abs(playerpos.x-pos.x), math.abs(playerpos.y-pos.y)) < maxdist then

doSendAnimatedText(pos, 'Olá!', 198)

doPlayerSendTextMessage(cid,22,"Diga aol(para compar o aol por 15k)")

 

return 0

else

doPlayerSendCancel(cid,"Desculpe, não é possivel.")

end

return 1

end

essa é a 1ª parte do npx, é onde ele diz oque vende, etc...

 

legenda:

Amarelo:

Posição do NPC.

Rosa:

distancia maxima que o player poderá estar para poder falar com o npc(distancia em SQM[para quem não sabe uque é, SQM são os "quadradinhos{tiles}" onde as coisas ficão])

Verde:

Texto que aparecerá quando o player dizer a palavra necessaria.

Verde escuro:

a cor da mensagem(22 é verde)(198 vermelho)

Vermelho:

essa messagem tem que ser cruta, pois não pode amostrar muito "texto" nela.(sugiro por somente 1 palavras no maximo 2)

Laranja:

Caso o player não dé algum erro e o player não possa falar com o npc.

 

na linha referente a isso:

doPlayerSendTextMessage(cid,22,"Diga aol(para compar o aol por 15k)")

 

é só mudar a msg adicionando o novo item assim:

doPlayerSendTextMessage(cid,22,"Diga aol(para compar o aol por 15k), MPA(para comprar a MPA por 40K), DSM(para compar a DSM por 35K)")

 

Diga aol(para compar o aol por 15k), MPA(para comprar a MPA por 40K), DSM(para compar a DSM por 35K)

e assim emdiante ^^

 

 

 

 

 

 

@topico

antes que alguem diga!

existe um bugs minimo, se o player chegar no npc e dizer somente aol(sem o hi, etc) ele vai conceguir comprar o item normalmente!

 

PS¹.: para melhor intendimento dos players, ponhão uma placa dizendo oque deve ser feito para poder comprar as coisas!

PS².: para que eu continue postando tutoriais, scripts, etc... ponhão os creditos!

PS³.: um dia terei!(xO)

 

@geral

vlw pelos elogios!

desculpa pelos erros gramaticais e

até a proxima!

Atenciosamente Kiko5

--------------------------------------







kiko5fanmf0.gif

By: Anokinha

HugoBeolchi

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 17/01/06Posts: 111Char no Tibia: Poler'Taylor

Boaaa Kiko5 fico muito bom xD

parabéns pelo trabalho ;))

Abacate123

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 19/05/06Posts: 125

Vlw Hugo

 

 

 

se quiserem um npc me mandem uma MP que posso fazer um, mas não garanto nada(não manjo muito de npcs ^^)

Atenciosamente Kiko5

--------------------------------------







kiko5fanmf0.gif

By: Anokinha

CleytonDelMagnatas

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 05/12/07Posts: 46Char no Tibia: Sir Vendetta

Boa Kiko....

aprovado ! :)

\\ Retired do Xtibia //

Sou Fan de:


Seja meu Fan! Use minha Fan bar!


Unidos Contra Os Emos!!!


Meu Flogão


"Bolt's are flying, people are dying"

Meu Char



Contato: cleyton_crazy@hotmail.com

Abacate123

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 19/05/06Posts: 125

Vlw cleyton, estou fazendo sempre o que posso para o Xtibia!

Atenciosamente Kiko5

--------------------------------------







kiko5fanmf0.gif

By: Anokinha

vini_xxe

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 03/11/06Posts: 260

Explica muito bem

e esta muito bem organizado

portanto

na minha opiniao:

10,0 =D

Bem na moral galera
Enquanto vocês ficam ae preocupados com uns OT SERVER
com um joguinho MEDIOCRE que nao leva a NADA
A vida ta passando
Comecei a jogar de brincadeira, quando me dei conta
4 ANOS se passaram, e ai, oq eu ganhei?
Perdi muitas minas, perdi muitas festas, muitos jogos :S
PAREI, PEGO GERAL, TO EM TODAS AS FESTAS
Fiquem ae jogando NERDS
Que eu vo vive minha vida
@@@@@@@@@@@@@@@@@@@@@@@@@@@@;

TIBIA, UM JOGO QUE VICIA, E EH PIOR QUE ALCOOL
NAO MATA A PESSOA
SOH ACABA COM SEU CONVIVIO SOCIAL
VOCE DEIXA SUA MAE LA SOZINHA PRA PEGA UM SKILL DE SWORD
WTF?
VC NAO SAI COM A GALERA PRA PEGA MINA, PQ TEM Q UPA --"
NERD !@;

Abacate123

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 19/05/06Posts: 125

vlw vini_xxe

é bom saber que meus trabalhos agradam a comunidade!

Atenciosamente Kiko5

--------------------------------------







kiko5fanmf0.gif

By: Anokinha

didinhaxd

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 08/02/08Posts: 81Char no Tibia: nemhum

Aprovado

Nota 9.5

só não 10 pq ele poderia botar spoils seria mais facil de ver pq fiko mtuu grande

mais tbm fiko beem explicado