Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Marco's Banksystem
- Credits bitte drinlassen, wäre echt nett :D
- */
- #include <a_samp>
- //#define MySQLUSE //Ausklammern, falls kein MySQL genutzt werden möchte. !!ACHTUNG!! Strickenkid's MySQL Plugin, nicht GStylezz!
- #if defined MySQLUSE
- #include <mysql>
- #define MySQL_Host "localhost" //Hier definierst Du den Host, im Hauptfall localhost
- #define MySQL_User "script" //Hier definierst Du den User, den musst du selber erstellen
- #define MySQL_Pass "scripter" //Hier definierst Du das Passwort, es darf nicht leer sein, sonst geht es nicht
- #define MySQL_DB "samp608" //Hier definierst Du die Datenbank, die musst du allerdings selber erstellen ;)
- #else
- #include <Dini>
- #endif
- #define STARTBONUS 10000
- #define SPD ShowPlayerDialog
- #define SCM SendClientMessage
- #define IPC IsPlayerConnected
- #define COLOR_WHITE 0xFFFFFFAA
- #define DIALOG_BANK 10
- #define DIALOG_KEIN_KONTO 11
- #define DIALOG_KONTOSTAND 12
- #define DIALOG_PIN_ERSTELLEN 13
- #define DIALOG_PIN 14
- #define DIALOG_ABHEBEN 15
- #define DIALOG_EINZAHLEN 16
- #define DIALOG_FERTIG 18
- #define DIALOG_UEBERWEISUNG_BETRAG 19
- #define DIALOG_UEBERWEISEN_ID 20
- #define DIALOG_KARTE 21
- new Ueberweiser[MAX_PLAYERS] ={-1,...};
- new DarfECAbholen[MAX_PLAYERS];
- new accFormat[128];
- new BankPickup;
- forward ECKarteFertig(playerid);
- forward IsAtATM(playerid);
- enum BankInfo
- {
- sHatKonto,
- sKonto,
- sBankPIN,
- sECKarte
- }
- new Bank[MAX_PLAYERS][BankInfo];
- public OnFilterScriptInit()
- {
- #if defined MySQLUSE
- mysql_init();
- mysql_connect(MySQL_Host,MySQL_User,MySQL_Pass,MySQL_DB);
- #endif
- //ATMs
- CreateObject(2942, 810.565063, -1623.768799, 13.189775, 0.0000, 0.0000, 90.0001);//1
- CreateObject(2942, 1000.825195, -922.610168, 41.971024, 0.0000, 0.0000, 277.8123);//2
- CreateObject(2942, 1504.693359, -1706.567749, 13.689775, 0.0000, 0.0000, 90.0000);//3
- CreateObject(2942, 1928.620850, -1771.269043, 13.189775, 0.0000, 0.0000, 90.0000);//4
- CreateObject(2942, 1036.071655, -1024.509766, 31.744461, 0.0000, 0.0000, 0.0000);//5
- CreateObject(2942, 926.909912, -1355.081421, 13.021199, 0.0000, 0.0000, 270.0000);//6
- CreateObject(2942, 491.439484, -1734.586548, 10.871187, 0.0000, 0.0000, 168.3452);//7
- CreateObject(2942, 380.780701, -2021.725830, 7.478837, 0.0000, 0.0000, 0.0000);//8
- CreateObject(2942, 1223.778320, -1744.292603, 13.240016, 0.0000, 0.0000, 193.3734);//9
- CreateObject(2942, 2105.436035, -1809.228516, 13.197587, 0.0000, 0.0000, 270.0000);//10
- CreateObject(2942, 2072.053955, -1836.951416, 13.197434, 0.0000, 0.0000, 90.0001);//11
- CreateObject(2942, 1956.735596, -2186.291016, 13.189775, 0.0000, 0.0000, 90.0000);//12
- CreateObject(2942, 2394.498047, -1914.865356, 13.189775, 0.0000, 0.0000, 0.0000);//13
- CreateObject(2942, 2779.040283, -1821.910034, 10.157268, 0.0000, 0.0000, 33.7500);//14
- CreateObject(2942, 1196.011841, -918.630188, 42.792793, 0.0000, 0.0000, 5.1566);//15
- BankPickup = CreatePickup(1242, 19, 1459.5841,-1011.0598,26.8438, -1);
- print("\n--------------------------------------");
- print(" Marco's Banksystem loaded.");
- print("--------------------------------------\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new i=0;i<MAX_PLAYERS;i++)
- {
- if(IsPlayerConnected(i))
- {
- BankSpeichern(i);
- }
- }
- #if defined MySQLUSE
- mysql_close();
- #endif
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- #if defined MySQLUSE
- format(accFormat,sizeof accFormat,"SELECT * FROM `Bank` WHERE `Spielername`='%s'",Spielername(playerid));
- mysql_query(accFormat);
- mysql_store_result();
- if(mysql_num_rows() > 0)
- {
- mysql_fetch_field("HatKonto",accFormat); Bank[playerid][sHatKonto] = strval(accFormat);
- mysql_fetch_field("Konto",accFormat); Bank[playerid][sKonto] = strval(accFormat);
- mysql_fetch_field("BankPIN",accFormat); Bank[playerid][sBankPIN] = strval(accFormat);
- mysql_fetch_field("ECKarte",accFormat); Bank[playerid][sECKarte] = strval(accFormat);
- }
- else
- {
- format(accFormat,sizeof accFormat,"INSERT INTO `Bank` (`Spielername`,`HatKonto`,`Konto`,`BankPIN`,`ECKarte`) VALUES ('%s','0','0','0','0')",
- Spielername(playerid));
- mysql_query(accFormat);
- }
- mysql_free_result();
- #else
- format(accFormat,sizeof accFormat,"Bank/%s.ini",Spielername(playerid));
- if(fexist(accFormat))
- {
- Bank[playerid][sHatKonto] = dini_Int(accFormat, "HatKonto");
- Bank[playerid][sKonto] = dini_Int(accFormat, "Konto");
- Bank[playerid][sBankPIN] = dini_Int(accFormat, "BankPIN");
- Bank[playerid][sECKarte] = dini_Int(accFormat, "ECKarte");
- }
- else
- {
- dini_Create(accFormat);
- dini_IntSet(accFormat, "HatKonto", 0);
- dini_IntSet(accFormat, "Konto", 0);
- dini_IntSet(accFormat, "BankPIN", 0);
- dini_IntSet(accFormat, "ECKarte", 0);
- }
- #endif
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- BankSpeichern(playerid);
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- new cmd[128], idx;
- cmd = strtok(cmdtext, idx);
- if(strcmp(cmd, "/exit", true) == 0)
- {
- if(IsPlayerConnected(playerid) == 1)
- {
- if(IsPlayerInRangeOfPoint(playerid,10.0,2315.952880,-1.618174,26.742187))
- {
- SetPlayerPos(playerid,1459.5841,-1011.0598,26.8438);
- SetPlayerInterior(playerid,0);
- SCM(playerid,COLOR_WHITE,"Willkommen in Los Santos.");
- }
- else
- {
- SCM(playerid,COLOR_WHITE,"Du bist nicht bei der Bank");
- }
- }
- }
- if(strcmp(cmd, "/enter", true) == 0)
- {
- if(IsPlayerConnected(playerid) == 1)
- {
- if(IsPlayerInRangeOfPoint(playerid,5.0,1459.5841,-1011.0598,26.8438))
- {
- SetPlayerPos(playerid,2315.952880,-1.618174,26.742187);
- SetPlayerInterior(playerid,0);
- SCM(playerid,COLOR_WHITE,"Willkommen in der LS-Bank.");
- }
- else
- {
- SCM(playerid,COLOR_WHITE,"Du bist nicht bei der Bank");
- }
- }
- }
- if(strcmp(cmd, "/bank", true) == 0)
- {
- if(IsPlayerConnected(playerid) == 1)
- {
- if(IsPlayerInRangeOfPoint(playerid,10.0,2315.952880,-1.618174,26.742187))
- {
- if(Bank[playerid][sHatKonto] == 1)
- {
- SPD(playerid,DIALOG_PIN,DIALOG_STYLE_PASSWORD,"Los Santos Bank","Bitte geben sie ihren PIN ein:","Bestätigen","Abbrechen");
- }
- else
- {
- SPD(playerid,DIALOG_KEIN_KONTO,DIALOG_STYLE_MSGBOX,"Los Santos Bank","{FFFFFF}Sie haben derzeit noch {CC0000}kein{FFFFFF} Konto.\n Möchten sie sich nun ein Konto erstellen ?","Ja","Abbrechen");
- }
- }
- else
- {
- return SCM(playerid,COLOR_WHITE,"Du bist nicht in der Bank.");
- }
- }
- return 1;
- }
- if(strcmp(cmd, "/automat", true) == 0)
- {
- if(IsPlayerConnected(playerid) == 1)
- {
- if(IsAtATM(playerid))
- {
- if(Bank[playerid][sECKarte] == 1)
- {
- SPD(playerid,DIALOG_PIN,DIALOG_STYLE_PASSWORD,"Los Santos Bank","Bitte geben sie ihren PIN ein:","Bestätigen","Abbrechen");
- }
- else
- {
- SCM(playerid,COLOR_WHITE,"Du hast keine EC-Karte !");
- }
- }
- else
- {
- return SCM(playerid,COLOR_WHITE,"Du bist an keinem Automaten.");
- }
- }
- return 1;
- }
- if (strcmp("/eckarteabholen", cmdtext, true, 10) == 0)
- {
- if(IPC(playerid) == 1)
- {
- if(DarfECAbholen[playerid] == 1)
- {
- SCM(playerid,COLOR_WHITE,"Du hast nun eine EC-Karte. Jetzt kannst du auch an Automaten Geld abholen!");
- SCM(playerid,COLOR_WHITE,"Ausserdem kannst du nun auch mit Deiner EC_Karte einkaufen gehen.");
- }
- else
- {
- SCM(playerid,COLOR_WHITE,"Du hast noch keine EC-Karte beantragt oder du musst noch etwas warten.");
- }
- }
- return 1;
- }
- return 0;
- }
- public ECKarteFertig(playerid)
- {
- DarfECAbholen[playerid] = 1;
- SCM(playerid, COLOR_WHITE,"Du kanst nun deine EC-Karte in der Bank abholen. (/eckarteabholen)");
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == DIALOG_PIN)
- {
- if(response == 0)
- {
- return SCM(playerid, COLOR_WHITE,"Bank: Vielen Dank für ihren Besuch.");
- }
- if(response == 1)
- {
- if(strlen(inputtext) == 4)
- {
- format(accFormat,sizeof accFormat,"%d",Bank[playerid][sBankPIN]);
- if(strcmp(inputtext,accFormat) == 0)
- {
- SPD(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Los Santos Bank","{FFFFFF}Kontostand\r\nAbheben\r\nEinzahlen\r\nÜberweisen\r\nEC-Karte beantragen","Weiter","Abbrechen");
- }
- else
- {
- SCM(playerid,COLOR_WHITE,"PIN-Code falsch.");
- }
- }
- else
- {
- SCM(playerid,COLOR_WHITE,"Der PIN-Code muss genau 4 Zahlen betragen.");
- }
- }
- }
- if(dialogid == DIALOG_KEIN_KONTO)
- {
- if(response == 0)
- {
- return SCM(playerid, COLOR_WHITE,"Bank: Vielen Dank für ihren Besuch.");
- }
- if(response == 1)
- {
- SPD(playerid, DIALOG_PIN_ERSTELLEN, DIALOG_STYLE_INPUT,"LS Bank - Konto erstellen","Bitte geben sie hier ihren gewünschten PIN ein.\n{CC0000}Diesen musst du dir merken !!!","Erstellen","Abbrechen");
- }
- }
- if(dialogid == DIALOG_PIN_ERSTELLEN)
- {
- if(response == 0)
- {
- return SCM(playerid, COLOR_WHITE,"Bank: Vielen Dank für ihren Besuch.");
- }
- if(response == 1)
- {
- if(strlen(inputtext) == 4)
- {
- if(isNumeric(inputtext))
- {
- new string[256];
- format(string,sizeof(string),"Ihr Konto wurde erstellt. Ihr PIN lautet: %d", strval(inputtext));
- SCM(playerid,COLOR_WHITE,string);
- Bank[playerid][sHatKonto] = 1;
- Bank[playerid][sKonto] = STARTBONUS;
- Bank[playerid][sBankPIN] = strval(inputtext);
- BankSpeichern(playerid);
- }
- else
- {
- SPD(playerid, DIALOG_PIN_ERSTELLEN, DIALOG_STYLE_INPUT,"LS Bank - Konto erstellen","Bitte geben sie hier ihren gewünschten PIN ein.\n{CC0000}Es MÜSSEN genau 4 Zahlen sein.!!!","Erstellen","Abbrechen");
- }
- }
- else
- {
- SPD(playerid, DIALOG_PIN_ERSTELLEN, DIALOG_STYLE_INPUT,"LS Bank - Konto erstellen","Bitte geben sie hier ihren gewünschten PIN ein.\n{CC0000}Es MÜSSEN genau 4 Zahlen sein.!!!","Erstellen","Abbrechen");
- }
- }
- }
- if(dialogid == DIALOG_BANK)
- {
- if(response == 0)
- {
- return SCM(playerid, COLOR_WHITE,"Bank: Vielen Dank für ihren Besuch.");
- }
- if(response == 1)
- {
- switch(listitem)
- {
- case 0://Kontostand
- {
- new string[128];
- format(string,sizeof(string),"Ihr Kontostand beträgt:\n%d$",Bank[playerid][sKonto]);
- SPD(playerid,DIALOG_KONTOSTAND,DIALOG_STYLE_MSGBOX,"LS Bank - Kontostand",string,"Ok","Zurück");
- }
- case 1://Abheben
- {
- SPD(playerid,DIALOG_ABHEBEN,DIALOG_STYLE_INPUT,"LS Bank - Geld abheben","Wieviel Geld möchten sie von ihrem Konto abheben ?","Abheben","Zurück");
- }
- case 2://Einzahlen
- {
- SPD(playerid,DIALOG_EINZAHLEN,DIALOG_STYLE_INPUT,"LS Bank - Geld einzahlen","Wieviel Geld möchten sie von ihrem Konto einzahlen ?","Einzahlen","Zurück");
- }
- case 3://Überweisen
- {
- SPD(playerid,DIALOG_UEBERWEISEN_ID,DIALOG_STYLE_INPUT,"LS Bank - Überweisung","An wen möchten sie das Geld überweisen ?","Weiter","Abbrechen");
- }
- case 4://EC-Karte Beantragen
- {
- if(Bank[playerid][sECKarte] == 1)
- {
- return SCM(playerid,COLOR_WHITE,"Sie besitzen schon eine EC-Karte.");
- }
- SPD(playerid,DIALOG_KARTE,DIALOG_STYLE_MSGBOX,"LS Bank - EC-Karte beantragen","Möchten sie wirklich eine EC-Karte beantragen ?","Ja","Abbrechen");
- }
- }
- }
- }
- if(dialogid == DIALOG_ABHEBEN)
- {
- if(response == 0)
- {
- return SPD(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Los Santos Bank","{FFFFFF}Kontostand\r\nAbheben\r\nEinzahlen\r\nÜberweisen\r\nEC-Karte beantragen","Weiter","Abbrechen");
- }
- if(response == 1)
- {
- if(isNumeric(inputtext))
- {
- new geld = Bank[playerid][sKonto];
- new summe = strval(inputtext);
- new string[128];
- if(geld <= strval(inputtext))
- {
- SCM(playerid,COLOR_WHITE,"Du hast nicht genügend Geld auf dem Konto.");
- }
- else
- {
- GivePlayerMoney(playerid, summe);
- Bank[playerid][sKonto] -= summe;
- format(string,sizeof(string),"Sie haben %d$ von ihrem Konto abgehoben.\nAktueller Kontostand: %d", summe, Bank[playerid][sKonto]);
- SPD(playerid,DIALOG_FERTIG,DIALOG_STYLE_MSGBOX,"LS Bank - Erfolgreich",string,"Ok","");
- }
- }
- else
- {
- return SCM(playerid,COLOR_WHITE,"Du musst Zahlen eingeben!");
- }
- }
- }
- if(dialogid == DIALOG_EINZAHLEN)
- {
- if(response == 0)
- {
- return SPD(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Los Santos Bank","{FFFFFF}Kontostand\r\nAbheben\r\nEinzahlen\r\nÜberweisen\r\nEC-Karte beantragen","Weiter","Abbrechen");
- }
- if(response == 1)
- {
- if(isNumeric(inputtext))
- {
- new summe = strval(inputtext);
- new string[128];
- if(GetPlayerMoney(playerid) <= strval(inputtext))
- {
- SCM(playerid,COLOR_WHITE,"Du hast nicht genügend Geld in deiner Tasche.");
- }
- else
- {
- GivePlayerMoney(playerid, -summe);
- Bank[playerid][sKonto] += summe;
- format(string,sizeof(string),"Sie haben %d$ auf ihr Konto eingezahlt.\nAktueller Kontostand: %d", summe, Bank[playerid][sKonto]);
- SPD(playerid,DIALOG_FERTIG,DIALOG_STYLE_MSGBOX,"LS Bank - Erfolgreich",string,"Ok","");
- }
- }
- else
- {
- return SCM(playerid,COLOR_WHITE,"Du musst zahlen eingeben !");
- }
- }
- }
- if(dialogid == DIALOG_UEBERWEISEN_ID)
- {
- new pID;
- if(response == 0)
- {
- return SPD(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Los Santos Bank","{FFFFFF}Kontostand\r\nAbheben\r\nEinzahlen\r\nÜberweisen\r\nEC-Karte beantragen","Weiter","Abbrechen");
- }
- if(response == 1)
- {
- if(sscanf(inputtext,"u",pID)) return SPD(playerid,DIALOG_UEBERWEISEN_ID,DIALOG_STYLE_INPUT,"LS Bank - Überweisung","An wen möchten sie das Geld überweisen ?\n{CC0000}Ungültiger Empfänger !1","Weiter","Abbrechen");
- if(!IsPlayerConnected(pID))
- {
- return SPD(playerid,DIALOG_UEBERWEISEN_ID,DIALOG_STYLE_INPUT,"LS Bank - Überweisung","An wen möchten sie das Geld überweisen ?\n{CC0000}Ungültiger Empfänger !2","Weiter","Abbrechen");
- }
- if(Bank[pID][sHatKonto] == 0)
- {
- return SCM(playerid, COLOR_WHITE,"Der Spieler hat kein Konto.");
- }
- if(pID == playerid)
- {
- return SPD(playerid,DIALOG_UEBERWEISEN_ID,DIALOG_STYLE_INPUT,"LS Bank - Überweisung","An wen möchten sie das Geld überweisen ?\n{CC0000}Ungültiger Empfänger !3","Weiter","Abbrechen");
- }
- SPD(playerid,DIALOG_UEBERWEISUNG_BETRAG,DIALOG_STYLE_INPUT,"LS Bank - Überweisung","Wieviel Geld möchten sie überweisen ?","Überweisen","Abbrechen");
- Ueberweiser[playerid] = pID;
- Ueberweiser[pID] = playerid;
- }
- }
- if(dialogid == DIALOG_UEBERWEISUNG_BETRAG)
- {
- new pID = Ueberweiser[playerid];
- new str[128],str2[128];
- if(response == 0)
- {
- return SPD(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Los Santos Bank","{FFFFFF}Kontostand\r\nAbheben\r\nEinzahlen\r\nÜberweisen\r\nEC-Karte beantragen","Weiter","Abbrechen");
- }
- if(response == 1)
- {
- if(Bank[playerid][sKonto] < strval(inputtext))
- {
- return SendClientMessage(playerid,0xC8C8C8FF,"Du hast nicht genug Geld auf dem Konto!");
- }
- Bank[playerid][sKonto] -= strval(inputtext); //Geld wird vom Konto abgezogen
- Bank[pID][sKonto] += strval(inputtext); //und hier auf das Konto des Anderen addiert.
- format(str,sizeof(str),"Sie haben %d$ auf das Konto von %s überwiesen",strval(inputtext),Spielername(pID));
- ShowPlayerDialog(playerid,DIALOG_FERTIG,DIALOG_STYLE_MSGBOX,"LS Bank - Erfolgreich",str,"Schließen","");
- format(str2,sizeof(str2),"%s hat ihnen %d$ auf ihr Konto überwiesen",Spielername(playerid),strval(inputtext));
- SendClientMessage(pID,0xC8C8C8FF,str2);
- }
- }
- if(dialogid == DIALOG_KARTE)
- {
- if(response == 0)
- {
- return SPD(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Los Santos Bank","{FFFFFF}Kontostand\r\nAbheben\r\nEinzahlen\r\nÜberweisen\r\nEC-Karte beantragen","Weiter","Abbrechen");
- }
- if(response == 1)
- {
- SCM(playerid,COLOR_WHITE,"Ihre EC-Karte wurde beantragt. In 5 Minuten kannst du sie hier abholen.");
- SetTimerEx("ECKarteFertig",300000,0,"d",playerid);
- }
- }
- return 1;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- if(pickupid == BankPickup)
- {
- GameTextForPlayer(playerid,"/enter",5000,0);
- return 1;
- }
- return 1;
- }
- public IsAtATM(playerid)
- {
- if(IsPlayerInRangeOfPoint(playerid, 2.0, 1505.3571,-1706.5531,14.0469) || IsPlayerInRangeOfPoint(playerid, 2.0, 1223.6383,-1743.6448,13.5971))
- {
- return 1;
- }
- else if (IsPlayerInRangeOfPoint(playerid, 2.0, 491.4543,-1733.9115,11.2632) || IsPlayerInRangeOfPoint(playerid, 2.0, 380.7548,-2022.3887,7.8359))
- {
- return 1;
- }
- else if (IsPlayerInRangeOfPoint(playerid, 2.0, 1000.1720,-922.7279,42.3281) || IsPlayerInRangeOfPoint(playerid, 2.0, 1196.0596,-919.2913,43.1502))
- {
- return 1;
- }
- else if (IsPlayerInRangeOfPoint(playerid, 2.0, 1036.0769,-1025.1725,32.1016) || IsPlayerInRangeOfPoint(playerid, 2.0, 926.2456,-1355.0319,13.3783))
- {
- return 1;
- }
- else if (IsPlayerInRangeOfPoint(playerid, 2.0, 811.2282,-1623.7705,13.5547) || IsPlayerInRangeOfPoint(playerid, 2.0, 1929.2842,-1771.2465,13.5469))
- {
- return 1;
- }
- else if (IsPlayerInRangeOfPoint(playerid, 2.0, 2104.7717,-1809.2222,13.5547) || IsPlayerInRangeOfPoint(playerid, 2.0, 2072.7190,-1836.9708,13.5545))
- {
- return 1;
- }
- else if (IsPlayerInRangeOfPoint(playerid, 2.0, 1957.3990,-2186.2932,13.5469) || IsPlayerInRangeOfPoint(playerid, 2.0, 2779.4229,-1822.4525,10.2743))
- {
- return 1;
- }
- else if (IsPlayerInRangeOfPoint(playerid, 2.0, 2394.5190,-1915.5287,13.5469))
- {
- return 1;
- }
- return 0;
- }
- stock Spielername(playerid)
- {
- new NoName[MAX_PLAYER_NAME];
- GetPlayerName(playerid,NoName,sizeof NoName);
- return NoName;
- }
- strtok(const string[], &index)
- {
- new length = strlen(string);
- while ((index < length) && (string[index] <= ' '))
- {
- index++;
- }
- new offset = index;
- new result[20];
- while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
- {
- result[index - offset] = string[index];
- index++;
- }
- result[index - offset] = EOS;
- return result;
- }
- stock sscanf(string[], format[], {Float,_}:...)
- {
- #if defined isnull
- if (isnull(string))
- #else
- if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
- #endif
- {
- return format[0];
- }
- #pragma tabsize 4
- new
- formatPos = 0,
- stringPos = 0,
- paramPos = 2,
- paramCount = numargs(),
- delim = ' ';
- while (string[stringPos] && string[stringPos] <= ' ')
- {
- stringPos++;
- }
- while (paramPos < paramCount && string[stringPos])
- {
- switch (format[formatPos++])
- {
- case '\0':
- {
- return 0;
- }
- case 'i', 'd':
- {
- new
- neg = 1,
- num = 0,
- ch = string[stringPos];
- if (ch == '-')
- {
- neg = -1;
- ch = string[++stringPos];
- }
- do
- {
- stringPos++;
- if ('0' <= ch <= '9')
- {
- num = (num * 10) + (ch - '0');
- }
- else
- {
- return -1;
- }
- }
- while ((ch = string[stringPos]) > ' ' && ch != delim);
- setarg(paramPos, 0, num * neg);
- }
- case 'h', 'x':
- {
- new
- num = 0,
- ch = string[stringPos];
- do
- {
- stringPos++;
- switch (ch)
- {
- case 'x', 'X':
- {
- num = 0;
- continue;
- }
- case '0' .. '9':
- {
- num = (num << 4) | (ch - '0');
- }
- case 'a' .. 'f':
- {
- num = (num << 4) | (ch - ('a' - 10));
- }
- case 'A' .. 'F':
- {
- num = (num << 4) | (ch - ('A' - 10));
- }
- default:
- {
- return -1;
- }
- }
- }
- while ((ch = string[stringPos]) > ' ' && ch != delim);
- setarg(paramPos, 0, num);
- }
- case 'c':
- {
- setarg(paramPos, 0, string[stringPos++]);
- }
- case 'f':
- {
- new changestr[16], changepos = 0, strpos = stringPos;
- while(changepos < 16 && string[strpos] && string[strpos] != delim)
- {
- changestr[changepos++] = string[strpos++];
- }
- changestr[changepos] = '\0';
- setarg(paramPos,0,_:floatstr(changestr));
- }
- case 'p':
- {
- delim = format[formatPos++];
- continue;
- }
- case '\'':
- {
- new
- end = formatPos - 1,
- ch;
- while ((ch = format[++end]) && ch != '\'') {}
- if (!ch)
- {
- return -1;
- }
- format[end] = '\0';
- if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
- {
- if (format[end + 1])
- {
- return -1;
- }
- return 0;
- }
- format[end] = '\'';
- stringPos = ch + (end - formatPos);
- formatPos = end + 1;
- }
- case 'u':
- {
- new
- end = stringPos - 1,
- id = 0,
- bool:num = true,
- ch;
- while ((ch = string[++end]) && ch != delim)
- {
- if (num)
- {
- if ('0' <= ch <= '9')
- {
- id = (id * 10) + (ch - '0');
- }
- else
- {
- num = false;
- }
- }
- }
- if (num && IsPlayerConnected(id))
- {
- setarg(paramPos, 0, id);
- }
- else
- {
- #if !defined foreach
- #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
- #define __SSCANF_FOREACH__
- #endif
- string[end] = '\0';
- num = false;
- new
- name[MAX_PLAYER_NAME];
- id = end - stringPos;
- foreach (Player, playerid)
- {
- GetPlayerName(playerid, name, sizeof (name));
- if (!strcmp(name, string[stringPos], true, id))
- {
- setarg(paramPos, 0, playerid);
- num = true;
- break;
- }
- }
- if (!num)
- {
- setarg(paramPos, 0, INVALID_PLAYER_ID);
- }
- string[end] = ch;
- #if defined __SSCANF_FOREACH__
- #undef foreach
- #undef __SSCANF_FOREACH__
- #endif
- }
- stringPos = end;
- }
- case 's', 'z':
- {
- new
- i = 0,
- ch;
- if (format[formatPos])
- {
- while ((ch = string[stringPos++]) && ch != delim)
- {
- setarg(paramPos, i++, ch);
- }
- if (!i)
- {
- return -1;
- }
- }
- else
- {
- while ((ch = string[stringPos++]))
- {
- setarg(paramPos, i++, ch);
- }
- }
- stringPos--;
- setarg(paramPos, i, '\0');
- }
- default:
- {
- continue;
- }
- }
- while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
- {
- stringPos++;
- }
- while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
- {
- stringPos++;
- }
- paramPos++;
- }
- do
- {
- if ((delim = format[formatPos++]) > ' ')
- {
- if (delim == '\'')
- {
- while ((delim = format[formatPos++]) && delim != '\'') {}
- }
- else if (delim != 'z')
- {
- return delim;
- }
- }
- }
- while (delim > ' ');
- return 0;
- }
- stock isNumeric(const string[]) {
- new length=strlen(string);
- if (length==0) return false;
- for (new i = 0; i < length; i++) {
- if (
- (string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+') // Not a number,'+' or '-'
- || (string[i]=='-' && i!=0) // A '-' but not at first.
- || (string[i]=='+' && i!=0) // A '+' but not at first.
- ) return false;
- }
- if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
- return true;
- }
- BankSpeichern(playerid)
- {
- #if defined MySQLUSE
- format(accFormat,sizeof accFormat,"UPDATE `Bank` SET `HatKonto`='%d',`Konto`='%d',`BankPIN`='%d',`ECKarte`='%d' WHERE `Spielername`='%s'",
- Bank[playerid][sHatKonto],
- Bank[playerid][sKonto],
- Bank[playerid][sBankPIN],
- Bank[playerid][sECKarte],
- Spielername(playerid));
- mysql_query(accFormat);
- #else
- if(fexist(accFormat))
- {
- dini_IntSet(accFormat,"HatKonto",Bank[playerid][sHatKonto]);
- dini_IntSet(accFormat,"Konto",Bank[playerid][sKonto]);
- dini_IntSet(accFormat,"BankPIN",Bank[playerid][sBankPIN]);
- dini_IntSet(accFormat,"ECKarte",Bank[playerid][sECKarte]);
- }
- #endif
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement