Car Slot System Funktioniert nicht ganz

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
  • Nicht ganz.
    Habe dir mal eine stelle makiert, dort wo er stehen bleibt.
    ocmd:slots(playerid,params[])
    {
    new string[250];
    for(new i=0; i<sizeof(cInfo); i++)
    {
    print("if(!strcmp(cInfo[i][besitzer], SpielerName(playerid)))");
    if(!strcmp(cInfo[i][besitzer], SpielerName(playerid)))
    {
    new carID = cInfo[i][c_slot];
    new mID = GetVehicleModel(cInfo[carID][model]);
    print("mID >0");
    if(mID >0) //Bis hier hin geht der print, danach geht er nicht weiter.
    {
    printf("%s",VehicleName[mID-400]);
    format(string,250,"%s",VehicleName[mID-400]);
    print("Abgesendet");
    SCM(playerid,COLOR_GRAU,string);
    }
    }
    }
    return 1;
    }

  • Die Meldung im Log dürfte aber nicht mehr kommen.
    Ändere mal noch
    new mID = GetVehicleModel(cInfo[carID][model]);
    Zu
    new mID = GetVehicleModel(cInfo[i][model]);


    Du änderst hier den Index, ich denke eher nicht, dass das richtig ist, da du ja auf das Modell zugreifen willst, und das bekommst du über den gleichen Index wie den Besitzer, sonst stimmen die nicht überein.

  • Dann existiert entweder das Fahrzeug nicht, oder es wird beim Erstellen nicht richtig in die Variable geschrieben.
    Da Modell 0 ist, ist in der Variable ein Wert eines Fahrzeugs, das nicht existiert.


    Poste den Code mit dem die Fahrzeuge erstellt werden.

  • CreatePlayerCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r,cl1,cl2,vsteuern)
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    new engine, lights, alarm, boonet, boot, objective;
    if(cInfo[i][id_x]!=0)continue;
    strmid(cInfo[i][besitzer],SpielerName(playerid),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    cInfo[i][c_x]=x;
    cInfo[i][c_y]=y;
    cInfo[i][c_z]=z;
    cInfo[i][c_r]=r;
    cInfo[i][clr1]=cl1;
    cInfo[i][clr2]=cl2;
    cInfo[i][model]=modelid;
    cInfo[i][csteuern]=vsteuern;
    cInfo[i][c_lock] = 1;
    cInfo[i][c_schaden] = 1000.0;
    cInfo[i][id_x]=CreateVehicle(modelid,x,y,z,r,cl1,cl2,-1);
    gas[cInfo[i][id_x]] = 100;
    SetVehicleParamsEx(cInfo[i][id_x], engine, lights, alarm, cInfo[i][c_lock], boonet, boot, objective);
    SaveCarToDB(playerid,i);
    return 1;
    }
    return 1;
    }

  • Wie würde ich das jetzt am besten machen?
    Das alle fahrzeuge aufgelistet werden im Dialog?
    Bis dahin habe ich das geschafft, mehr ideen habe ich leider nicht mehr, weil mir auch nichts mehr einfällt wie ich das jetzt am besten machen könnte.
    if(dialogid == DIALOG_PRIVATFAHRZEUG)
    {
    if(response)
    {
    new string[250];
    switch(listitem)
    {
    case 0:
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(!strcmp(cInfo[i][besitzer], SpielerName(playerid)))
    {
    new mID = GetVehicleModel(cInfo[i][id_x]);
    if(mID !=0)
    {
    format(string,250,"SLOT 1: %s\nSLOT 2: %s\nSLOT: 3: %s",VehicleName[mID-400],VehicleName[mID-400],VehicleName[mID-400]);
    ShowPlayerDialog(playerid,DIALOG_PFSLOTS,DIALOG_STYLE_LIST,"Fahrzeuge",string,"Zurück","Abbrechen");
    }
    }
    }
    }
    }
    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Das kannst du so schreiben:


    if(dialogid == DIALOG_PRIVATFAHRZEUG)
    {
    if(response)
    {
    new string[250], slot;
    switch(listitem)
    {
    case 0:
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(!strcmp(cInfo[i][besitzer], SpielerName(playerid)))
    {
    new mID = GetVehicleModel(cInfo[i][id_x]);
    if(mID >= 400 && mID <= 611)
    {
    slot++;
    format(string,sizeof(string),"%sSLOT %d: %s\n",string,slot,VehicleName[mID-400]);
    }
    }
    }
    if(!strlen(string)) format(string,sizeof(string),"Du hast noch kein Fahrzeug.");
    ShowPlayerDialog(playerid,DIALOG_PFSLOTS,DIALOG_STYLE_LIST,"Fahrzeuge",string,"Zurück","Abbrechen");
    }
    }
    }
    return 1;
    }

  • Jeffry:


    Hier ist der code mit der ATM-list.
    Sobald der Spieler dann auf ein ATM klickt, soll er ein Checkpoint kriegen.
    Die ATM's und die Kordinaten sind in der Datenbank vorhanden.


    ocmd:atmlist(playerid,params[])
    {
    if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
    if(pInfo[playerid][pJob] !=3)return SCM(playerid,COLOR_GRAU,"Du bist kein Geldlieferant.");
    //if(GetPVarInt(playerid,"Job_Duty") == 0)return SCM(playerid,COLOR_GRAU,"Du bist nicht im Dienst.");
    new string[350];
    for(new i=0; i<sizeof(amInfo); i++)
    {
    if(!amInfo[i][ad_id])continue;
    format(string,350,"%s\n%i: %i/30.000$",string,amInfo[i][ad_id],amInfo[i][a_geld]);
    ShowPlayerDialog(playerid,DIALOG_ATMLIST,DIALOG_STYLE_LIST,"ATM Liste",string,"Makieren","Abbrechen");
    return 1;
    }
    return SCM(playerid,COLOR_GRAU,"Es sind keine ATM's vorhanden!");
    }


    Bin bei OnDialogResponse nicht mehr weiter gekommen, weil ich nicht weiß wie ich das mit dem case machen soll.
    hatte schon probiert mit case 1 .. 50:{//code}.
    Das ging aber auch nicht.


    if(dialogid == DIALOG_ATMLIST)
    {
    for(new i=0; i<sizeof(amInfo); i++)
    {
    if(!amInfo[i][ad_id])continue;
    {
    i = amInfo[i][ad_id];
    printf("%i",i);
    printf("SetPlayerCheckpoint(playerid, amInfo[%i][a_x],amInfo[%i][a_y],amInfo[%i][a_z],3)",i,i,i);
    SetPlayerCheckpoint(playerid, amInfo[i][a_x],amInfo[i][a_y],amInfo[i][a_z],3);
    }
    }
    return 1;
    }
    Bei dem Print kam immer das zweite raus also er hat es mir so gelistet.
    Es gibt 18 ATM's und das kam im Print raus:


    Spoiler anzeigen
    [00:07:02] SetPlayerCheckpoint(playerid, amInfo[1][a_x],amInfo[1][a_y],amInfo[1][a_z],3)
    [00:07:02] 3
    [00:07:02] SetPlayerCheckpoint(playerid, amInfo[3][a_x],amInfo[3][a_y],amInfo[3][a_z],3)
    [00:07:02] 5
    [00:07:02] SetPlayerCheckpoint(playerid, amInfo[5][a_x],amInfo[5][a_y],amInfo[5][a_z],3)
    [00:07:02] 7
    [00:07:02] SetPlayerCheckpoint(playerid, amInfo[7][a_x],amInfo[7][a_y],amInfo[7][a_z],3)
    [00:07:02] 9
    [00:07:02] SetPlayerCheckpoint(playerid, amInfo[9][a_x],amInfo[9][a_y],amInfo[9][a_z],3)
    [00:07:02] 11
    [00:07:02] SetPlayerCheckpoint(playerid, amInfo[11][a_x],amInfo[11][a_y],amInfo[11][a_z],3)
    [00:07:02] 13
    [00:07:02] SetPlayerCheckpoint(playerid, amInfo[13][a_x],amInfo[13][a_y],amInfo[13][a_z],3)
    [00:07:02] 15
    [00:07:02] SetPlayerCheckpoint(playerid, amInfo[15][a_x],amInfo[15][a_y],amInfo[15][a_z],3)
    [00:07:02] 17
    [00:07:02] SetPlayerCheckpoint(playerid, amInfo[17][a_x],amInfo[17][a_y],amInfo[17][a_z],3)
    [00:07:06] 1
    [00:07:06] SetPlayerCheckpoint(playerid, amInfo[1][a_x],amInfo[1][a_y],amInfo[1][a_z],3)
    [00:07:06] 3
    [00:07:06] SetPlayerCheckpoint(playerid, amInfo[3][a_x],amInfo[3][a_y],amInfo[3][a_z],3)
    [00:07:06] 5
    [00:07:06] SetPlayerCheckpoint(playerid, amInfo[5][a_x],amInfo[5][a_y],amInfo[5][a_z],3)
    [00:07:06] 7
    [00:07:06] SetPlayerCheckpoint(playerid, amInfo[7][a_x],amInfo[7][a_y],amInfo[7][a_z],3)
    [00:07:06] 9
    [00:07:06] SetPlayerCheckpoint(playerid, amInfo[9][a_x],amInfo[9][a_y],amInfo[9][a_z],3)
    [00:07:06] 11
    [00:07:06] SetPlayerCheckpoint(playerid, amInfo[11][a_x],amInfo[11][a_y],amInfo[11][a_z],3)
    [00:07:06] 13
    [00:07:06] SetPlayerCheckpoint(playerid, amInfo[13][a_x],amInfo[13][a_y],amInfo[13][a_z],3)
    [00:07:06] 15
    [00:07:06] SetPlayerCheckpoint(playerid, amInfo[15][a_x],amInfo[15][a_y],amInfo[15][a_z],3)
    [00:07:06] 17
    [00:07:06] SetPlayerCheckpoint(playerid, amInfo[17][a_x],amInfo[17][a_y],amInfo[17][a_z],3)
    [00:07:08] 1
    [00:07:08] SetPlayerCheckpoint(playerid, amInfo[1][a_x],amInfo[1][a_y],amInfo[1][a_z],3)
    [00:07:08] 3
    [00:07:08] SetPlayerCheckpoint(playerid, amInfo[3][a_x],amInfo[3][a_y],amInfo[3][a_z],3)
    [00:07:08] 5
    [00:07:08] SetPlayerCheckpoint(playerid, amInfo[5][a_x],amInfo[5][a_y],amInfo[5][a_z],3)
    [00:07:08] 7
    [00:07:08] SetPlayerCheckpoint(playerid, amInfo[7][a_x],amInfo[7][a_y],amInfo[7][a_z],3)
    [00:07:08] 9
    [00:07:08] SetPlayerCheckpoint(playerid, amInfo[9][a_x],amInfo[9][a_y],amInfo[9][a_z],3)
    [00:07:08] 11
    [00:07:08] SetPlayerCheckpoint(playerid, amInfo[11][a_x],amInfo[11][a_y],amInfo[11][a_z],3)
    [00:07:08] 13
    [00:07:08] SetPlayerCheckpoint(playerid, amInfo[13][a_x],amInfo[13][a_y],amInfo[13][a_z],3)
    [00:07:08] 15
    [00:07:08] SetPlayerCheckpoint(playerid, amInfo[15][a_x],amInfo[15][a_y],amInfo[15][a_z],3)
    [00:07:08] 17
    [00:07:08] SetPlayerCheckpoint(playerid, amInfo[17][a_x],amInfo[17][a_y],amInfo[17][a_z],3)
    [00:07:11] 1
    [00:07:11] SetPlayerCheckpoint(playerid, amInfo[1][a_x],amInfo[1][a_y],amInfo[1][a_z],3)
    [00:07:11] 3
    [00:07:11] SetPlayerCheckpoint(playerid, amInfo[3][a_x],amInfo[3][a_y],amInfo[3][a_z],3)
    [00:07:11] 5
    [00:07:11] SetPlayerCheckpoint(playerid, amInfo[5][a_x],amInfo[5][a_y],amInfo[5][a_z],3)
    [00:07:11] 7
    [00:07:11] SetPlayerCheckpoint(playerid, amInfo[7][a_x],amInfo[7][a_y],amInfo[7][a_z],3)
    [00:07:11] 9
    [00:07:11] SetPlayerCheckpoint(playerid, amInfo[9][a_x],amInfo[9][a_y],amInfo[9][a_z],3)
    [00:07:11] 11
    [00:07:11] SetPlayerCheckpoint(playerid, amInfo[11][a_x],amInfo[11][a_y],amInfo[11][a_z],3)
    [00:07:11] 13
    [00:07:11] SetPlayerCheckpoint(playerid, amInfo[13][a_x],amInfo[13][a_y],amInfo[13][a_z],3)
    [00:07:11] 15
    [00:07:11] SetPlayerCheckpoint(playerid, amInfo[15][a_x],amInfo[15][a_y],amInfo[15][a_z],3)
    [00:07:11] 17
    [00:07:11] SetPlayerCheckpoint(playerid, amInfo[17][a_x],amInfo[17][a_y],amInfo[17][a_z],3)

  • Schreibe es so:


    ocmd:atmlist(playerid,params[])
    {
    if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
    if(pInfo[playerid][pJob] !=3)return SCM(playerid,COLOR_GRAU,"Du bist kein Geldlieferant.");
    //if(GetPVarInt(playerid,"Job_Duty") == 0)return SCM(playerid,COLOR_GRAU,"Du bist nicht im Dienst.");
    new string[1024];
    for(new i=0; i<sizeof(amInfo); i++)
    {
    if(!amInfo[i][ad_id])continue;
    format(string,sizeof(string),"%s\n%i: %i/30.000$",string,amInfo[i][ad_id],amInfo[i][a_geld]);
    }
    if(!strlen(string)) return SCM(playerid,COLOR_GRAU,"Es sind keine ATM's vorhanden!");
    ShowPlayerDialog(playerid,DIALOG_ATMLIST,DIALOG_STYLE_LIST,"ATM Liste",string,"Makieren","Abbrechen");
    return 1;
    }
    Hier musste der Dialog aus der Schleife raus, da du sonst nur eine ATM angezeigt bekommst.



    if(dialogid == DIALOG_ATMLIST)
    {
    new idx;
    for(new i=0; i<sizeof(amInfo); i++)
    {
    if(!amInfo[i][ad_id])continue;
    if(idx == listitem)
    {
    printf("SetPlayerCheckpoint(playerid, amInfo[%i][a_x],amInfo[%i][a_y],amInfo[%i][a_z],3)",i,i,i);
    SetPlayerCheckpoint(playerid, amInfo[i][a_x],amInfo[i][a_y],amInfo[i][a_z],3);
    return 1;
    }
    idx++;
    }
    return 1;
    }
    Hier habe ich die Schleife etwas umgestellt und eine Hilfsvariable verwendet, damit man den richtigen Index über das listitem finden kann.