Ir para conteúdo
Entre para seguir isso  
Lipp

Tutorial Jiddo NPC System 2

Recommended Posts

Lipp    0
Lipp

Para aqueles que gostaram do meu otro tutorial então esse aqui seis vão amar :D

 

caso alguem nao viu o outro tutorial aqui vai >>

 

http://forums.otserv.com.br/showthread.php?p=298328#post298328

 

Continuando:

 

No outro tutorial agente aprendeu a fazer um npc que pega item, e que dá um "storagevalue" para continuar a outra mensagem.

nesse aqui nós vamos aprender a terminar ele e talz..

 

Paramos no:

 

setPlayerStorageValue(cid,3111,1)

 

que serve para continuar a mensagem ou seja:

 

elseif msgcontains(msg, 'bla2') and talk_state >= 1 then

if getPlayerStorageValue(cid,3111) == 1 then

 

o script não está perfeito claro, mas já ajuda muito não? =D

tipo, se você não tiver falado a primera vez com o npc ele vai falar: sorry you dont fond it :( sendo que você não falou com ele né mais vamo lá

 

Então vai que você queira que no final, quando o player tiver entregado todos os itens talz ele vai abrir uma porta igual akelas no global que tem que ter "permisssão" para entrar nela.

 

A porta eu não consigui fazer =xx, diremos que eu tava com sono ^^, mais o dark me ajudou a fazer um piso po :D

 

Então se vai lá no movements/scripts e bota um ovo OPS, um script:

 

-----------by D@rK all rights reserved-------
function teleport(player)
dir = getPlayerLookDir(player)
pos = getPlayerPosition(player)
   if dir == 0 then
       position = {x=pos.x, y=pos.y+1, z=pos.z}
   elseif dir == 1 then
       position = {x=pos.x-1, y=pos.y, z=pos.z}
   elseif dir == 2 then
       position = {x=pos.x, y=pos.y-1, z=pos.z}
   elseif dir == 3 then
       position = {x=pos.x+1, y=pos.y, z=pos.z}
   end
   return position
end    
function onStepIn(cid, item, pos)

   if isPlayer(cid) == TRUE  then

       --==--==--==--== Vocação ==--==--==--==--
 [color=red][b]      if item.actionid == 0 then[/b][/color]

       voc_true = {1,2,3,4}
       voc = getPlayerVocation(cid)

           for a = 1, table.getn(voc_true) do
               if voc == voc_true[a] then
                   vocation = 1
                   break
               else
                   vocation = 0
               end    
           end

           if vocation == 0 then
               doTeleportThing(cid,teleport(cid))
               doSendMagicEffect(getPlayerPosition(cid),5)
               doPlayerSendTextMessage(cid, 22,"Você não tem a vocação requerida para passar")
               doPlayerSendCancel(cid,"Sorry, not possible")

           end    

       --==--==--==--== Level ==--==--==--==--
       [color=red][b]elseif item.actionid == 0 then[/b][/color]

       level = 250
       lvl = getPlayerLevel(cid)

           if lvl < level then
               doTeleportThing(cid,teleport(cid))
               doSendMagicEffect(getPlayerPosition(cid),5)
               doPlayerSendTextMessage(cid, 22,'Apenas pessoas com level '.. level ..' ou mais podem passar' )
               doPlayerSendCancel(cid,"Sorry, not possible")
           end

       --==--==--==--== Quest ==--==--==--==--
  [color=blue][b]    elseif item.actionid == 4444 then[/b][/color]

      [b][u]storage = {3111}[/u][/b]

           for b = 1, table.getn(storage) do
           value = getPlayerStorageValue(cid,storage[b])
               if value > -1 then
                   quest = 1
                   break
               else
                   quest = 0
               end
           end

           if quest == 0 then
               doTeleportThing(cid,teleport(cid))
               doSendMagicEffect(getPlayerPosition(cid),5)
               doPlayerSendTextMessage(cid, 22,'Desculpe, mas você não pode passar' )
               doPlayerSendCancel(cid,"Sorry, not possible")
           end

       --==--==--==--== Contem ==--==--==--==--
   [color=red][b]    elseif item.actionid == 0 then[/b][/color]

       item_id = {2552, 2553}

           for c = 1, table.getn(item_id) do
           item = getPlayerItemCount(cid,item_id[c])
               if item > 0 then
                   contem = 1
                   break
               else
                   contem = 0
               end
           end

           if contem == 0 then
               doTeleportThing(cid,teleport(cid))
               doSendMagicEffect(getPlayerPosition(cid),5)
               doPlayerSendTextMessage(cid, 22,'Desculpe, mas você não tem o item necessario para pode passar' )
               doPlayerSendCancel(cid,"Sorry, not possible")
           end
       --==--==--==--== Acesso ==--==--==--==--
    [color=red][b]  elseif item.actionid == 0 then[/b][/color]

       acesso_true = {2,5}
       player = getPlayerAccess(cid)

           for d = 1, table.getn(acesso_true) do
               if player == acesso_true[d] then
                   acesso = 1
               else    
                   acesso = 0
               end
           end

           if acesso == 0 then
               doTeleportThing(cid,teleport(cid))
               doSendMagicEffect(getPlayerPosition(cid),5)
               doPlayerSendTextMessage(cid, 22,'Desculpe, mas você não tem acesso seficiente para pode passar' )
               doPlayerSendCancel(cid,"Sorry, not possible")
           end
       end
   end    
end

 

e depois no movements.xml e põe

 

<movevent event="StepIn" actionid="o que você quiser" script="pisos1.lua" />

 

Bom o dark já explico tudo isso mais que que custa eu explica denovo? =x

Essi é o script de um piso, que só alguma coisa vai poder passar nele. (vocação, level, acesso, e o nosso que é o de quest).

Então não se preocupem com o resto, é soh botar 0 nos outros e no de Quest você põe um actionid que no caso usaremos o 4444.

 

elseif item.actionid == 4444 then : esse é o actionid que você vai por no seu piso lá no seu map editor, favor fazer um corredor com 1 sqm soh =x

storage = {3111} : aqui é o storage que o npc te deu lah no final do tutorial passado, claro que se você quiser botar mais mensagens então é só indo pondo mais e mais storages, dai no final de todos você põe setStorageValue(cid,storage que você Quiser,1).

 

Para finalizar o npc se põe:

 

-- Place all your code in here. Remember that hi, bye and all that stuff is already handled by the npcsystem, so you do not have to take care of that yourself.

return true

end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

Azul : ou seja o npc vai falar o bye =D

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~

uma coisinha que eu kebrei a cabeça para discubrir foi que, eu queria por os storage value do nada, sendo q eles não existiam, então gente, no map editor, bota uns piso no meio do nada e vai pondo neles a UniqueID q o npc pediu, se não vai dar errado :D

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~

como eu disse, o script não tá perfeito, claro sou um iniciante ;)

mais já pode dar várias ideias pro pessoal não? :style:

 

se vocês acharam q tá muito carnaval o script, po eu fiz o melhor que eu pude pra diferenciar tudo =x

 

VLWW

NicK~~~~~

 

e agora usem idéias próprias, não mais aqueles npcs que só falam "hi, demon shield...."

go go go RPG =D

fuiz~~~~~~

 

Créditos?

bom eu fiz o tutorial inteiro e os scripts.

o script do piso lá eu peguei do dark mesmo, mais o tutorial fala sobre npc então não sei =x

Compartilhar este post


Link para o post
Compartilhar em outros sites
ElfKiller    36
ElfKiller

Aprovado ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites
Lipp    0
Lipp

@Elf

 

vlww mesmo =D

 

@Povo

Vamo comenta aeeee =x

Compartilhar este post


Link para o post
Compartilhar em outros sites
MeLaHeLL    0
MeLaHeLL

Uhmmm...

 

Interesante...

Pra qem eh iniciante jah ajuda e mto..

E o bastante..

 

Da pra fazer mta koisa com issu ae. :D

 

Vlws ae..

Me ajudo com umas duvidas crentes ae. =x

 

uaheuhaeuhahea

 

Vlws.

E tuto tah bem explicado!

=D

Compartilhar este post


Link para o post
Compartilhar em outros sites
Lipp    0
Lipp

@MeLaHeLL

obrigado :D

jah deu umas ideias de umas quest bem loka ae? =D

boa sorte !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×