Sejam bem vindos ao nosso forum, onde havera hacks, utilitários tutoriais e dicas para diversos jogos, fique conosco e desfrute do melhor.

Participe do fórum, é rápido e fácil

Sejam bem vindos ao nosso forum, onde havera hacks, utilitários tutoriais e dicas para diversos jogos, fique conosco e desfrute do melhor.
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

[MegaTutorial] Tudo sobre NPC'S

Ir para baixo

[MegaTutorial] Tudo sobre NPC'S Empty [MegaTutorial] Tudo sobre NPC'S

Mensagem por Convidad Qui Mar 17, 2011 1:26 pm

Estou aqui para tentar ajuda-los, e com esse tutorial eu sempre vou estar editando/adicionando coisas novas aqui, e aceito opniões!
Alem de eu criar/editar/arrumar tópicos sobre NPC's eu estou adicionando alguns tutoriais para ficar tudo mais completo!

Versão Padrão: Yurots

Bom, vamos começar:

O principal: Colocando o spawn de NPC


[b]-Abra a pasta do seu OTServ
-Vá em data/word
-Procure por npc.xml
-Clicke com o botão direto e vá em "editar"
-Adicione a tag do seu npc depois de:
<?xml version="1.0"?>
<npclist>
-E antes de:
</npclist>
-E adicione a TAG
Exemplo:
<npc name="Npc" x="74" y="220" z="7"/>

Só mude o Npc para o nome do npc que voce queira!
E a cordenada (x,y,z) para a cordenada onde voce queira que este tal npc apareca!!

Fazendo os seus NPC's andarem!

-Abra a pasta do seu OTServ
-Vá em data/npc/scripts/lib/npc.lua
-Abra-o
-Entre qualquer função adicione:

function moveRandom(ox,oy,max)
maxx = ox + max
maxy = oy + max
minx = ox - max
miny = oy - max
cx, cy, cz = selfGetPosition()
randmove = math.random(1,50)
if randmove == 1 then
nx = cx + 1
ny = cy
end
if randmove == 2 then
nx = cx - 1
ny = cy
end
if randmove == 3 then
ny = cy + 1
nx = cx
end
if randmove == 4 then
ny = cy - 1
nx = cx
end
if randmove >= 5 then
nx = cx
ny = cy
end
if((nx < maxx) and (ny < maxy) and (nx > minx) and (ny > miny)) then
moveToPosition(nx, ny, cz)
end
end

- Abra o arquivo .lua do NPC que voce queira que ande e adicione (no topo):
ox = 400
oy = 400
oz = 7
max = 5


Atenção:ox, oy e ozé a posição de respaw do seu NPC, altere de acordo com cada NPC.
E o "max" é a quantidade maxima de sqms que o NPC vai poder se afastar do ser respaw original.

- Ainda no mesmo arquivo.. procure pela função onThink() (para facilitar, aperte ctrl + f e escreva onThink) adicione:
if(focus == 0) then
moveRandom(ox,oy,max)
end

- Npc's estatuas ? Nunca mais!

Faça seu NPC leva-lo para mais de um lugar!
-Abra a pasta do seu OTServ
-Vá em data/npc/scripts
-Procure pelo script do seu npc de barco
-Agora procure por um exeplo de viagem..
-Por exemplo:
if msgcontains(msg, 'tutorial')and focus == cid then
if pay(cid,50) then
selfSay('Let\'s go!')
selfSay('/send ' .. creatureGetName(cid) .. ', 122 119 7')
focus = 0
talk_start = 0
else
selfSay('Sorry, you don\'t have enough money.')
talk_start = os.clock()
end
end

-Copie-o
-Agora depois desse ultimo end adicione denovo a mesma coisa..
-Dai é só alterar como quiser!
--Explicando:
if msgcontains(msg, 'tutorial')
È oque o player vai falar para ir para esse tal lugar..
if pay(cid,50) then
È quanto o player vai pagar pela "viagem", no caso, 50gps
selfSay('/send ' .. creatureGetName(cid) .. ', 122 119 7')
É pra onde o player vai ser teleportado, mude os numeros para onde voce queira que o player seja teleportado..


Trocas com seu NPC


-Bom, vou postar a função de "trade" para os npc's:
if msgcontains(msg, 'trade') and focus == cid then
itemstatus = doPlayerRemoveItem(cid,ID_DO_ITEM)
if itemstatus == -1 then
selfSay('Where is the item?')
else
selfSay('Here it is...')
buy(cid,ID_DO_ITEM,1,0)
talk_start = os.clock()
end

Explicando:
doPlayerRemoveItem(cid,ID_DO_ITEM)
Este será o item que voce tera que dar ao npc para receber outro em troca

buy(cid,ID_DO_ITEM,1,0)
Este sera o item que o npc vai lhe dar em troca do outro

E se vc quiser vc pode acrecentar embaixo do else um
setPlayerStorageValue(cid,6019)
Que fará com que o NPC so troque uma vez o item!!

Fazendo NPC olhar para outros lugares!


-Vá em data/npc
-Procure pelo NPC que voce queira que "olhe para outro lugar"
-Com o botão direito clicke em editar
-Procure por:
lookdir="2">

-Dai é só mudar esse "2"
-Atenção:
lookdir 0 = /\ (para o norte)
lookdir 1 = > (para o leste)
lookdir 2 = \/ (para o sul)
lookdir 3 = < (para o oeste)

Editando preço de runas e outros itens em seu NPC


Bom primero passo , ecolha um NPC na pasta data/npc e veja qual o nome do script dele , fica logo apos o nome dele assim :
<npc name="Tutorial" script="data/npc/scripts/tutorial.lua"

Logo apos ver o nome va na pasta scripts (data/npc/scripts) e localize o arquivo que estava no seu NPC , no caso aqui tutorial.lua

Abra ele como bloco de notas e então procure as mensagens :
elseif msgcontains(msg, 'blank') and focus == cid then
buy(cid,3085,1,5)
talk_start = os.clock()

Este é um exemplo de blank rune pode se perceber que cada runa ou item tem uma mensagem em cima do qual o player deve falar para comprar o item :
elseif msgcontains(msg, 'blank')

Assim se estivesse escrito SD, toda vez que ele falasse SD o npc responderia com essa ação.
buy(cid,3085,1,5)

Essa é a parte mais importante cid é o player que estará falando com o NPC,3085 é o ID da blank rune,1 é o numero de blanks que o NPC dará pra ele e 5 é o preço da blank rune
Se você quer editar o preço da runa, edite no caso, o 5


Se você quer criar uma nova runa ou item é só copiar essa parte e adicionar o ID da runa ou item que você quer mudar.
Mude a mensagem de Blank para o nome da runa ou item escolhido, lembrando que para pegar o ID da runa ou do item é só ir no Items.xml que localiza-se na pasta data/items.

Lembrando que isso funciona do mesmo jeito para itens.
Anonymous
Convidad
Convidado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos