Guest User

Banksystem von K3VIN Version 2

a guest
Jun 11th, 2013
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 13.47 KB | None | 0 0
  1. /*
  2.     Dieses Filterscript wurde von K3VIN am 11.06.2013
  3.     um 13:40 erstellt.
  4.    
  5.     Ihr könnt hiermit machen was ihr wollt, lediglich gebe ich
  6.     nur Support zu diesem Filterscript, wenn dadurch Bugs mit
  7.     eurem Gamemode enstehen müsst ihr diese selber ausbaden.
  8.    
  9.     Greetz K3VIN
  10.    
  11.     PS: Kommt nicht auf dumme gedanken es wieder als eures auszugeben.
  12.  
  13. */
  14.  
  15.  
  16.  
  17. #include <a_samp>
  18. #include <ocmd>
  19. #include <dini>
  20. #include <streamer>
  21.  
  22.  
  23. #define Rot         0xFF2D35FF
  24. #define Weiss       0xFFFFFFFF
  25. #define Orange      0xFF9C00FF
  26. #define Gruen       0x4BB400FF
  27.  
  28.  
  29. #define DIALOG_PORTEN 0
  30. #define DIALOG_BANK 1
  31. #define DIALOG_DATEN 2
  32. #define DIALOG_VERWALTEN 3
  33. #define DIALOG_EINZAHLEN 4
  34. #define DIALOG_PINABFRAGE 5
  35. #define DIALOG_AUSZAHLEN 6
  36. #define DIALOG_ATM 7
  37. #define DIALOG_UEBERWEISEN 8
  38. #define DIALOG_UEBERWEISEN1 9
  39.  
  40. #define Function%0(%1) forward%0(%1); public%0(%1)//
  41. #define String(%0,%1,%2,%3) do {new _msg[128]; format(_msg,sizeof(_msg),%2,%3); SendClientMessage(%0,%1,_msg); } while(FALSE)
  42. new bool:FALSE = false;
  43. #define KEY_N                       131072
  44. #define Geschenk                    25
  45.  
  46.  
  47. stock CreatePickupEx(modelid, spawntype, Float:x, Float:y, Float:z, text[])
  48. {
  49.     CreateDynamic3DTextLabel(text, Weiss, x, y, z, 15.0);
  50.     return CreatePickup(modelid, spawntype, x, y, z);
  51. }
  52.  
  53. main()
  54. {
  55. }
  56.  
  57. enum SpielerKonto
  58. {
  59.     Konto,
  60.     Kontostand,
  61.     Beantragt,
  62.     Pin,
  63.     Kontonummer,
  64.     Abholen,
  65.     Partner
  66. }
  67. new Bank[MAX_PLAYERS][SpielerKonto],
  68.     GlobalString[1024];
  69.  
  70. new Float:ATMS[][3] =
  71.     {
  72.         {1507.69995, -1276.09998, 14.2}
  73.     };
  74.  
  75. public OnFilterScriptInit()
  76. {
  77.     print("\n--------------------------------------");
  78.     print("Bank System by K3VIN ");
  79.     print("--------------------------------------\n");
  80.  
  81.     CreatePickupEx(1274, 1, 1501.8632,-1277.8013,14.5625,"Sparkasse\nbenutze die Taste 'N'");
  82.    
  83.     // ============== [ Atm ] ============== //
  84.     CreateDynamicObject(2942, 1507.69995, -1276.09998, 14.2, 0, 0, 0);
  85.    
  86.     for(new o=0; o<sizeof(ATMS); o++)
  87.     {
  88.         format(GlobalString,sizeof(GlobalString),"Geldautomat\nBenutze die Taste 'N'",ATMS[o][0],ATMS[o][1],ATMS[o][2]);
  89.         Create3DTextLabel(GlobalString,Weiss,ATMS[o][0],ATMS[o][1],ATMS[o][2]+1,25,0,1);
  90.     }
  91.     return 1;
  92. }
  93.  
  94. public OnFilterScriptExit()
  95. {
  96.     for(new i=0; i<MAX_PLAYERS; i++)
  97.     {
  98.         BankSpeichern(i);
  99.     }
  100.     return 1;
  101. }
  102.  
  103.  
  104.  
  105. public OnPlayerConnect(playerid)
  106. {
  107.     BankLaden(playerid);
  108.     String(playerid,Orange,"Willkommen %s, Banksystem by K3VIN",SpielerName(playerid));
  109.     return 1;
  110. }
  111.  
  112. public OnPlayerDisconnect(playerid, reason)
  113. {
  114.     BankSpeichern(playerid);
  115.     Bank[playerid][Konto] = 0;
  116.     Bank[playerid][Kontostand] = 0;
  117.     Bank[playerid][Beantragt] = 0;
  118.     Bank[playerid][Pin] = 0;
  119.     Bank[playerid][Kontonummer] = 0;
  120.     return 1;
  121. }
  122.  
  123.  
  124. // ==================================================================== //
  125.  
  126. ocmd:porten(playerid,params[])
  127. {
  128.     ShowPlayerDialog(playerid,DIALOG_PORTEN,DIALOG_STYLE_LIST,"Wohin ?","Los Santos Bank","Auswahl","Abbrechen");
  129.     return 1;
  130. }
  131.  
  132. ocmd:geld(playerid,params[]) return GivePlayerMoney(playerid,500);
  133.  
  134.  
  135. // ==================================================================== //
  136.  
  137. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  138. {
  139.     if(newkeys & KEY_N)
  140.     {
  141.         if(IsPlayerInRangeOfPoint(playerid,2.0,1501.8632,-1277.8013,14.5625))
  142.         {
  143.             ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Sparkasse","Konto erstellen\nKonto abholen\nVerwalten","Auswahl","Abbrechen");
  144.             return 1;
  145.         }
  146.         for(new o=0; o<sizeof(ATMS); o++)
  147.         {
  148.             if(IsPlayerInRangeOfPoint(playerid,3.0,ATMS[o][0],ATMS[o][1],ATMS[o][2]))
  149.             {
  150.                 if(Bank[playerid][Konto] == 0)return SendClientMessage(playerid,Orange,"Du besitzt noch kein Konto!");
  151.                 ShowPlayerDialog(playerid,DIALOG_PINABFRAGE,DIALOG_STYLE_INPUT,"Geldautomat","Um auch wirklich sicher zu gehen, dass das dein Konto ist,\ngib bitte den Konto Pin an!","Absenden","Abbrechen");
  152.                 return 1;
  153.             }
  154.         }
  155.     }
  156.     return 1;
  157. }
  158.  
  159. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  160. {
  161.     if(dialogid==DIALOG_PORTEN)
  162.     {
  163.         if(response)
  164.         {
  165.             if(listitem==0)
  166.             {
  167.                 SetPlayerPos(playerid,1521.3539,-1284.2428,14.4892);
  168.                 SetPlayerInterior(playerid,0);
  169.                 SetCameraBehindPlayer(playerid);
  170.                 SetPlayerFacingAngle(playerid,37.2782);
  171.                 SendClientMessage(playerid,Weiss,"Du hast dich erfolgreich zur Los Santos Bank geportet!");
  172.                 return 1;
  173.             }
  174.         }
  175.     }
  176.     if(dialogid==DIALOG_BANK)
  177.     {
  178.         if(response)
  179.         {
  180.             if(listitem==0)
  181.             {
  182.                 if(Bank[playerid][Konto] == 1)return SendClientMessage(playerid,Orange,"Du besitzt bereits ein Konto!");
  183.                 String(playerid,Weiss,"Vielen Danke %s, das Sie sich für die Sparkasse entschieden habe.",SpielerName(playerid));
  184.                 SetTimerEx("Kontobeantragt",10000,0,"d",playerid);
  185.                 Bank[playerid][Beantragt] = 1;
  186.                 return 1;
  187.             }
  188.             if(listitem==1)
  189.             {
  190.                 new string[512];
  191.                 if(Bank[playerid][Konto] == 1)return SendClientMessage(playerid,Orange,"Du besitzt bereits ein Konto!");
  192.                 if(Bank[playerid][Beantragt] == 0)return SendClientMessage(playerid,Orange,"Du hast kein Konto beantragt!");
  193.                 if(Bank[playerid][Abholen] == 0)return SendClientMessage(playerid,Orange,"Dein Konto ist noch nicht fertig!");
  194.                 new pin = random(8999) + 1000, nummer = random(18999) + 1000;
  195.                 Bank[playerid][Abholen] = 0;
  196.                 Bank[playerid][Beantragt] = 0;
  197.                 Bank[playerid][Konto] = 1;
  198.                 Bank[playerid][Pin] = pin;
  199.                 Bank[playerid][Kontonummer] = nummer;
  200.                 Bank[playerid][Kontostand] += Geschenk;
  201.                 format(string,sizeof(string),"{FEFEFE}Dein Konto ist fertiggestellt.\n\nDeine Kontonummer lautet: {23FF00}%i{FEFEFE}\nDein Bankpin lautet: {23FF00}%i{FEFEFE}\n\nGib auf dein Bankpin gut acht!",pin,nummer);
  202.                 ShowPlayerDialog(playerid,DIALOG_DATEN,DIALOG_STYLE_MSGBOX,"Dein Konto",string,"Fertig","");
  203.                 String(playerid,Gruen,"Als Geschenk erhälst du von uns %i$ auf dein Konto gutgeschrieben.",Geschenk);
  204.                 return 1;
  205.             }
  206.             if(listitem==2)
  207.             {
  208.                 if(Bank[playerid][Konto] == 0)return SendClientMessage(playerid,Orange,"Du besitzt kein Konto!");
  209.                 ShowPlayerDialog(playerid,DIALOG_PINABFRAGE,DIALOG_STYLE_INPUT,"Sparkasse - Konto Verwalten","Um auch wirklich sicher zu gehen, dass das dein Konto ist,\ngib bitte den Konto Pin an!","Absenden","Abbrechen");
  210.                 return 1;
  211.             }
  212.         }
  213.     }
  214.     if(dialogid==DIALOG_PINABFRAGE)
  215.     {
  216.         if(!response)return ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Sparkasse","Konto erstellen\nKonto abholen\nVerwalten","Auswahl","Abbrechen");
  217.         if(response)
  218.         {
  219.             if(strval(inputtext) != Bank[playerid][Pin])return ShowPlayerDialog(playerid,DIALOG_PINABFRAGE,DIALOG_STYLE_INPUT,"Sparkasse - Konto Verwalten","{E10000}Falscher Pin!\n\n{FEFEFE}Bitte gib den Korrekten Pin ein!","Absenden","Abbrechen");
  220.             ShowPlayerDialog(playerid,DIALOG_VERWALTEN,DIALOG_STYLE_LIST,"Konto Verwaltung","Kontostand\nEinzahlen\nAuszahlen\nÜberweisen","Auswahl","Abbrechen");
  221.             return 1;
  222.         }
  223.     }
  224.     if(dialogid==DIALOG_VERWALTEN)
  225.     {
  226.         if(!response)return ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Sparkasse","Konto erstellen\nKonto abholen\nVerwalten","Auswahl","Abbrechen");
  227.         if(response)
  228.         {
  229.             if(listitem==0)
  230.             {
  231.                 SendClientMessage(playerid,Weiss, " ");
  232.                 SendClientMessage(playerid,Orange,"| ==================== |");
  233.                 SendClientMessage(playerid,Weiss, " ");
  234.                 String(playerid,Weiss,"Aktueller Kontostand: {23FF00}%i$",Bank[playerid][Kontostand]);
  235.                 SendClientMessage(playerid,Weiss, " ");
  236.                 SendClientMessage(playerid,Orange,"| ==================== |");
  237.                 ShowPlayerDialog(playerid,DIALOG_VERWALTEN,DIALOG_STYLE_LIST,"Konto Verwaltung","Kontostand\nEinzahlen\nAuszahlen\nÜberweisen","Auswahl","Abbrechen");
  238.                 return 1;
  239.             }
  240.             if(listitem==1)
  241.             {
  242.                 ShowPlayerDialog(playerid,DIALOG_EINZAHLEN,DIALOG_STYLE_INPUT,"Geld einzahlen","Wieviel Geld möchtest du auf dein Konto einzahlen ?","Einzahlen","Abbrechen");
  243.                 return 1;
  244.             }
  245.             if(listitem==2)
  246.             {
  247.                 ShowPlayerDialog(playerid,DIALOG_AUSZAHLEN,DIALOG_STYLE_INPUT,"Geld auszahlen","Wieviel Geld möchtest du von deinem Konto auszahlen ?","Auszahlen","Abbrechen");
  248.                 return 1;
  249.             }
  250.             if(listitem==3)
  251.             {
  252.                 ShowPlayerDialog(playerid,DIALOG_UEBERWEISEN,DIALOG_STYLE_INPUT,"Überweisung","An welchen Spieler möchtest du Geld überweisen ?\nGib die Kontonummer des Spielers an!","Absenden","Abbrechen");
  253.                 return 1;
  254.             }
  255.         }
  256.     }
  257.     if(dialogid==DIALOG_UEBERWEISEN)
  258.     {
  259.         new string[128], pID = Kontonummerrichtig(strval(inputtext));
  260.         if(pID == -1)return ShowPlayerDialog(playerid,DIALOG_UEBERWEISEN,DIALOG_STYLE_INPUT,"Überweisung","{E10000}Dieses Konto Exisitiert nicht oder der Besitzer ist nicht Online!\n\n{FEFEFE}An welchen Spieler möchtest du Geld überweisen ?\nGib die Kontonummer des Spielers an!","Absenden","Abbrechen");
  261.         format(string,sizeof(string),"Wieviel Geld möchtest du an {23FF00}%s{FEFEFE} Überweisen ?",SpielerName(pID));
  262.         ShowPlayerDialog(playerid,DIALOG_UEBERWEISEN1,DIALOG_STYLE_INPUT,"Überweisung",string,"Absenden","Abbrechen");
  263.         Bank[playerid][Partner] = pID;
  264.         return 1;
  265.     }
  266.     if(dialogid==DIALOG_UEBERWEISEN1)
  267.     {
  268.         new pID = Bank[playerid][Partner];
  269.         if(strval(inputtext) > Bank[playerid][Kontostand])return ShowPlayerDialog(playerid,DIALOG_UEBERWEISEN1,DIALOG_STYLE_INPUT,"Überweisung","Bitte gib einen Betrag an den du auch besitzt","Absenden","Abbrechen");
  270.         Bank[playerid][Kontostand] -= strval(inputtext);
  271.         Bank[pID][Kontostand] += strval(inputtext);
  272.         String(playerid,Weiss,"Du hast an %s {23FF00}%i${FEFEFE} überwiesen.\nAktuelles Guthaben {23FF00}%i$",SpielerName(pID),strval(inputtext),Bank[playerid][Kontostand]);
  273.         String(pID,Weiss,"%s hat dir {23FF00}%i${FEFEFE} überwiesen.\nAktueller Kontostand {23FF00}%i$",SpielerName(playerid),strval(inputtext),Bank[pID][Kontostand]);
  274.         Bank[playerid][Partner] = -1;
  275.         return 1;
  276.     }
  277.     if(dialogid==DIALOG_EINZAHLEN)
  278.     {
  279.         if(!response)return ShowPlayerDialog(playerid,DIALOG_VERWALTEN,DIALOG_STYLE_LIST,"Konto Verwaltung","Kontostand\nEinzahlen\nAuszahlen\nÜberweisen","Auswahl","Abbrechen");
  280.         if(strval(inputtext) > GetPlayerMoney(playerid))return ShowPlayerDialog(playerid,DIALOG_EINZAHLEN,DIALOG_STYLE_INPUT,"Geld einzahlen","{E10000}So viel Geld besitzt du nicht!\n{FEFEFE}Bitte gib einen Betrag an den du auch besitzt!","Einzahlen","Abbrechen");
  281.         GivePlayerMoney(playerid,-strval(inputtext));
  282.         Bank[playerid][Kontostand] += strval(inputtext);
  283.         SendClientMessage(playerid,Weiss, " ");
  284.         String(playerid,Weiss,"Du hast {23FF00}%i${FEFEFE} in dein Konto eingezahlt!",strval(inputtext));
  285.         String(playerid,Weiss,"Aktueller Kontostand: {23FF00}%i$",Bank[playerid][Kontostand]);
  286.         return 1;
  287.     }
  288.     if(dialogid==DIALOG_AUSZAHLEN)
  289.     {
  290.         if(!response)return ShowPlayerDialog(playerid,DIALOG_VERWALTEN,DIALOG_STYLE_LIST,"Konto Verwaltung","Kontostand\nEinzahlen\nAuszahlen\bÜberweisen","Auswahl","Abbrechen");
  291.         if(strval(inputtext) > Bank[playerid][Kontostand])return ShowPlayerDialog(playerid,DIALOG_AUSZAHLEN,DIALOG_STYLE_INPUT,"Geld auszahlen","{E10000}So viel Geld besitzt du nicht!\n{FEFEFE}Bitte gib einen Betrag an den du auch besitzt!","Auszahlen","Abbrechen");
  292.         Bank[playerid][Kontostand] -= strval(inputtext);
  293.         GivePlayerMoney(playerid, GetPlayerMoney(playerid) +strval(inputtext));
  294.         SendClientMessage(playerid,Weiss," ");
  295.         String(playerid,Weiss,"Du hast dir {23FF00}%i${FEFEFE} von deinem Konto ausgezahlt!",strval(inputtext));
  296.         String(playerid,Weiss,"Aktueller Kontostand: {23FF00}%i$",Bank[playerid][Kontostand]);
  297.         return 1;
  298.     }
  299.     return 1;
  300. }
  301.  
  302. Function Kontobeantragt(playerid)
  303. {
  304.     String(playerid,Orange,"Die Sparkasse meldet, das Ihr Konto fertig ist %s",SpielerName(playerid));
  305.     Bank[playerid][Abholen] = 1;
  306.     return 1;
  307. }
  308.  
  309.  
  310. stock Kontonummerrichtig(Kontonummer1)
  311. {
  312.     for(new i=0; i<MAX_PLAYERS; i++)
  313.     {
  314.         if(IsPlayerConnected(i) && !IsPlayerNPC(i))
  315.         {
  316.             if(Bank[i][Kontonummer] == Kontonummer1 && Kontonummer1 != 0)
  317.             return i;
  318.         }
  319.     }
  320.     return -1;
  321. }
  322.  
  323. stock SpielerName(playerid)
  324. {
  325.     new Name[MAX_PLAYER_NAME];
  326.     GetPlayerName(playerid,Name,sizeof(Name));
  327.     return Name;
  328. }
  329.  
  330.  
  331. stock BankLaden(playerid)
  332. {
  333.     new Name[MAX_PLAYER_NAME],Datei[64];
  334.     GetPlayerName(playerid,Name,sizeof(Name));
  335.     format(Datei,sizeof(Datei),"/Spieler/%s.txt",Name);
  336.     Bank[playerid][Konto] = dini_Int(Datei,"Konto");
  337.     Bank[playerid][Kontostand] = dini_Int(Datei,"Kontostand");
  338.     Bank[playerid][Beantragt] = dini_Int(Datei,"Beantragt");
  339.     Bank[playerid][Pin] = dini_Int(Datei,"Pin");
  340.     Bank[playerid][Kontonummer] = dini_Int(Datei,"Kontonummer");
  341.     Bank[playerid][Abholen] = dini_Int(Datei,"Abholen");
  342.     return 1;
  343. }
  344.  
  345. stock BankSpeichern(playerid)
  346. {
  347.     new Name[MAX_PLAYER_NAME],Datei[64];
  348.     GetPlayerName(playerid,Name,sizeof(Name));
  349.     if(!fexist(Datei))
  350.     {
  351.         format(Datei,sizeof(Datei),"/Spieler/%s.txt",Name);
  352.         dini_Create(Datei);
  353.     }
  354.     dini_IntSet(Datei,"Konto",Bank[playerid][Konto]);
  355.     dini_IntSet(Datei,"Kontostand",Bank[playerid][Kontostand]);
  356.     dini_IntSet(Datei,"Beantragt",Bank[playerid][Beantragt]);
  357.     dini_IntSet(Datei,"Pin",Bank[playerid][Pin]);
  358.     dini_IntSet(Datei,"Kontonummer",Bank[playerid][Kontonummer]);
  359.     dini_IntSet(Datei,"Abholen",Bank[playerid][Abholen]);
  360.     return 1;
  361. }
  362.  
  363.  
  364.  
  365. stock IsNumeric(const string[]) {
  366.     new length=strlen(string);
  367.     if (length==0) return false;
  368.     for (new i = 0; i < length; i++) {
  369.         if (
  370.         (string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+')
  371.         || (string[i]=='-' && i!=0)
  372.         || (string[i]=='+' && i!=0)
  373.         ) return false;
  374.     }
  375.     if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
  376.     return true;
  377. }
Add Comment
Please, Sign In to add comment