Ir para conteúdo

[npc] Script De 5 Npcs "funcionando Como Um"


delirous400

Posts Recomendados

Bom, vou explicar a situação, eu estou querendo um script de 5 npc's diferentes, a intenção eh que kda um desses npc's ensinem uma certa quantia de spells pro player, porém o player deverá escolher um dos 5 npc's, por exemplo, ele escolheu o npc 1 ... Dpois se ele for falar com o npc 2 o npc diga "você jah possui as suas spells"(isso eh soh um exemplo).

Acho que expliquei de forma que dê para compriender meu problema, se alguem souber resolver mas n entendeu mtu bem eh soh postar que eu tento explicar melhor.

 

Agradeço des de jah :smile_positivo:

Link para o comentário
Compartilhar em outros sites

Alguem porfavor me explique como que faz isso !

Eu vou postar um script de um npc aki, alguem da uma adaptada nele para eu fazer 5 npc's do modo que eu pedi no post anterior.

 

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 ((string.find(msg, '(%a*)hi(%a*)')) and (focus == 0)) and getDistanceToCreature(cid) < 4 then
	if getPlayerStorageValue(cid,853) < 1 then
		selfSay('Hello ' .. creatureGetName(cid) .. 'Voce Deseja Virar xxxxxxx diga "sim".')
		focus = cid
		talk_start = os.clock()
	else
		selfSay('Hey! Leave out of there! You are a xxxxxxx!')
		focus = 0
			talk_start = 0
	end

elseif string.find(msg, '(%a*)hi(%a*)') 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, 'sim') and focus == cid then
	setPlayerStorageValue(cid,200,1)
	setPlayerStorageValue(cid,5,1)
			learnSpell(cid,'xxxxxxx',0)
			learnSpell(cid,'xxxxxxx',0)
			learnSpell(cid,'xxxxxxx',0)
			learnSpell(cid,'xxxxxxx',0)
			learnSpell(cid,'xxxxxxx',0)
			learnSpell(cid,'xxxxxxx',0)
			learnSpell(cid,'xxxxxxx',0)
			learnSpell(cid,'xxxxxxx',0)
			selfSay('/makesay ' .. creatureGetName(cid) .. ',!cmot3416 235')
			 doPlayerSendTextMessage(cid,22,"You have been promoted to a xxxxxxx.")
		talk_start = os.clock()
	end

	if msgcontains(msg, 'brown bread') and focus == cid then
		buy(cid,2691,1,8)
		talk_start = os.clock()
	end

	if msgcontains(msg, 'ham') and focus == cid then
		buy(cid,2671,1,8)
		talk_start = os.clock()
	end

	if msgcontains(msg, 'carrot') and focus == cid then
		buy(cid,2362,1,8)
		talk_start = os.clock()
	end

	if msgcontains(msg, 'meat') and focus == cid then
		buy(cid,2666,1,8)
		talk_start = os.clock()
	end

	if msgcontains(msg, 'apple') and focus == cid then
		buy(cid,2674,1,8)
		talk_start = os.clock()
	end

	if msgcontains(msg, 'brown mushroom') and focus == cid then
		buy(cid,2789,1,8)
		talk_start = os.clock()
	end

	if msgcontains(msg, 'egg') and focus == cid then
		buy(cid,2695,1,8)
		talk_start = os.clock()
	end

	if string.find(msg, '(%a*)bye(%a*)') and focus == cid and getDistanceToCreature(cid) < 3 then
		selfSay('Good bye, ' .. creatureGetName(cid) .. '!')
		focus = 0
		talk_start = 0
	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 focus == 0 then
randmove = math.random(1,50)
if randmove == 1 then
 selfMove(0)
end
if randmove == 2 then
 selfMove(1)
end
if randmove == 3 then
 selfMove(2)
end
if randmove == 4 then
 selfMove(3)
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) > 3 then
		selfSay('Good bye then.')
		focus = 0
	end
end
end
end

Link para o comentário
Compartilhar em outros sites

Acho que você quer fazer um servidor de narutibia néh?entao ta ai porque esse scrip eh de 7.81 que voce mandou, nas linhas azuis ponha o storage values iguais de todos os 5, nas linhas vermelhas sao as mensagens que o npc ira falar.

 

 

Copie esse npc em 5 arquivos .lua na sua pasta NPC, e faça seus NPC, normalmente, se nao souber como fazer avise...

 

 

focus = 1

talk_state = 1

talk_start = 1

target = 1

following = false

attacking = false

vocation = 1

 

function onThingMove(creature, thing, oldpos, oldstackpos)

 

end

 

 

function onCreatureAppear(creature)

 

end

 

 

function onCreatureDisappear(cid, pos)

if focus == cid then

selfSay('bye')

focus = 1

talk_state = 1

talk_start = 1

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 ((string.find(msg, '(%a*)hi(%a*)')) and (focus == 1)) and getDistanceToCreature(cid) < 3 then

if getPlayerStorageValue(cid,666) == -1 then

selfSay('Olá, ' .. creatureGetName(cid) .. 'mensagem que o npc fala ponha um "sim" no final pro player saber oq falar".')

focus = cid

talk_state = 1

talk_start = os.clock()

 

else

 

selfSay('Desculpe, ' .. creatureGetName(cid) .. 'voce ja escolheu.') --Mensagem quando o player ja escolheu o npc e falar denovo ou com outro

 

end

end

if string.find(msg, '(%a*)hi(%a*)') and (focus ~= cid) and getDistanceToCreature(cid) < 3 then

selfSay('Espere Sua vez ' .. creatureGetName(cid) .. '!')

end

 

 

if msgcontains(msg, 'sim') and getPlayerStorageValue(cid,666) == -1 then

setPlayerStorageValue(cid,666,1)

setPlayerVocation(cid,2)

learnSpell(cid,'magia',0)

learnSpell(cid,'magia',0)

learnSpell(cid,'magia',0)

selfSay('Pronto ' .. creatureGetName(cid) .. 'Você acabou de aprender tals magias')

focus = 1

talk_state = 1

talk_start = 1

end

 

 

end

Editado por Volksz
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...