Jump to content

PACI

Developer
  • Posts

    402
  • Joined

  • Days Won

    18
  • Feedback

    0%

Everything posted by PACI

  1. You are wrong, it shows quest's images properly.
  2. I edited the quest when you was editing your post, try it now.
  3. when firstlogin begin firstlogin doesn't exists, so you can use a questflag to verify if the login is the first, or at the end, you can do a change of character's state. I prefer using a questflag btw. quest truhen begin state start begin when login with pc.getqf('firstlogin') == 0 begin pc.setqf('firstlogin', 1) pc.give_item2(50187) end when 50187.use begin local item_vnum = { {11299,149,15419,13069,14209,16209,17209,12269}, {11499,1109,15419,13089,14209,16209,17209,12399}, {11699,159,13109,14209,16209,17209,12539}, {7149,11899,13129,14209,16209,17209,12679} } for i = 1, table.getn(item_vnum[pc.get_job()+1]) do pc.give_item2(item_vnum[pc.get_job()+1][i], 1) end end end end
  4. You should use this: when kill with not npc.is_pc() begin Because if you don't specify what pc is killing it would always try to get a number with the mob vnum (npc.get_race()), and as you know, players don't have vnums.
  5. You know the default color of say function, in game it returns a white text. So the same happens with say_reward and say_title, instead of returning a red / "yellow" text, it returns a white text, like a normal say.
  6. What about that color bug on say_title, say_reward functions ? I mean, 40k have this problem, I don't know if you fixed it. I don't even know if it's clientside or serverside problem but that's defined on serverside so I guess is a game problem.
  7. db_r40146 000A5015: 3B 20
  8. As ChuckNorris said, this dif is for vanilla_dbcache.The dif for db r33k is on Shogun's thread (Full Monarch System).
  9. This difference file has been created by IDA Pro vanilla_dbcache 0009DCA9: 3B 20 The problem is just a semicolon in the query, so we only need to remove it. @Vanilla, check CMonarch::TakeMoney function at Monarch.cpp on db source.
  10. M2 Download Center Download Here ( Internal ) Hi, today I was a little bored, so I've done this quest and two functions also useful, for me, and maybe for you too. So the quest is pretty simple, players can create his bank account by writing a password, choosing a security question and an answer to it. They can login with their password or if they don't remember, they can reset it, but only if they have their security question's answer. They can also change their data. If the player fails his password when logging in or the answer to security's question, 5 times, they cannot log in or reset their password for 2 hours. Firstly you have to add these functions and variable to your 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() end Next step is create a folder named bank, or if you want, the name is as you wish, but you have to write the path to that folder in bank_path. In this folder all infos about player's bank account would be saved. (Things like bank password, security question, answer to the security question, and finally the gold saved). And now the 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 end end I think the quest is a little big, but it's ok.
  11. O | x | O ------- x | x | O ------- O | - | x Fail I lost ((
  12. O | x | O ------- - | x | - ------- O | - | x
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.