Denke ich mal eher, weil er nirgends den Wert von gAktion setzt.
Na und? Es gäbe doch noch viel mehr Möglichkeiten wo da was crasht, du weißt ja nicht, wie er das alles deklariert hat 
Warum sollte er ihn so schreiben? 
Wenn er Code sparen, übersichtlicher und fehler vermeidender schreiben will, dann so:
//Extra für die Funktion (ganz nach oben schreben in dein Skript):
#define SCME(%0,%1) format(tmp,sizeof(tmp),%0,%1),SendClientMessage(playerid,COLOR_YELLOW,tmp)
if(dialogid == DIALOG_GUTSCHEIN_ERSTELLEN)
{
if(!response) return 1;
new name[MAX_PLAYER_NAME], tmp[124+MAX_PLAYER_NAME], rand = random(999998)+1;
GetPlayerName(playerid, name, sizeof(name));
for(new g; g <MAX_GUTSCHEINE; g++) {
if(Gutschein[g][gCode]) continue;
Gutschein[g][gCode] = rand;
break;
}
switch(listitem) {
case 0: SCME("Du hast einen Gutschen für 5 Respektpunkte erstellt. Der Gutscheincode ist: %d", rand);
case 1: SCME("Du hast einen Gutschen für 1 Level erstellt. Der Gutscheincode ist: %d", rand);
case 2: SCME("Du hast einen Gutschen für 5 Millionen erstellt. Der Gutscheincode ist: %d", rand);
case 3: SCME("Du hast einen Gutschen für 300 Coins erstellt. Der Gutscheincode ist: %d", rand);
}
SendClientMessage(playerid, COLOR_WHITE, "Wichtig: Schreibe dir diesen Code nun auf. Er ist wichtig für andere Spieler!");
format(tmp, sizeof(tmp), "INSERT INTO `Gutscheine` (`gErsteller`, `gCode`, `gUsed`, `gUsedBy`, `gAktion`) VALUES ('%s', '%d', '0','Niemand', '%d')", name, rand, listitem+1);
mysql_query(tmp);
}
mfg. 