Atenção:
O NPC deve ser possicionado em um lugar que outros players com acc ja criada não possam subir/descer/olhar.
Por que?
Se um player com acc ja criada ver o otro criando poderá roubar sua senha e account para no futoro hackiar.
Então CUIDADO!
Primeiro Passo: Criando o NPC,
Vá na pasta do seu OT, depois na pasta data e depois NPC,
Copie qualquer um e renomeie para: Acc Manager
Depois de ter Renomiado o arquivo da pasta seuot/data/npc aperte botão direito e depois EDITAR ( 2º Opção)
Irá Aparecer uma tela bloco de notas apague tudu oque está dentro e ponha isto:
<?xml version="1.0"?>
<npc name="Acc Manager" script="data/npc/scripts/manager.lua" access="3">
************<look type="1448" head="57" body="59" legs="40" feet="76"/>
</npc>
Depois salve e feche o bloco de notas que foi renomeiado para Acc Manager.
Agora vá na pasta data/npc/scripts copie qualquer um, botão direito editar..
Abrirá um bloco de notas apague tudu e ponha isto:
---little config-----------------------------------------templex = 160
templey = 48
templez = 7
maxnamelen = 20
maxpasslen = 20
startlvl = 8
startexp = 4200
vocations = 1
healthstart = 185
manastart = 35
depoitemid = 2591
promoted = 0
---------skills-------------------------
--knight-------
kmlvl = 0
kfist = 10
kclub = 10
ksword = 10
kaxe = 10
kdist = 10
kshield = 10
kfish = 10
kcap = 400
--pall------------
pmlvl = 0
pfist = 10
pclub = 10
psword = 10
paxe = 10
pdist = 10
pshield = 10
pfish = 10
pcap = 400
---drut i sorc----
mmlvl = 0
mfist = 10
mclub = 10
msword = 10
maxe = 10
mdist = 10
mshield = 10
mfish = 10
mcap = 400
---end skills -------------------------------
--~Tr0p5 (20% and players.xml)
---end little config-----------------------------------------
focus = 0
talk_start = 0
target = 0
following = false
attacking = false
accstatus = 0
seksik = 3
myname = ''
mypass = ''
allow_pattern = '^[a-zA-Z -]+$'
allow_pattern2 = '^[a-zA-Z0-9 -]+$'
origmsg = ''
mypasscheck = ''
mynamecheck = ''
vocation = 0
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)
origmsg = msg
msg = string.lower(msg)
if (msgcontains(msg, 'hi') and focus == 0) and getDistanceToCreature(cid) < 4 then
selfSay('Olá. Se quiser ser homem diga -man- , se quiser ser mulher diga -woman-.')
accstatus = 1
myname = ''
mypass = ''
myaccnumber = 0
focus = cid
talk_start = os.clock()
elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then
selfSay('Wait..')
elseif focus == cid then
talk_start = os.clock()
if accstatus == 1 then
if msgcontains(msg, 'man') then selfSay('What name do you want?')
seksik = 1
accstatus = 2
elseif msgcontains(msg, 'woman') then
selfSay('Que nick voce quer?')
seksik = 0
accstatus = 2
end
elseif accstatus == 66 then
if msgcontains(msg, 'paladin') then
vocation = 3
selfSay('O lutador sagrada da distancia?')
elseif msgcontains(msg, 'sorcerer') then
vocation = 1
selfSay('O poderoso bruxo sorcerer?')
elseif msgcontains(msg, 'druid') then
vocation = 2
selfSay('O guerreiro magico da natureza?')
elseif msgcontains(msg, 'knight') then
vocation = 4
selfSay('O guerreiro de armas pesadas?')
else
selfSay('Diga denovo.')
end
accstatus = 67
elseif accstatus == 2 then
myname = origmsg
mynamecheck = msg
if string.len(mynamecheck) <= maxnamelen then
if string.find(mynamecheck, allow_pattern) then
if io.open("data/players/"..myname..".xml" , "r") == nil then
selfSay('Ok. '..myname..' eh seu nome?')
accstatus = 3
else
selfSay('Este nome jah está sendo usado, por favor diga outro.')
end
else
selfSay('Caracteres ilegais em seu nick, por favor diga outro.')
end
else
selfSay('Nome muito longo, por favor diga outro.')
end
elseif msgcontains(msg, 'yes') then
if accstatus == 3 then
if vocations == 0 then
selfSay('Ok, diga-me sua senha')
vocation = 0
accstatus = 4
else
selfSay('Que vocação voce deseja ser?')
accstatus = 66
end
elseif accstatus == 5 then
if seksik == 0 then
selfSay('Otimo! Voce eh mulher chamada: '..myname..' sua senha eh: '..mypass..'. Certo ?')
else
selfSay('Otimo! Voce eh homem chamado: '..myname..' sua senha eh: '..mypass..'. Certo ?')
end
accstatus = 6
elseif accstatus == 6 then
selfSay('Ok, riga -rand- para eu escolher sua account.')
accstatus = 7
elseif accstatus == 67 then
selfSay('Diga-me sua senha.')
accstatus = 4
end
elseif msgcontains(msg, 'not') then
if accstatus == 3 then
selfSay('Escolha outro.')
accstatus = 2
elseif accstatus == 5 then
selfSay('Escolha outro.')
accstatus = 4
elseif accstatus == 6 then
selfSay('Vamos de novo, se quiser ser homem diga -man- , se quiser ser mulher diga -woman-.')
accstatus = 1
elseif accstatus == 67 then
selfSay('Diga-me sua vocacao de novo')
accstatus = 66
end
elseif accstatus == 4 then
mypass = origmsg
mypasscheck = msg
if string.len(mypasscheck) <= maxpasslen then
if string.find(mypasscheck, allow_pattern2) then
selfSay('sua senha eh: '..mypass..' Certo ?')
accstatus = 5
else
selfSay('Caracteres ilegais.')
end
else
selfSay('Muito longo.')
end
elseif msgcontains(msg, 'rand') and accstatus == 7 then
if manastart == 0 then
manastartc = 1
else
manastartc = manastart
end
if healthstart == 0 then
healthstartc = 1
else
healthstartc = healthstart
end
if vocations == 0 then
mlvl = 1
fist = 10
club = 10
sword = 10
axe = 10
dist = 10
shield = 10
fish = 10
cap = 100
else
if vocation == 1 or vocation == 2 then
mlvl = mmlvl
fist = mfist
club = mclub
sword = msword
axe = maxe
dist = mdist
shield = mshield
fish = mfish
cap = mcap
elseif vocation == 3 then
mlvl = pmlvl
fist = pfist
club = pclub
sword = psword
axe = paxe
dist = pdist
shield = pshield
fish = pfish
cap = pcap
elseif vocation == 4 then
mlvl = kmlvl
fist = kfist
club = kclub
sword = ksword
axe = kaxe
dist = kdist
shield = kshield
fish = kfish
cap = kcap
end
end
myaccnumber = math.random(100000,999999)
if io.open("data/accounts/"..myaccnumber..".xml" , "r") == nil then
selfSay('Sua acc eh: '..myaccnumber..' Diga -next- para temrinar, e lembre-se, jogue sua backpack fora quando começar')
accstatus = 8
f = assert(io.open("./data/accounts/"..myaccnumber..".xml", "w"))
f = io.open("./data/accounts/"..myaccnumber..".xml", "w")
f:write("<?xml version="1.0"?><account pass=""..mypass.."" type="1" premDays="0"><characters><character name=""..myname..""/></characters></account>")
f:close()
f = assert(io.open("./data/players/"..myname..".xml", "w"))
f = io.open("./data/players/"..myname..".xml", "w")
f:write("<?xml version="1.0"?><player name=""..myname.."" id="" ..myaccnumber.."" account=""..myaccnumber.."" sex=""..seksik.."" lookdir="2" exp=""..startexp.."" voc=""..vocation.."" level=""..startlvl.."" access="0" cap=""..cap.."" maglevel=""..mlvl.."" maxdepotitems="1000" lastlogin="0" lastlogout="0" premmium="0" promoted=""..promoted.."" soul="100" warning="0" red="0" banTicks="0" reason="" rook="0" sleeping="0" knowaddon="0" lookaddon="0"><spawn x=""..templex.."" y=""..templey.."" z=""..templez..""/><temple x=""..templex.."" y=""..templey.."" z=""..templez..""/><health now=""..healthstart.."" max=""..healthstartc.."" food="0"/><mana now=""..manastartc.."" max=""..manastartc.."" spent="0"/><look type="128" head="77" body="79" legs="78" feet="77"/><guild name="" rank="" nick="" id=""/><skills><skill skillid="0" level=""..fist.."" tries="0"/><skill skillid="1" level=""..club.."" tries="0"/><skill skillid="2" level=""..sword.."" tries="0"/><skill skillid="3" level=""..axe.."" tries="0"/><skill skillid="4" level=""..dist.."" tries="0"/><skill skillid="5" level=""..shield.."" tries="0"/><skill skillid="6" level=""..fish.."" tries="0"/></skills><ban comment="" action=""/><skull redskulltime="0" redskull="0"/><deaths/><spells/><inventory><slot slotid="3"><item id="1988"><inside><item id="2120"/><item id="2509"/><item id="2459"/><item id="5710"/></inside></item></slot><slot slotid="4"><item id=""/></slot><slot slotid="6"><item id="2398"/></slot><slot slotid="7"><item id="2649"/></slot><slot slotid="8"><item id="2643"/></slot></inventory><depots><depot depotid="1"><item id=""..depoitemid..""><inside><item id="2594"/></inside></item></depot></depots><storage/><viplist/></player>")
f:close()
r22 = math.random(10,99999)
h = io.open("./data/players/players.xml", "r")
h:read()
doop = h:read("*a")
h:close()
g = io.open("./data/players/players.xml", "w")
g:write("<players>n<player guid=""..r22..""******name=""..myname..""/>n"..doop.."n")
g:close()
else
selfSay('Error say --rand-- again')
end
elseif msgcontains(msg, 'next') and accstatus == 8 then
selfSay('Number: '..myaccnumber..' password: '..mypass..'. by ~Tr0p5')
accstatus = 0
elseif string.find(msg, '(%a*)bye(%a*)') and getDistanceToCreature(cid) < 4 then
selfSay('Até mais, ' .. creatureGetName(cid) .. '!')
focus = 0
accstatus = 0
myname = ''
mypass = ''
myaccnumber = 0
seksik = ''
talk_start = 0
end
end
end
function onCreatureChangeOutfit(creature)
end
function onThink()
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!')
focus = 0
end
end
end
Feito isto salve tudo e pronto está pronto o seu NPC acc manager mais...
Para que quando os players criarem acc e eles aparecerem no templo certinho procure no MAP EDITOR o lugar que você quer o templo e depois no scripit acima procure isso:
templex = 160
templey = 48
templez = 7
No meu o map editor tava assim o meu templo la no canto:
No meu tava assim eu não sei o de vocês pode ficar 900 456 7 depende é só ir no :
templex = 160
templey = 48
templez = 7
E mudar!
Segundo Passo: Colocando o NPC e o char que vai criar acc.
Para colocar o seu NPC em algum lugar do mapa para os chars forem criados eu recomendo ir no map editor e criar tipo um prediu com 5 andares e por 1 Acc Manager em cada andar:
A imagem acima explica como por os NPC e os char.
Os char são facil, faça uma conta (1/1) e faça 5 chars (Um em cada andar),
Após isso você vai prescizar colocar o NPC no map para isso vá na pasta data/word e procure por npc.xml (Botão direito EDITAR) aparecera um bloco de notas abra umas 5 tag e faça isso:
<npc name="Acc Manager" x="570" y="714" z="0" dir="2"/><npc name="Acc Manager" x="570" y="714" z="1" dir="2"/>
<npc name="Acc Manager" x="570" y="714" z="2" dir="2"/>
<npc name="Acc Manager" x="570" y="714" z="3" dir="2"/>
<npc name="Acc Manager" x="570" y="714" z="4" dir="2"/>
Na parte :
x="570" y="714" z="4" dir="2"/>
Será a posição em que o NPC vai aparecer quando você abrir o OT:
(As cordenadas do prédio de 5 andares pode ser vista no MAP EDITOR)
PRONTO!
Agora você não vai prescizar criar SITES para criar accs é só fazer isso ai que ja deu!
Creditos: 95% Big Smoke
5% Eu