Ir para conteúdo
Entre para seguir isso  
KilluaOwnz

[NPC] Oracle (Menos Linhas e sem Bugs)

Recommended Posts

KilluaOwnz    0
KilluaOwnz

Bem, este é o meu 1º Script, então me desculpe pelos erros OK?

Eu estou fazendo um OT com um amigo meu e aí decidimos por um NPC de Oracle no Server. Procurei no Fórum e aí achei, porém, além de ter um Script bem extenso (de 198 Linhas), era de difícil compreensão e edição. E devido aos Bugs apresentados resolvi criar outro, 100%.

 

-- Aos críticos, espero que tenham gostado e peço desculpa por não ter colocado nenhum elses, pois estava dando direto Syntax Erro em tudo que colocava depois de cada um deles.

 

[spoiler=Créditos]Nome: NPC Oracle

Script: Killua

Versão testada: TFS 0.3.6 e 0.4

 

[spoiler=Script]Primeiro vá em sua data/npc e crie um arquivo chamado oracle.xml. Nele cole isso:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Oracle" floorchange="0" walkinterval="0" script="data/npc/scripts/oracle.lua">
<health now="150" max="150"/>
<look typeex="1448"/>
</npc>

Agora vá em data/npc/scripts e crie outro arquivo chamado oracle.lua. Dentro dele cole:

-- OracleSystem by Killua --
--- Área Editável ---
-- Nome das Vocações --
local vocation1 = 'sorcerer'
local vocation2 = 'druid'
local vocation3 = 'paladin'
local vocation4 = 'knight'
-- Level Mínimo para se tornar um Vocação --
local minlevel = 8
-- Cidades (Nomes) --
local cityname1 = 'Slayer'
local cityname2 = 'Fire'
local cityname3 = 'Frozen'
-- Cidades (Coordenadas do Templo) --
local citycoor1 = {x=160, y=54, z=7}
local citycoor2 = {x=52, y=376, z=7}
local citycoor3 = {x=428, y=209, z=7}
-- Cidades (IDs Town) --
local cityid1 = 1
local cityid2 = 4
local cityid3 = 5
-- OracleSystem by Killua --
-- Fim da Área Editável --
function onCreatureSay(cid, type, msg)
if(msg == "hi") then
	selfSay('Olá, deseja definir seu destino?',cid)
end
if(msg == "yes") then
	if getPlayerLevel(cid) > minlevel - 1 and getPlayerVocation(cid) == 0 then
		selfSay('Qual vocação você deseja ser? Deseja ser um {'.. vocation1 ..'}, um {'.. vocation2 ..'}, um {'.. vocation3 ..'} ou um {'.. vocation4 ..'}?',cid)
	end
	if(getPlayerLevel(cid) <= minlevel - 1) then
		selfSay('Desculpe, mas você não tem a experiência necessária. Volte quando tivé-la!',cid)
		removeFocus(cid)
	end
	if(getPlayerVocation(cid)) ~= 0 then
		selfSay('Está tentando me enganar? Você já tem uma vocação!! Decida logo para que cidade você quer ir!!'.. cityname1 ..'} City, {'.. cityname2 ..'} Fortress City  ou {'.. cityname3 ..'} City?',cid)
	end
end
if(msg == "sabio") then
	selfSay('Só quero lembrar que essa decisão é irreversível!',cid)
	doPlayerSetVocation(cid,1)
	if getPlayerVocation (cid) == 1 then
		selfSay('Pronto, agora você é um '.. vocation1 ..'! Para que cidade deseja ir? {'.. cityname1 ..'} City, {'.. cityname2 ..'} City  ou {'.. cityname3 ..'} City?',cid)
	end
end
if(msg == "clerigo") then
	selfSay('Só quero lembra que essa decisão é irreversível!',cid)
	doPlayerSetVocation(cid,2)
	if getPlayerVocation (cid) == 2 then
		selfSay('Pronto, agora você é um '.. vocation2 ..'! Para que cidade deseja ir? {'.. cityname1 ..'} City, {'.. cityname2 ..'} Fortress City  ou {'.. cityname3 ..'} City?',cid)
	end
end
if(msg == "caçador") then
	selfSay('Só quero lembrar que essa decisão é irreversível!',cid)
	doPlayerSetVocation(cid,3)
	if getPlayerVocation (cid) == 3 then
		selfSay('Pronto, agora você é um '.. vocation3 ..'! Para que cidade deseja ir? {'.. cityname1 ..'} City, {'.. cityname2 ..'} Fortress City  ou {'.. cityname3 ..'} City?',cid)
	end
end
if(msg == "cavaleiro") then
	selfSay('Só quero lembrar que essa decisão é irreversível!',cid)
	doPlayerSetVocation(cid,4)
	if getPlayerVocation (cid) == 4 then
		selfSay('Pronto, agora você é um '.. vocation4 ..'! Para que cidade deseja ir? {'.. cityname1 ..'} City, {'.. cityname2 ..'} Fortress City  ou {'.. cityname3 ..'} City?',cid)
	end
end
if(msg == "".. cityname1 .."") then
	doTeleportThing(cid,citycoor1)
	doPlayerSetTown (cid,cityid1)
	selfsSay('Boa viagem',cid)
end
if(msg == "".. cityname2 .."") then
	doTeleportThing(cid,citycoor2)
	doPlayerSetTown (cid,cityid2)
	selfsSay('Boa viagem',cid)
end
if(msg == "".. cityname3 .."") then
	doTeleportThing(cid,citycoor3)
	doPlayerSetTown (cid,cityid3)
	selfsSay('Boa viagem',cid)
end
if(msg == "no") then
	selfSay('Então volte quando estiver preparado!',cid)
	removeFocus(cid)
end	
end

[spoiler=Account Mananger]Porém, Players acabam escolhendo sua Vocação no próprio Account Mananger. Para evitar que isso aconteça vá em seu config.lua e procure essa linha:

newPlayerChooseVoc = "[b][color="RoyalBlue"]yes[/color][/b]"

Basta alterar o yes para no e pronto!

 

[spoiler=Mapa]Quanto ao Mapa, muitos, ao importar o NPC no MapEditor acaba reclamando por não ver a imagem do NPC adicionado! Isso ocorre devido ao fato do NPC ser uma Estátua e por isso possuir um Looktype muito alto! Para evitar esse Problema, basta, antes de importar o NPC, ir no oracle.xml, procurar essa linha:

<look typeex="1448"/>

E trocá-la por essa:

<look type="148"/>

Não se preocupem: lá no MapEditor vai aparecer a imagem de um Citizen (se eu não me engano), porém no jogo aparecerá a Estátua normal do Oracle!

Após ter importado o NPC, só colocar a linha original no lugar dela!

 

 

[spoiler=Configurando]Para ficar mais fácil configurar eu coloquei Variáveis de forma que ficassem dispostas no início e de fácil compreensão!

[color="DarkOrange"]-- OracleSystem by Killua --
--- Área Editável ---
-- Nome das Vocações --[/color]
local vocation1 = '[b][color="RoyalBlue"]sorcerer[/color][/b]'
local vocation2 = '[b][color="RoyalBlue"]druid[/color][/b]'
local vocation3 = '[b][color="RoyalBlue"]paladin[/color][/b]'
local vocation4 = '[b][color="RoyalBlue"]knight[/color][/b]'
[color="DarkOrange"]-- Level Mínimo para se tornar um Vocação --[/color]
local minlevel = [b][color="RoyalBlue"]8[/color][/b]
[color="DarkOrange"]-- Cidades (Nomes) --[/color]
local cityname1 = '[b][color="RoyalBlue"]Slayer[/color][/b]'
local cityname2 = '[b][color="RoyalBlue"]Fire[/color][/b]'
local cityname3 = '[b][color="RoyalBlue"]Frozen[/color][/b]'
[color="DarkOrange"]-- Cidades (Coordenadas do Templo) --[/color]
local citycoor1 = {x=[b][color="RoyalBlue"]160[/color][/b], y=[b][color="RoyalBlue"]54[/color][/b], z=[b][color="RoyalBlue"]7[/color][/b]}
local citycoor2 = {x=[b][color="RoyalBlue"]52[/color][/b], y=[b][color="RoyalBlue"]376[/color][/b], z=[b][color="RoyalBlue"]7[/color][/b]}
local citycoor3 = {x=[b][color="RoyalBlue"]428[/color][/b], y=[b][color="RoyalBlue"]209[/color][/b], z=[b][color="RoyalBlue"]7[/color][/b]}
[color="DarkOrange"]-- Cidades (IDs Town) --[/color]
local cityid1 = [b][color="RoyalBlue"]1[/color][/b]
local cityid2 = [b][color="RoyalBlue"]4[/color][/b]
local cityid3 = [b][color="RoyalBlue"]5[/color][/b]
[color="DarkOrange"]-- OracleSystem by Killua --
-- Fim da Área Editável --[/color]

Acho que não é necessário explicar nada. Qualquer dúvida quanto ao Edit do Script só mandar PM pra mim que te envio o Script editado OK?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
edoras    0
edoras

ótimo e muito bem esplicado, porem queria um Oralce que definissa o sexo do personagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites
KilluaOwnz    0
KilluaOwnz

Desculpe-me pela demora. Uhm. Eu estou fazendo um Script que muitas pessoas pediram (NPC que vende addon por itens e mais algumas coisas) e além disso estava viajando.

Ta aí o Script que pediu. Lembrando que não testei!

 

[spoiler=Script]

-- OracleSystem by Killua --
--- Área Editável ---
-- Nome das Vocações --
local vocation1 = 'sorcerer'
local vocation2 = 'druid'
local vocation3 = 'paladin'
local vocation4 = 'knight'
-- Level Mínimo para se tornar um Vocação --
local minlevel = 8
-- Cidades (Nomes) --
local cityname1 = 'Slayer'
local cityname2 = 'Fire'
local cityname3 = 'Frozen'
-- Cidades (Coordenadas do Templo) --
local citycoor1 = {x=160, y=54, z=7}
local citycoor2 = {x=52, y=376, z=7}
local citycoor3 = {x=428, y=209, z=7}
-- Cidades (IDs Town) --
local cityid1 = 1
local cityid2 = 4
local cityid3 = 5
-- OracleSystem by Killua --
-- Fim da Área Editável --
function onCreatureSay(cid, type, msg)
if(msg == "hi") then
	selfSay('Olá, deseja definir seu destino?',cid)
end
if(msg == "yes") then
	if getPlayerLevel(cid) > minlevel - 1 and getPlayerVocation(cid) == 0 then
		selfSay('Vamos começar por seu Sexo. Qual gostaria de ser? {Male} or {Female}?')
	end
	if(getPlayerLevel(cid) <= minlevel - 1) then
		selfSay('Desculpe, mas você não tem a experiência necessária. Volte quando tivé-la!',cid)
		removeFocus(cid)
	end
	if(getPlayerVocation(cid)) ~= 0 then
		selfSay('Você já está pronto!! Decida logo para que cidade você quer ir!!'.. cityname1 ..'} City, {'.. cityname2 ..'} Fortress City  ou {'.. cityname3 ..'} City?',cid)
	end
if(msg == "male")
	doPlayerSetSex(cid,1)
	selfSay('Pronto, agora você é do Sexo masculino. Espero que esteja ciente de que essa decisão é irreversível. Agora vamos, qual vocação você deseja ser? {'.. vocation1 ..'}, um {'.. vocation2 ..'}, um {'.. vocation3 ..'} ou um {'.. vocation4 ..'}?',cid)
end
if(msg == "female")
	doPlayerSetSex(cid,0)
	selfSay('Pronto, agora você é do Sexo feminino. Espero que esteja ciente de que essa decisão é irreversível. Agora vamos, qual vocação você deseja ser? {'.. vocation1 ..'}, um {'.. vocation2 ..'}, um {'.. vocation3 ..'} ou um {'.. vocation4 ..'}?',cid)
end
if(msg == "sabio") then
	selfSay('Só quero lembrar que essa decisão é irreversível!',cid)
	doPlayerSetVocation(cid,1)
	if getPlayerVocation (cid) == 1 then
		selfSay('Pronto, agora você é um '.. vocation1 ..'! Para que cidade deseja ir? {'.. cityname1 ..'} City, {'.. cityname2 ..'} City  ou {'.. cityname3 ..'} City?',cid)
	end
end
if(msg == "clerigo") then
	selfSay('Só quero lembra que essa decisão é irreversível!',cid)
	doPlayerSetVocation(cid,2)
	if getPlayerVocation (cid) == 2 then
		selfSay('Pronto, agora você é um '.. vocation2 ..'! Para que cidade deseja ir? {'.. cityname1 ..'} City, {'.. cityname2 ..'} Fortress City  ou {'.. cityname3 ..'} City?',cid)
	end
end
if(msg == "caçador") then
	selfSay('Só quero lembrar que essa decisão é irreversível!',cid)
	doPlayerSetVocation(cid,3)
	if getPlayerVocation (cid) == 3 then
		selfSay('Pronto, agora você é um '.. vocation3 ..'! Para que cidade deseja ir? {'.. cityname1 ..'} City, {'.. cityname2 ..'} Fortress City  ou {'.. cityname3 ..'} City?',cid)
	end
end
if(msg == "cavaleiro") then
	selfSay('Só quero lembrar que essa decisão é irreversível!',cid)
	doPlayerSetVocation(cid,4)
	if getPlayerVocation (cid) == 4 then
		selfSay('Pronto, agora você é um '.. vocation4 ..'! Para que cidade deseja ir? {'.. cityname1 ..'} City, {'.. cityname2 ..'} Fortress City  ou {'.. cityname3 ..'} City?',cid)
	end
end
if(msg == "".. cityname1 .."") then
	doTeleportThing(cid,citycoor1)
	doPlayerSetTown (cid,cityid1)
	selfSay('Boa viagem',cid)
end
if(msg == "".. cityname2 .."") then
	doTeleportThing(cid,citycoor2)
	doPlayerSetTown (cid,cityid2)
	selfSay('Boa viagem',cid)
end
if(msg == "".. cityname3 .."") then
	doTeleportThing(cid,citycoor3)
	doPlayerSetTown (cid,cityid3)
	selfSay('Boa viagem',cid)
end
if(msg == "no") then
	selfSay('Então volte quando estiver preparado!',cid)
	removeFocus(cid)
end	
end

 

-- Edit

AH, e eu já corrigi um pequeno Bug em uns selfSays que tinha colocado errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
EruaedhManwe    0
EruaedhManwe

faça-o global

e creio que pode ser diminuido

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×