Beiträge von Jeffry

    Gut zu wissen, ich dachte immer das ganze geht nur bei Arrays ohne Enum als Index, jedoch wurde ich eines besseren belehrt.


    Jo, das gute ist, es funktioniert auf allen Ebenen, zum Glück! Was das sonst für ein Aufwand wäre, ein dreidimensionales Array zu kopieren, das wäre wirklich nicht schön. :D


    Also sowas hier würde auch gehen:
    new WantedHistory2[10][WantedInfo];
    WantedHistory2 = WantedHistory;

    stock SpielerSpeichern(playerid)
    {
    new query[2048], pmaname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pmaname, sizeof(pmaname));
    if(IsPlayerConnected(playerid)) return 1;//15695
    format(query, sizeof(query), "UPDATE players SET username='%s',password='%s',Level='%d',Adminlevel='%d',DonateRank='%d',UpgradePoints='%d',ConnectedTime='%d',Registered='%d',Sex='%d',Age='%d',Origin='%d',Muted='%d',Respect='%d',Money='%d',Bank='%d',Crimes='%d',",
    PlayerInfo[playerid][pKey],PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][gPugrade],PlayerInfo[playerid][pConnectTime],PlayerInfo[playerid][pReg],
    PlayerInfo[playerid][pSex],PlayerInfo[playerid][pAge],PlayerInfo[playerid][pOrigin],PlayerInfo[playerid][pMuted],PlayerInfo[playerid][pExp],PlayerInfo[playerid][pCash],PlayerInfo[playerid][pBank],PlayerInfo[playerid][pCrimes]);

    format(query, sizeof(query), "%sKills='%d',Deaths='%d',Arrested='%d',WantedDeaths='%d',Phonebook='%d',LottoNr='%d',Fishes='%d',BiggestFish='%d',Job='%d',Paycheck='%d',Jailed='%d',GangJailed='%d',Mauled='%d',Jailtime='%d',Materials='%d',Drugs='%d',",query,
    PlayerInfo[playerid][pKills],PlayerInfo[playerid][pDeaths],PlayerInfo[playerid][pArrested],PlayerInfo[playerid][pWantedDeaths],PlayerInfo[playerid][pPhoneBook],PlayerInfo[playerid][pLottoNr],PlayerInfo[playerid][pFishes],PlayerInfo[playerid][pBiggestFish],
    PlayerInfo[playerid][pJob],PlayerInfo[playerid][pPayCheck],PlayerInfo[playerid][pJailed],PlayerInfo[playerid][pGangJailed],PlayerInfo[playerid][pMauled],PlayerInfo[playerid][pJailTime],PlayerInfo[playerid][pMaterials],PlayerInfo[playerid][pDrugs]);

    format(query, sizeof(query), "%sCokain='%d',nonworkedcocain='%d',BoxMaterials='%d',BoxDrugs='%d',FightingStyle='%d',Char='%d',ContractTime='%d',DetSkill='%d',SexSkill='%d',BoxSkill='%d',LawSkill='%d',MechSkill='%d',JackSkill='%d',CarSkill='%d',",query,
    PlayerInfo[playerid][pKokain],PlayerInfo[playerid][pUnverarbeitetesKokain],PlayerInfo[playerid][pBoxMats],PlayerInfo[playerid][pBoxDrugs],GetPlayerFightingStyle(playerid),PlayerInfo[playerid][pChar],PlayerInfo[playerid][pContractTime],
    PlayerInfo[playerid][pDetSkill],PlayerInfo[playerid][pSexSkill],PlayerInfo[playerid][pBoxSkill],PlayerInfo[playerid][pLawSkill],PlayerInfo[playerid][pMechSkill],PlayerInfo[playerid][pJackSkill],PlayerInfo[playerid][pCarSkill]);

    format(query, sizeof(query), "%sNewsSkill='%d',DrugsSkill='%d',CookSkill='%d',FishSkill='%d',pSHealth='%f',pHealth='%f',Int='%d',Local='%d',Team='%d',Model='%d',GWD='%f',PhoneNr='%d',House='%d',Bizz='%d',HandyGeld='%d',HandyVer='%d',Pos_x='%f',",query,
    PlayerInfo[playerid][pNewsSkill],PlayerInfo[playerid][pCookSkill],PlayerInfo[playerid][pFishSkill],PlayerInfo[playerid][pCookSkill],PlayerInfo[playerid][pFishSkill],PlayerInfo[playerid][pSHealth],PlayerInfo[playerid][pHealth],PlayerInfo[playerid][pInt],
    PlayerInfo[playerid][pLocal],PlayerInfo[playerid][pTeam],PlayerInfo[playerid][pModel],PlayerInfo[playerid][pPnumber],PlayerInfo[playerid][pPhousekey],PlayerInfo[playerid][pPbiskey],PlayerInfo[playerid][pGWD],PlayerInfo[playerid][pHandyGeld],PlayerInfo[playerid][pHandyVer],PlayerInfo[playerid][pPos_x]);

    format(query, sizeof(query), "%sPos_y='%f',Pos_z='%f',CarLic='%d',NewLic='%d',FlyLic='%d',BoatLic='%d',FishLic='%d',GunLic='%d',LKWLic='%d',RollerLic='%d', MotoLic='%d',SchwarzmarktLic='%d',KopfgeldSumme='%d',Kopfgeld='%d',Zig='%d',Kekse='%d',",query,
    PlayerInfo[playerid][pPos_y],PlayerInfo[playerid][pPos_z],PlayerInfo[playerid][pCarLic],PlayerInfo[playerid][pNewLic],PlayerInfo[playerid][pFlyLic],PlayerInfo[playerid][pBoatLic],PlayerInfo[playerid][pFishLic],PlayerInfo[playerid][pGunLic],
    PlayerInfo[playerid][pLKWLic],PlayerInfo[playerid][pRollerLic],PlayerInfo[playerid][pMotoLic],PlayerInfo[playerid][pZig],PlayerInfo[playerid][pKekse]);

    format(query, sizeof(query), "%sZigSucht='%d',Gun1='%d',Gun2='%d',Gun3='%d',Gun4='%d',Ammo1='%d',Ammo2='%d',Ammo3='%d',Ammo4='%d',CarTime='%d',Mulltime='%d',PayDay='%d',PayDayHad='%d',CDPlayer='%d',Wins='%d',Loses='%d',AlcoholPerk='%d',",query,
    PlayerInfo[playerid][pZigSucht],PlayerInfo[playerid][pGun1],PlayerInfo[playerid][pGun2],PlayerInfo[playerid][pGun3],PlayerInfo[playerid][pGun4],PlayerInfo[playerid][pAmmo1],PlayerInfo[playerid][pAmmo2],PlayerInfo[playerid][pAmmo3],PlayerInfo[playerid][pAmmo4],
    PlayerInfo[playerid][pCarTime],PlayerInfo[playerid][pMulltime],PlayerInfo[playerid][pPayDay],PlayerInfo[playerid][pPayDayHad],PlayerInfo[playerid][pCDPlayer],PlayerInfo[playerid][pWins],PlayerInfo[playerid][pLoses]);

    format(query, sizeof(query), "%sDrugPerk='%d',MiserPerk='%d',PainPerk='%d',TraderPerk='%d',Tutorial='%d',Warnings='%d',Adjustable='%d',Fuel='%d',Married='%d',MarriedTo='%s',SpawnChange='%d',WantedLevel='%d',WantedPoints='%d',PlayMinutes='%d',",query,
    PlayerInfo[playerid][pAlcoholPerk],PlayerInfo[playerid][pDrugPerk],PlayerInfo[playerid][pMiserPerk],PlayerInfo[playerid][pPainPerk],PlayerInfo[playerid][pTraderPerk],PlayerInfo[playerid][pTut],PlayerInfo[playerid][pWarns],PlayerInfo[playerid][pAdjustable],
    PlayerInfo[playerid][pFuel],PlayerInfo[playerid][pMarried],PlayerInfo[playerid][pMarriedTo],SpawnChange[playerid],WantedLevel[playerid],WantedPoints[playerid],PlayerInfo[playerid][pPlayMinutes]);

    format(query, sizeof(query), "%sGesamtMinutes='%d',MinutesSinceAn='%d',SFPASS='%d',LSVPASS='%d',Offflucht='%d',Knast='%d',Uhr='%d',Handy='%d',KnastTime='%d',Perso='%d',FrakSperre='%d',Gehalt='%d',InvWeapon='%d',InvAmmo='%d',InvWeapon2='%d',",query,
    PlayerInfo[playerid][pGesamtMinutes],PlayerInfo[playerid][pMinutesSinceAn],PlayerInfo[playerid][pSFPASS],PlayerInfo[playerid][pLVPASS],OfflineFlucht[playerid],Knast[playerid],PlayerInfo[playerid][pUhrID],PlayerInfo[playerid][pHandyID],
    KnastTime[playerid],PlayerInfo[playerid][pOwnPerso],PlayerInfo[playerid][pFrakSperre],PlayerInfo[playerid][pGehalt],PlayerInfo[playerid][pInWeapon],PlayerInfo[playerid][pInvAmmo],PlayerInfo[playerid][pInvWeapon2]);

    format(query, sizeof(query), "%sInvAmmo2='%d',InvMats='%d',InvDrugs='%d',FlugTime='%d',FarmTime='%d',GDeaths='%d',GKills='%d',Meldung='%d',Tanke='%d',Zollpass='%d',ZollpassTime='%d',Gesperrt='%d',waffenslot1='%d',ammoslot1='%d',waffenslot2='%d',",query,
    PlayerInfo[playerid][pInvAmmo2],PlayerInfo[playerid][pInvMats],PlayerInfo[playerid][pInvDrugs],PlayerInfo[playerid][pFlugTime],PlayerInfo[playerid][pFarmTime],PlayerInfo[playerid][pGDeaths],PlayerInfo[playerid][pGKills],PlayerInfo[playerid][pMeldung],
    PlayerInfo[playerid][pPtankekey],PlayerInfo[playerid][pZollPass],PlayerInfo[playerid][pZollPassTime],PlayerInfo[playerid][pGesperrt]);

    format(query, sizeof(query), "%sammoslot2='%d',waffenslot3='%d',ammoslot3='%d', waffenslot4='%d',ammoslot4='%d',waffenslot5='%d',ammoslot5='%d',waffenslot6='%d',ammoslot6='%d',waffenslot7='%d',ammoslot7='%d',waffenslot8='%d',ammoslot8='%d',",query);

    format(query, sizeof(query), "%swaffenslot9='%d',ammoslot9='%d',waffenslot10='%d',ammoslot10='%d',waffenslot11='%d',ammoslot11='%d',waffenslot12='%d',ammoslot12='%d',waffenslot13='%d',ammoslot13='%d' WHERE username='%s'",query, /*hier fehlen noch viele*/, pmaname);


    mysql_tquery(mysqlHandle, query);
    printf("Acc gespeichert (%s)",NamePlayer(playerid));
    return 1;
    }


    ABER!
    Das wird so noch nicht funktionieren, da bei den Spieler-Variablen hinter dem Format jeweils noch eine Menge fehlen, oft auch zwischendrin fehlt mal eine. Das musst du selbst prüfen.
    Vor allem die letzten drei Zeilen sind extrem.

    Also erstens:
    Mehrdimensionale Arrays müssen komplett indiziert werden:
    new WantedHistory[10][WantedInfo] = {
    {"ac",111,"Reason1"},
    {"acds",222,"Reason2"},
    {"adfc",333,"Reason3"},
    {},
    {},
    {},
    {},
    {},
    {},
    {}
    };


    Und zweitens:
    Warum, IPrototypeI:, so umständlich?
    Das geht doch ganz einfach:
    for(new i=sizeof(WantedHistory)-1; i>0; i--) WantedHistory[i] = WantedHistory[i-1];
    Mehr ist es nicht. Stell dir mal vor du hast ein Enum mit 100 Einträgen, was das für ein Spaß wird die alle einzeln zu übertragen.


    Nach der Zeile einfach:
    format(WantedHistory[0][reason],64, "NEU");
    //...


    [BE]axi92:
    Du warst also ganz nah dran, ohne die Schleife sähe es so aus:
    WantedHistory[9] = WantedHistory[8];
    //...
    WantedHistory[2] = WantedHistory[1];
    WantedHistory[1] = WantedHistory[0];

    ocmd:buycar(playerid, params[])
    {
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, error, "Du bist in keinem Fahrzeug");
    new vehicleid = GetPlayerVehicleID(playerid);
    for(new i=0; i<MAX_AUTOS; i++)
    {
    if(CarInfo[i][c_vID] != vehicleid) continue;
    if(CarInfo[i][c_Gekauft] == 0)
    {
    if(SpielerInfo[playerid][pGeld] < CarInfo[i][c_Preis]) return SendClientMessage(playerid, error, "Du hast nicht genug Geld!");
    format(CarInfo[i][Besitzer], 34, "%s",SpielerName(playerid));
    CarInfo[i][c_Gekauft] = 1;
    GivePlayerMoney(playerid, -CarInfo[i][c_Preis]);
    SendClientMessage(playerid, erfolg, "Herzlichen Glückwunsch, du hast dieses Auto gekauft!");
    return 1;
    }
    else
    {
    SendClientMessage(playerid, error, "Dieses Auto steht nicht zum Verkauf!");
    return 1;
    }
    }
    return SendClientMessage(playerid, error, "Du bist in keinem Fahrzeug.");
    }

    new bool:found = false;
    for(new j=0; j<sizeof(InteriorInfo); j++)
    {
    printf("%d == %d | %d == %d", InteriorInfo[j][int_ID], inter, InteriorInfo[j][int_type], type);
    if(InteriorInfo[j][int_ID] == inter && InteriorInfo[j][int_type] == type)
    {
    found = true;
    printf("Nutze InteriorInfo %d", j);
    HouseInfo[i][h_exitX] = InteriorInfo[j][int_exitX];
    HouseInfo[i][h_exitY] = InteriorInfo[j][int_exitY];
    HouseInfo[i][h_exitZ] = InteriorInfo[j][int_exitZ];
    HouseInfo[i][h_exitA] = InteriorInfo[j][int_exitA];
    break;
    }
    }
    if(!found) return SendClientMessage(playerid, 0xFF0000FF, "Error: Keine Koordinaten gefunden.");


    Plugin:
    https://github.com/samp-incogn…-streamer-plugin/releases

    Ja, eben.
    CarInfo[i][modelID] = CreateVehicle(CarInfo[i][modelID], CarInfo[i][c_x], CarInfo[i][c_y], CarInfo[i][c_z], CarInfo[i][c_a], CarInfo[i][c_color1], CarInfo[i][c_color2], -1);
    zu:
    CarInfo[i][c_vID] = CreateVehicle(CarInfo[i][modelID], CarInfo[i][c_x], CarInfo[i][c_y], CarInfo[i][c_z], CarInfo[i][c_a], CarInfo[i][c_color1], CarInfo[i][c_color2], -1);


    Beim Laden der Fahrzeuge.

    Ok, dann debugge das mal so:

    Spoiler anzeigen
    forward SaveAllCars();
    public SaveAllCars()
    {
    printf("Starte SaveAllCars");
    new query[512];
    for(new i=0; i<MAX_AUTOS; i++)
    {
    printf("i: %d | Model: %d", i, CarInfo[i][modelID]);
    if(CarInfo[i][modelID] >= 400 && CarInfo[i][modelID] <= 611)
    {
    printf("Gekauft: %d", CarInfo[i][c_Gekauft]);
    if(CarInfo[i][c_Gekauft] == 0)
    {
    GetVehiclePos(CarInfo[i][c_vID], CarInfo[i][c_x], CarInfo[i][c_y], CarInfo[i][c_z]);
    GetVehicleZAngle(CarInfo[i][c_vID], CarInfo[i][c_a]);
    format(query, sizeof(query), "UPDATE Cars SET Besitzer = '%s',ModelID = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', PosA = '%f', Color1 = '%d', Color2 = '%d',Preis = '%d',Gekauft = '%d' WHERE ID = '%d'",
    CarInfo[i][Besitzer],CarInfo[i][modelID], CarInfo[i][c_x], CarInfo[i][c_y], CarInfo[i][c_z], CarInfo[i][c_a], CarInfo[i][c_color1], CarInfo[i][c_color2],CarInfo[i][c_Preis],CarInfo[i][c_Gekauft], i);
    mysql_tquery(handle, query);
    SendClientMessageToAll(info, "Nicht gekauft Autos wurden gespeichert!");
    }
    if(CarInfo[i][c_Gekauft] == 1)
    {
    new Float:VehPos[4];
    GetVehiclePos(CarInfo[i][c_vID],VehPos[0],VehPos[1],VehPos[2]);
    GetVehicleZAngle(CarInfo[i][c_vID], VehPos[3]);
    format(query, sizeof(query), "UPDATE Cars SET Besitzer = '%s',ModelID = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', PosA = '%f', Color1 = '%d', Color2 = '%d',Preis = '%d',Gekauft = '%d' WHERE ID = '%d'",
    CarInfo[i][Besitzer],CarInfo[i][modelID], VehPos[0], VehPos[1], VehPos[2], VehPos[3], CarInfo[i][c_color1], CarInfo[i][c_color2],CarInfo[i][c_Preis],CarInfo[i][c_Gekauft], i);
    mysql_tquery(handle, query);
    SendClientMessageToAll(info, "Gekaufte Autos wurden gespeichert!");
    }
    printf("query: %s", query);
    /*format(query, sizeof(query), "UPDATE Cars SET Besitzer = '%s',ModelID = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', PosA = '%f', Color1 = '%d', Color2 = '%d',Preis = '%d',Gekauft = '%d' WHERE ID = '%d'",
    CarInfo[i][Besitzer],CarInfo[i][modelID], CarInfo[i][c_x], CarInfo[i][c_y], CarInfo[i][c_z], CarInfo[i][c_a], CarInfo[i][c_color1], CarInfo[i][c_color2],CarInfo[i][c_Preis],CarInfo[i][c_Gekauft], i);
    */
    }
    }
    SendClientMessageToAll(info, "Alle Fahrzeuge wurden gespeichert!");
    printf("Fertig.");
    return 1;
    }

    Was steht dann im Log, wenn du es speichern willst und es nicht geht?

    Dann schreibe es so:
    format(query, sizeof(query), "INSERT INTO gangfight (owner, maxX, maxY, minX, minY, flaggeX, flaggeY, flaggeZ, erstellt) VALUES ('%s', '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%d')",
    GZ[CZ[playerid][zid]][owner], GZ[CZ[playerid][zid]][max_x], GZ[CZ[playerid][zid]][max_y], GZ[CZ[playerid][zid]][min_x], GZ[CZ[playerid][zid]][min_y], GZ[CZ[playerid][zid]][flagge_x], GZ[CZ[playerid][zid]][flagge_y], GZ[CZ[playerid][zid]][flagge_z], CZ[playerid][zid]);


    Und setze "id" auf AUTO_INCREMENT in der Datenbank.

    Du musst es so schreiben:
    else if(IsPlayerInRangeOfPoint(playerid,2.0,1199.2645,-918.1450,43.1231)) //BurgerShotNord-Enter
    {
    SetPlayerPos(playerid,365.1967,-73.4731,1001.5078);
    SetPlayerInterior(playerid,10);
    SetPlayerFacingAngle(playerid,306.3758);
    SetCameraBehindPlayer(playerid);
    SetPlayerVirtualWorld(playerid,0);
    }
    else if(IsPlayerInRangeOfPoint(playerid,2.0,362.8453,-75.1406,1001.5078) && GetPlayerVirtualWorld(playerid) == 0) //BurgerShotNord-Exit
    {
    SetPlayerPos(playerid,1199.7817,-921.8111,43.0220);
    SetPlayerFacingAngle(playerid,192.8461);
    SetCameraBehindPlayer(playerid);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    }
    else if(IsPlayerInRangeOfPoint(playerid,2.0,810.4847,-1616.2046,13.5469)) //BurgerShotSouth-Enter
    {
    SetPlayerPos(playerid,365.1967,-73.4731,1001.5078);
    SetPlayerInterior(playerid,10);
    SetPlayerVirtualWorld(playerid,1);
    SetPlayerFacingAngle(playerid,306.3758);
    SetCameraBehindPlayer(playerid);
    SendClientMessage(playerid,COLOR_GREEN,"Du hast den Burger Shot South betreten!");
    }
    else if(IsPlayerInRangeOfPoint(playerid,2.0,362.8856,-75.1768,1001.5078) && GetPlayerVirtualWorld(playerid) == 1) //BurgerShotSouth-Exit
    {
    SetPlayerPos(playerid,813.1405,-1616.3661,13.5547);
    SetPlayerFacingAngle(playerid,269.3087);
    SetCameraBehindPlayer(playerid);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    SendClientMessage(playerid,COLOR_GREEN,"Du hast den Burger Shot South verlassen!");
    }


    Sonst geht er in den BurgerShotNord-Exit (wegen Position) und fliegt dann raus, wegen der virtuellen Welt.

    Poste den Code mit dem du die Fahrzeuge nach dem GMX lädst, und zum Vergleich den Befehl mit dem du sie erstellst (funktioniert ja dann).