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