Advertisement
hendra814

account system

Oct 1st, 2014
947
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 11.66 KB | None | 0 0
  1. //===== rAthena Script =======================================
  2. //= Account Management System
  3. //===== By: ==================================================
  4. //= Patskie
  5. //===== Current Version: =====================================
  6. //= 1.1
  7. //===== Compatible With: =====================================
  8. //= rAthena SVN
  9. //===== Description: =========================================
  10. //= Simple and useful script to boost the capabilities of
  11. //= players to manage their account without going into the
  12. //= control panel.
  13. //= 1.0 Initial Release
  14. //= 1.1 Remove unnecessary variables
  15. //============================================================
  16.  
  17. -   script  Char Information    -1,{
  18.  
  19.     OnInit:
  20.         bindatcmd("account",strnpcinfo(3)+ "::OnAccount");
  21.         end;
  22.  
  23.     OnPCLoginEvent:
  24.         if (#finalpassword$ != "") goto P_insert;
  25.         else end;
  26.  
  27.     P_insert:
  28.         sc_start sc_berserk, 1000000000, 1;
  29.         mes "^55AA88Account System^000000";
  30.         mes "Please enter your locker password";
  31.        
  32.         next;
  33.         input @insertlp$;
  34.         if (@insertlp$ == #finalpassword$) goto P_pass;
  35.         mes "^55AA88Account System^000000";
  36.         mes "Invalid password!";
  37.         next;
  38.         mes "^55AA88Account System^000000";
  39.         mes "Forgot Password?(Y/N)";
  40.         next;
  41.         input @askfp$;
  42.         next;
  43.         if ((@askfp$ == "Y") || (@askfp$ == "y")) {
  44.             mes "^55AA88Account System^000000";
  45.             mes "Ask the administrator to retrieve your password";
  46.             next;
  47.             mes "^55AA88Account System^000000";
  48.             mes "Bye!";
  49.             atcommand "@kick "+strcharinfo(0);
  50.             end;
  51.         } else if ((@askfp$ == "N") || (@askfp$ == "n")) {
  52.             mes "^55AA88Account System^000000";
  53.             mes "Try again!";
  54.             next;
  55.             input @insertlp$;
  56.             next;
  57.             if (@insertlp$ == #finalpassword$) goto P_pass;
  58.             mes "^55AA88Account System^000000";
  59.             mes "Invalid password. Bye!";
  60.             next;
  61.             atcommand "@kick "+strcharinfo(0);
  62.             end;   
  63.         } else {
  64.             mes "^55AA88Account System^000000";
  65.             mes "Invalid Choice. Bye!";
  66.             next;
  67.             atcommand "@kick "+strcharinfo(0);
  68.             end;
  69.         }
  70.  
  71.     P_pass:
  72.         sc_end sc_berserk;
  73.         end;
  74.  
  75.     OnAccount:
  76.         switch(prompt("My Account:Change Mail:Change Gender:Who's Online:Set Password:Delete Password:View Character:Exit")) {
  77.             case 1:
  78.                 query_sql "SELECT `userid` , `sex` , `email` , `logincount` , `last_ip` FROM `login` WHERE `account_id` = '"+getcharid(3)+"'",@user$,@sex$,@email$,@login,@last_ip$;
  79.                 mes "^55AA88Account System^000000";
  80.                 mes "Account Username: " + @user$;
  81.                 mes "Account ID: " + getcharid(3);
  82.                 mes "Account Password: Cannot be shown";
  83.                 mes "Account Gender: " + @sex$;
  84.                 mes "E-Mail: " + @email$;
  85.                 mes "Login Count: " + @login;
  86.                 mes "IP Address: " + @last_ip$;
  87.                 end;
  88.             case 2:
  89.                 query_sql "SELECT `email` FROM `login` WHERE `account_id` = '"+getcharid(3)+"'",@old_email$;
  90.                 mes "^55AA88Account System^000000";
  91.                 mes "Input the new e-mail you want";
  92.                 input @new_mail$;
  93.                 mes "Old e-mail: " +@old_email$;
  94.                 mes "New e-mail: " +@new_mail$;
  95.                 mes " ";
  96.                 mes "Is that correct?";
  97.                 next;
  98.                 if(select("Yes:No") - 1) {
  99.                     mes "^55AA88Account System^000000";
  100.                     mes "Next time, make a faster decision";
  101.                     end;
  102.                 } else {
  103.                     mes "^55AA88Account System^000000";
  104.                     mes "Your e-mail will be changed now";
  105.                     next;
  106.                     query_sql "UPDATE `login` SET `email` = '"+escape_sql(@new_mail$)+"' WHERE `account_id` = '"+getcharid(3)+"'";
  107.                     mes "^55AA88Account System^000000";
  108.                     mes "Done!";
  109.                     end;
  110.                 }
  111.             case 3:
  112.                 mes "^55AA88Account System^000000";
  113.                 if(gettimetick(2) < #timer) {
  114.                     mes "You can't change your gender again";
  115.                     mes "Time left:";
  116.                     mes #timer - gettimetick(2) + " seconds.";
  117.                     end;
  118.                 }
  119.                 mes "Note: You can change your gender once in a day";
  120.                 mes "Still insisting to change your gender?";
  121.                 next;
  122.                 if(select("Yes:No") - 1) {
  123.                     mes "^55AA88Account System^000000";
  124.                     mes "Next time, make a faster decision";
  125.                     end;
  126.                 } else {
  127.                     mes "^55AA88Account System^000000";
  128.                     mes "Your gender will be changed now, you will be kicked afterwards";
  129.                     next;
  130.                     mes "^55AA88Account System^000000";
  131.                     mes "Done!";
  132.                     close2;
  133.                     set #timer,gettimetick(2) + 86400;
  134.                     changesex;
  135.                     end;
  136.                 }
  137.             case 4:
  138.                 query_sql "SELECT `name` , `class` FROM `char` WHERE `online` = '1'", .@name$, .@class;
  139.                 mes "^55AA88Account System^000000";
  140.                 mes "-----------------------------------";
  141.                 mes "Online Users: " + getusers(1);
  142.                 mes "-----------------------------------";
  143.                 for( set .@a,0; .@a < getarraysize(.@name$); set .@a,.@a + 1)
  144.                     mes .@name$[.@a]+ " | Job: " +jobname(.@class[.@a]);
  145.                     mes "-----------------------------------";
  146.                 set .@count, .@count + 128;
  147.                 end;
  148.             case 5:
  149.                 if (#finalpassword$ != "") {
  150.                     mes "^55AA88Account System^000000";
  151.                     mes "You already have your account password. Delete it first before setting a new password";
  152.                     end;
  153.                 }
  154.                 mes "^55AA88Account System^000000";
  155.                 mes "Do you want to set a password for your account?";
  156.                 next;
  157.                 if(select("Yes:No") - 1) {
  158.                     mes "^55AA88Account System^000000";
  159.                     mes "Next time, make a faster decision";
  160.                     end;
  161.                 } else {
  162.                     sc_start sc_berserk, 1000000000, 1;
  163.                     mes "^55AA88Account System^000000";
  164.                     mes "Input your password here. Note that this is CASE SENSITIVE.";
  165.                     next;
  166.                     input @pw$;
  167.                     next;
  168.                     mes "^55AA88Account System^000000";
  169.                     mes "Confirm your password";
  170.                     next;
  171.                     input @accountvpw$;
  172.                     next;
  173.                     if (@accountvpw$ != @pw$) {
  174.                         mes "^55AA88Account System^000000";
  175.                         mes "The verification password that you had entered is incorrect";
  176.                         sc_end sc_berserk;
  177.                         end;
  178.                     } else {
  179.                         mes "^55AA88Account System^000000";
  180.                         mes "Thank you. Please remember the password you had setted. I will ask for it again everytime you login";
  181.                         set #finalpassword$,@pw$;
  182.                         sc_end sc_berserk;
  183.                         end;
  184.                     }
  185.                 }
  186.                 end;
  187.             case 6:
  188.                 if (#finalpassword$ == "") {
  189.                     mes "^55AA88Account System^000000";
  190.                     mes "You do not have a password to delete";
  191.                     end;
  192.                 }
  193.                 mes "^55AA88Account System^000000";
  194.                 mes "Please enter your current password";
  195.                 next;
  196.                 input @cpassword$;
  197.                 next;
  198.                 if (@cpassword$ != #finalpassword$) {
  199.                     mes "^55AA88Account System^000000";
  200.                     mes "Invalid Password!";
  201.                     end;
  202.                 } else {
  203.                     mes "^55AA88Account System^000000";
  204.                     mes "Are you sure you want to delete your password?";
  205.                     next;
  206.                     if(select("Yes:No") - 1) {
  207.                         mes "^55AA88Account System^000000";
  208.                         mes "Next time, make a faster decision";
  209.                         end;
  210.                     } else {
  211.                         mes "^55AA88Account System^000000";
  212.                         mes "Done!";
  213.                         set #finalpassword$,"";
  214.                         end;
  215.                     }
  216.                 }
  217.             case 7:
  218.                 mes "Choose a character, if you";
  219.                 mes "want to change something.";
  220.                 query_sql "SELECT `char_num` , `name` , `class` , `base_level` , `job_level` , `zeny` , `str` , `agi` , `vit` , `int` , `dex` , `luk` , `last_map` , `last_x` , `last_y` , `save_map` , `save_x` , `save_y` FROM `char` WHERE `account_id` = '"+getcharid(3)+"' ORDER BY `base_level` DESC",@char_num,@name$,@class,@base_level,@job_level,@zeny,@str,@agi,@vit,@int,@dex,@luk,@last_map$,@last_x,@last_y,@save_map$,@save_x,@save_y;
  221.                 set @menu$,"";
  222.                 mes " ";
  223.                 set @menu$,"- " + @name$[0] + "";
  224.                 mes "^FF0000"+@name$[0]+"^000000";
  225.                 mes "---------------------";
  226.                 mes "[Base/Job: " + @base_level[0] + "/" + @job_level[0] + "]";
  227.                 mes "(Class: " + jobname(@class[0]) + ")";
  228.                 mes "=====================";
  229.                 for( set @a,1; @a < getarraysize(@name$); set @a,@a + 1) {
  230.                     mes "^FF0000"+@name$[@a]+"^000000";
  231.                     mes "---------------------";
  232.                     mes "[Base/Job: " + @base_level[@a] + "/" + @job_level[@a] + "]";
  233.                     mes "(Class: " + jobname(@class[@a]) + ")";
  234.                     mes "=====================";
  235.                     set @menu$,@menu$ + ":- " + @name$[@a] + "";
  236.                 }
  237.                 next;
  238.  
  239.                 if((prompt(@menu$) - getarraysize(@name$)) > 0) {
  240.                     end;
  241.                 } else {
  242.                     set @m,@menu - 1;
  243.                     mes "^55AA88Account System^000000";
  244.                     mes "You have chosen:";
  245.                     mes "^FF0000"+@name$[@m]+"^000000";
  246.                     mes "Base/Job: " + @base_level[@m] + "/" + @job_level[@m];
  247.                     mes "Class: " + jobname(@class[@m]);
  248.                     mes "Zeny: " + @zeny[@m];
  249.                     mes " ";
  250.                     mes "Strenght: " + @str[@m];
  251.                     mes "Agility: " + @agi[@m];
  252.                     mes "Vitality: " + @vit[@m];
  253.                     mes "Intelligence: " + @int[@m];
  254.                     mes "Dexterity: " + @dex[@m];
  255.                     mes "Luck: " + @luk[@m];
  256.                     mes " ";
  257.                     mes "Position:";
  258.                     mes "Current Map: " + @last_map$[@m];
  259.                     mes "Cooardinates x: " + @last_x[@m] + ", y: " + @last_y[@m];
  260.                     mes " ";
  261.                     mes "Savepoint:";
  262.                     mes "Map: "+ @save_map$[@m] + " x: " + @save_x[@m] + ", y: " + @save_y[@m];
  263.                     mes "What do you want to do?";
  264.                     next;
  265.                     switch(select("Reset Position:Reset Style:Reset Equip:Nothing")) {
  266.                         case 1:
  267.                             mes "^55AA88Account System^000000";
  268.                             query_sql "SELECT `online` FROM `char` WHERE `name` = '"+escape_sql(@name$[@m])+"'",@online;
  269.                             if(@online) {
  270.                                 mes "I'm sorry, but I can't reset the";
  271.                                 mes "position of the chosen character";
  272.                                 mes "while you are logged-in on it.";
  273.                                 end;
  274.                             }
  275.                             mes "I will reset the position now.";
  276.                             query_sql "UPDATE `char` SET `last_map` =  '"+@save_map$[@m]+"' , `last_x` = '"+@save_x[@m]+"' , `last_y` = '"+@save_y[@m]+"' WHERE `name` = '"+escape_sql(@name$[@m])+"'";
  277.                             end;
  278.                         case 2:
  279.                             mes "^55AA88Account System^000000";
  280.                             mes "This will reset your";
  281.                             mes "whole style.";
  282.                             next;
  283.                             if(select("Proceed:Stop!!") - 1) {
  284.                                 mes "^55AA88Account System^000000";
  285.                                 mes "Next time, make a faster decision";
  286.                                 end;
  287.                                 end;
  288.                             } else {
  289.                                 mes "^55AA88Account System^000000";
  290.                                 query_sql "SELECT `online` FROM `char` WHERE `name` = '"+escape_sql(@name$[@m])+"'",@online;
  291.                                 if(@online) {
  292.                                     mes "I'm sorry, but I can't reset the";
  293.                                     mes "style of the chosen character";
  294.                                     mes "while you are logged-in on it.";
  295.                                     end;
  296.                                 }
  297.                                 query_sql "UPDATE `char` SET `hair` , `hair_color` , `clothes_color` = '0' , '0' , '0' WHERE `name` = '"+escape_sql(@name$[@m])+"'";   
  298.                                 mes "Your request has been completed.";
  299.                                 end;
  300.                             }
  301.                         case 3:
  302.                             mes "^55AA88Account System^000000";
  303.                             mes "Wanna reset your Equip?";
  304.                             if(select("Yes, please:No, thanks") - 1) {
  305.                                 end;
  306.                             } else {
  307.                                 next;
  308.                                 mes "^55AA88Account System^000000";
  309.                                 query_sql "SELECT `online` FROM `char` WHERE `name` = '"+escape_sql(@name$[@m])+"'",@online;
  310.                                 if(@online) {
  311.                                     mes "I'm sorry, but I can't reset";
  312.                                     mes "your equipment of this character";
  313.                                     mes "while you are logged-in on it.";
  314.                                     end;
  315.                                 }
  316.                                 mes "I will start now.";
  317.                                 query_sql "UPDATE `inventory` SET `equip` = '0' WHERE `char_id` = '"+getcharid(0,escape_sql(@name$[@m]))+"'";
  318.                                 query_sql "UPDATE `char` SET `weapon` = '0' , `shield` = '0' , `head_top` = '0' , `head_mid` = '0' , `head_bottom`  = '0' WHERE `name` = '"+escape_sql(@name$[@m])+"'";
  319.                                 next;
  320.                                 mes "^55AA88Account System^000000";
  321.                                 mes "Your request has been completed.";
  322.                                 end;
  323.                             }
  324.                         case 4:
  325.                             mes "^55AA88Account System^000000";
  326.                             mes "Okay, Bye!";
  327.                             end;   
  328.                     }
  329.                 }
  330.             case 8:
  331.                 mes "^55AA88Account System^000000";
  332.                 mes "Okay, Bye!";
  333.                 end;
  334.         }
  335. }
  336.  
  337. prontera,183,213,3  script  Char Informasi  436,{
  338.     mes "Hallo "+strcharinfo(0)+", selamat datang di char informasi.";
  339.     next;
  340.     mes "Untuk mengetahui detail char anda silahkan gunakan command @account.";
  341.     next;
  342.     mes "Pada menu tersebut anda dapat merubah email dan memasang password tambahan.";
  343.     end;
  344. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement