Hallo zusammen!
Da ich schon viele Fragen zu einem Bank Script gesehen habe habe ich mich mal hingesetzt und ein Tutorial gemacht.
In diesem Tutorial zeige ich euch wir ihr ein grund Bank script machen könnt.
Später werde ich euch auch noch ein TUT machen zu Überweisen und so. Aber jetzt erst mal das.
Also was braucht ihr?
1. Login / Register System von Mr. Monat.
2. Das ihr Daten mit SetPVarInt Speichern / Laden.
3. En bisschen erfahrung mit pawno.
Am anfang gehen wir noch in unser scirpt und machen bei „stock Register“
Quellcode |
|
1 2 |
dini_IntSet(Spielerdatei, "Bank", 0); SetPVarInt(playerid, "Bank", 20000); |
Dann zu „stock LoadAccount“:
Quellcode |
|
1 |
SetPVarInt(playerid, "Bank", dini_Int(Spielerdatei, "Bank")); |
Und zum dann noch bei „stock SaveAccount“:
Quellcode |
|
1 |
dini_IntSet(Spielerdatei, "Bank", GetPVarInt(playerid,"Bank")); |
So Das wars im Script und jetzt mal mit euerm Script und jetzt mache ich das Bank system in einem FilterscriptDazu startet ihr pawno und macht ein neues script.
Dan könnt ihr erst mal alles auser „public OnPlayerCommandText“ und „public OnDialogResponse“ löschen.
Bei „public OnFilterScriptInit“ könnt ihr noch reinschreiben was passieren soll, wenn das Filtersciprt geladen wird.
Also was in der Server CMD kommen soll.
Aber jetzt zum Script:
Als erstes müssen wird mal ein paar Dialogen definen.
Quellcode |
|
1 2 3 4 |
#define DIALOG_BANK 3 #define DIALOG_BANK_AUSZAHLEN 4 #define DIALOG_BANK_EINZAHLEN 5 #define DIALOG_BANK_KONTOSTAND 6 |
Dann können wir auch noch zwei Farbei definiren. (Die Farbcodes könnt ihr natürlich selber bestimmen!)
Quellcode |
|
1 2 |
#define COLOR_GREEN 0x33AA33AA #define COLOR_RED 0xAA3333AA |
So jetzt haben wir die Dialoge und dir Farben dir wir brauchen.
Jetzt gehen wir zu „public OnPlayerCommandText“ und machen folgendes.
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
public OnPlayerCommandText(playerid, cmdtext[]) { if(strcmp("/atm", cmdtext, true) == 0) //Wenn der Spieler /atm eingibt... { if(IsPlayerInRangeOfPoint(playerid,2,361.8940,173.5432,1008.3828)) //...und er an diesem Ort ist. (Den müsst ihr halt auf euren gewünschten ort ändern!)... { ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Bank", "Einzahlen\nAuszahlen\nÜberweisen\nKontostand", "Auswählen", "Abbrechen"); //...wird ihm der Bank Dialog gezeigt. return 1; } } return 0; } |
So jetzt haben wir gemacht des sobalt der Player „/atm“ eingibt und an dem gewünschten Ort ist, wird ihm der oben difinirte Dialog gezeigt.
Nun müssen wir zu „public OnDialogResponse“ und dort das machen:
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
if(dialogid == DIALOG_BANK) //Wenn der Dialog die ID "DIALOG_BANK" hat passiert das. { if(response == 0) { return 1; } //Wenn er den zweiten Button drückt (abbrechen) soll nichts passieren. if(response == 1) //Wenn er den Button eins drückt soll das Passieren { if(listitem == 0) //Wenn er das erste ausgewählt hat (Einzahlen), passiert das... [Achtung!!: Bei Pawno fängt es mit der Zahl 0 an nicht mit 1 !!] { ShowPlayerDialog(playerid, DIALOG_BANK_EINZAHLEN, DIALOG_STYLE_INPUT, "Einzahlen", "Bitte gebe den gewünschten Betrag ein.", "Einzahlen", "Verlassen"); //Den Spieler wird der Dialog "DIALOG_EINZAHLEN" gezeigt } if(listitem == 1)//Wenn er das zweite ausgewählt hat (Auszahlen), passiert das... { ShowPlayerDialog(playerid, DIALOG_BANK_AUSZAHLEN, DIALOG_STYLE_INPUT, "Auszahlen", "Bitte gebe den gewünschten Betrag ein.", "Auszahlen", "Verlassen"); //Den Spieler wird der Dialog "DIALOG_AUSZAHLEN" gezeigt } if(listitem == 3)//Wenn er das dritte ausgewählt hat (Kontostand), passiert das... { new string[50]; new pBank = GetPVarInt(playerid, "Bank"); //Die Variable pBank liest die Menge des Geldes aus der PlayerVariable "Bank" format(string, sizeof(string), "Ihr aktueller Kontostand beträgt $%d", pBank);//Hier kommt der Text hin der dann in dem Dialog kommen soll(Tipp:zum anzeigen von Namen benutzt: %s | für Zahlen: %d) ShowPlayerDialog(playerid, DIALOG_BANK_KONTOSTAND, DIALOG_STYLE_MSGBOX, "Kontostand", string,"Beenden", ""); //Dem Player wir das Geld auf seiner Bank in einem Dialog gezeigt. } } } |
So nun machen wir die Funktion Einzahlen und wieder unter „public OnDialogeResponse“.
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
if(dialogid == DIALOG_BANK_EINZAHLEN)// Wenn die Dialog id "DIALOG_BANK_EINZAHLEN" ist passiert das. { if(!strlen(inputtext)) //Wenn er nichts in den Inputtext (Textboxt) schreibt,... { ShowPlayerDialog(playerid, DIALOG_BANK_EINZAHLEN, DIALOG_STYLE_INPUT, "Einzahlen", "Bitte gebe den gewünschten Betrag ein.", "Einzahlen", "Verlassen"); //Wird ihm der Dialog erneut gezeigt. return 1; } else //Wenn der Inputtext nicht leer ist,... { new geld = strval(inputtext); //Erstellt eine neue Variable (geld) und liest diese aus dem Inputtext (Textbox). if(GetPlayerMoney(playerid) >= geld)//Wenn das Geld das der player hat mehr ist wie das das er einzahlen will passiert das... { GivePlayerMoney(playerid, -geld); //Zieht dem Spieler das Geld ab das er in den Inputtext geschrieben hat und... SetPVarInt(playerid, "Bank", GetPVarInt(playerid, "Bank")+geld); //... erhöt die Variable geld auf den Betragt. return 1; } else //Wenn der Spieler nicht soviel Geld hat wie er in die Textbox geschrieben hat bekommt er eine Meldung, das er nicht soviel geld bei sich hat! { SendClientMessage(playerid,COLOR_RED, "Soviel Geld hast du nicht bei dir!"); return 1; } } } |
Jetzt haben wir die Funktion Einzahlen aber jetzt fehlt und natürlich noch das Auszahlen.
Dazu gehen wir erst mal wieder zu „public OnDialogeResponse“ und jetzt machen wir das:
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
if(dialogid == DIALOG_BANK_AUSZAHLEN) //Wenn die Dialog id "DIALOG_AUSZAHLEN" ist passiert das... { if(!strlen(inputtext)) //Wenn die Textbox leer ist kommt diese Meldung... { ShowPlayerDialog(playerid, DIALOG_BANK_AUSZAHLEN, DIALOG_STYLE_INPUT, "Auszahlen", "Bitte gebe den gewünschten Betrag ein.", "Auszahlen", "Verlassen"); return 1; } else//Wenn die Textbox nicht leer ist, passier folgendes... { new geld = strval(inputtext); //Erstellt wieder eine Varialbe (geld) und liest diese aus dem Inputtext (Textbox) aus. if(GetPVarInt(playerid, "Bank") >= geld) //Wenn einen kleineren oder den gleichen betrg in den inputtext schreibt wie er auf der Bank hat(Die "Bank" variable ist sein Konto!). { GivePlayerMoney(playerid, geld); //...bekommt der Player das eingegebene Geld und... SetPVarInt(playerid, "Bank", GetPVarInt(playerid, "Bank") -geld);//... das geld wir von der Variable, also seinem Konto abgezogen return 1; } else //Wenn die Variable Bank(Sein Guthaben auf der Bank) geringer ist als die Zahl im Inputtext,... { SendClientMessage(playerid,COLOR_RED, "Soviel Geld hast du nicht auf der Bank!"); return 1; } } } return 0; } |
Und schon haben wir auch den Befehl Auszahlen.