Aew galera eu sei que tem otros topicos que ensinam como fazer npc andar... mas desse jeito que eu vou ensinar eh mais facil.
Eu nunk vi nenhum tutorial q ensinava igual vou ensinar. Lembrando que eh somente para 7.81+ esse tutorial
Vou pegar um npc de Aol que eh Muito Muito simples mesmo...
focus = 0
talk_start = 0
target = 0
following = false
attacking = false
function onThingMove(creature, thing, oldpos, oldstackpos)
end
function onCreatureAppear(creature)
end
function onCreatureDisappear(cid, pos)
*** if focus == cid then
*** *** *** *** ***selfSay('Good bye then.')
*** *** *** *** ***focus = 0
*** *** *** *** ***talk_start = 0
*** end
end
function onCreatureTurn(creature)
end
function msgcontains(txt, str)
*** return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end
function onCreatureSay(cid, type, msg)
*** msg = string.lower(msg)
*** if (msgcontains(msg, 'hi') and focus == 0) and getDistanceToCreature(cid) < 4 then
*** ***selfSay('Hello ' .. creatureGetName(cid) .. '! I sell scarfs (1k) and aols (40k).')
*** ***focus = cid
*** ***talk_start = os.clock()
*** elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then
*** ***selfSay('Sorry, ' .. creatureGetName(cid) .. '! I talk to you in a minute.')
*** elseif focus == cid then
***talk_start = os.clock()
***if msgcontains(msg, 'aol') then
*** buy(cid,2173,1,40000)
***elseif msgcontains(msg, 'scarf') then
*** buy(cid,2661,1,1000)
***elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then
*** selfSay('Good bye, ' .. creatureGetName(cid) .. '!')
*** focus = 0
*** talk_start = 0
***end
*** end
end
function onCreatureChangeOutfit(creature)
end
function onThink()
if focus > 0 then ***
x, y, z = creatureGetPosition(focus)
myx, myy, myz = selfGetPosition()
if ((myy-y==0) and (myx-x<=0 and myx-x>=-4)) then
*** *** *** selfTurn(0)
end ***
if ((myy-y==0) and (myx-x>=0 and myx-x<=4)) then
*** *** *** selfTurn(2)
end
*** *** *** if ((myx-x==0) and (myy-y<=0 and myy-y>=-4)) then
*** *** *** selfTurn(1)
end
if ((myx-x==0) and (myy-y>=0 and myy-y<=4)) then
*** *** *** selfTurn(3)
end
if ((myy-y==-2) and (myx-x>=-1 and myx-x<=1)) then
*** *** *** selfTurn(1)
end
if ((myy-y==2) and (myx-x>=-1 and myx-x<=1)) then
*** *** *** ***selfTurn(3)
end
if ((myx-x==2) and (myy-y>=-1 and myy-y<=1)) then
*** *** *** ***selfTurn(2)
end
if ((myx-x==-2) and (myy-y>=-1 and myy-y<=1)) then
*** *** *** ***selfTurn(0)
end
if ((myy-y==-3) and (myx-x>=-2 and myx-x<=2)) then
*** *** *** ***selfTurn(1)
end
if ((myy-y==3) and (myx-x>=-2 and myx-x<=2)) then
*** *** *** ***selfTurn(3)
end
if ((myx-x==3) and (myy-y>=-2 and myy-y<=2)) then
*** *** *** ***selfTurn(2)
end
if ((myx-x==-3) and (myy-y>=-2 and myy-y<=2)) then
*** *** *** ***selfTurn(0)
end
if ((myy-y==-4) and (myx-x>=-3 and myx-x<=3)) then
*** *** *** ***selfTurn(1)
end
if ((myy-y==4) and (myx-x>=-3 and myx-x<=3)) then
*** *** *** ***selfTurn(3)
end
if ((myx-x==4) and (myy-y>=-3 and myy-y<=3)) then
*** *** *** ***selfTurn(2)
end
if ((myx-x==-4) and (myy-y>=-3 and myy-y<=3)) then
*** *** *** ***selfTurn(0)
end
end
*** if (os.clock() - talk_start) > 30 then
*** ***if focus > 0 then
*** *** selfSay('Next Please...')
*** ***end
*** focus = 0
*** end
***if focus ~= 0 then
*** if getDistanceToCreature(focus) > 5 then
*** ***selfSay('Good bye then.')
*** ***focus = 0
*** end
***end
end
Ate ai tudo bem... ai agora vcs vao procurar a funcao Onthink usem ctrl+f para axar, ela esta exatamente assim
Citação:
function onThink()
agora voces vao copiar e colar logo em baixo da linha do function onThink() o seguinte
if focus == 0 then
selfWalk(4)
end
e depois que voce colar isso essa parte ficara mais ou menos assim
function onThink()
if focus == 0 then ***
selfWalk(4) ***
end
e no final seu script acabara ficando assim
Citação:
focus = 0
talk_start = 0
target = 0
following = false
attacking = false
function onThingMove(creature, thing, oldpos, oldstackpos)
end
function onCreatureAppear(creature)
end
function onCreatureDisappear(cid, pos)
*** if focus == cid then
*** *** *** *** ***selfSay('Good bye then.')
*** *** *** *** ***focus = 0
*** *** *** *** ***talk_start = 0
*** end
end
function onCreatureTurn(creature)
end
function msgcontains(txt, str)
*** return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end
function onCreatureSay(cid, type, msg)
*** msg = string.lower(msg)
*** if (msgcontains(msg, 'hi') and focus == 0) and getDistanceToCreature(cid) < 4 then
*** ***selfSay('Hello ' .. creatureGetName(cid) .. '! I sell scarfs (1k) and aols (40k).')
*** ***focus = cid
*** ***talk_start = os.clock()
*** elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then
*** ***selfSay('Sorry, ' .. creatureGetName(cid) .. '! I talk to you in a minute.')
*** elseif focus == cid then
***talk_start = os.clock()
***if msgcontains(msg, 'aol') then
*** buy(cid,2173,1,40000)
***elseif msgcontains(msg, 'scarf') then
*** buy(cid,2661,1,1000)
***elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then
*** selfSay('Good bye, ' .. creatureGetName(cid) .. '!')
*** focus = 0
*** talk_start = 0
***end
*** end
end
function onCreatureChangeOutfit(creature)
end
function onThink()
if focus == 0 then ***
selfWalk(4) ***
end
if focus > 0 then ***
x, y, z = creatureGetPosition(focus)
myx, myy, myz = selfGetPosition()
if ((myy-y==0) and (myx-x<=0 and myx-x>=-4)) then
*** *** *** selfTurn(0)
end ***
if ((myy-y==0) and (myx-x>=0 and myx-x<=4)) then
*** *** *** selfTurn(2)
end
*** *** *** if ((myx-x==0) and (myy-y<=0 and myy-y>=-4)) then
*** *** *** selfTurn(1)
end
if ((myx-x==0) and (myy-y>=0 and myy-y<=4)) then
*** *** *** selfTurn(3)
end
if ((myy-y==-2) and (myx-x>=-1 and myx-x<=1)) then
*** *** *** selfTurn(1)
end
if ((myy-y==2) and (myx-x>=-1 and myx-x<=1)) then
*** *** *** ***selfTurn(3)
end
if ((myx-x==2) and (myy-y>=-1 and myy-y<=1)) then
*** *** *** ***selfTurn(2)
end
if ((myx-x==-2) and (myy-y>=-1 and myy-y<=1)) then
*** *** *** ***selfTurn(0)
end
if ((myy-y==-3) and (myx-x>=-2 and myx-x<=2)) then
*** *** *** ***selfTurn(1)
end
if ((myy-y==3) and (myx-x>=-2 and myx-x<=2)) then
*** *** *** ***selfTurn(3)
end
if ((myx-x==3) and (myy-y>=-2 and myy-y<=2)) then
*** *** *** ***selfTurn(2)
end
if ((myx-x==-3) and (myy-y>=-2 and myy-y<=2)) then
*** *** *** ***selfTurn(0)
end
if ((myy-y==-4) and (myx-x>=-3 and myx-x<=3)) then
*** *** *** ***selfTurn(1)
end
if ((myy-y==4) and (myx-x>=-3 and myx-x<=3)) then
*** *** *** ***selfTurn(3)
end
if ((myx-x==4) and (myy-y>=-3 and myy-y<=3)) then
*** *** *** ***selfTurn(2)
end
if ((myx-x==-4) and (myy-y>=-3 and myy-y<=3)) then
*** *** *** ***selfTurn(0)
end
end
*** if (os.clock() - talk_start) > 30 then
*** ***if focus > 0 then
*** *** selfSay('Next Please...')
*** ***end
*** focus = 0
*** end
***if focus ~= 0 then
*** if getDistanceToCreature(focus) > 5 then
*** ***selfSay('Good bye then.')
*** ***focus = 0
*** end
***end
end
Agora eu vou ensinar como fazer um npc falar Somente com premmy account's... esse tutorial eu nunca vi aqui no forum.
Eh o seguinte vou fazer com o npc de Aol denovo pq ele eh muito simples.
Voce pega um npc de aol e ele vai estar mais ou menos assim
focus = 0
talk_start = 0
target = 0
following = false
attacking = false
function onThingMove(creature, thing, oldpos, oldstackpos)
end
function onCreatureAppear(creature)
end
function onCreatureDisappear(cid, pos)
*** if focus == cid then
*** *** *** *** ***selfSay('Good bye then.')
*** *** *** *** ***focus = 0
*** *** *** *** ***talk_start = 0
*** end
end
function onCreatureTurn(creature)
end
function msgcontains(txt, str)
*** return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end
function onCreatureSay(cid, type, msg)
*** msg = string.lower(msg)
*** if (msgcontains(msg, 'hi') and focus == 0) and getDistanceToCreature(cid) < 4 then
*** ***selfSay('Hello ' .. creatureGetName(cid) .. '! I sell scarfs (1k) and aols (40k).')
*** ***focus = cid
*** ***talk_start = os.clock()
*** elseif focus == cid then
***talk_start = os.clock()
***if msgcontains(msg, 'aol') then
*** buy(cid,2173,1,40000)
***elseif msgcontains(msg, 'scarf') then
*** buy(cid,2661,1,1000)
***elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then
*** selfSay('Good bye, ' .. creatureGetName(cid) .. '!')
*** focus = 0
*** talk_start = 0
***end
*** end
end
function onCreatureChangeOutfit(creature)
end
function onThink()
if focus == 0 then ***
selfWalk(4) ***
end
if focus > 0 then ***
x, y, z = creatureGetPosition(focus)
myx, myy, myz = selfGetPosition()
if ((myy-y==0) and (myx-x<=0 and myx-x>=-4)) then
*** *** *** selfTurn(0)
end ***
if ((myy-y==0) and (myx-x>=0 and myx-x<=4)) then
*** *** *** selfTurn(2)
end
*** *** *** if ((myx-x==0) and (myy-y<=0 and myy-y>=-4)) then
*** *** *** selfTurn(1)
end
if ((myx-x==0) and (myy-y>=0 and myy-y<=4)) then
*** *** *** selfTurn(3)
end
if ((myy-y==-2) and (myx-x>=-1 and myx-x<=1)) then
*** *** *** selfTurn(1)
end
if ((myy-y==2) and (myx-x>=-1 and myx-x<=1)) then
*** *** *** ***selfTurn(3)
end
if ((myx-x==2) and (myy-y>=-1 and myy-y<=1)) then
*** *** *** ***selfTurn(2)
end
if ((myx-x==-2) and (myy-y>=-1 and myy-y<=1)) then
*** *** *** ***selfTurn(0)
end
if ((myy-y==-3) and (myx-x>=-2 and myx-x<=2)) then
*** *** *** ***selfTurn(1)
end
if ((myy-y==3) and (myx-x>=-2 and myx-x<=2)) then
*** *** *** ***selfTurn(3)
end
if ((myx-x==3) and (myy-y>=-2 and myy-y<=2)) then
*** *** *** ***selfTurn(2)
end
if ((myx-x==-3) and (myy-y>=-2 and myy-y<=2)) then
*** *** *** ***selfTurn(0)
end
if ((myy-y==-4) and (myx-x>=-3 and myx-x<=3)) then
*** *** *** ***selfTurn(1)
end
if ((myy-y==4) and (myx-x>=-3 and myx-x<=3)) then
*** *** *** ***selfTurn(3)
end
if ((myx-x==4) and (myy-y>=-3 and myy-y<=3)) then
*** *** *** ***selfTurn(2)
end
if ((myx-x==-4) and (myy-y>=-3 and myy-y<=3)) then
*** *** *** ***selfTurn(0)
end
end
*** if (os.clock() - talk_start) > 30 then
*** ***if focus > 0 then
*** *** selfSay('Next Please...')
*** ***end
*** focus = 0
*** end
***if focus ~= 0 then
*** if getDistanceToCreature(focus) > 5 then
*** ***selfSay('Good bye then.')
*** ***focus = 0
*** end
***end
end
Agora voces vao procurar essa parte aqui
*** ***if (msgcontains(msg, 'hi') and focus == 0) and getDistanceToCreature(cid) < 4 then
*** ***selfSay('Hello ' .. creatureGetName(cid) .. '! I sell scarfs (1k) and aols (40k).')
*** ***focus = cid
*** ***talk_start = os.clock()
quando axarem essa parte voces vao colocar
if isPremium(cid) then
Bem embaixo de onde ta escrito
if (msgcontains(msg, 'hi') and focus == 0) and getDistanceToCreature(cid) < 4 then
entao essa parte ira ficar mais ou menos assim
*** if (msgcontains(msg, 'hi') and focus == 0) and getDistanceToCreature(cid) < 4 then
***if isPremium(cid) then
*** ***selfSay('Hello ' .. creatureGetName(cid) .. '! I sell scarfs (1k) and aols (40k).')
*** ***focus = cid
*** ***talk_start = os.clock()
agora ele so fala com premmy accounts, mais ainda falta um pekeno detalhe, voce tem q coloca logo em baixo do
talk_start = os.clock()
voces vao colocar isso daki
else
selfSay('Sai daki gentalha... So falo com Premmy accounts! .')
focus = 0
talk_start = 0
ficando assim esse script
Citação:
***
*** if (msgcontains(msg, 'hi') and focus == 0) and getDistanceToCreature(cid) < 4 then
***if isPremium(cid) then
*** ***selfSay('Hello ' .. creatureGetName(cid) .. '! I sell scarfs (1k) and aols (40k).')
*** ***focus = cid
*** ***talk_start = os.clock()
else
*** selfSay('Sai daki gentalha... So falo com Premmy accounts! .')
*** focus = 0
*** talk_start = 0
end
Eh isso ai galera, kem gostou fala ai porque gostou e quem nao gostou fala ai tambem pq nao gostou =p