Beiträge von Jeffry

    Noch was?


    Du hättest es in einem neuen Thread posten sollen. Naja.
    stock mysql_GetInt_small(Table[], Field[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE 1", Field, Table);
    mysql_query(query);
    mysql_store_result();
    new sqlint = mysql_fetch_int();
    mysql_free_result();
    return sqlint;
    }


    stock mysql_SetInt_small(Table[], Field[], To)
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE 1", Table, Field, To);
    mysql_query(query);
    return true;
    }


    Nutze diese beiden Funktionen (unten im Gamemode einfügen).


    Dein Code dann:
    stock SaveWaffenlager()
    {
    mysql_SetInt_small("waffenlager", "GroveStreet", WaffenLagerInfo[gWaffenlager]);
    return 1;
    }


    stock LoadWaffenlager()
    {
    WaffenLagerInfo[gWaffenlager] = mysql_GetInt_small("waffenlager", "GroveStreet");
    return 1;
    }

    Nutze diese Funktion:
    stock GetFreeNumberPlate()
    {
    new rand = random(9000)+1000, security;
    GFNP_AGAIN:
    for(new i=0; i<MAX_FRAC_VEHICLES; i++)
    {
    if(fracVehicle[i][e_plate] == rand)
    {
    rand++;
    if(rand > 9999)
    {
    if(security > 0) return -1;
    rand = 1000;
    security = 1;
    }
    goto GFNP_AGAIN;
    }
    }
    return rand;
    }


    Dann kannst du beim Erstellen die Nummerntafel so setzen:
    fracVehicle[i][e_plate] = GetFreeNumberPlate();
    new str[10];
    format(str, sizeof(str), "PRP%d", fracVehicle[i][e_plate]);
    SetVehicleNumerPlate(...);

    GetPlayerFromCarlistCar(vehicleid)


    zu:
    GetPlayerFromCarlistCar(vehicleid, playerid, s)



    Sähe bei einer if-Abfrage dann so aus:
    if (playerid!=GetPlayerFromCarlistCar(vehicleid)) {return 1;}


    zu:
    new s, pid, check;
    check = GetPlayerFromCarlistCar(vehicleid, pid, s);
    if(playerid != pid || check == -1) return 1;


    Außerdem muss zum Beispiel bei OnVehicleMode die Schleife weg. Warum? Weil du nicht alle Fahrzeugslots änderst, sondern nur einen. Den bekommst du über GetPlayerFromCarlistCar geliefert.

    Hast du mal versucht den Range zu erhöhen?
    ocmd@2:gate,tor(playerid,params[])
    {
    for(new i = 0; i < sizeof(Schranken); i++)
    {
    if(!IsPlayerInRangeOfSchranke(playerid,i,15.0)) continue;
    MoveSchranke(i);
    SetTimerEx("Closeschranke", 10000, 0, "i", i);
    SendClientMessage(playerid,GRÜN,Schranken[i][Msg]);
    return 1;
    }
    for(new t = 0; t < sizeof(Tore); t++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,15.0,Tore[t][Ax],Tore[t][Ay],Tore[t][Az])) continue;
    MoveObject(torID[t], Tore[t][Ax], Tore[t][Ay], Tore[t][Az],Tore[t][Tspeed],Tore[t][Arx],Tore[t][Ary],Tore[t][Arz]);
    SetTimerEx("CloseGate", 10000, 0, "i", t);
    SendClientMessage(playerid,GRÜN,Tore[t][Msg]);
    return 1;
    }
    return SendClientMessage(playerid, 0xFF0000FF, "Error: Du bist nicht nahe einem Tor.");
    }

    @Schlaubi: Den brauchst du nicht zu killen, wenn du ihn mit dem "false" Parameter startest, also Wiederholung aus.


    @xCurry: Klären wir das in deinem Thread.


    [KoSoVa]:
    Das kannst du mit diesen Funktionen dort nicht machen.
    Poste bitte aus Gründen der Übersichtlichkeit deine Datenbankstruktur, den Code und die beiden Funktionen in einem neuen Thread.

    So, wie versprochen habe ich mir deinen Gamemode nun angeschaut. Das Neon löschst sich ja jetzt, hast du mir geschrieben.
    Versuche es so, damit das Fahrzeug gespeichert wird:


    So für den Sultan (entsprechend für die anderen):
    case 0: //Sultan 560
    {
    new Float:x, Float:y, Float:z, Float:a;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, a);
    new key = GetFreeKey(playerid);
    if(key == -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Kein freier Platz.");
    Dtc_PlayerKey[playerid] = key;
    OnPlayerBuyCar2(playerid, 560, x, y, z, a);
    GiveRandomNeon(PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarId], playerid);
    PutPlayerInVehicle(playerid, PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarId], 0);
    return 1;
    }


    Diese beiden Funktionen unten im Gamemode einfügen:
    stock GetFreeKey(playerid)
    {
    for(new i=0; i<sizeof(Dtc_PlayerHaveCar[]); i++)
    {
    if(!Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]]) return i;
    }
    return -1;
    }


    Function OnPlayerBuyCar2(playerid,Model,Float:x, Float:y, Float:z, Float:a)//CARSYS
    {
    if(IsPlayerConnected(playerid) && !Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]])
    {
    new name[MAX_PLAYER_NAME], str[128];
    GetPlayerName(playerid, name, sizeof name);
    format(str, sizeof str, "/Autos/%s%d.dtcar", name,Dtc_PlayerKey[playerid]);
    PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_x] = x;
    PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_y] = y;
    PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_z] = z;
    PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarRotate] = a;
    new File: hFile = fopen(str, io_write);
    if (hFile)
    {
    new var[32];
    format(var, 32, "CarId=0\n");fwrite(hFile, var);
    format(var, 32, "CarModel=%d\n",Model);fwrite(hFile, var);
    format(var, 32, "CarPos_x=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_x]);fwrite(hFile, var);
    format(var, 32, "CarPos_y=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_y]);fwrite(hFile, var);
    format(var, 32, "CarPos_z=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_z]);fwrite(hFile, var);
    format(var, 32, "CarRotate=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarRotate]);fwrite(hFile, var);
    format(var, 32, "CarNitro=0\n");fwrite(hFile, var);
    format(var, 32, "CarHyd=0\n");fwrite(hFile, var);
    format(var, 32, "CarWheel=0\n");fwrite(hFile, var);
    format(var, 32, "CarAusp=0\n");fwrite(hFile, var);
    format(var, 32, "CarSideL=0\n");fwrite(hFile, var);
    format(var, 32, "CarSideR=0\n");fwrite(hFile, var);
    format(var, 32, "CarFB=0\n");fwrite(hFile, var);
    format(var, 32, "CarRB=0\n");fwrite(hFile, var);
    format(var, 32, "CarSpoiler=0\n");fwrite(hFile, var);
    format(var, 32, "CarRoof=0\n");fwrite(hFile, var);
    format(var, 32, "CarHood=0\n");fwrite(hFile, var);
    format(var, 32, "CarVents=0\n");fwrite(hFile, var);
    format(var, 32, "CarLamps=0\n");fwrite(hFile, var);
    format(var, 32, "CarPJ=-1\n");fwrite(hFile, var);
    format(var, 32, "CarC1=-1\n");fwrite(hFile, var);
    format(var, 32, "CarC2=-1\n");fwrite(hFile, var);
    format(var, 32, "Preis=0\n");fwrite(hFile, var);
    format(var, 32, "CarArrest=0\n");fwrite(hFile, var);
    format(var, 32, "Plate=[LiS]\n");fwrite(hFile, var);
    fclose(hFile);
    }
    OnPlayerCarLogin(playerid);
    }
    }


    Dann schau mal ob es gespeichert wird.

    ocmd:reife(playerid)
    {
    new string[100], anzahl;
    /*if(!sInfo[playerid][pjob] == 6) return SendClientMessage(playerid,ROT,"Du bist kein Holzfäller!");
    InterpolateCameraPos(playerid, 1059.606567, -342.367614, 74.634613, 1050.094970, -340.527465, 117.540206, 3000);
    InterpolateCameraLookAt(playerid, 1054.661254, -341.804412, 75.111228, 1045.595092, -340.745758, 115.371482, 3000);*/
    for(new i = 0; i < sizeof(Baeume); i++)
    {
    if(BaumID[i] == -1)continue;
    anzahl++;
    }
    format(string,sizeof(string),"Es sind zurzeit %d Bäume zum Fällen reif!",anzahl);
    SendClientMessage(playerid,ROT,string);
    /*ShowDialog(playerid,DIALOG_STYLE_MSGBOX,DIALOG_REIFE,"Holzfäller Bäume",string),*/
    return 1;
    }