Gutschein System geht nicht!

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Abend, ich brauche bitte eure hilfe bei einen Gutschein System ich komme da einfach nicht weiter. Beim erstellen des Gutscheindes wird er nicht richtig in der Mysql datenbank gespeichert und wen mann ihn einlösen will bekommt mann nicht das was mann kriegen sollte. Ich hoffe mir kann jemand helfen.


    Das ist das Gutschein enum
    enum gutscheinsystem
    {
    gutscheincreatet,
    gutscheincode[16],
    gutscheinname[32],
    gutscheindesc[64],
    gutscheintyp,//[1 - Level, 2 - DonatorZeit, 3 - Fahrzeuge, 4 - Respektpunkte, 5 - Geld]
    gutscheinmenge,
    gutscheinanzahl,
    }


    Damit wird unter den command /erstellen ein Gutschein erstellt
    if(strcmp(cmd,"Gutschein",true) == 0)
    {
    for(new g=1;g<MAX_GUTSCHEIN;g++)
    {
    if(Gutschein[g][gutscheincreatet] != 1)
    {
    format(query,sizeof(query),"INSERT INTO "#DATENBANKTAG"_gutscheine (id) VALUES ('%d')",g);
    mysql_function_query(MySqlConnection,query,false,"","");
    MakeGutschein[playerid] = g;
    Gutschein[g][gutscheincreatet] = 1;
    strmid(Gutschein[g][gutscheincode],"Unbekannt",0,strlen("Unbekannt"),16);
    strmid(Gutschein[g][gutscheinname],"Unbekannt",0,strlen("Unbekannt"),32);
    strmid(Gutschein[g][gutscheindesc],"Unbekannt",0,strlen("Unbekannt"),64);
    Gutschein[g][gutscheintyp] = 0;
    Gutschein[g][gutscheinmenge] = 0;
    Gutschein[g][gutscheinanzahl] = 0;
    ShowPlayerDialog(playerid,GUTSCHEIN_CREATE_CODE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 1","Gib deinen Gutscheincode ein:","Weiter","Gutschein löschen");
    return 1;
    }
    }
    return SendClientMessage(playerid,GRAU,"Die maximale Anzahl an erstellten Gutscheinen ist erreicht!");
    }


    Hier muss mann sein Gutschein Code eingeben
    case DIALOG_GUTSCHEIN:
    {
    new string[128],gutscheinnn[16],gmenge[16];
    if(response == 0)return 1;
    if(response == 1)
    {
    if(!strlen(inputtext))
    {
    ShowPlayerDialog(playerid,DIALOG_GUTSCHEIN,DIALOG_STYLE_INPUT,""#SERVERFARBE""#SERVERNAME"{FFFFFF}: Gutschein","{C9C9C9}Gib deinen Gutscheincode ein:","Absenden","Abbrechen");
    return 1;
    }
    for(new g=1;g<MAX_GUTSCHEIN;g++)
    {
    if(Gutschein[g][gutscheincreatet] == 1)
    {
    if(!strcmp(inputtext,Gutschein[g][gutscheincode],true))
    {
    switch(Gutschein[g][gutscheintyp])
    {
    case 1:{gutscheinnn="Level",gmenge="Menge:";}
    case 2:{gutscheinnn="DonatorZeit",gmenge="Menge:";}
    case 3:{gutscheinnn="Fahrzeuge",gmenge="FahrzeugID:";}
    case 4:{gutscheinnn="Respektpunkte",gmenge="Menge:";}
    case 5:{gutscheinnn="Geld",gmenge="Menge:";}
    }
    Spieler[playerid][pGutschein] = g;
    format(string,sizeof(string),"Name: %s\nCode: %s\nBeschreibung: %s\nTyp: %s\n%s %d\nAnzahl: %d",
    Gutschein[g][gutscheinname],Gutschein[g][gutscheincode],Gutschein[g][gutscheindesc],Gutschein[g][gutscheindesc],
    gutscheinnn,gmenge,Gutschein[g][gutscheinmenge],Gutschein[g][gutscheinanzahl]);
    ShowPlayerDialog(playerid,DIALOG_GUTSCHEIN_HAB,DIALOG_STYLE_MSGBOX,"Gutschein einlösen",string,"Einlösen","Abbrechen");
    }
    }
    }
    return 1;
    }
    }
    case DIALOG_GUTSCHEIN_HAB:
    {
    new string[128], query[280];
    if(response == 0){Spieler[playerid][pGutschein] = 0;return 1;}
    if(response == 1)
    {
    if(Gutschein[Spieler[playerid][pGutschein]][gutscheinanzahl] == 0)
    {
    if(Gutschein[Spieler[playerid][pGutschein]][gutscheincreatet] == 1)
    {


    format(query,sizeof(query),"DELETE FROM "#DATENBANKTAG"_gutscheine WHERE id = '%d'",Spieler[playerid][pGutschein]);
    mysql_function_query(MySqlConnection,query,false,"","");
    mysql_free_result();
    Gutschein[MakeGutschein[playerid]][gutscheincreatet] = 0;
    strmid(Gutschein[MakeGutschein[playerid]][gutscheincode],"Unbekannt",0,strlen("Unbekannt"),16);
    strmid(Gutschein[MakeGutschein[playerid]][gutscheinname],"Unbekannt",0,strlen("Unbekannt"),32);
    strmid(Gutschein[MakeGutschein[playerid]][gutscheindesc],"Unbekannt",0,strlen("Unbekannt"),64);
    Gutschein[MakeGutschein[playerid]][gutscheintyp] = 0;
    Gutschein[MakeGutschein[playerid]][gutscheinmenge] = 0;
    Gutschein[MakeGutschein[playerid]][gutscheinanzahl] = 0;
    MakeGutschein[playerid] = 0;
    Spieler[playerid][pGutschein] = 0;
    }
    SendClientMessage(playerid,GRAU,"Der Gutschein wurde aufgebraucht und gelöscht!");
    return 1;
    }
    switch(Gutschein[Spieler[playerid][pGutschein]][gutscheintyp])
    {
    case 1:
    {
    Gutschein[Spieler[playerid][pGutschein]][gutscheinanzahl]--;
    SetPlayerLevel(playerid,GetPlayerLevel(playerid) + Gutschein[Spieler[playerid][pGutschein]][gutscheinmenge]);
    format(string,sizeof(string),"~w~Level ~b~%i ~w~erreicht",GetPlayerLevel(playerid));
    GameTextForPlayer(playerid,string,5000,1);
    SetPlayerChatBubble(playerid,"Level Up",ROT,MAX_STREAM_NAME_DISTANCE,10000);
    SendClientMessage(playerid,GELB,"Du hast deinen Gutschein eingelöst");
    }
    case 2:
    {
    Gutschein[Spieler[playerid][pGutschein]][gutscheinanzahl]--;
    new time = Spieler[playerid][pPremium]-gettime();
    if(floatround(time/86400) >= 1)
    {
    new days = floatround(time/86400) + Gutschein[Spieler[playerid][pGutschein]][gutscheinmenge];
    Spieler[playerid][pPremium] = (gettime() + (60*60*24*days));
    }
    else
    {
    new days = Gutschein[Spieler[playerid][pGutschein]][gutscheinmenge];
    Spieler[playerid][pPremium] = (gettime() + (60*60*24*days));
    }
    SendClientMessage(playerid,GELB,"Du hast deinen Gutschein eingelöst");
    }
    case 3:
    {
    Gutschein[Spieler[playerid][pGutschein]][gutscheinanzahl]--;
    new Float:Posi[4];
    GetPlayerPos(playerid,Posi[0],Posi[1],Posi[2]);
    GetPlayerFacingAngle(playerid,Posi[3]);
    CreatePlayerVehicle(playerid,Gutschein[Spieler[playerid][pGutschein]][gutscheinmenge],Posi[0],Posi[1],Posi[2],Posi[3],"N/A",0);
    SendClientMessage(playerid,GELB,"Du hast deinen Gutschein eingelöst");
    }
    case 4:
    {
    Gutschein[Spieler[playerid][pGutschein]][gutscheinanzahl]--;
    Spieler[playerid][pRespektFromPayday] += Gutschein[Spieler[playerid][pGutschein]][gutscheinmenge];
    SendClientMessage(playerid,GELB,"Du hast deinen Gutschein eingelöst");
    }
    case 5:
    {
    Gutschein[Spieler[playerid][pGutschein]][gutscheinanzahl]--;
    ACMoney(playerid,Gutschein[Spieler[playerid][pGutschein]][gutscheinmenge]);
    SendClientMessage(playerid,GELB,"Du hast deinen Gutschein eingelöst");
    }
    }
    Spieler[playerid][pGutschein] = 1;
    }
    }


    Hier sind die Gutschein erstellungs schritte
    case GUTSCHEIN_CREATE_CODE:
    {
    new string[150],query[128];
    if(response == 0)
    {
    if(Gutschein[MakeGutschein[playerid]][gutscheincreatet] == 1)
    {
    //format(query,sizeof(query),"DELETE FROM "#DATENBANKTAG"_gutscheine WHERE id = '%d'",MakeGutschein[playerid]);
    format(query,sizeof(query),"INSERT INTO "#DATENBANKTAG"_gutscheine (`id`,`gutscheincode`,`gutscheinname`,`gutscheindes`,`gutscheintyp`,`gutscheinmenge`,`gutscheinzahl`) VALUES ('%s','%s','%s','%s','%s','%s','%s')",MakeGutschein[playerid],gutscheincode,gutscheinname,gutscheindesc,gutscheintyp,gutscheinmenge,gutscheinanzahl);
    mysql_function_query(MySqlConnection,query,false,"","");
    mysql_free_result();
    Gutschein[MakeGutschein[playerid]][gutscheincreatet] = 0;
    strmid(Gutschein[MakeGutschein[playerid]][gutscheincode],"Unbekannt",0,strlen("Unbekannt"),16);
    strmid(Gutschein[MakeGutschein[playerid]][gutscheinname],"Unbekannt",0,strlen("Unbekannt"),32);
    strmid(Gutschein[MakeGutschein[playerid]][gutscheindesc],"Unbekannt",0,strlen("Unbekannt"),64);
    Gutschein[MakeGutschein[playerid]][gutscheintyp] = 0;
    Gutschein[MakeGutschein[playerid]][gutscheinmenge] = 0;
    Gutschein[MakeGutschein[playerid]][gutscheinanzahl] = 0;
    MakeGutschein[playerid] = 0;
    }
    return 1;
    }
    if(response == 1)
    {
    if(!strlen(inputtext) || strlen(inputtext) > 16)
    {
    ShowPlayerDialog(playerid,GUTSCHEIN_CREATE_CODE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 1","Gib deinen Gutscheincode ein:","Weiter","Gutschein löschen");
    return SendClientMessage(playerid,GRAU,"Du musst schon einen Text eingeben./Du kannst nicht mehr als 16 zeichen benutzen.");
    }
    else
    {
    strmid(Gutschein[MakeGutschein[playerid]][gutscheincode],inputtext,0,strlen(inputtext),16);
    format(string,sizeof(string),"Gutscheinerstellung Fortschritt:\nGutscheincode: %s\nGebe nun den Gutscheinnamen ein:",Gutschein[MakeGutschein[playerid]][gutscheincode]);
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_NAME,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 2",string,"Weiter","Zurück");
    return 1;
    }
    }
    }
    case GUTSCHEIN_DIALOG_NAME:
    {
    new string[256];
    if(response == 0)
    {
    format(string,sizeof(string),"Gutscheinerstellung Fortschritt:\nGutscheincode: %s\nGebe nun den Gutscheinnamen ein:",Gutschein[MakeGutschein[playerid]][gutscheincode]);
    ShowPlayerDialog(playerid,GUTSCHEIN_CREATE_CODE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 1","Gib deinen Gutscheincode ein:","Weiter","Gutschein löschen");
    return 1;
    }
    if(response == 1)
    {
    if(!strlen(inputtext) || strlen(inputtext) > 32)
    {
    format(string,sizeof(string),"Gutscheinerstellung Fortschritt:\nGutscheincode: %s\nGebe nun den Gutscheinnamen ein:",Gutschein[MakeGutschein[playerid]][gutscheincode]);
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_NAME,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 2",string,"Weiter","Zurück");
    return SendClientMessage(playerid,GRAU,"Du musst schon einen Text eingeben./Du kannst nicht mehr als 32 zeichen benutzen.");
    }
    else
    {
    strmid(Gutschein[MakeGutschein[playerid]][gutscheinname],inputtext,0,strlen(inputtext),64);
    format(string,sizeof(string),"Gutscheinerstellung Fortschritt:\nGutscheincode: %s\nGutscheinname: %s\nGebe nun die Gutscheinbeschreibung ein:",Gutschein[MakeGutschein[playerid]][gutscheincode],Gutschein[MakeGutschein[playerid]][gutscheinname]);
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_DESC,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 3",string,"Weiter","Zurück");
    return 1;
    }
    }
    }
    case GUTSCHEIN_DIALOG_DESC:
    {
    new string[256];
    if(response == 0)
    {
    format(string,sizeof(string),"Gutscheinerstellung Fortschritt:\nGutscheincode: %s\nGebe nun den Gutscheinnamen ein:",Gutschein[MakeGutschein[playerid]][gutscheincode]);
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_NAME,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 2",string,"Weiter","Zurück");
    return 1;
    }
    if(response == 1)
    {
    if(!strlen(inputtext) || strlen(inputtext) > 64)
    {
    format(string,sizeof(string),"Gutscheinerstellung Fortschritt:\nGutscheincode: %s\nGutscheinname: %s\nGebe nun die Gutscheinbeschreibung ein:",Gutschein[MakeGutschein[playerid]][gutscheincode],Gutschein[MakeGutschein[playerid]][gutscheinname]);
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_DESC,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 3",string,"Weiter","Zurück");
    return SendClientMessage(playerid,GRAU,"Du musst schon einen Text eingeben./Du kannst nicht mehr als 64 zeichen benutzen.");
    }
    else
    {
    strmid(Gutschein[MakeGutschein[playerid]][gutscheindesc],inputtext,0,strlen(inputtext),64);
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_TYP,DIALOG_STYLE_LIST,"Gutscheinerstellung Schritt 4","Level\nDonartorZeit\nFahrzeug\nRespektpunkte\nGeld","Weiter","Zurück");
    return 1;
    }
    }
    }
    case GUTSCHEIN_DIALOG_TYP:
    {
    new string[256];
    if(response == 0)
    {
    format(string,sizeof(string),"Gutscheinerstellung Fortschritt:\nGutscheincode: %s\nGutscheinname: %s\nGebe nun die Gutscheinbeschreibung ein:",Gutschein[MakeGutschein[playerid]][gutscheincode],Gutschein[MakeGutschein[playerid]][gutscheinname]);
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_DESC,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 3",string,"Weiter","Zurück");
    return 1;
    }
    if(response == 1)
    {
    switch(listitem)
    {
    case 0:
    {//Level
    Gutschein[MakeGutschein[playerid]][gutscheintyp] = 1;
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel Level soll man bei diesem Gutschein erhalten:","Weiter","Zurück");
    return 1;
    }
    case 1:
    {//DonatorZeit
    Gutschein[MakeGutschein[playerid]][gutscheintyp] = 2;
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel PremiumZeit soll man bei diesem Gutschein erhalten:","Weiter","Zurück");
    return 1;
    }
    case 2:
    {//Fahrzeuge
    Gutschein[MakeGutschein[playerid]][gutscheintyp] = 3;
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Welches Fahrzeug soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    case 3:
    {//Respektpunkte
    Gutschein[MakeGutschein[playerid]][gutscheintyp] = 4;
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viele Respektpunkte soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    case 4:
    {//Geld
    Gutschein[MakeGutschein[playerid]][gutscheintyp] = 5;
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel Geld soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    }
    }
    }
    case GUTSCHEIN_DIALOG_MENGE:
    {
    new anzahl = strval(inputtext);
    if(response == 0)
    {
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_TYP,DIALOG_STYLE_LIST,"Gutscheinerstellung Schritt 4","Level\nDonartorZeit\nFahrzeug\nRespektpunkte\nGeld","Weiter","Zurück");
    return 1;
    }
    if(response == 1)
    {
    if(!strlen(inputtext))
    {
    switch(Gutschein[MakeGutschein[playerid]][gutscheintyp])
    {
    case 1:
    {//Level
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel Level soll man bei diesem Gutschein erhalten:","Weiter","Zurück");
    return 1;
    }
    case 2:
    {//DonatorZeit
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel PremiumZeit soll man bei diesem Gutschein erhalten:","Weiter","Zurück");
    return 1;
    }
    case 3:
    {//Fahrzeuge
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Welches Fahrzeug soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    case 4:
    {//Respektpunkte
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viele Respektpunkte soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    case 5:
    {//Geld
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel Geld soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    }
    return 1;
    }
    if(!IsNumeric(inputtext))
    {
    switch(Gutschein[MakeGutschein[playerid]][gutscheintyp])
    {
    case 1:
    {//Level
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel Level soll man bei diesem Gutschein erhalten:","Weiter","Zurück");
    return 1;
    }
    case 2:
    {//DonatorZeit
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel PremiumZeit soll man bei diesem Gutschein erhalten:","Weiter","Zurück");
    return 1;
    }
    case 3:
    {//Fahrzeuge
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Welches Fahrzeug soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    case 4:
    {//Respektpunkte
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viele Respektpunkte soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    case 5:
    {//Geld
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel Geld soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    }
    return SendClientMessage(playerid,GRAU,"Gebe nur Zahlen ein!");
    }
    else
    {
    if(anzahl <= 0)
    {
    switch(Gutschein[MakeGutschein[playerid]][gutscheintyp])
    {
    case 1:
    {//Level
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel Level soll man bei diesem Gutschein erhalten:","Weiter","Zurück");
    return 1;
    }
    case 2:
    {//DonatorZeit
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel PremiumZeit soll man bei diesem Gutschein erhalten:","Weiter","Zurück");
    return 1;
    }
    case 3:
    {//Fahrzeuge
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Welches Fahrzeug soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    case 4:
    {//Respektpunkte
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viele Respektpunkte soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    case 5:
    {//Geld
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel Geld soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    }
    return SendClientMessage(playerid,GRAU,"Die Menge muss > 0!");
    }
    if((Gutschein[MakeGutschein[playerid]][gutscheintyp] == 3) && (anzahl<400||anzahl>611))
    {
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Welches Fahrzeug soll man erhalten:","Weiter","Zurück");
    return SendClientMessage(playerid,WRONGCMD,"Model 400-611!!");
    }
    Gutschein[MakeGutschein[playerid]][gutscheinmenge] = anzahl;
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_ANZAHL,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 6","Wie oft kann dieser Gutschein verwendet werden:","Weiter","Zurück");
    return 1;
    }
    }
    }
    case GUTSCHEIN_DIALOG_ANZAHL:
    {
    new anzahl = strval(inputtext);
    if(response == 0)
    {
    switch(Gutschein[MakeGutschein[playerid]][gutscheintyp])
    {
    case 1:
    {//Level
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel Level soll man bei diesem Gutschein erhalten:","Weiter","Zurück");
    return 1;
    }
    case 2:
    {//DonatorZeit
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel PremiumZeit soll man bei diesem Gutschein erhalten:","Weiter","Zurück");
    return 1;
    }
    case 3:
    {//Fahrzeuge
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Welches Fahrzeug soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    case 4:
    {//Respektpunkte
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viele Respektpunkte soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    case 5:
    {//Geld
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel Geld soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    }
    return 1;
    }
    if(response == 1)
    {
    if(!strlen(inputtext))
    {
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_ANZAHL,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 6","Wie oft kann dieser Gutschein verwendet werden:","Weiter","Zurück");
    return 1;
    }
    if(!IsNumeric(inputtext))
    {
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_ANZAHL,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 6","Wie oft kann dieser Gutschein verwendet werden:","Weiter","Zurück");
    return SendClientMessage(playerid,GRAU,"Gebe nur Zahlen ein!");
    }
    else if(anzahl <= 0)
    {
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_ANZAHL,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 6","Wie oft kann dieser Gutschein verwendet werden:","Weiter","Zurück");
    return SendClientMessage(playerid,GRAU,"Anzahl muss > 0 sein!");
    }
    else
    {
    SendClientMessage(playerid,GELB,"Gutschein erfolgreich erstellt!");
    MakeGutschein[playerid] = 0;
    Gutschein[MakeGutschein[playerid]][gutscheinanzahl] = anzahl;
    }
    return 1;
    }
    }


    Hier wird es gepseichert
    while(gutscheinn<MAX_GUTSCHEIN && Gutschein[gutscheinn][gutscheincreatet] != 0)
    {
    format(query,sizeof(query),"UPDATE "#DATENBANKTAG"_gutscheine SET gutscheincode='%s',gutscheinname='%s',gutscheindesc='%s',gutscheintyp='%d',gutscheinmenge='%d',gutscheinanzahl='%d' WHERE id='%d'",
    Gutschein[gutscheinn][gutscheincode],Gutschein[gutscheinn][gutscheinname],Gutschein[gutscheinn][gutscheindesc],Gutschein[gutscheinn][gutscheintyp],Gutschein[gutscheinn][gutscheinmenge],Gutschein[gutscheinn][gutscheinanzahl],gutscheinn);
    strcat(mainquery,query);
    mysql_function_query(MySqlConnection,mainquery,false,"","");
    strdel(mainquery,0,sizeof(mainquery));
    strdel(query,0,sizeof(query));
    gutscheinn++;
    }

  • In OnDialogResponse bei GUTSCHEIN_CREATE_CODE ist bei response == 0 ein INSERT INTO. Hier sollte doch der erstellte Gutschein in der Datenbank doch wieder gelöscht werden. (Bei /gutschein wird ja bereits einer erstellt)


    mysql_free_result(); ist unnötig nach Queries die kein SELECT beinhalten.



    Wieso möchtest du alle Gutscheine aktualisieren? Es reicht doch nur den zu aktualisieren, den man erstellt oder bearbeitet hat.


    Ich würde also empfehlen, dein while Code-Ausschnitt zu löschen und den Dialog GUTSCHEIN_DIALOG_ANZAHL folgendermaßen umzuändern:



    case GUTSCHEIN_DIALOG_ANZAHL:
    {
    new anzahl = strval(inputtext);
    if(response == 0)
    {
    switch(Gutschein[MakeGutschein[playerid]][gutscheintyp])
    {
    case 1:
    {//Level
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel Level soll man bei diesem Gutschein erhalten:","Weiter","Zurück");
    return 1;
    }
    case 2:
    {//DonatorZeit
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel PremiumZeit soll man bei diesem Gutschein erhalten:","Weiter","Zurück");
    return 1;
    }
    case 3:
    {//Fahrzeuge
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Welches Fahrzeug soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    case 4:
    {//Respektpunkte
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viele Respektpunkte soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    case 5:
    {//Geld
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_MENGE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 5","Wie viel Geld soll man erhalten:","Weiter","Zurück");
    return 1;
    }
    }
    return 1;
    }
    if(response == 1)
    {
    new query[256], gutscheinn = MakeGutschein[playerid];
    if(!strlen(inputtext))
    {
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_ANZAHL,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 6","Wie oft kann dieser Gutschein verwendet werden:","Weiter","Zurück");
    return 1;
    }
    if(!IsNumeric(inputtext))
    {
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_ANZAHL,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 6","Wie oft kann dieser Gutschein verwendet werden:","Weiter","Zurück");
    return SendClientMessage(playerid,GRAU,"Gebe nur Zahlen ein!");
    }
    else if(anzahl <= 0)
    {
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_ANZAHL,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 6","Wie oft kann dieser Gutschein verwendet werden:","Weiter","Zurück");
    return SendClientMessage(playerid,GRAU,"Anzahl muss > 0 sein!");
    }
    else
    {
    SendClientMessage(playerid,GELB,"Gutschein erfolgreich erstellt!");
    MakeGutschein[playerid] = 0;
    // Nebenbei war hier auch vorhin ein Fehler, dass du die Variable MakeGutschein auf 0 zurückgesetzt hast und erst
    // danach die Anzahl gesetzt hast.
    Gutschein[gutscheinn][gutscheinanzahl] = anzahl;
    format(query,sizeof(query),"UPDATE "#DATENBANKTAG"_gutscheine SET gutscheincode='%s',gutscheinname='%s',gutscheindesc='%s',gutscheintyp='%d',gutscheinmenge='%d',gutscheinanzahl='%d' WHERE id='%d'", Gutschein[gutscheinn][gutscheincode],Gutschein[gutscheinn][gutscheinname],Gutschein[gutscheinn][gutscheindesc],Gutschein[gutscheinn][gutscheintyp],Gutschein[gutscheinn][gutscheinmenge],Gutschein[gutscheinn][gutscheinanzahl],gutscheinn);
    printf("GUTSCHEIN-DEBUG | %s", query); // Zu Debugzwecken
    mysql_function_query(MySqlConnection,query,false,"","");
    }
    return 1;
    }
    }


    Wenn das Abspeichern funktioniert, können wir uns zum Laden vorarbeiten :P Aber bitte nach deinen Aktualisierungen einen Gutschein InGame erstellen und dann aus den Server-Logs die Zeile mit GUTSCHEIN-DEBUG aussuchen, Danke

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

    Einmal editiert, zuletzt von Templer () aus folgendem Grund: Kleiner Kopierfehler ausgemerzt.

  • Sieht gut aus. Also würd ich sagen, dass du damit zufrieden bist, oder? ^^ Stehen die Werte auch so in der Datenbank?


    Wenn ja: Kannst du den Gutschein nach einem Neustart auch nützen? Wenn nicht, dann bitte den Code, wo du die Gutscheine einliest. Aber ich denke das wird schon schief gehen.

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Oh entschuldige, ein dummer Fehler von mir.


    es liegt an der Zeile im Dialog, wo der Gutschein aktualisiert wird mit UPDATE:
    mysql_function_query(MySqlConnection,mainquery,false,"","");


    umändern zu


    mysql_function_query(MySqlConnection,query,false,"","");


    Sry, bitte nochmals testen.


    //EDIT: Mir fällt auch zu spät auf, dass dein Spaltenname in der MySQL Tabelle falsch is mit gutscheindesc (In der Datenbankspalte steht nur gutscheindes, oder ist die Anzeige verkürzt?)

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Ich glaube das ist normal. Aber leider wird es immer noch nicht richtig gespeichert.


    //EDIT: Liegt es vielleicht daran?


    case GUTSCHEIN_CREATE_CODE:
    {
    new string[150],query[128];
    if(response == 0)
    {
    if(Gutschein[MakeGutschein[playerid]][gutscheincreatet] == 1)
    {
    //format(query,sizeof(query),"DELETE FROM "#DATENBANKTAG"_gutscheine WHERE id = '%d'",MakeGutschein[playerid]);
    format(query,sizeof(query),"INSERT INTO "#DATENBANKTAG"_gutscheine (`id`,`gutscheincode`,`gutscheinname`,`gutscheindes`,`gutscheintyp`,`gutscheinmenge`,`gutscheinzahl`) VALUES ('%s','%s','%s','%s','%s','%s','%s')",MakeGutschein[playerid]);
    mysql_function_query(MySqlConnection,query,false,"","");
    mysql_free_result();
    Gutschein[MakeGutschein[playerid]][gutscheincreatet] = 0;
    strmid(Gutschein[MakeGutschein[playerid]][gutscheincode],"Unbekannt",0,strlen("Unbekannt"),16);
    strmid(Gutschein[MakeGutschein[playerid]][gutscheinname],"Unbekannt",0,strlen("Unbekannt"),32);
    strmid(Gutschein[MakeGutschein[playerid]][gutscheindesc],"Unbekannt",0,strlen("Unbekannt"),64);
    Gutschein[MakeGutschein[playerid]][gutscheintyp] = 0;
    Gutschein[MakeGutschein[playerid]][gutscheinmenge] = 0;
    Gutschein[MakeGutschein[playerid]][gutscheinanzahl] = 0;
    MakeGutschein[playerid] = 0;
    }
    return 1;
    }
    if(response == 1)
    {
    if(!strlen(inputtext) || strlen(inputtext) > 16)
    {
    ShowPlayerDialog(playerid,GUTSCHEIN_CREATE_CODE,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 1","Gib deinen Gutscheincode ein:","Weiter","Gutschein löschen");
    return SendClientMessage(playerid,GRAU,"Du musst schon einen Text eingeben./Du kannst nicht mehr als 16 zeichen benutzen.");
    }
    else
    {
    strmid(Gutschein[MakeGutschein[playerid]][gutscheincode],inputtext,0,strlen(inputtext),16);
    format(string,sizeof(string),"Gutscheinerstellung Fortschritt:\nGutscheincode: %s\nGebe nun den Gutscheinnamen ein:",Gutschein[MakeGutschein[playerid]][gutscheincode]);
    ShowPlayerDialog(playerid,GUTSCHEIN_DIALOG_NAME,DIALOG_STYLE_INPUT,"Gutscheinerstellung Schritt 2",string,"Weiter","Zurück");
    return 1;
    }
    }
    }

  • Füg mal den Query manuell in deine SQL-Tabelle ein, ob ein Fehler kommt:


    UPDATE pRP_gutscheine SET gutscheincode='1810',gutscheinname='Test',gutscheindesc='Test',gutscheintyp='1',gutscheinmenge='1',gutscheinanzahl='1' WHERE id='1'


    wenn möglich den Query beheben und im Script aktualisieren.


    Leider muss ich nur jetzt schon gehen. Hoffe jemand anders kann dir jetzt helfen, sonst kann ich erst morgen Abend wieder.


    Lg


    //EDIT: ich sagte schon vorher, dass bei GUTSCHEIN_CREATE_CODE das INSERT INTO fehl ist. Das DELETE FROM war schon richtig.

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Beitrag von Mister.Anonym ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.