Beiträge von Jeffry

    Du brauchst ein globales Array.
    new objFahrer[MAX_PLAYERS];
    new objBeifahrer[MAX_PLAYERS];


    ocmd:supmobil(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,0xFF3C3CFF,"AdmCmd: Sie besitzen nicht die nötigen Rechte um diesen Befehl zu nutzen!");
    if(HatSupmobil[playerid] == 1) return SendClientMessage(playerid,0x00D2D2FF,"Du hast bereits ein Supporter Fahrzeug erstellt! Lösche es bevor du dir ein neues erstellst.");
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    SupMobil[playerid] = CreateVehicle(560,X,Y,Z,3,166,166,-1);
    objFahrer[playerid] = CreateObject(19483,X,Y,Z,0,0,0,300.0);
    objBeifahrer[playerid] = CreateObject(19483,X,Y,Z,0,0,0,300.0);
    AttachObjectToVehicle(objFahrer[playerid],SupMobil[playerid],-1.06, 0.0, 0.0, 0.0, 0.0, 180.0);
    SetObjectMaterialText(objFahrer[playerid],"Supporter",0,90,"Arial", 28, 0, 0xFFFF8200, 0,1);
    AttachObjectToVehicle(objBeifahrer[playerid],SupMobil[playerid],1.06, 0.0, 0.0, 0.0, 0.0, 0.0);
    SetObjectMaterialText(objBeifahrer[playerid],"Supporter",0,90,"Arial", 28, 0, 0xFFFF8200, 0,1);
    SetVehicleNumberPlate(SupMobil[playerid],"Supporter");
    PutPlayerInVehicle(playerid, SupMobil[playerid], 0);
    Support3DText[playerid] = Create3DTextLabel("Supporter im Dienst",0xEE8613FF,0.0,0.0,0.0,50.0,0,0);
    Attach3DTextLabelToVehicle(Support3DText[playerid],SupMobil[playerid],0.0,0.0,1.0);
    HatSupmobil[playerid] = 1;
    SendClientMessage(playerid,0xFFFFFF,"{DB4447}Info: {F0F0F0}Du hast ein Supporter Fahrzeug erstellt! Benutze {2A98D4}/delscar{F0F0F0} um das Fahrzeug zu Entfernen.");
    return 1;
    }


    ocmd:delscar(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,0xFF3C3CFF,"AdmCmd: Sie besitzen nicht die nötigen Rechte um diesen Befehl zu nutzen!");
    if(HatSupmobil[playerid] == 0) return SendClientMessage(playerid,0x00D2D2FF,"Du bist nicht im Besitz eines Supporter Fahrzeugs!");
    RemovePlayerFromVehicle(playerid);
    DestroyVehicle(HatSupmobil[playerid]);
    Delete3DTextLabel(Support3DText[playerid]);
    HatSupmobil[playerid] = 0;
    DestroyObject(objFahrer[playerid]);
    DestroyObject(objBeifahrer[playerid]);
    SendClientMessage(playerid,0x00D2D2FF,"Du hast dein Supporter Fahrzeug erfolgreich gelöscht!");
    return 1;
    }

    So sollte es passen:
    new fahrzeug[MAX_PLAYERS];
    new muellsacke[MAX_VEHICLES];


    public OnPlayerEnterDynamicCP(playerid, checkpointid)
    {
    DisablePlayerCheckpoint(playerid);
    new rand = random(sizeof(bmx1));
    if(checkpointid == bmxo[playerid])
    {
    SetPlayerAttachedObject(playerid,0,1264,6,0.165999,0.003000,-0.184999,0.000000,0.000000,0.000000,0.498999,0.466999,0.489000);
    ApplyAnimation(playerid,"CARRY","liftup",4.1,0, 0, 0, 1, 1);
    ClearAnimations(playerid,1);
    SetPlayerSpecialAction(playerid,25);
    new Float:vX,Float:vY,Float:vZ;
    GetPosVorVeh(pMuellAuto[playerid], -5.0, vX, vY, vZ);
    DisablePlayerCheckpoint(bmxo[playerid]);
    fahrzeug[playerid] = CreateDynamicCP(vX,vY,vZ,4.0,-1,-1,playerid,30.0);
    // TogglePlayerDynamicCP(playerid,fahrzeug[playerid],1);
    return 1;
    }
    else if(checkpointid == fahrzeug[playerid])
    {
    if(kubik[pMuellAuto[playerid]] == 2.0)
    {
    SendClientMessage(playerid,COLOR_RED,"Das Fahrzeug ist voll, benutze /garbagestop");
    ClearAnimations(playerid,1);
    SetPlayerSpecialAction(playerid,0);
    RemovePlayerAttachedObject(playerid, 0);
    DisablePlayerCheckpoint(fahrzeug[playerid]);
    }
    else
    {
    if(muellsacke[pMuellAuto[playerid]] == 0)
    {
    new rand1 = 5+random(3);
    muellsacke[pMuellAuto[playerid]] = rand1;//HIER
    return 1;
    }
    else if(muellsacke[pMuellAuto[playerid]] == 1)//Das funktioniert ja
    {
    muellsacke[pMuellAuto[playerid]] = 0;
    ClearAnimations(playerid,1);
    SetPlayerSpecialAction(playerid,0);
    RemovePlayerAttachedObject(playerid, 0);
    DisablePlayerCheckpoint(fahrzeug[playerid]);
    kubik[pMuellAuto[playerid]] += 0.5;
    bmxo[playerid] = CreateDynamicCP(bmx1[rand][0],bmx1[rand][1],bmx1[rand][2],5.0,-1,-1,playerid,1000.0);
    return 1;
    }
    else
    {
    new string[123],string2[123];
    ClearAnimations(playerid,1);
    SetPlayerSpecialAction(playerid,0);
    kubik[pMuellAuto[playerid]] += 0.5;
    muellsacke[pMuellAuto[playerid]] -= 1;//HIER
    RemovePlayerAttachedObject(playerid, 0);
    format(string,sizeof(string),"Kubik: %f",kubik[pMuellAuto[playerid]]);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
    format(string2,sizeof(string2),"Müllsäcke: %d",muellsacke[pMuellAuto[playerid]]);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,string2);
    DisablePlayerCheckpoint(fahrzeug[playerid]);
    bmxo[playerid] = CreateDynamicCP(globalVar[playerid][0],globalVar[playerid][1],globalVar[playerid][2],4.0,-1,-1,playerid,30.0);
    return 1;
    }
    }
    }
    return 1;
    }

    Achso, naja das könntest du so machen:
    new Float:globalVar[3];


    new rand = random(sizeof(bmx1));
    globalVar[0] = bmx1[rand][0];
    globalVar[1] = bmx1[rand][1];
    globalVar[2] = bmx1[rand][2];


    Du könntest aber auch einfach den Wert von rand in eine globale Variable schreiben.


    new globalVar;


    new rand = random(sizeof(bmx1));
    globalVar = rand;

    Beim Erstellen:
    new query[900], h = CarKey[playerid];
    format(query,sizeof(query),"INSERT INTO `cars` (`sqlid`,`carkey`,`ingarage`,`AH_Typ`,`AH_X`,`AH_Y`,`AH_Z`,`AH_Rot`,`AH_Status`,`AH_Lock`,`AH_Paintjob`,`AH_Farbe1`,`AH_Farbe2`,`AH_Mod1`,`AH_Mod2`,`AH_Mod3`,`AH_Mod4`,`AH_Mod5`,`AH_Mod6`,`AH_Mod7`,`AH_Mod8`,`AH_Mod9`,`AH_Mod10`,`AH_Mod11`,`AH_Mod12`,`AH_Mod13`,`AH_Mod14`,`AH_Mod15`,`AH_Mod16`,`AH_Mod17`,");
    format(query,sizeof(query),"%s`AH_SpawnSaveX`,`AH_SpawnSaveY`,`AH_SpawnSaveZ`,`AH_SpawnSaveRot`,`AH_TankVolumen`,`AH_Mats`,`AH_Neon`,`AH_NeonType`,`AH_Drugs`,`AH_StandTime`,`AH_Meter`) VALUES (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)",query);
    printf("Hier müsste der query stehen: %s",query);


    zu:
    new query[900], h = CarKey[playerid];
    format(query,sizeof(query),"INSERT INTO `cars` (`sqlid`,`carkey`,`ingarage`,`AH_Typ`,`AH_X`,`AH_Y`,`AH_Z`,`AH_Rot`,`AH_Status`,`AH_Lock`,`AH_Paintjob`,`AH_Farbe1`,`AH_Farbe2`,`AH_Mod1`,`AH_Mod2`,`AH_Mod3`,`AH_Mod4`,`AH_Mod5`,`AH_Mod6`,`AH_Mod7`,`AH_Mod8`,`AH_Mod9`,`AH_Mod10`,`AH_Mod11`,`AH_Mod12`,`AH_Mod13`,`AH_Mod14`,`AH_Mod15`,`AH_Mod16`,`AH_Mod17`,");
    format(query,sizeof(query),"%s`AH_SpawnSaveX`,`AH_SpawnSaveY`,`AH_SpawnSaveZ`,`AH_SpawnSaveRot`,`AH_TankVolumen`,`AH_Mats`,`AH_Neon`,`AH_NeonType`,`AH_Drugs`,`AH_StandTime`,`AH_Meter`) VALUES (%d,%d,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)",query,PlayerInfo[playerid][pSQLID],h);
    printf("Hier müsste der query stehen: %s",query);


    Und dann:
    public PlayerCarUpdate(playerid)
    {
    if(IsPlayerNPC(playerid)) return 1;
    new string[2048], playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername, sizeof(playername));
    for(new h = 0; h < MaxVeh[playerid]; h++)
    {
    format(string, sizeof(string), "UPDATE `cars` SET `ingarage`=%i,`AH_Typ`=%i,`AH_X`='%f',`AH_Y`='%f',`AH_Z`='%f',`AH_Rot`='%f',`AH_Status`=%i,`AH_Lock`=%i,`AH_Paintjob`=%i,`Farbe1`=%i,`Farbe2`=%i,`AH_mod1`=%i,`AH_mod2`=%i,`AH_mod3`=%i,`AH_mod4`=%i,`AH_mod5`=%i,`AH_mod6`=%i,`AH_mod7`=%i,`AH_mod8`=%i,`AH_mod9`=%i,`AH_mod10`=%i,`AH_mod11`=%i,`AH_mod12`=%i,`AH_mod13`=%i,`AH_mod14`=%i,`AH_mod15`=%i,`AH_mod16`=%i,`AH_mod17`=%i,",
    Carlist[playerid][h][ingarage],Carlist[playerid][h][Typ],Carlist[playerid][h][pos_x],Carlist[playerid][h][pos_y],Carlist[playerid][h][pos_z],
    Carlist[playerid][h][z_angle],Carlist[playerid][h][Status],Carlist[playerid][h][Lock],Carlist[playerid][h][Paintjob],
    Carlist[playerid][h][Farbe1],Carlist[playerid][h][Farbe2],Carlist[playerid][h][mod1],Carlist[playerid][h][mod2],
    Carlist[playerid][h][mod3],Carlist[playerid][h][mod4],Carlist[playerid][h][mod5],Carlist[playerid][h][mod6],
    Carlist[playerid][h][mod7],Carlist[playerid][h][mod8],Carlist[playerid][h][mod9],Carlist[playerid][h][mod10],
    Carlist[playerid][h][mod11],Carlist[playerid][h][mod12],Carlist[playerid][h][mod13],Carlist[playerid][h][mod14],
    Carlist[playerid][h][mod15],Carlist[playerid][h][mod16],Carlist[playerid][h][mod17]);


    format(string, sizeof(string),"%s`AH_SpawnSaveX`=%f,`AH_SpawnSaveY`='%f',`AH_SpawnSaveZ`='%f',`AH_SpawnSaveRot`='%f',`AH_TankVolumen`=%i,`AH_Mats`=%i,`AH_Neon`=%i,`AH_NeonType`=%i,`AH_Drugs`=%i,`AH_Versicherung`=%i,`AH_StandTime`=%i,`AH_Meter`=%i WHERE `sqlid`=%i AND `carkey`=%i",
    string, Carlist[playerid][h][SpawnSaveX],Carlist[playerid][h][SpawnSaveY],Carlist[playerid][h][SpawnSaveZ],
    Carlist[playerid][h][SpawnSaveRot],Carlist[playerid][h][TankVolumen],Carlist[playerid][h][cMats],
    Carlist[playerid][h][Neon],Carlist[playerid][h][NeonType],Carlist[playerid][h][cDrugs],Carlist[playerid][h][StandTime],
    Carlist[playerid][h][Meter],PlayerInfo[playerid][pSQLID],h);


    self_mysql_query(string);
    }
    return 1;
    }
    Das System ist nicht wirklich verständlich aufgebaut, da es keinen Sinn macht die vehicleid als Primary Key zu nutzen, weil die sich ändern kann. Daher ist es besser den Key in Verbindung mit der SQLID zu verwenden.

    Schreibe es zum Anfang mal so:
    stock FahrzeugLaden(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new Spielerdatei[128];
    new Float:X,Float:Y,Float:Z;
    new modelid;
    format(Spielerdatei,sizeof(Spielerdatei),"/Fahrzeuge/%s.ini",SpielerName(playerid));
    X = dini_Float(Spielerdatei,"FPosX");
    Y = dini_Float(Spielerdatei,"FPosY");
    Z = dini_Float(Spielerdatei,"FPosZ");
    modelid = dini_Int(Spielerdatei,"ModelID");
    CreateVehicle(modelid, X, Y, Z, 0, -1, -1, -1);
    }
    return 1;
    }
    stock FahrzeugSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new Spielerdatei[128]; //Spielerdatei
    format(Spielerdatei,sizeof(Spielerdatei),"/Fahrzeuge/%s.ini",SpielerName(playerid));
    new Float:X,Float:Y,Float:Z;
    new vid = GetPlayerVehicleID(playerid);
    GetVehiclePos(vid,X,Y,Z);
    dini_FloatSet(Spielerdatei,"FPosX",X);
    dini_FloatSet(Spielerdatei,"FPosY",Y);
    dini_FloatSet(Spielerdatei,"FPosZ",Z);
    dini_IntSet(Spielerdatei,"ModelID",GetVehicleModel(vid));
    }
    return 1;
    }


    Dann solltest du es schonmal speichern und laden können, wenn auch nur XYZ und Model. Klappt das?

    Ich hab dir mal was geschrieben:
    forward Float:randomfloat(Float:a, Float:b);
    stock Float:randomfloat(Float:a, Float:b)
    {
    new Float:rand = b - a;
    new x = random(5000)+5000;
    new Float:tmp = (1.0/float(x)*10000.0)-1.0;
    rand = (rand * tmp) + a;
    return rand;
    }


    Benutzung:
    printf("%f", randomfloat(10.0, 200.0));


    Gibt aus (bei 100 Versuchen):


    Für die Speicherung in eine Variable:
    new Float:variable = randomfloat(minimum, maximum);

    Willkommen auf Breadfish und frohe Weihnachten!


    Hast du denn schon eine Beispieldatei für ein Fahrzeug?
    Wenn ja, kannst du den Inhalt dieser Datei mal posten, damit wir sehen, was du alles speichern und auslesen willst?


    Wenn nein, dann erstelle mal eine, die kannst du ja manuell mit dem Editor erstellen und die Daten per Hand eingeben.

    Nächstes mal bitte die Fehlerzeilen markieren, das macht es einfacher. ;)


    mysql_SetInt(Tabelle_Spieler, "Wanteds","%d",wantedlevel, "Name",GetName(pID));
    zu:
    mysql_SetInt(Tabelle_Spieler, "Wanteds",wantedlevel, "Name",GetName(pID));

    SendClientMessage steht doch nicht in der Server Log? 8|
    Kannst du den Befehl nochmal einfügen, kompilieren, Server neu starten und nochmal eingeben?


    Es geht um diese Meldung:
    if(SpielerInfo[playerid][pReportAktiv] == 1) return SendClientMessage(playerid, Rot, "** Du hast bereits einen aktiven Support!");
    Du hast gesagt, die wird dir ingame angezeigt.


    Der Log stimmt schon, das weiß ich, aber was kommt ingame? ;)

    Du hast den Server aber schon neu gestartet, nach der Änderung, oder? Und die Datenbank gespeichert.
    Das muss gehen, wenn du es änderst, speicherst und den Server neu startest. Das ist ja die Position, wenn du die änderst, dann ist es nach dem Neustart auch anders ingame, alles andere wäre komisch. 8|

    Dann kann das hier aber nicht aufgerufen werden:
    if(SpielerInfo[playerid][pReportAktiv] == 1) return SendClientMessage(playerid, Rot, "** Du hast bereits einen aktiven Support!");



    Bist du sicher, dass diese Meldung kam? -1 ist nicht 1, daher ist es schlichtweg nicht möglich. :wacko:

    Eigentlich sieht es gut, nur dass du drei mal in ID 1 speicherst, da passt irgendwas mit Carlist[playerid][h][cid] nicht, das wird möglicherweise beim Erstellen der Fahrzeuge schon falsch gesetzt.
    Schau dir das mal an, vielleicht findest du das Problem ja. Ansonsten poste das mal, dann schau ich es mir heute Abend an, wenn ich wieder da bin!


    Ach ja, was sagt der MySQL Log?

    Hier:
    ,Carlist[playerid][h][cDrugs],Carlist[playerid][h][StandTime],
    zwischen denen zwei fehlt die Versicherungs-Variable.


    ,Carlist[playerid][h][cDrugs],HIER,Carlist[playerid][h][StandTime],