PACI Publicado 8 de Febrero del 2014 Reportar Compartir Publicado 8 de Febrero del 2014 Hola. Bueno, esta tarde me aburria, y decidi hacer un sistema de banco, no como los normales, que es depositar el dinero y ale, pero uno con más seguridad al user, sin que haya un limite de yang para guardar. Y nada que lo vengo a postear. La quest es simple, los jugadores pueden crear su cuenta bancaria escribiendo una contraseña, seleccionando una pregunta de seguridad y una respuesta a la pregunta de seguridad. Pueden hacer login a su cuenta con su contraseña, si se olvidan, la pueden recuperar, desde que sepan la respuesta a la pregunta de seguridad. Entonces será generado un numero aleatorio que servirá como contraseña hasta que la cambien otra vez. Y también, una vez echo el login, podeis cambiar vuestros datos. También he adicionado la opción de bloqueo de cuenta. O sea, si falláis la contraseña al hacer login unas 5 veces, sólo podréis volver a intentar conectaros 2 horas después, en mi caso. Y lo mismo sucede si falláis la respuesta a la pregunta de seguridad al intentar recuperar la contraseña. Primero adicionais estas funciones que hice al questlib.lua: bank_path = '/game/bank' function readline(path, x) local linetable = {} for line in io.lines(path..'/'..pc.name) do table.insert(linetable, line) end return linetable[x]end function write_in_file(path, text) if string.find(text, "%[ENTER%]") then text = string.gsub(text, "%[ENTER%]", "n") end local file = io.open(path..'/'..pc.name, 'w') file:write(text) file:close()endDebereis cambiar la variable bank_path para la ruta de la carpeta donde queréis que se guarden los datos de cada personaje. Lo que se guarda en esta carpeta es la contraseña, datos de seguridad y la cantidad de yang que han depositado. Y por fin, la quest: quest advanced_bank begin state start begin when 20090.chat.'Bank' begin local question = {'Your moms name?', 'Your fathers name', 'Your pets name', 'Other'} say_title'Bank' if pc.getqf('has_bank_acc') == 0 then say'Hello! Welcome to our City Bank.[ENTER]I guess you havent an account here.' say'Let me explain you how this works:' say_reward'You have to write a password for your account[ENTER]a security question and a security answer.' say_reward'This will increase your security.[ENTER]No one can access your account unless they[ENTER]have your password.[ENTER]' say'You just need to pay 1.000.000 Gold[ENTER]to get your bank account.[ENTER]But always, remember:' say_reward'Do not use other games password.[ENTER]This would make easier to know your pw.[ENTER]And also because' say_reward'admins can see your password.[ENTER]The same is for your question and answer.[ENTER]' say'So.. you wanna continue, and get a[ENTER]bank account?' if select('Yes, of course.', 'Nah, forget it.') == 1 then if pc.get_gold() < 1000000 then say'Sorry, you dont have enough Gold.[ENTER]Come back when you get 1.000.000 Gold.' return end say'Okay, please write your bank acc pw.' local pw = input() if pw == '' then say'Did you change your mind?' return end say'Next step is choose your security question.[ENTER]You can also write one if you want to.' local sqt = select_table(question) if sqt == 4 then say'Okay, please write your question:' local myquestion = input() if myquestion == '' then say'Did you change your mind?' return end question = myquestion else question = question[sqt] end say'Oh right, we are almost finishing.[ENTER]Now enter the answer to your question.' say_reward(question) local answ = input() if answ == nil then say'Did you change your mind?' return end advanced_bank.set_pc_bank_infos(pw, question, answ, 0) say'Great! You are now registered in our bank.[ENTER]Welcome! :)' pc.change_gold(-1000000) end else local mainmenu = select('Log in into my account','I forgot my password','Cancel') if mainmenu == 2 then if pc.getqf('tries') == 5 then say'Sorry, you have tried too many times.[ENTER]Please, try later.' pc.setqf('tries', get_time()+60*60*2) pc.setqf('is_delayed', 1) return elseif get_time() <= pc.getqf('tries') then say'Since you failed 5 times your password[ENTER]you have to wait 2 hours to try again.[ENTER]Too bad!' return end if pc.getqf('is_delayed') == 1 then pc.delqf('is_delayed') pc.delqf('tries') end say'Wow what the hell![ENTER]If you at least know your[ENTER]security answer, we can generate a new pw 4 you.' say'Please, write the RIGHT answer.' if input() ~= readline(bank_path, 3) then say'Wrong, sorry dude..' pc.setqf('tries', pc.getqf('tries')+1) else say'Okay, wait a minute.[ENTER]A number password is being generated.' wait() local random = number(1000, 9999) say('Your new password is '..tostring(random)..'.') advanced_bank.set_pc_bank_infos(random, readline(bank_path, 2), readline(bank_path, 3), readline(bank_path, 4)) end return end if pc.getqf('tries_to_login') == 5 then say'Sorry, you have tried to log in too many times.[ENTER]Please try later.' pc.setqf('tries_to_login', get_time()+60*60*2) pc.setqf('is_login_delayed', 1) return elseif get_time() <= pc.getqf('tries_to_login') then say'Since you failed 5 times your password[ENTER]you have to wait 2 hours to try again.[ENTER]Too bad!' return end if pc.getqf('is_login_delayed') == 1 then pc.delqf('is_login_delayed') pc.delqf('tries_to_login') end say'Yô dawg[ENTER]Welcome back.[ENTER]Please write your password to log in.' local login = input() say_title('Bank') if login ~= readline(bank_path,1) then say('Sorry, your password is wrong.') pc.setqf('tries_to_login', pc.getqf('tries_to_login')+1) return end say'Welcome to Clients Panel.[ENTER]What do you want to do?' say_reward('Currently you have '..readline(bank_path, 4)..' Gold saved.') local sel = select('Take Gold', 'Save Gold', 'Change data', 'Nothing') if sel ~= 4 then say_title('Bank') if sel ~= 3 then say_reward('Currently you have '..readline(bank_path,4)..' Gold saved.') end end if sel == 1 then say'You have to write how much Gold[ENTER]you want to receive.[ENTER]If you want to cancel, please write 0[ENTER]or do not write nothing.' local qt = tonumber(input()) if qt == nil or qt == 0 then say'Did you change your mind?' return end say('So you want to receive '..qt..' Gold. Isnt it?') if select('Yes, it is.', 'Hmm, no') == 1 then advanced_bank.give_money(qt) end elseif sel == 2 then say'How much Gold you want to save?' local whatiwant = tonumber(input()) if whatiwant ~= nil then say('So do you really want to save '..whatiwant..' Gold?') if select('Yes, I want to', 'No, no sorry.') == 1 then if pc.get_gold() < whatiwant then say('You dont have that Gold to save..') return end advanced_bank.save_money(whatiwant) pc.change_gold(-whatiwant) say('Done.[ENTER]Now you have more '..whatiwant..' Gold in your account.') end end elseif sel == 3 then local new say'What do you want to change?' local change = select('Password', 'Security data (Question & Answer)', 'Nothing') if change ~= 3 then say'Please, write your password.' if input() ~= readline(bank_path,1) then say'The password you entered is wrong.' return end say'Please, write the Answer to your security question:' say_reward(readline(bank_path, 2)) if input() ~= readline(bank_path,3) then say'The answer you entered is wrong.' return end if change == 1 then say'Write your new password:' local newpw = input() if newpw == '' then say'Did you change your mind?' return end advanced_bank.set_pc_bank_infos(newpw, readline(bank_path, 2), readline(bank_path, 3), readline(bank_path,4)) say'Your password has been changed.' else say'Okay, choose your new Security Question:' local newquestion = select_table(question) if newquestion == table.getn(question) then say'Write the security question you want:' local newq = input() if newq == '' then say'Did you change your mind?' return end newquestion = newq else newquestion = question[newquestion] end say'Oh right, one more step left.[ENTER]Write the answer to your question:' local newanswer = input() if newanser == '' then say'Did you changed your mind?' return end advanced_bank.set_pc_bank_infos(readline(bank_path,1), newquestion, newanswer, readline(bank_path,4)) say'Your Security data has been changed.' end end end end end function set_pc_bank_infos(pw, question, answer, money) write_in_file(bank_path, pw..'[ENTER]'..question..'[ENTER]'..answer..'[ENTER]'..money..'[ENTER]') pc.setqf('has_bank_acc', 1) end function give_money(value) if pc.get_gold() + value >= 2000000000 then say'You cant take that value. It will bug!' return elseif tonumber(readline(bank_path ,4)) < value then say'You dont have that much Gold in your bank acc.' return end pc.change_gold(value) advanced_bank.save_money(tonumber(readline(bank_path,4))-value) end function save_money(value) write_in_file(bank_path, readline(bank_path, 1)..'[ENTER]'..readline(bank_path, 2)..'[ENTER]'..readline(bank_path, 3)..'[ENTER]'..value) end endendSaludos. MakaveliYT™, WeedCalifa, Anthony's y 5 mas reacciono a esto 8 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
ArkaNo96 Publicado 8 de Febrero del 2014 Reportar Compartir Publicado 8 de Febrero del 2014 LoL muy buena Paci te sales te dejo mis gracias =) PACI reacciono a esto 1 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Miguelito Publicado 8 de Febrero del 2014 Reportar Compartir Publicado 8 de Febrero del 2014 Muy buen aporte, mas bien aportaso Se Agradece ! PACI reacciono a esto 1 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Jeo Publicado 8 de Febrero del 2014 Reportar Compartir Publicado 8 de Febrero del 2014 Muy Bueno! Gracias PACI reacciono a esto 1 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Jfirewall Publicado 8 de Febrero del 2014 Reportar Compartir Publicado 8 de Febrero del 2014 Pues es bueno pero seria mejor que le agregaras para que ya dejemos de utilizar el chat y solo un diendole un boton del teclado aparesca asi se ahorra mucho tiempo igual forma esta buena pd: la que digo yo creo que es publica a mi me la pasaron pero no me dijieron si era publica xdd Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
pepineitor Publicado 8 de Febrero del 2014 Reportar Compartir Publicado 8 de Febrero del 2014 Tiene algunos errores de funcionalidad pero esta muy buena if pc.getqf('tries') == 5 then say'Sorry, you have tried too many times.[ENTER]Please, try later.' pc.setqf('tries', get_time()+60*60*2) pc.setqf('is_delayed', 1) return if pc.getqf('tries_to_login') == 5 then say'Sorry, you have tried to log in too many times.[ENTER]Please try later.' pc.setqf('tries_to_login', get_time()+60*60*2) pc.setqf('is_login_delayed', 1) returntries_to_login y tries les estás asignando un tiempo(ej: 97412497412459) nunca podran recuperar pass o la función que tengan si se equibocan. Así por encima no he mirado mucho, pero esta buena PACI reacciono a esto 1 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
PACI Publicado 8 de Febrero del 2014 Author Reportar Compartir Publicado 8 de Febrero del 2014 Si que podrán, ya que el is_delayed sirve para eso, si te fijas bien: elseif get_time() <= pc.getqf('tries') then say'Since you failed 5 times your password[ENTER]you have to wait 2 hours to try again.[ENTER]Too bad!' return end if pc.getqf('is_delayed') == 1 then pc.delqf('is_delayed') pc.delqf('tries') endSi get_time() no es <= tries y el is_delayed es 1 entonces borra los qf is_delayed y tries, de este modo podrán volver a intentarlo y el contaje se borrará, como es obvio. De todos modos, gracias por tu comentário y el de los demás Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
pepineitor Publicado 8 de Febrero del 2014 Reportar Compartir Publicado 8 de Febrero del 2014 Si que podrán, ya que el is_delayed sirve para eso, si te fijas bien: elseif get_time() <= pc.getqf('tries') then say'Since you failed 5 times your password[ENTER]you have to wait 2 hours to try again.[ENTER]Too bad!' return end if pc.getqf('is_delayed') == 1 then pc.delqf('is_delayed') pc.delqf('tries') endSi get_time() no es <= tries y el is_delayed es 1 entonces borra el qf is_delayed y tries, de este modo podrán volver a intentarlo y el contaje se borrará, como es obvio.De todos modos, gracias por tu comentário y el de los demás Bueno tampoco me había fijado en eso x), pensaba que estaba esa condición superior a la anterior. PACI reacciono a esto 1 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
EzekielitohMercury Publicado 8 de Febrero del 2014 Reportar Compartir Publicado 8 de Febrero del 2014 MUY BUENA! PERO HAY QUE AGREGAR FUNCIONES AL QUEST_FUNCTIONS? PACI reacciono a esto 1 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
PACI Publicado 8 de Febrero del 2014 Author Reportar Compartir Publicado 8 de Febrero del 2014 MUY BUENA! PERO HAY QUE AGREGAR FUNCIONES AL QUEST_FUNCTIONS? Sí, claro. write_in_file readline Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
EzekielitohMercury Publicado 8 de Febrero del 2014 Reportar Compartir Publicado 8 de Febrero del 2014 Las agregue pero no me pasa de la parte donde hay que poner el nombre de mascota, madre , etc etc. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
PACI Publicado 8 de Febrero del 2014 Author Reportar Compartir Publicado 8 de Febrero del 2014 Las agregue pero no me pasa de la parte donde hay que poner el nombre de mascota, madre , etc etc. Es raro, la probé antes de postearla. Has editado la variable bank_path ? Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
ร¡๓vąℓ Publicado 8 de Febrero del 2014 Reportar Compartir Publicado 8 de Febrero del 2014 espetacular! PACI reacciono a esto 1 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
EzekielitohMercury Publicado 16 de Febrero del 2014 Reportar Compartir Publicado 16 de Febrero del 2014 Es raro, la probé antes de postearla.Has editado la variable bank_path ? Como la edito? Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
PACI Publicado 16 de Febrero del 2014 Author Reportar Compartir Publicado 16 de Febrero del 2014 Pero has leído el tema desde el inicio hasta al final? Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
EzekielitohMercury Publicado 2 de Marzo del 2014 Reportar Compartir Publicado 2 de Marzo del 2014 Pero has leído el tema desde el inicio hasta al final? Lo lei todo pero no entendi que ruta tengo q poenr xD :c Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Jfirewall Publicado 3 de Marzo del 2014 Reportar Compartir Publicado 3 de Marzo del 2014 funcion bank_path = '/game/bank'lo dice claramente cambia las rutas y ya Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Zoltrix Publicado 3 de Marzo del 2014 Reportar Compartir Publicado 3 de Marzo del 2014 Gracias por compartir, intentare arreglarla ya que veo por aquí que tiene algunas fallas y derecha a mi servidor Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
PACI Publicado 3 de Marzo del 2014 Author Reportar Compartir Publicado 3 de Marzo del 2014 Me gustaria saber que errores tiene, ya que la probé antes de traerla, puede que se me alla escapado algo, o no. Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Zoltrix Publicado 4 de Marzo del 2014 Reportar Compartir Publicado 4 de Marzo del 2014 Me gustaria saber que errores tiene, ya que la probé antes de traerla, puede que se me alla escapado algo, o no. Gracias por compartir, intentare arreglarla ya que veo por aquí "QUE DICEN" que tiene algunas fallas y derecha a mi servidor olvide mencionar ese... "dicen" xD Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Jfirewall Publicado 5 de Marzo del 2014 Reportar Compartir Publicado 5 de Marzo del 2014 si sirve de maravilla lo unico es saber configurar las funciones para el banco sino no guardara las cuentas de los usuarios Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Tiico™ Publicado 9 de Marzo del 2014 Reportar Compartir Publicado 9 de Marzo del 2014 Como has crecido paci PACI reacciono a esto 1 Citar Enlace para comentar Compartir en otros sitios Mas opciones de compartir...
Mensajes recomendados
Unirse a la conversación
Puedes publicar ahora y registrarte más tarde. Si tienes una cuenta, regístrate para publicar con su cuenta.