Advertisement
Guest User

ATM System by EQU - V2

a guest
Sep 28th, 2014
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 10.76 KB | None | 0 0
  1. ///////////////////////////////////////////////////////////////////
  2. //                  ATM SYSTEM BY EQU                            //
  3. ///////////////////////////////////////////////////////////////////
  4. //                       !!Wichtig!!                             //
  5. // Passt die Abfragen wie Geld, Kontostand etc.. euer Script an!!//
  6. ///////////////////////////////////////////////////////////////////
  7.  
  8.  
  9. #include <a_samp>
  10. #include <ocmd>
  11. #include <dini>
  12. #include <sscanf2>
  13.  
  14. // FARBEN
  15. #define         HBLAU               "{00E0E6}"
  16. #define         HWEIS               "{FFFFFF}"
  17. #define         HGRUN               "{5FD84A}"
  18. #define         HORANGE             "{E4AD21}"
  19.  
  20. #define         BLAU                0x0087FFFF
  21. #define         WEIS                0xC8C8C8FF
  22. #define         ORANGE              0xFFAA00FF
  23. #define         HELLROT             0xD83A37CA
  24. #define         DUNKELROT           0x870000FF
  25.  
  26. enum SpielerDaten
  27. {
  28.     pAdminlevel,
  29.     pKontostand,
  30.     pGeld,
  31.     pATMWahl,
  32. }
  33.  
  34. new PlayerDaten[MAX_PLAYERS][SpielerDaten];
  35.  
  36. enum
  37. {
  38.     ATM_DIALOG_ATMHILFE,
  39. }
  40.  
  41. enum AInfo
  42. {
  43.     atmname[16],
  44.     Float:atmx,
  45.     Float:atmy,
  46.     Float:atmz,
  47.     Float:atmxrot,
  48.     Float:atmyrot,
  49.     Float:atmzrot,
  50.     atmobjectid,
  51.     atm_objekt,
  52.     ATMVirtualID,
  53.     Text3D:atm_label
  54. }
  55.  
  56. #define MAXIMUM_ATMS 30
  57. new ATMInfo[MAXIMUM_ATMS][AInfo];
  58.  
  59. ocmd:delatm(playerid,params[])
  60. {
  61.     new id, string[80], string2[80];
  62.     new ExistsATM[20];
  63.     if(PlayerDaten[playerid][pAdminlevel] != 1)return SendClientMessage(playerid,DUNKELROT," Du hast kein Zugriff auf diesen Befehl!"); // ANPASSEN!!
  64.     if(sscanf(params,"i",id)) return SendClientMessage(playerid,ORANGE," Benutzung: /delatm [ID]");
  65.     format(ExistsATM,sizeof(ExistsATM),"/ATM/%d.ini",id);
  66.     if(dini_Exists(ExistsATM))
  67.     {
  68.         format(string,sizeof(string),""#HWEIS"Geldautomat"#HGRUN"(Nr.%i) "#HWEIS"wurde gelöscht!",id);
  69.         print(string);
  70.         SendClientMessage(playerid,WEIS,string);
  71.         DelATM(id);
  72.     }
  73.     else
  74.     {
  75.         format(string2,sizeof(string2),""#HWEIS"Geldautomat mit der "#HROT"(Nr.%i) "#HWEIS"Existiert nicht!",id);
  76.         SendClientMessage(playerid,WEIS,string2);
  77.     }
  78.     return 1;
  79. }
  80.  
  81. ocmd:atmhilfe(playerid)
  82. {
  83.     new string[185];
  84.     format(string,sizeof(string), ""#HWEIS" /einzahlen (Wird verwendet um Geld einzuzahlen)\n /auszahlen (Wird verwendet um Geld auszuzahlen)\n /uberweisen (Wird verwendet um Geld an einem anderne Mitspieler zu Überweisen)");
  85.     ShowPlayerDialog(playerid, ATM_DIALOG_ATMHILFE, DIALOG_STYLE_MSGBOX, "ATM - Hilfe",string,"Schließen","");
  86.     return 1;
  87. }
  88.  
  89. ocmd:einzahlen(playerid,params[])
  90. {
  91.     new bool:atmfound = false;
  92.     for(new atmid=1;atmid<MAXIMUM_ATMS;atmid++)
  93.     {
  94.             if(IsPlayerInRangeOfPoint(playerid,3.0,ATMInfo[atmid][atmx],ATMInfo[atmid][atmy],ATMInfo[atmid][atmz]))
  95.             {
  96.                     new pID, geldmenge;
  97.                     if(sscanf(params,"d", geldmenge))return SendClientMessage(playerid, ORANGE, "Benutzung: /einzahlen [Geldmenge]");
  98.                     if(PlayerDaten[playerid][pGeld] < geldmenge)return SendClientMessage(playerid, ORANGE, " Nicht genügend Geld!");
  99.                     {
  100.                             new string[60];
  101.                             format(string, sizeof(string), " Es wurden %d$ Eingezahlt.", geldmenge);
  102.                             SendClientMessage(pID, ORANGE, string);
  103.                             PlayerDaten[playerid][pKontostand] += geldmenge;
  104.                             PlayerDaten[playerid][pGeld] -= geldmenge;
  105.                             return 1;
  106.                     }
  107.             }
  108.     }
  109.     if(atmfound == false)SendClientMessage(playerid,DUNKELROT," Du befindest dich an keinem Geldautomaten!");
  110.     return 1;
  111. }
  112.  
  113. ocmd:auszahlen(playerid,params[])
  114. {
  115.     new bool:atmfound = false;
  116.     for(new atmid=1;atmid<MAXIMUM_ATMS;atmid++)
  117.     {
  118.             if(IsPlayerInRangeOfPoint(playerid,3.0,ATMInfo[atmid][atmx],ATMInfo[atmid][atmy],ATMInfo[atmid][atmz]))
  119.             {
  120.                     new pID, geldmenge;
  121.                     if(sscanf(params,"d", geldmenge))return SendClientMessage(playerid, ORANGE, "Benutzung: /auszahlen [Geldmenge]");
  122.                     if(PlayerDaten[playerid][pKontostand] < geldmenge)return SendClientMessage(playerid, ORANGE, " Nicht genügend Geld auf dem Konto!");
  123.                     {
  124.                             new string[60];
  125.                             format(string, sizeof(string), " Es wurden %d$ Ausgezahlt.", geldmenge);
  126.                             SendClientMessage(pID, ORANGE, string);
  127.                             PlayerDaten[playerid][pKontostand] -= geldmenge;
  128.                             PlayerDaten[playerid][pGeld] += geldmenge;
  129.                             return 1;
  130.                     }
  131.             }
  132.     }
  133.     if(atmfound == false)SendClientMessage(playerid,DUNKELROT," Du befindest dich an keinem Geldautomaten!");
  134.     return 1;
  135. }
  136.  
  137. ocmd:uberweisen(playerid,params[])
  138. {
  139.     new bool:atmfound = false;
  140.     for(new atmid=1;atmid<MAXIMUM_ATMS;atmid++)
  141.     {
  142.             if(IsPlayerInRangeOfPoint(playerid,3.0,ATMInfo[atmid][atmx],ATMInfo[atmid][atmy],ATMInfo[atmid][atmz]))
  143.             {
  144.                     new pID, geldmenge;
  145.                     new name[MAX_PLAYER_NAME];
  146.                     GetPlayerName(playerid,name,sizeof(name));
  147.                     if(sscanf(params,"ud", pID, geldmenge))return SendClientMessage(playerid, ORANGE, "Benutzung: /uberweisung [Name/ID] [Geldmenge]");
  148.                     if(playerid == pID)return SendClientMessage(playerid, ORANGE, " Du kannst dir nicht selber Geld überweisen!");
  149.                     if(!IsPlayerConnected(pID))return SendClientMessage(playerid, ORANGE, " Angegebender Spieler ist nicht Online!");
  150.                     {
  151.                             new string[60];
  152.                             format(string, sizeof(string), " Es wurden %d$ an %s Überwiesen.", geldmenge, name[pID]);
  153.                             SendClientMessage(playerid, ORANGE, string);
  154.                             format(string, sizeof(string), " %s hat dir %d$ Überwiesen.", name[playerid], geldmenge);
  155.                             SendClientMessage(pID, ORANGE, string);
  156.                             PlayerDaten[playerid][pKontostand] -= geldmenge;
  157.                             PlayerDaten[pID][pKontostand] += geldmenge;
  158.                             return 1;
  159.                     }
  160.             }
  161.     }
  162.     if(atmfound == false)SendClientMessage(playerid,DUNKELROT," Du befindest dich an keinem Geldautomaten!");
  163.     return 1;
  164. }
  165.  
  166. ocmd:catm(playerid,params[])
  167. {
  168.     if(PlayerDaten[playerid][pAdminlevel] != 1)return SendClientMessage(playerid,DUNKELROT ," Du hast kein Zugriff auf diesen Befehl!"); // ANPASSEN!!
  169.     {
  170.         new Float:x,Float:y,Float:z,string[140], rotation, atmgeldmenge;
  171.         new pVirtualID = GetPlayerVirtualWorld(playerid);
  172.         if(sscanf(params, "id", rotation, atmgeldmenge)) return SendClientMessage(playerid,ORANGE,"Benutzung: /catm [rotationation: 90, 180, 270, 360] [Wie viel Geld soll der ATM besitzen?]");
  173.         if(rotation != 90 && rotation != 180 && rotation != 270 && rotation != 360) return SendClientMessage(playerid,ORANGE,"Es sind nur Rotationen von 90, 180, 270 oder 360 erlaubt!");
  174.         GetPlayerPos(playerid,x,y,z);
  175.         format(string,sizeof(string),""#HWEIS"Erstellt an: "#HWEIS"X: "#HBLAU"%f "#HWEIS"Y: "#HBLAU"%f "#HWEIS"Z: "#HBLAU"%f", x, y, z);
  176.         SendClientMessage(playerid, WEIS, string);
  177.         SetPlayerPos(playerid,x,y,z+2);
  178.         CATM(x, y, z, rotation, pVirtualID);
  179.     }
  180.     return 1;
  181. }
  182.  
  183. stock DelATM(atmid)
  184. {
  185.     new pfad[50];
  186.     format(pfad,50,"/ATM/%d.ini",atmid);
  187.     DestroyObject(ATMInfo[atmid][atm_objekt]);
  188.     Delete3DTextLabel(ATMInfo[atmid][atm_label]);
  189.     new string[128];
  190.     format(string,sizeof(string)," Geldautomat mit der Nr.%d wurde aus der Datenbank entfernt!",atmid);
  191.     print(string);
  192.     dini_Remove(pfad);
  193.     return 1;
  194. }
  195.  
  196. stock SaveATM(atmid)
  197. {
  198.     new BDatei[64];
  199.     format(BDatei,50,"/ATM/%d.ini",atmid);
  200.     dini_Set(BDatei,"Object",ATMInfo[atmid][atmobjectid]);
  201.     dini_Set(BDatei,"Text",ATMInfo[atmid][atmname]);
  202.     dini_Set(BDatei,"Text",ATMInfo[atmid][atmname]);
  203.     dini_FloatSet(BDatei,"X",ATMInfo[atmid][atmx]);
  204.     dini_FloatSet(BDatei,"Y",ATMInfo[atmid][atmy]);
  205.     dini_FloatSet(BDatei,"Z",ATMInfo[atmid][atmz]);
  206.     dini_FloatSet(BDatei,"XRot",ATMInfo[atmid][atmxrot]);
  207.     dini_FloatSet(BDatei,"YRot",ATMInfo[atmid][atmyrot]);
  208.     return 1;
  209. }
  210.  
  211. stock CATM(Float:x,Float:y,Float:z, rotation, pVirtualID)
  212. {
  213.     new BDatei[64];
  214.     for(new atmid=1;atmid<MAXIMUM_ATMS;atmid++)
  215.     {
  216.         format(BDatei,50,"/ATM/%d.ini",atmid);
  217.         if(!fexist(BDatei))
  218.         {
  219.             dini_Create(BDatei);
  220.             dini_Set(BDatei,"Text", "Test");
  221.             dini_IntSet(BDatei,"Object",2942);
  222.             dini_FloatSet(BDatei,"X",x);
  223.             dini_FloatSet(BDatei,"Y",y);
  224.             dini_FloatSet(BDatei,"Z",z);
  225.             dini_FloatSet(BDatei,"XRot",0.000000);
  226.             dini_FloatSet(BDatei,"YRot",0.000000);
  227.             dini_FloatSet(BDatei,"ZRot", rotation);
  228.             dini_IntSet(BDatei,"VirtualID", pVirtualID);
  229.             return LATM(atmid);
  230.         }
  231.     }
  232.     return 1;
  233. }
  234.  
  235. stock LATM(atmid)
  236. {
  237.     new BDatei[64], string[32];
  238.     format(BDatei,50,"/ATM/%d.ini",atmid);
  239.     if(!fexist(BDatei))return 0;
  240.     format(ATMInfo[atmid][atmname],32,"%s",dini_Get(BDatei,"Text"));
  241.     ATMInfo[atmid][atmobjectid] = dini_Int(BDatei,"Object");
  242.     ATMInfo[atmid][ATMVirtualID] = dini_Int(BDatei,"VirtualID");
  243.     ATMInfo[atmid][atmx] = dini_Float(BDatei,"X");
  244.     ATMInfo[atmid][atmy] = dini_Float(BDatei,"Y");
  245.     ATMInfo[atmid][atmz] = dini_Float(BDatei,"Z");
  246.     ATMInfo[atmid][atmxrot] = dini_Float(BDatei,"XRot");
  247.     ATMInfo[atmid][atmyrot] = dini_Float(BDatei,"YRot");
  248.     ATMInfo[atmid][atmzrot] = dini_Float(BDatei,"ZRot");
  249.     ATMInfo[atmid][atm_objekt] = CreateObject(2942, ATMInfo[atmid][atmx],ATMInfo[atmid][atmy],ATMInfo[atmid][atmz]-0.4, ATMInfo[atmid][atmxrot],ATMInfo[atmid][atmyrot],ATMInfo[atmid][atmzrot],1000);
  250.     format(string,sizeof(string),"Bankautmat (Nr.%i) - /atm",atmid);
  251.     ATMInfo[atmid][atm_label] = Create3DTextLabel(string,BLAU, ATMInfo[atmid][atmx],ATMInfo[atmid][atmy],ATMInfo[atmid][atmz], 40.0, ATMInfo[atmid][ATMVirtualID], 0);
  252.     return 1;
  253. }
  254.  
  255. main()
  256. {
  257.         print("\n----------------------------------");
  258.         print(" ATM System by EQU");
  259.         print("----------------------------------\n");
  260. }
  261.  
  262. public OnFilterScriptInit()
  263. {
  264.     for(new atmid=1;atmid<MAXIMUM_ATMS;atmid++)
  265.     {
  266.         LATM(atmid);
  267.     }
  268.     return 1;
  269. }
  270.  
  271. public OnFilterScriptExit()
  272. {
  273.     for(new atmid=1;atmid<MAXIMUM_ATMS;atmid++)
  274.     {
  275.         SaveATM(atmid);
  276.         DestroyObject(ATMInfo[atmid][atm_objekt]);
  277.         Delete3DTextLabel(ATMInfo[atmid][atm_label]);
  278.     }
  279.     return 1;
  280. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement