Beiträge von Jeffry

    Das liegt dann möglicherweise daran, dass die Daten der Häuser, vor allem der Besitzer, nicht richtig geladen werden.
    Poste bitte mal den Code der die Häuser lädt, und prüfe, ob in der Datei/Datenbank der Besitzer richtig eingetragen wird.

    Beschreibe dein "Problem" mal in einem ausführlichen und gescheiten Deutsch bzw. Satzbau.
    Vor allem: Was passiert wenn du was machst, und was soll eigentlich passieren?

    Poste mal den Code was du bereits gemacht hast. Wenn es falsch ist kein Problem, wenn du nichts machst ist das schon ein Problem, du bist ja hier um zu lernen und nicht um kostenlose Dienstleistungen zu schnorren. :)

    Ist klar das der nicht vom Himmel fällt. Den solltest du ja auch machen, deshalb hab ich dir den Link gegeben, damit du weißt wie man sowas macht. Versuch es doch wenigstens. ;)

    Hat jemand ne Idee?


    public loadCar(playerid)
    {
    new Car,rows,fields;
    cache_get_data(rows,fields);
    if(rows)
    {
    for(new i=0; i<rows; i++)
    {
    cInfo[i][model] = cache_get_field_content_int(i,"model",dbhandle);
    //cInfo[i][besitzer] = cache_get_field_content_int(i,"besitzer",dbhandle);
    //cInfo[i][firma] = cache_get_field_content_int(i,"firma",dbhandle);
    cInfo[i][c_x] = cache_get_field_content_int(i,"x",dbhandle);
    cInfo[i][c_y] = cache_get_field_content_int(i,"y",dbhandle);
    cInfo[i][c_z] = cache_get_field_content_int(i,"z",dbhandle);
    cInfo[i][c_r] = cache_get_field_content_int(i,"r",dbhandle);
    cInfo[i][Color_1] = cache_get_field_content_int(i,"Color_1",dbhandle);
    cInfo[i][Color_2] = cache_get_field_content_int(i,"Color_2",dbhandle);
    cInfo[i][db_id] = cache_get_field_content_int(i,"db_id",dbhandle);
    CreateVehicle(cInfo[i][model],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],cInfo[i][Color_1],cInfo[i][Color_2],-1);
    Car++;
    }
    }
    return true;
    }

    Ändere
    SpielerCars[playerid][i][Nummernschild] 
    Zu


    SpielerCarNummernschild[playerid][i]



    Und definiere es so:
    new SpielerCarNummernschild[MAX_PLAYERS][MAX_AUTOS_PRO_SPIELER][24];


    Der Fehler liegt daran, dass es in SA-MP keine vierdimensionalen Arrays gibt.

    if(AktuellerFahrschulCP[playerid] < 22) SetPlayerCheckpoint(playerid,FahrschuleCPS[AktuellerFahrschulCP[playerid]][0],FahrschuleCPS[AktuellerFahrschulCP[playerid]][1],FahrschuleCPS[AktuellerFahrschulCP[playerid]][2], 8.0);
    else print("Fahrschule-Zähler zu hoch.");


    if(AktuellerFarmerCP[playerid] < SO_VIELE_FARMER_CPS_WIE_DU_HAST) SetPlayerCheckpoint(playerid,FarmerCPS[AktuellerFarmerCP[playerid]][0],FarmerCPS[AktuellerFarmerCP[playerid]][1],FarmerCPS[AktuellerFarmerCP[playerid]][2], 8.0);
    else print("Farmer-Zähler zu hoch.");



    Einfach so abfangen.

    Es liegt dann wohl daran, dass du FahrschuleCheckpoints irgendwo aufrufst mit dem Index 24.


    FahrschuleCheckpoints[24] ...


    Oder über eine Schleife/Variable
    FahrschuleCheckpoints[i] ...
    wobei i = 24.


    Und das in OnPlayerEnterCheckpoint.

    Das kann auch über eine Definition sein:


    #define MAX_IRGENDWAS 21
    new Array[MAX_IRGENDWAS];


    Vielleicht sind es auch 20, ich weiß nicht ob das AMX Backtrace den End-Char mitzählt.
    Prüfe einfach dein gesamtes OnPlayerEnterCheckpoint ob da irgend ein Array möglicherweise "gesprengt" wird. Da hilft nur suchen.

    ^ Post über mir: Käse.


    Ich wollte das buyhouse auch noch so machen das man nur 1 Haus kaufen kann also pro person aber ich kann irgendwie 2 Häuser kaufen


    ocmd:buyhouse(playerid,params[])
    {
    #pragma unused params
    if(SpielerInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GREY,"Du bist nicht befugt");
    if(SpielerInfo[playerid][pTazer] == 1)return SendClientMessage(playerid,COLOR_GREY,"Du bist getazert.");
    new string[128];
    format(string, sizeof(string), "%s", SpielerName(playerid));
    for(new i = 0; i < sizeof(HausInfo); i++)
    {
    if(HausInfo[i][hCreated] == 1 && HausInfo[i][hOwned] == 1)
    {
    if(!strcmp(HausInfo[i][hBesitzer], string)) return SendClientMessage(playerid,COLOR_GREY,"Du besitzt schon ein Haus.");
    }
    }
    for(new i = 0; i < sizeof(HausInfo); i++)
    {
    if(HausInfo[i][hCreated] == 1)
    {
    if(IsPlayerInRangeOfPoint(playerid,2.0,HausInfo[i][hEnterX],HausInfo[i][hEnterY],HausInfo[i][hEnterZ]))
    {
    if(GetPlayerMoney(playerid) < HausInfo[i][hPreis])return SendClientMessage(playerid,COLOR_GREY,"Du hast nicht genung Geld auf der Hand");
    if(GetPlayerLevel(playerid) < HausInfo[i][hLevel])return SendClientMessage(playerid,COLOR_GREY,"Dein Level ist zu niedrig");
    if(HausInfo[i][hOwned] == 1)return SendClientMessage(playerid,COLOR_GREY,"Das Haus ist schon verkauft");
    if(SpielerInfo[playerid][pHausKey] !=0 && strcmp(SpielerName(playerid),HausInfo[SpielerInfo[playerid][pHausKey]][hBesitzer],true) == 0)return SendClientMessage(playerid,COLOR_GREY,"Du besitzt schon ein Haus");
    format(string,sizeof(string),"Du hast das Haus für %i$ gekauft!",HausInfo[i][hPreis]);
    SendClientMessage(playerid,COLOR_GREEN,string);
    GivePlayerMoney(playerid,-HausInfo[i][hPreis]);
    HausInfo[i][hOwned] = 1;
    SpielerInfo[playerid][pHausKey] = i;
    format(HausInfo[i][hBesitzer],MAX_PLAYER_NAME,"%s",SpielerName(playerid));
    SaveHaus(i);
    return 1;
    }
    }
    }
    return SendClientMessage(playerid,COLOR_GREY,"Du bist an keinem Haus");
    }

    ocmd:buyhouse(playerid,params[])
    {
    #pragma unused params
    if(SpielerInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GREY,"Du bist nicht befugt");
    if(SpielerInfo[playerid][pTazer] == 1)return SendClientMessage(playerid,COLOR_GREY,"Du bist getazert.");
    new string[128];
    for(new i = 0; i < sizeof(HausInfo); i++)
    {
    if(HausInfo[i][hCreated] == 1)
    {
    if(IsPlayerInRangeOfPoint(playerid,2.0,HausInfo[i][hEnterX],HausInfo[i][hEnterY],HausInfo[i][hEnterZ]))
    {
    if(GetPlayerMoney(playerid) < HausInfo[i][hPreis])return SendClientMessage(playerid,COLOR_GREY,"Du hast nicht genung Geld auf der Hand");
    if(GetPlayerLevel(playerid) < HausInfo[i][hLevel])return SendClientMessage(playerid,COLOR_GREY,"Dein Level ist zu niedrig");
    if(HausInfo[i][hOwned] == 1)return SendClientMessage(playerid,COLOR_GREY,"Das Haus ist schon verkauft");
    if(SpielerInfo[playerid][pHausKey] !=0 && strcmp(SpielerName(playerid),HausInfo[SpielerInfo[playerid][pHausKey]][hBesitzer],true) == 0)return SendClientMessage(playerid,COLOR_GREY,"Du besitzt schon ein Haus");
    format(string,sizeof(string),"Du hast das Haus für %i$ gekauft!",HausInfo[i][hPreis]);
    SendClientMessage(playerid,COLOR_GREEN,string);
    GivePlayerMoney(playerid,-HausInfo[i][hPreis]);
    HausInfo[i][hOwned] = 1;
    SpielerInfo[playerid][pHausKey] = i;
    format(HausInfo[i][hBesitzer],MAX_PLAYER_NAME,"%s",SpielerName(playerid));
    SaveHaus(i);
    return 1;
    }
    }
    }
    return SendClientMessage(playerid,COLOR_GREY,"Du bist an keinem Haus");
    }


    Die Nachricht gehört ganz unten hin, nicht in die Schleife.

    Du versuchst ein Array-Index aufzurufen, den es nicht gibt:


    new Array[21]; //21 = upper bound
    Array[10] = 1; //Ok
    Array[24] = 1; //Nicht ok!!


    Suche das Array von dir, das du mit [21] definiert hast, und erhöhe den Wert zwischen den Klammern.