Beiträge von Cryptex


    Nette für anfänger,
    ich muss bei mir eig. mein Haussystem umschreiben und paar extra funktionen einbauen und schon hat man ein business system ^^

    if(dialogid == DIALOG_SMARKT)
    {
    if(response)
    {
    if(listitem == 0)
    {
    if(PlayerInfo[playerid][pCrack] == 0)
    {
    new price = 20 * CRACKPREIS;
    format(strieeng, sizeof(strieeng), "* Du hast dir Heroin für $%d gekauft. 10 Stück.",price);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, strieeng);
    PlayerInfo[playerid][pCrack] = 10;
    GivePlayerMoney(playerid, - price);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_LIGHTBLUE," * Du darfst erst weider kaufen wenn du dein Heroin aufgebraucht hast.");
    }
    }
    }
    return 1;
    }

    Hallo,
    ich brauche wieder denkhilfe da ich wieder am Vehiclesystem hänge.
    Ich weiss nicht wie ich die ID´s der Vehicles aus der Datenbank mit den richtigen Vehicle ID´s verknüpfe.
    Wie kann ich das am besten machen so dass ich später halt die Vehicles parken kann, wenn ich im fahrzeug sitze (getplayervehicleid), der auch weis das fahrzeugid nr soundso auch zum fahrzeug aus der db gehört.
    Es muss ja die DB id = der echten vehicleid sein damitt ich die immer abfragen kann oder?
    Wenn ich dann aber lücken in der DB habe z.b. löscht einer sein vehicle dann ist die ID ja weg somit funktioniert meine (schlaue*) logik wieder nicht.


    Ich kann grad nicht so weit denken darum bitte ich um hilfe :D


    Enums der Fahzeuge, Normale Vehicles extra und PlayerVehicles extra
    enum Fahrzeuge
    {
    fvID,
    fvModel,
    Float:fvX,
    Float:fvY,
    Float:fvZ,
    Float:fvA,
    fvColor1,
    fvColor2,
    fvType
    //Vehicle Types
    //0 = Standart
    //1 = Grün
    //2 = Lila
    //3 = Gelb
    //100 = Admin
    //101 = Polizei
    //10 = CarShop 1
    //11 = CarShop 2
    }


    enum PlayerFahrzeuge
    {
    fvID,
    fvModel,
    Float:fvX,
    Float:fvY,
    Float:fvZ,
    Float:fvA,
    fvColor1,
    fvColor2,
    fvPaintjob,
    fvPrice,
    fvLocked,
    fvNeon,
    fvBesitzer[MAX_PLAYER_NAME]
    }


    Abfrage wenn einer im Fahrzeug und wenn Typ.. so und so dann Mache dies und das
    if(newstate == PLAYER_STATE_DRIVER)
    {

    new veh = GetPlayerVehicleID(playerid);
    if(Vehicles[veh][fvID] == veh)
    {
    SendClientMessage(playerid, green, "Selbe ID");
    }
    else
    {
    SendClientMessage(playerid, red, "Andere ID");
    }

    if(Vehicles[GetPlayerVehicleIDEX(playerid)][fvType] == 10)
    {
    SendClientMessage(playerid, green, "{FF0000}[SERVER] {FFFFFF}Du kannst dir das Fahzeug mit /buyvehicle kaufen");
    }
    else if(Vehicles[GetPlayerVehicleID(playerid)][fvType] == 11)
    {
    SendClientMessage(playerid, green, "{FF0000}[SERVER] {FFFFFF}Du kannst dir das Fahzeug mit /buyvehicle kaufen");
    }
    }


    MySql Stock um die Normalen/Player Vehicles zu Laden
    stock LoadPlayerVehicle(playerid)
    {
    new ID, String[1000], Name[MAX_PLAYER_NAME], Query[500];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    mysql_real_escape_string(Name, Name);
    format(Query, sizeof(Query), "SELECT * FROM `PlayerVehicles` WHERE `Besitzer` = '%s'", Name);
    mysql_query(Query);
    mysql_store_result();
    if(mysql_num_rows() > 0)
    {
    while(mysql_fetch_row(String))
    {
    sscanf(String, "p<|>iiffffiiiiiis[200]", PlayerVehicles[ID][fvID], PlayerVehicles[ID][fvModel], PlayerVehicles[ID][fvX], PlayerVehicles[ID][fvY], PlayerVehicles[ID][fvZ], PlayerVehicles[ID][fvA], PlayerVehicles[ID][fvColor1], PlayerVehicles[ID][fvColor2], PlayerVehicles[ID][fvPaintjob], PlayerVehicles[ID][fvPrice], PlayerVehicles[ID][fvLocked], PlayerVehicles[ID][fvNeon], PlayerVehicles[ID][fvBesitzer]);
    PlayerVehicles[ID][fvID] = AddStaticVehicle(PlayerVehicles[ID][fvModel], PlayerVehicles[ID][fvX], PlayerVehicles[ID][fvY], PlayerVehicles[ID][fvZ], PlayerVehicles[ID][fvA], PlayerVehicles[ID][fvColor1], PlayerVehicles[ID][fvColor2]);
    SetVehicleHealth(PlayerVehicles[ID][fvID], 999.0);
    ID++;
    }
    }
    mysql_free_result();
    return 1;
    }


    stock LoadVehicles()
    {
    new ID = 1, String[1000];
    mysql_query("SELECT * FROM `Vehicles`");
    mysql_store_result();
    if(mysql_num_rows() > 0)
    {
    while(mysql_fetch_row(String))
    {
    sscanf(String, "p<|>iiffffiii", Vehicles[ID][fvID], Vehicles[ID][fvModel], Vehicles[ID][fvX], Vehicles[ID][fvY], Vehicles[ID][fvZ], Vehicles[ID][fvA], Vehicles[ID][fvColor1], Vehicles[ID][fvColor2], Vehicles[ID][fvType]);
    Vehicles[ID][fvID] = AddStaticVehicleEx(Vehicles[ID][fvModel], Vehicles[ID][fvX], Vehicles[ID][fvY], Vehicles[ID][fvZ], Vehicles[ID][fvA], Vehicles[ID][fvColor1], Vehicles[ID][fvColor2], (5*60));
    SetVehicleHealth(Vehicles[ID][fvID], 999.0);
    ID++;
    }
    }
    mysql_free_result();
    printf("--> %i Vehicles Loaded FromMySQL", ID);
    return 1;
    }


    Abfrage ob Vehicle ID = DatenbankID?!
    stock GetPlayerVehicleIDEX(playerid)
    {
    new veh = GetPlayerVehicleID(playerid);
    if(Vehicles[veh][fvID] == veh) return veh;
    for(new i; i < MAX_VEHICLES; i++)
    {
    if(Vehicles[i][fvID] == veh) return i;
    }
    return -1;
    }


    Parkbefehl (NOCH NICHT FERTIG DA ICH NICHT WEIS WIE ICH DAS AM BESTEN MACHEN KANN)
    CMD:park(playerid, params[])
    {
    if(GetPlayerState(playerid)==PLAYER_STATE_DRIVER)
    {
    if((!strcmp(PlayerVehicles[GetPlayerVehicleID(playerid)][fvBesitzer], SpielerNameAnzeige(playerid), false)))
    {
    new Float:vehx, Float:vehy, Float:vehz, Float:veha, Name[MAX_PLAYER_NAME], SQL[500];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    mysql_real_escape_string(Name, Name);


    GetVehiclePos(GetPlayerVehicleID(playerid), vehx, vehy, vehz);
    GetVehicleZAngle(GetPlayerVehicleID(playerid), veha);


    format(SQL, sizeof(SQL), "UPDATE PlayerVehicles SET VehicleX = '%f' VehicleY = '%f' VehicleZ = '%f' VehicleAngle = '%f' WHERE Besitzer = '%s'", vehx, vehy, vehz, veha, Name);
    mysql_query(SQL);
    SendClientMessage(playerid, green, "{FF0000}[SERVER] {FFFFFF}Du hast das Fahrzeug geparkt");
    }
    else
    {
    SendClientMessage(playerid, red, "{FF0000}[SERVER] {FFFFFF}Das ist nicht dein Fahzeug");
    }
    }
    else
    {
    SendClientMessage(playerid, red, "{FF0000}[SERVER] {FFFFFF}Du musst als Fahrer im Fahrzeug sitzen");
    }
    return 1;
    }

    und zu guter schluss, es geht :D
    man man man, lag zuletzt an der querry, jop die nachricht bekomme ich, sonst würde ich hier nicht fragen hehe ^^
    danke an alle.. und besonders an d3adlockz <3 xD


    stock AddPlayerVehicleToFile(vModel, Float:vX, Float:vY, Float:vZ, Float:vA, vColor1, vColor2, vType, vBesitzer[], vPreis)
    {
    new Query[400];
    format(Query, sizeof(Query), "INSERT INTO `Vehicles` (`VehicleModel`, `VehicleX`, `VehicleY`, `VehicleZ`, `VehicleAngle`, `Color1`, `Color2`, `VehicleType`, `Besitzer`, `Price`) VALUES ('%d', '%f', '%f', '%f', '%f', '%d', '%d', '%d', '%s', '%d')",
    vModel, vX, vY, vZ, vA, vColor1, vColor2, vType, vBesitzer, vPreis);
    mysql_query(Query);
    mysql_free_result();
    return 1;
    }

    Jo, die größe habe ich einfach so eingelegt um zu gucken ob da was flasch ist,
    danke für deine hilfe, aber da ist immernoch fas faul... :S


    CMD:abuyvehicle(playerid, params[])
    {
    new rand = random(sizeof(RandomSpawnVehicleShop)), vModel, vColor1, vColor2, vType, vBesitzer[500], vPreis;
    vModel = GetVehicleModel(GetPlayerVehicleID(playerid));
    GetVehicleColor(GetPlayerVehicleID(playerid), vColor1, vColor2);
    vType = 999;
    format(vBesitzer, 500, "%s", SpielerNameAnzeige(playerid));
    vPreis = 100;


    if(Vehicles[GetPlayerVehicleIDEX(playerid)][fvType] == 10)
    {
    AddPlayerVehicleToFile(vModel, RandomSpawnVehicleShop[rand][0], RandomSpawnVehicleShop[rand][1], RandomSpawnVehicleShop[rand][2], RandomSpawnVehicleShop[rand][3], vColor1, vColor2, vType, vBesitzer, vPreis);
    SendClientMessage(playerid, green, "{FF0000}[SERVER] {FFFFFF}Du hast dir das Fahzeug gekauft");
    }
    return 1;
    }

    ich selber würde die hp anzeige auf 99 setzen und so prüfen wenn über 99 ist dann kick..
    aber er will das halt so haben.. warum soll ich das lassen, er ist halt kein pro


    un warum hat das nicht mit healthhack zu tun, wenn einer seine hp höher setzen kann als erlaubt ist das hacken

    stimmt, ich währe nicht drauf gekommen jedoch macht er immernoch nicht, muss aber nah dran sein


    aktuell sieht das so aus


    new Float:RandomSpawnVehicleShop[][4] =
    {
    {-1630.91, 1289.79, 6.74587, 134.595},
    {-1630.91, 1289.79, 6.74587, 134.595}
    };


    CMD:abuyvehicle(playerid, params[])
    {
    new rand = random(sizeof(RandomSpawnVehicleShop)), vModel, vColor1, vColor2, vType, vBesitzer[500], vPreis;
    vModel = GetVehicleModel(GetPlayerVehicleID(playerid));
    GetVehicleColor(GetPlayerVehicleID(playerid), vColor1, vColor2);
    vType = 999;
    vBesitzer = SpielerNameAnzeige(playerid);
    vPreis = 100;


    if(Vehicles[GetPlayerVehicleIDEX(playerid)][fvType] == 10)
    {
    AddPlayerVehicleToFile(vModel, RandomSpawnVehicleShop[rand][0], RandomSpawnVehicleShop[rand][1], RandomSpawnVehicleShop[rand][2], RandomSpawnVehicleShop[rand][3], vColor1, vColor2, vType, vBesitzer, vPreis);
    SendClientMessage(playerid, green, "{FF0000}[SERVER] {FFFFFF}Du hast dir das Fahzeug gekauft");
    }
    return 1;
    }


    stock AddPlayerVehicleToFile(vModel, Float:vX, Float:vY, Float:vZ, Float:vA, vColor1, vColor2, vType, vBesitzer[], vPreis)
    {
    new Query[200];
    format(Query, sizeof(Query), "INSERT INTO `Vehicles` (`VehicleModel`, `VehicleX`, `VehicleY`, `VehicleZ`, `VehicleAngle`, `Color1`, `Color2`, `VehicleType`, `Besitzer`, `Price`) VALUES ('%d', '%f', '%f', '%f', '%f', '%d', '%d', '%d', '%s', '%d')",
    vModel, vX, vY, vZ, vA, vColor1, vColor2, vType, vBesitzer, vPreis);
    mysql_query(Query);
    mysql_free_result();
    return 1;
    }