Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

Criando Npc e Novas Magias


~ BlackFire
 Compartilhar

Posts Recomendados

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 direito 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"[/quote

 

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.

 

 

CREDITOS AO: Zeh Pekeno

 

 

 

 

 

Vomit System By Colex

 

Esta action é simples mas realistica

Voce podi comer até ficar full mas se vc ficar tentandu comer mesmu full vc podi vumitar, perdendu simplesmente 1 de hp

 

porque só 1??

porque se uma pessoa ta comendo é pra aumentar a life ou mana, intaum axo ke ficaria xato se ele perdesse mt HP

 

É facil o player vomitar?

Como na vida real não é mt facil, mas se vc ficar sempre tentando comer podi ter a certeza ke uma hora vc vomita, as probabilidades é 1 em 50, para mim axo ke dexa o jogo mais realista.

 

 

passemos ao code:

 

vai na pasta data/actions/scripts e procura por food.lua (deve estar la) abre ele e substitui tudo que esta dentro pelo seguinte:

 

--Food System 7.6 by Danielo with GM Eating System by Frerety and Vomit System by Colex--

 

MAX_FOOD = 1200

 

function onUse(cid, item, frompos, item2, topos)

 

 

if item.itemid == 2328 then

food = 96

elseif item.itemid == 2362 then

food = 96

elseif item.itemid == 2363 then

food = 72

elseif item.itemid == 2666 then

food = 180

elseif item.itemid == 2667 then

food = 144

elseif item.itemid == 2668 then

food = 120

elseif item.itemid == 2669 then

food = 254

elseif item.itemid == 2670 then

food = 196

elseif item.itemid == 2671 then

food = 360

elseif item.itemid == 2672 then

food = 720

elseif item.itemid == 2673 then

food = 56

elseif item.itemid == 2674 then

food = 72

elseif item.itemid == 2675 then

food = 156

elseif item.itemid == 2676 then

food = 96

elseif item.itemid == 2677 then

food = 12

elseif item.itemid == 2678 then

food = 160

elseif item.itemid == 2679 then

food = 12

elseif item.itemid == 2680 then

food = 24

elseif item.itemid == 2681 then

food = 108

elseif item.itemid == 2682 then

food = 240

elseif item.itemid == 2683 then

food = 240 --MODIFIC

elseif item.itemid == 2684 then

food = 96

elseif item.itemid == 2685 then

food = 46

elseif item.itemid == 2686 then

food = 108

elseif item.itemid == 2687 then

food = 24

elseif item.itemid == 2688 then

food = 126 --MODIFIC

elseif item.itemid == 2689 then

food = 120

elseif item.itemid == 2690 then

food = 72

elseif item.itemid == 2691 then

food = 96

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

elseif item.itemid == 2695 then

food = 96

elseif item.itemid == 2696 then

food = 108

elseif item.itemid == 2787 then

food = 72 --102

elseif item.itemid == 2788 then

food = 48

elseif item.itemid == 2789 then

food = 264

elseif item.itemid == 2790 then

food = 84

elseif item.itemid == 2791 then

food = 84

elseif item.itemid == 2792 then

food = 140

elseif item.itemid == 2793 then

food = 126

elseif item.itemid == 2794 then

food = 111

elseif item.itemid == 2795 then

food = 136

elseif item.itemid == 2796 then

food = 60

 

else

return 0

end

 

vomit = math.random(1,50)

 

if (getPlayerFood(cid) + food > MAX_FOOD) then

if getPlayerAccess(cid) > 2 then

doPlayerFeed(cid,food)

doRemoveItem(item.uid,1)

return 1

else

if vomit == 1 then

doPlayerSendCancel(cid,"You are full, You have vomited.")

doSendMagicEffect(getPlayerPosition(cid),8)

doPlayerAddHealth(cid,-vomit)

vom = doCreateItem(2025,4,getPlayerPosition(cid))

doRemoveItem(item.uid,1)

doSetItemSpecialDescription(vom,"Vomit")

doDecayItem(vom)

else

doPlayerSendCancel(cid,"You are full.")

end

return 1

end

end

 

doPlayerFeed(cid,food)

doRemoveItem(item.uid,1)

return 1

end

 

 

e é só isso

 

espero que gostem

 

Creditos : 50% eu 50% Alex ( RL Meu )

 

 

nota: não testem com GM porque esse script ta com o sistema de GM comer sem ficar full por Frerety

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.