Yabancı Bir forumdan alıntıdır.Size kısa tanıtımını yapayım.
Oyuncular bir şifre yazarak, bir güvenlik sorusu seçerek ve cevabını seçerek banka hesabını oluşturabilirler.
Parolalarıyla oturum açabilirler veya hatırlamazlarsa, sıfırlayabilirler, ancak yalnızca güvenlik sorularının cevabına sahiplerse.
Ayrıca verilerini değiştirebilirler.
Oyuncu giriş yaparken şifresini 5 kez geçemezse veya güvenlik sorusuna cevap verirse, 2 saat boyunca giriş yapamaz veya şifresini sıfırlayamaz.
Öncelikle bu fonksiyonları ve değişkenleri questlib.lua dosyanıza eklemelisiniz:
Kod:
Bir sonraki adım, banka adında bir klasör oluşturmaktır veya isterseniz ad istediğiniz gibidir, ancak bu klasörün yolunu banka_yolu içinde yazmanız gerekir . Bu klasörde oyuncunun banka hesabıyla ilgili tüm bilgiler kaydedilecektir. (Banka şifresi, güvenlik sorusu, güvenlik sorusunun cevabı ve sonunda kaydedilen altın gibi şeyler).
Ve şimdi görev: (quest yabancı bir forumdan alıntı olduğu için düzenlemeniz gerek yerleri sizler için belirteceğim)
Kod:
Oyuncular bir şifre yazarak, bir güvenlik sorusu seçerek ve cevabını seçerek banka hesabını oluşturabilirler.
Parolalarıyla oturum açabilirler veya hatırlamazlarsa, sıfırlayabilirler, ancak yalnızca güvenlik sorularının cevabına sahiplerse.
Ayrıca verilerini değiştirebilirler.
Oyuncu giriş yaparken şifresini 5 kez geçemezse veya güvenlik sorusuna cevap verirse, 2 saat boyunca giriş yapamaz veya şifresini sıfırlayamaz.
Öncelikle bu fonksiyonları ve değişkenleri questlib.lua dosyanıza eklemelisiniz:
Kod:
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()
end
Bir sonraki adım, banka adında bir klasör oluşturmaktır veya isterseniz ad istediğiniz gibidir, ancak bu klasörün yolunu banka_yolu içinde yazmanız gerekir . Bu klasörde oyuncunun banka hesabıyla ilgili tüm bilgiler kaydedilecektir. (Banka şifresi, güvenlik sorusu, güvenlik sorusunun cevabı ve sonunda kaydedilen altın gibi şeyler).
Ve şimdi görev: (quest yabancı bir forumdan alıntı olduğu için düzenlemeniz gerek yerleri sizler için belirteceğim)
Kod:
quest advanced_bank begin
state start begin
when 20090.chat.'Bank' begin
local question = {'Your moms name?', 'Your fathers name', 'Your pets name', 'Other'} ==> Düzeltebilirsiniz
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:' ==> Düzeltebilirsiniz
say_reward'You have to write a password for your account[ENTER]a security question and a security answer.' ==> Düzeltebilirsiniz
say_reward'This will increase your security.[ENTER]No one can access your account unless they[ENTER]have your password.[ENTER]' ==> Düzeltebilirsiniz
say'You just need to pay 1.000.000 Gold[ENTER]to get your bank account.[ENTER]But always, remember:' ==> Düzeltebilirsiniz
say_reward'Do not use other games password.[ENTER]This would make easier to know your pw.[ENTER]And also because' ==> Düzeltebilirsiniz
say_reward'admins can see your password.[ENTER]The same is for your question and answer.[ENTER]' ==> Düzeltebilirsiniz
say'So.. you wanna continue, and get a[ENTER]bank account?' ==> Düzeltebilirsiniz
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.' ==> Düzeltebilirsiniz
return
end
say'Okay, please write your bank acc pw.' ==> Düzeltebilirsiniz
local pw = input()
if pw == '' then
say'Did you change your mind?' ==> Düzeltebilirsiniz
return
end
say'Next step is choose your security question.[ENTER]You can also write one if you want to.' ==> Düzeltebilirsiniz
local sqt = select_table(question)
if sqt == 4 then
say'Okay, please write your question:' ==> Düzeltebilirsiniz
local myquestion = input()
if myquestion == '' then
say'Did you change your mind?' ==> Düzeltebilirsiniz
return
end
question = myquestion
else
question = question[sqt]
end
say'Oh right, we are almost finishing.[ENTER]Now enter the answer to your question.' ==> Düzeltebilirsiniz
say_reward(question)
local answ = input()
if answ == nil then
say'Did you change your mind?' ==> Düzeltebilirsiniz
return
end
advanced_bank.set_pc_bank_infos(pw, question, answ, 0)
say'Great! You are now registered in our bank.[ENTER]Welcome! :)' ==> Düzeltebilirsiniz
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.' ==> Düzeltebilirsiniz
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!' ==> Düzeltebilirsiniz
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.' ==> Düzeltebilirsiniz
say'Please, write the RIGHT answer.' ==> Düzeltebilirsiniz
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.' ==> Düzeltebilirsiniz
wait()
local random = number(1000, 9999)
say('Your new password is '..tostring(random)..'.') ==> Düzeltebilirsiniz
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.' ==> Düzeltebilirsiniz
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!' ==> Düzeltebilirsiniz
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.' ==> Düzeltebilirsiniz
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?' ==> Düzeltebilirsiniz
say_reward('Currently you have '..readline(bank_path, 4)..' Gold saved.') ==> Düzeltebilirsiniz
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.') ==> Düzeltebilirsiniz
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.' ==> Düzeltebilirsiniz
local qt = tonumber(input())
if qt == nil or qt == 0 then
say'Did you change your mind?' ==> Düzeltebilirsiniz
return
end
say('So you want to receive '..qt..' Gold. Isnt it?') ==> Düzeltebilirsiniz
if select('Yes, it is.', 'Hmm, no') == 1 then advanced_bank.give_money(qt) end ==> Düzeltebilirsiniz
elseif sel == 2 then
say'How much Gold you want to save?' ==> Düzeltebilirsiniz
local whatiwant = tonumber(input())
if whatiwant ~= nil then
say('So do you really want to save '..whatiwant..' Gold?') ==> Düzeltebilirsiniz
if select('Yes, I want to', 'No, no sorry.') == 1 then ==> Düzeltebilirsiniz
if pc.get_gold() < whatiwant then
say('You dont have that Gold to save..') ==> Düzeltebilirsiniz
return
end
advanced_bank.save_money(whatiwant)
pc.change_gold(-whatiwant)
say('Done.[ENTER]Now you have more '..whatiwant..' Gold in your account.') ==> Düzeltebilirsiniz
end
end
elseif sel == 3 then
local new
say'What do you want to change?' ==> Düzeltebilirsiniz
local change = select('Password', 'Security data (Question & Answer)', 'Nothing')
if change ~= 3 then
say'Please, write your password.' ==> Düzeltebilirsiniz
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:' ==> Düzeltebilirsiniz
local newpw = input()
if newpw == '' then say'Did you change your mind?' return end ==> Düzeltebilirsiniz
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.' ==> Düzeltebilirsiniz
else
say'Okay, choose your new Security Question:'==> Düzeltebilirsiniz
local newquestion = select_table(question)
if newquestion == table.getn(question) then
say'Write the security question you want:' ==> Düzeltebilirsiniz
local newq = input()
if newq == '' then say'Did you change your mind?' return end ==> Düzeltebilirsiniz
newquestion = newq
else
newquestion = question[newquestion]
end
say'Oh right, one more step left.[ENTER]Write the answer to your question:' ==> Düzeltebilirsiniz
local newanswer = input()
if newanser == '' then say'Did you changed your mind?' return end ==> Düzeltebilirsiniz
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!' ==> Düzeltebilirsiniz
return
elseif tonumber(readline(bank_path ,4)) < value then
say'You dont have that much Gold in your bank acc.' ==> Düzeltebilirsiniz
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
end
end


