Bonano 0 #1 Postado 2 Dezembro, 2006 [center:06b03e7bde]Tutorial Completo Sobre Npc[/center:06b03e7bde] Bom, Vamos Começar: [center:06b03e7bde]O principal: Colocando o spawn de NPC -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 apareça!! [center:06b03e7bde]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 ozE o"max" -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! http://forum.otserv.com.br/style_emoticons/<#EMO_DIR#>/tongue.gif [center:06b03e7bde]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.. [center:06b03e7bde]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!! [center:06b03e7bde]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) [center:06b03e7bde]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) Essa é a parte mais importante: cid é o player que estará falando com o NPC 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 Blanklembrando 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. ******************* - Creditos a Todos Que Criam Topicos De Tutoriais; - A todos Que Dão Suporte e; A Eu Espero Ter Ajudado Bonano ~ Compartilhar este post Link para o post Compartilhar em outros sites
dR. tWiX. 0 #2 Postado 2 Dezembro, 2006 Ótimo tuto, mas já tem TUTO Sobre NPC no pedaço, obrigado por tentar! Atitude Moderador!! Donativos por gentileza.... Presciso de um Kit-Avatar xD Atenciosamente, dR. Compartilhar este post Link para o post Compartilhar em outros sites
Faelzinhow 0 #3 Postado 2 Dezembro, 2006 Nossa senhora, perfeito rapaz :/ta muito bem explicado. Parabens Compartilhar este post Link para o post Compartilhar em outros sites
Linkz 0 #4 Postado 2 Dezembro, 2006 Na verdade não tem nenhum tutorial de NPCs completo :]Aprovado! Lindo tutorial ^^ Compartilhar este post Link para o post Compartilhar em outros sites
Hell Raiser 0 #5 Postado 5 Dezembro, 2006 po esse fiko show mermo todo perfeinto e detalhado mwn parabens sem criticas nem acrescimos de ideias grats 10 /hb Compartilhar este post Link para o post Compartilhar em outros sites
Dexavo 0 #6 Postado 6 Dezembro, 2006 tipo no meu ot num tem esse npc.xml oq eu faço ele eh 7.81? Compartilhar este post Link para o post Compartilhar em outros sites
Fast hand I 0 #7 Postado 7 Dezembro, 2006 muuuuuito útil,tutorial ta praticamente perfeito...vou usar xD Compartilhar este post Link para o post Compartilhar em outros sites
Don flyer 0 #8 Postado 7 Dezembro, 2006 Muito bom, explica tudo certinho . Compartilhar este post Link para o post Compartilhar em outros sites
Arthos 0 #9 Postado 8 Dezembro, 2006 Olá, Ajudou muito sim! Parabens, tudo explicado perfeito. /Arthray Compartilhar este post Link para o post Compartilhar em outros sites
RC-X 0 #10 Postado 8 Dezembro, 2006 Muito Bom Bonano Parabêns , Ta Ajudando Bastante Aqui =P Compartilhar este post Link para o post Compartilhar em outros sites
RedZL 0 #11 Postado 8 Dezembro, 2006 O meu dá erro =/sobre essa parte: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 algo dá errado quando abro o ot... Compartilhar este post Link para o post Compartilhar em outros sites
Convidado Trakinaz #12 Postado 8 Dezembro, 2006 nao é super+ da 1 ajudinha Compartilhar este post Link para o post Compartilhar em outros sites
Bonano 0 #13 Postado 12 Dezembro, 2006 @RedzL Vc adicionou isso no topo do seu Npc: ox = 400 oy = 400 oz = 7 max = 5 -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 Se Persistir o erro me mande uma mensagem... Bonano ~ Compartilhar este post Link para o post Compartilhar em outros sites
Bonano 0 #14 Postado 12 Dezembro, 2006 @RedzL Vc adicionou isso no topo do seu Npc: ox = 400 oy = 400 oz = 7 max = 5 -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 Se Persistir o erro me mande uma mensagem... Bonano ~ Compartilhar este post Link para o post Compartilhar em outros sites
Gabizinha 0 #15 Postado 15 Dezembro, 2006 Eu quero fazer um trade npc, mas como ele chega e fala Hi, ai ele diz as parada e tal? eh soh copiar um lua branco e por isso ai? Compartilhar este post Link para o post Compartilhar em outros sites
Gabizinha 0 #16 Postado 15 Dezembro, 2006 Eu quero fazer um trade npc, mas como ele chega e fala Hi, ai ele diz as parada e tal? eh soh copiar um lua branco e por isso ai? Compartilhar este post Link para o post Compartilhar em outros sites
Convidado Oponomo #17 Postado 24 Fevereiro, 2007 Nossa! Muito obrigado mesmo! Ajudou cara! Eu não conhecia alguns dos comandos para NPC assim, me ajudou muito... 1 pequena contribuição minha: learnSpell(cid,'exori mort',600) Faz com que o npc ensine uma magia ao jogador... Neste exemplo o jogador aprenderia a magia "exori mort" e pagaria 600 gold coins por ela. Se tentar comprar novamente o NPC dirá que voce já conhece a magia. OBS: Não funciona em Evolutions 0.7.6 (para client 7.92) e provavelmente não funciona em nenhum outro OTserv 7.9+ Compartilhar este post Link para o post Compartilhar em outros sites