ZiPoNz

LRZ System - Version 2 - English

Apr 17th, 2012
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 17.83 KB | None | 0 0
  1. //Version 2, by ZiPoNz - LRZ System - ENG.
  2.  
  3. #include "a_samp"
  4. #include "dini"
  5. #include "dutils"
  6.  
  7. //V-1
  8. #define Register 500
  9. #define Login 501
  10. #define MaxTimesInvalidPass 3
  11. #define Spawn_Money 800
  12. //V-2
  13. #define DNick 502
  14. #define DBank 503
  15. #define DDeposit 504
  16. #define DWithdraw 505
  17. #define DTransfer 506
  18. #define DTName 507
  19.  
  20. new TransferName[30][MAX_PLAYERS];
  21.  
  22. enum MyInfo
  23. {
  24.     Kills,
  25.     Deaths,
  26.     Bank,
  27.  
  28.     bool:Logged,
  29.     InvalidPassword
  30. }
  31. new Player[MAX_PLAYERS][MyInfo];
  32.  
  33. public OnPlayerConnect(playerid)
  34. {
  35.     format(TransferName[playerid], 30, "%s", ("None"));
  36.     Player[playerid][Kills] = 0;
  37.     Player[playerid][Deaths] = 0;
  38.     Player[playerid][Bank] = 0;
  39.     Player[playerid][InvalidPassword] = 0;
  40.     Player[playerid][Logged] = false;
  41.     return true;
  42. }
  43. public OnPlayerRequestClass(playerid,classid)
  44. {
  45.     new string[135];
  46.     if(!Player[playerid][Logged])
  47.     {
  48.         if(!dini_Exists(CheckFile(playerid)))
  49.         {
  50.             format(string, 135, "Hello %s, welcome!\n\rYour'e not registered.\n\rPlease write your new password.\n\rThe login-register system created by ZiPoNz.", CheckName(playerid));
  51.             ShowPlayerDialog(playerid, Register, DIALOG_STYLE_INPUT, "Welcome to the server!", string, "Register", "");
  52.         }
  53.         else
  54.         {
  55.             if(!strcmp(dini_Get(CheckFile(playerid), "IP"), CheckIP(playerid), true))
  56.             {
  57.                 Player[playerid][Kills] = dini_Int(CheckFile(playerid), "Kills");
  58.                 Player[playerid][Deaths] = dini_Int(CheckFile(playerid), "Deaths");
  59.                 Player[playerid][Bank] = dini_Int(CheckFile(playerid), "Bank");
  60.                 Player[playerid][Logged] = true;
  61.                 format(string, 135, "%s is logged-in to the server.", CheckName(playerid));
  62.                 return SendClientMessageToAll(0xFFFFFF00, string);
  63.             }
  64.             format(string, 135, "Hello %s, welcome back!\n\rYour'e already registered.\n\rPlease write your current password.\n\rThe login-register system created by ZiPoNz.", CheckName(playerid));
  65.             ShowPlayerDialog(playerid, Login, DIALOG_STYLE_PASSWORD, "Welcome to the server!", string, "Login", "");
  66.         }
  67.     }
  68.     return true;
  69. }
  70.  
  71. public OnPlayerRequestSpawn(playerid)
  72. {
  73.     new string[135];
  74.     if(!Player[playerid][Logged])
  75.     {
  76.         if(!dini_Exists(CheckFile(playerid)))
  77.         {
  78.             format(string, 135, "Hello %s, welcome!\n\rYour'e not registered.\n\rPlease write your new password.\n\rThe login-register system created by ZiPoNz.", CheckName(playerid));
  79.             ShowPlayerDialog(playerid, Register, DIALOG_STYLE_INPUT, "Welcome to the server!", string, "Register", "");
  80.         }
  81.         else
  82.         {
  83.             if(!strcmp(dini_Get(CheckFile(playerid), "IP"), CheckIP(playerid), true))
  84.             {
  85.                 Player[playerid][Kills] = dini_Int(CheckFile(playerid), "Kills");
  86.                 Player[playerid][Deaths] = dini_Int(CheckFile(playerid), "Deaths");
  87.                 Player[playerid][Bank] = dini_Int(CheckFile(playerid), "Bank");
  88.                 Player[playerid][Logged] = true;
  89.                 format(string, 135, "%s is logged-in to the server.", CheckName(playerid));
  90.                 return SendClientMessageToAll(0xFFFFFF00, string);
  91.             }
  92.             format(string, 135, "Hello %s, welcome back!\n\rYour'e already registered.\n\rPlease write your current password.\n\rThe login-register system created by ZiPoNz.", CheckName(playerid));
  93.             ShowPlayerDialog(playerid, Login, DIALOG_STYLE_PASSWORD, "Welcome to the server!", string, "Login", "");
  94.         }
  95.         return false;
  96.     }
  97.     return true;
  98. }
  99.  
  100. public OnPlayerDisconnect(playerid, reason)
  101. {
  102.     dini_IntSet(CheckFile(playerid), "Kills", Player[playerid][Kills]);
  103.     dini_IntSet(CheckFile(playerid), "Deaths", Player[playerid][Deaths]);
  104.     dini_IntSet(CheckFile(playerid), "Bank", Player[playerid][Bank]);
  105.     return true;
  106. }
  107.  
  108. public OnPlayerSpawn(playerid)
  109. {
  110.     ResetPlayerMoney(playerid);
  111.     GivePlayerMoney(playerid, Spawn_Money);
  112.     return true;
  113. }
  114.  
  115. public OnPlayerDeath(playerid, killerid, reason)
  116. {
  117.     SendDeathMessage(killerid, playerid, reason);
  118.     if(killerid != INVALID_PLAYER_ID)
  119.     {
  120.         Player[killerid][Kills]++;
  121.         Player[playerid][Deaths]++;
  122.  
  123.         GivePlayerMoney(killerid, GetPlayerMoney(playerid));
  124.     }
  125.     return true;
  126. }
  127.  
  128. public OnPlayerCommandText(playerid, cmdtext[])
  129. {
  130.     new cmd[256], idx;
  131.     cmd = strtok(cmdtext, idx);
  132.     if(!strcmp(cmd, "/changepassword", true))
  133.     {
  134.         cmd = strtok(cmdtext, idx);
  135.  
  136.         if(!Player[playerid][Logged]) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You aren't logged in.");
  137.         if(strlen(cmd) < 5) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] Please write above 5 letters.");
  138.  
  139.         dini_Set(CheckFile(playerid), "Password", cmd);
  140.         return SendClientMessage(playerid, 0xFFFFFF00, "[System] You changed your password!");
  141.     }
  142.     if(!strcmp(cmd, "/changename", true))
  143.     {
  144.         if(!Player[playerid][Logged]) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You aren't logged in.");
  145.         return ShowPlayerDialog(playerid, DNick, DIALOG_STYLE_INPUT, "Change my name.", "Change your name by typing the new name into the box.", "Change", "Cancel");
  146.     }
  147.     if(!strcmp(cmdtext, "/stats", true))
  148.     {
  149.         new ip[17], string[128];
  150.         GetPlayerIp(playerid, ip, 17);
  151.         format(string, 128, "Name: %s.\n\rKills: %d.\n\rDeaths: %d.\n\rBank: %d.\n\rMy IP: %s.", CheckName(playerid), Player[playerid][Kills], Player[playerid][Deaths], Player[playerid][Bank], ip);
  152.         return ShowPlayerDialog(playerid, 504, DIALOG_STYLE_MSGBOX, "My stats.", string, "Okay", "");
  153.     }
  154.     if(!strcmp(cmdtext, "/nstats", true))
  155.     {
  156.         new ip[17], string[128];
  157.         GetPlayerIp(playerid, ip, 17);
  158.         format(string, 128, "Name: %s - Kills: %d - Deaths: %d - Bank: %d - My IP: %s", CheckName(playerid), Player[playerid][Kills], Player[playerid][Deaths], Player[playerid][Bank], ip);
  159.         return SendClientMessage(playerid, 0xFFFFFF00, string);
  160.     }
  161.     if(!strcmp(cmd, "/bank", true))
  162.     {
  163.         new string[128];
  164.         format(string, 128, "My amount in the bank: %d dollars.\n\r\n\rDeposit\n\rDeposit all\n\rWithdraw\n\rWithdraw all\n\rTeleport\n\rTransfer", Player[playerid][Bank]);
  165.         return ShowPlayerDialog(playerid, DBank, DIALOG_STYLE_LIST, "Bank options list.", string, "Select", "Cancel");
  166.     }
  167.     if(!strcmp(cmd, "/nbank", true))
  168.     {
  169.         new string[128];
  170.         cmd = strtok(cmdtext, idx);
  171.         if(!strlen(cmd)) return SendClientMessage(playerid, 0xFFFFFF00, "[Command] /nbank [withdraw, deposit, balance]");
  172.         if(!strcmp(cmd, "withdraw", true))
  173.         {
  174.             if(!IsPlayerInRangeOfPoint(playerid, 50, -27.312299,-29.277599,1003.557250)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You have to be in the bank, /bank teleport.");
  175.             cmd = strtok(cmdtext, idx);
  176.             if(Player[playerid][Bank] < strval(cmd)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You don't have this amount.");
  177.             if(!CheckNumber(cmd) || !strval(cmd)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] Write numbers above the number 0.");
  178.             GivePlayerMoney(playerid, strval(cmd));
  179.             Player[playerid][Bank] -= strval(cmd);
  180.             format(string, 128, "[System] You took from your bank account: %d dollars, now you have in your bank: %d dollars.", strval(cmd), Player[playerid][Bank]);
  181.             return SendClientMessage(playerid, 0xFFFFFF00, string);
  182.         }
  183.         if(!strcmp(cmd, "deposit", true))
  184.         {
  185.             if(!IsPlayerInRangeOfPoint(playerid, 50, -27.312299,-29.277599,1003.557250)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You have to be in the bank, /bank teleport.");
  186.             cmd = strtok(cmdtext, idx);
  187.             if(GetPlayerMoney(playerid) < strval(cmd)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You don't have this amount.");
  188.             if(!CheckNumber(cmd) || !strval(cmd)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] Write numbers above the number 0.");
  189.             GivePlayerMoney(playerid, -strval(cmd));
  190.             Player[playerid][Bank] += strval(cmd);
  191.             format(string, 128, "[System] You set in your bank account: %d dollars, now you have in your bank: %d dollars.", strval(cmd), Player[playerid][Bank]);
  192.             return SendClientMessage(playerid, 0xFFFFFF00, string);
  193.         }
  194.         if(!strcmp(cmd, "status", true))
  195.         {
  196.             if(!IsPlayerInRangeOfPoint(playerid, 50, -27.312299,-29.277599,1003.557250)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You have to be in the bank, /bank teleport.");
  197.             format(string, 128, "[System] You have in your bank: %d dollars.", Player[playerid][Bank]);
  198.             return SendClientMessage(playerid, 0xFFFFFF00, string);
  199.         }
  200.         if(!strcmp(cmd, "teleport", true))
  201.         {
  202.             SetPlayerPos(playerid, -27.312299,-29.277599,1003.557250);
  203.             SetPlayerInterior(playerid, 4);
  204.             return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You teleported to the bank!");
  205.         }
  206.         return true;
  207.     }
  208.     return false;
  209. }
  210.  
  211. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  212. {
  213.     switch(dialogid)
  214.     {
  215.         case Register:
  216.         {
  217.             new string[128];
  218.             if(strlen(inputtext) < 5) return ShowPlayerDialog(playerid, Register, DIALOG_STYLE_INPUT, "Welcome to the server!", "Hello, welcome!\n\rYour'e not registered.\n\rPlease write your new password.\n\nPlease write more letters.", "Register", "");
  219.             dini_Create(CheckFile(playerid));
  220.             dini_Set(CheckFile(playerid), "Password", inputtext);
  221.             dini_Set(CheckFile(playerid), "IP", CheckIP(playerid));
  222.             dini_IntSet(CheckFile(playerid), "Kills", 0);
  223.             dini_IntSet(CheckFile(playerid), "Deaths", 0);
  224.             dini_IntSet(CheckFile(playerid), "Bank", 0);
  225.  
  226.             Player[playerid][Kills] = dini_Int(CheckFile(playerid), "Kills");
  227.             Player[playerid][Deaths] = dini_Int(CheckFile(playerid), "Deaths");
  228.             Player[playerid][Bank] = dini_Int(CheckFile(playerid), "Bank");
  229.             Player[playerid][Logged] = true;
  230.             format(string, 128, "%s is registered in the the server.", CheckName(playerid));
  231.             SendClientMessageToAll(0xFFFFFF00, string);
  232.         }
  233.         case Login:
  234.         {
  235.             new string[128];
  236.             if(strcmp(inputtext, dini_Get(CheckFile(playerid), "Password"), false) != 0)
  237.             {
  238.                 if(Player[playerid][InvalidPassword] == MaxTimesInvalidPass)
  239.                 {
  240.                     SendClientMessage(playerid, 0xFFFFFF00, "You kicked from the server, reason: Invalid password (3 times).");
  241.                     Kick(playerid);
  242.                 }
  243.                 format(string, 128, "Hello %s, welcome back!\n\rYour'e already registered.\n\rPlease write your current password.\n\nYou typed invalid password: %d/3 times.", CheckName(playerid),Player[playerid][InvalidPassword]);
  244.                 ShowPlayerDialog(playerid, Login, DIALOG_STYLE_PASSWORD, "Welcome to the server!", string, "Login", "");
  245.  
  246.                 Player[playerid][InvalidPassword]++;
  247.                 return true;
  248.             }
  249.             dini_Set(CheckFile(playerid), "Password", inputtext);
  250.             dini_Set(CheckFile(playerid), "IP", CheckIP(playerid));
  251.             Player[playerid][Kills] = dini_Int(CheckFile(playerid), "Kills");
  252.             Player[playerid][Deaths] = dini_Int(CheckFile(playerid), "Deaths");
  253.             Player[playerid][Bank] = dini_Int(CheckFile(playerid), "Bank");
  254.             Player[playerid][Logged] = true;
  255.             format(string, 128, "%s is logged-in to the server.", CheckName(playerid));
  256.             SendClientMessageToAll(0xFFFFFF00, string);
  257.         }
  258.         case DNick:
  259.         {
  260.             new string[128], newname[30];
  261.             format(newname, 30, "/Users/%s.ini", inputtext);
  262.             frenames(CheckFile(playerid), newname);
  263.             SetPlayerName(playerid, inputtext);
  264.             format(string, 128, "You changed your name to %s!\n\rRemember to change your name at the next login.", CheckName(playerid));
  265.             ShowPlayerDialog(playerid, 999, DIALOG_STYLE_MSGBOX, "Changed name successfuly.", string, "Okay", "");
  266.         }
  267.         case DBank:
  268.         {
  269.             new string[128];
  270.             if(!response) return true;
  271.             switch(listitem)
  272.             {
  273.                 case 0, 1: return true;
  274.                 case 2:
  275.                 {
  276.                     if(!IsPlayerInRangeOfPoint(playerid, 50, -27.312299,-29.277599,1003.557250)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You have to be in the bank.");
  277.                     ShowPlayerDialog(playerid, DDeposit, DIALOG_STYLE_INPUT, "Deposit into your bank account", "Please write the amount that you want to deposit.", "Okay", "Cancel");
  278.                 }
  279.                 case 3:
  280.                 {
  281.                     if(!IsPlayerInRangeOfPoint(playerid, 50, -27.312299,-29.277599,1003.557250)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You have to be in the bank.");
  282.                     if(GetPlayerMoney(playerid) < strval(inputtext)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You don't have this amount.");
  283.                     Player[playerid][Bank] += GetPlayerMoney(playerid);
  284.                     GivePlayerMoney(playerid, -GetPlayerMoney(playerid));
  285.                     format(string, 128, "[System] You deposit all money in your bank account, now you have in your bank: %d dollars.", Player[playerid][Bank]);
  286.                     SendClientMessage(playerid, 0xFFFFFF00, string);
  287.                 }
  288.                 case 4:
  289.                 {
  290.                     if(!IsPlayerInRangeOfPoint(playerid, 50, -27.312299,-29.277599,1003.557250)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You have to be in the bank.");
  291.                     ShowPlayerDialog(playerid, DWithdraw, DIALOG_STYLE_INPUT, "Withdraw from your bank account", "Please write the amount that you want to withdraw.", "Okay", "Cancel");
  292.                 }
  293.                 case 5:
  294.                 {
  295.                     if(!IsPlayerInRangeOfPoint(playerid, 50, -27.312299,-29.277599,1003.557250)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You have to be in the bank.");
  296.                     if(!Player[playerid][Bank]) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You don't have money in your bank account.");
  297.                     GivePlayerMoney(playerid, Player[playerid][Bank]);
  298.                     format(string, 128, "[System] You withdrawed all money from your bank account, you withdrawed %d dollars.", Player[playerid][Bank]);
  299.                     SendClientMessage(playerid, 0xFFFFFF00, string);
  300.                     Player[playerid][Bank] = 0;
  301.                 }
  302.                 case 6:
  303.                 {
  304.                     SetPlayerPos(playerid, -27.312299,-29.277599,1003.557250);
  305.                     SetPlayerInterior(playerid, 4);
  306.                     SendClientMessage(playerid, 0xFFFFFF00, "[Error] You teleported to the bank!");
  307.                 }
  308.                 case 7:
  309.                 {
  310.                     if(!IsPlayerInRangeOfPoint(playerid, 50, -27.312299,-29.277599,1003.557250)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You have to be in the bank.");
  311.                     ShowPlayerDialog(playerid, DTName, DIALOG_STYLE_INPUT, "Transfering money.", "Please write the name of the character to transfer money.\n\rExample: ZiPoNz.", "Next", "Cancel");
  312.                 }
  313.             }
  314.         }
  315.         case DTransfer:
  316.         {
  317.             new string[128], exname[30], found;
  318.             format(exname, 30, "/Users/%s.ini", TransferName[playerid]);
  319.             if(!dini_Exists(exname)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] Name isn't exists in the server!");
  320.             if(GetPlayerMoney(playerid) < strval(inputtext)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You don't have this amount.");
  321.             for(new i = 0; i < MAX_PLAYERS; i++)
  322.             {
  323.                 if(!strcmp(CheckName(i), TransferName[playerid], true))
  324.                 {
  325.                     found++;
  326.                     Player[i][Bank] += strval(inputtext);
  327.                     GivePlayerMoney(playerid, -strval(inputtext));
  328.                     format(string, 128, "[System] The player %s transfered to your bank account %d dollars.", CheckName(playerid), strval(inputtext));
  329.                     SendClientMessage(i, 0xFFFFFF00, string);
  330.                     format(string, 128, "[System] You transfered to the player %s amount of %d dollars to his bank account.", CheckName(i), strval(inputtext));
  331.                     return SendClientMessage(playerid, 0xFFFFFF00, string);
  332.                 }
  333.             }
  334.             if(!found) return dini_IntSet(TransferName[playerid], "Bank", dini_Int(TransferName[playerid], "Bank")+strval(inputtext));
  335.  
  336.         }
  337.         case DTName:
  338.         {
  339.             if(!response) return ShowPlayerDialog(playerid, DTName, DIALOG_STYLE_INPUT, "Transfering money.", "Please write the name of the character to transfer money.\n\rExample: ZiPoNz.", "Next", "Cancel");
  340.             format(TransferName[playerid], 30, "%s", inputtext);
  341.             print(TransferName[playerid]);
  342.             ShowPlayerDialog(playerid, DTransfer, DIALOG_STYLE_INPUT, "Transfering money.", "Please write the amount of the money to transfer.\n\rExample: 30000.", "Transfer", "Back");
  343.         }
  344.         case DDeposit:
  345.         {
  346.             new string[128];
  347.             if(GetPlayerMoney(playerid) < strval(inputtext)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You don't have this amount.");
  348.             if(!CheckNumber(inputtext) || !strval(inputtext)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] Write numbers above the number 0.");
  349.             GivePlayerMoney(playerid, -strval(inputtext));
  350.             Player[playerid][Bank] += strval(inputtext);
  351.             format(string, 128, "[System] You set in your bank account: %d dollars, now you have in your bank: %d dollars.", strval(inputtext), Player[playerid][Bank]);
  352.             SendClientMessage(playerid, 0xFFFFFF00, string);
  353.         }
  354.         case DWithdraw:
  355.         {
  356.             new string[128];
  357.             if(Player[playerid][Bank] < strval(inputtext)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] You don't have this amount.");
  358.             if(!CheckNumber(inputtext) || !strval(inputtext)) return SendClientMessage(playerid, 0xFFFFFF00, "[Error] Write numbers above the number 0.");
  359.             GivePlayerMoney(playerid, strval(inputtext));
  360.             Player[playerid][Bank] -= strval(inputtext);
  361.             format(string, 128, "[System] You took from your bank account: %d dollars, now you have in your bank: %d dollars.", strval(inputtext), Player[playerid][Bank]);
  362.             SendClientMessage(playerid, 0xFFFFFF00, string);
  363.         }
  364.     }
  365.     return true;
  366. }
  367.  
  368. stock CheckName(playerid)
  369. {
  370.     new name[24];
  371.     GetPlayerName(playerid, name, 24);
  372.     return name;
  373. }
  374. stock CheckIP(playerid)
  375. {
  376.     new MyIP[17];
  377.     GetPlayerIp(playerid, MyIP, 17);
  378.     return MyIP;
  379. }
  380. stock CheckFile(playerid)
  381. {
  382.     new file[64];
  383.     format(file, 64, "/Users/%s.ini", CheckName(playerid));
  384.     return file;
  385. }
  386. CheckNumber(const string[])
  387. {
  388.     for (new i = 0, j = strlen(string); i < j; i++) if (string[i] > '9' || string[i] < '0') return false;
  389.     return true;
  390. }
  391. forward frenames(old[], newf[]);
  392. public frenames(old[], newf[])
  393. {
  394.     if(!fexist(old)) return printf("File \"%s\" doesn't exist!", newf),0;
  395.     if(fexist(newf)) return printf("File \"%s\" already exist!", newf),0;
  396.     new File:orig = fopen(old, io_read);
  397.     new File:newf2 = fopen(newf, io_write);
  398.     new string[256];
  399.     while(fread(orig, string, sizeof(string))) fwrite(newf2, string);
  400.     fclose(orig); fclose(newf2);
  401.     fremove(old);
  402.     return 1;
  403. }
Advertisement
Add Comment
Please, Sign In to add comment