Jump to content

JOIS

Miembro
  • Contador contenido

    2
  • Ingreso

  • Última visita

Actividad de reputación

  1. Me Gusta
    JOIS reacted to Shogun in Como preparar FreeBSD para Metin2   
    Dado que el turorial de Serex no funciona en las versiones recientes del S.O., he decidido hacer uno nuevo. Los comandos que tenéis que escribir, están en rojo; el resto son notas. Este tutorial asume que se trata de un FreeBSD recién instalado. Es posible que no funcione correctamente en FreeBSD que ya hayan tenido un uso.
     
    En primer lugar actualizamos el S.O. para que tenga los parches de seguridad más recientes (esto no es estrictamente necesario, pero es buena idea, al igual que debéis mantener vuestro Windows actualizado)
    freebsd-update fetch install    ( ya no creo que nadie usa eso )
    (si aparece una lista de ficheros simplemente pulsad ' y después $, o bien la tecla Avanzar Página hasta que lleguemos al final y ponga "Installing updates")
    Descargaremos los ports (colección de software de FreeBSD):
    portsnap fetch extract
    Ahora instalamos MySQL y Python:
    pkg install mysql56-server
    pkg install python
    Si os pregunta algo le decis que si (y)
    Una vez haya terminado, si nuestro SO es de 64 bits, vamos a instalar las librerías de 32, en este ejemplo se trata de FreeBSD 9.3, simplemente editad el link cambiando ese número por vuestra versión si es diferente:
    cd /tmp fetch Debes iniciar sesión para ver el contenido del enlace en esta publicación. tar jxpvf lib32.txz -C   (si os aparece una serie de errores "cannot unlink..." al hacer esto no os preocupéis, significa que ya están instaladas)   Ahora, para poder usar files antiguos si lo deseamos, instalaremos el paquete de compatibilidad con FreeBSD 7:   cd /usr/ports/misc/compat7x make install clean   ( Actualizado ) Finalmente configuramos mysql para que se inicie con el arranque:   echo mysql_enable="YES" >> /etc/rc.conf   Ahora vamos a iniciar MySQL:   service mysql-server start   Y luego el cliente para comprobar que está funcionando:   mysql   Debería aparecer el prompt mysql>, podemos poner quit para volver al shell de FreeBSD.   Ahora ya podéis subir vuestros files y bases de datos, eso si, recordad hacer esto después de copiar la bd a /var/db/mysql:   mysql_upgrade   (actualiza las bases de datos procedentes de versiones antiguas de MySQL, a la actual)   y   chown -R mysql /var/db/mysql   (damos los permisos correctos)   Si tenéis alguna duda escribidla port aquí y contestare cuando pueda.   Nota: Si alguien le tira errores de libs al encender el server pueden ver esta guia    
  2. Me Gusta
    JOIS reacted to PACI in Sistema de Banco - Como diós manda   
    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.
×
×
  • Crear nuevo...