also mit Dini das abspeichern des Bankkontos funktioniert nicht ganz .
Loggt man sich aus und dan wieder ein ist das Konto auf den Startbonus gestellt in diesem Fall 1000$
Ich habe das MYSQL - System da raus gemacht kann es möglich sein das es daran liegt ?
Ich poste mal wie es bei mir aussieht:
#include <a_samp>
#include <Dini>
#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
new Ueberweiser[MAX_PLAYERS] ={-1,...};
new accFormat[128];
forward IsAtATM(playerid);
enum BankInfo
{
sHatKonto,
sKonto,
sBankPIN,
}
new Bank[MAX_PLAYERS][BankInfo];
public OnFilterScriptInit()
{
//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
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);
}
}
return 1;
}
public OnPlayerConnect(playerid)
{
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");
}
else
{
dini_Create(accFormat);
dini_IntSet(accFormat, "HatKonto", 0);
dini_IntSet(accFormat, "Konto", 0);
dini_IntSet(accFormat, "BankPIN", 0);
}
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, "/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))
{
SPD(playerid,DIALOG_PIN,DIALOG_STYLE_PASSWORD,"Los Santos Bank","Bitte geben sie ihren PIN ein:","Bestätigen","Abbrechen");
}
else
{
return SCM(playerid,COLOR_WHITE,"Du bist an keinem Automaten.");
}
}
return 1;
}
return 0;
}
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");
}
}
}
}
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);
}
}
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
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(fexist(accFormat))
{
dini_IntSet(accFormat,"HatKonto",Bank[playerid][sHatKonto]);
dini_IntSet(accFormat,"Konto",Bank[playerid][sKonto]);
dini_IntSet(accFormat,"BankPIN",Bank[playerid][sBankPIN]);
}
}
ich habe das EC - Karten System und das MYSQL System rausgenommen und es Speiert mir nict mehr ab
liegt es daran das ich es rausgenommen habe ?