Fraktionsautos

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Im LoadFracVehicles_Data public.


    Nach:
    //Fahrzeug existiert noch nicht, es wird jetzt in die Datenbank geschrieben.


    Die Fahrzeuge die dir da erstellt worden sind kannst du löschen, wenn du das dann eingefügt hast, werden sie nicht mehr erstellt.

  • public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    for(new i=0; i<FRAC_VEHICLES; i++)
    {
    if(fracVehicle[i][e_vID] == vehicleid)
    {
    if(SpielerInfo[playerid][pFraktion] != fracVehicle[i][e_fracID])
    {
    TogglePlayerControllable(playerid, false);
    TogglePlayerControllable(playerid, true);
    SendClientMessage(playerid, COLOR_RED, "Du bist nicht in der Fraktion, die dieses Fahrzeug verwenden darf.");
    }
    break;
    }
    }
    return 1;
    }


    Hier Jeffry:


    //edit1 Jeffry: eingefügt

  • Debugge es bitte so:
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    for(new i=0; i<FRAC_VEHICLES; i++)
    {
    printf("%d == %d", fracVehicle[i][e_vID], vehicleid);
    if(fracVehicle[i][e_vID] == vehicleid)
    {
    printf("Frak: %d | vehFrak: %d", SpielerInfo[playerid][pFraktion], fracVehicle[i][e_fracID]);
    if(SpielerInfo[playerid][pFraktion] != fracVehicle[i][e_fracID])
    {
    printf("Kommt nicht rein.");
    TogglePlayerControllable(playerid, false);
    TogglePlayerControllable(playerid, true);
    SendClientMessage(playerid, COLOR_RED, "Du bist nicht in der Fraktion, die dieses Fahrzeug verwenden darf.");
    }
    break;
    }
    }
    return 1;
    }
    Dann poste was im Log steht, wenn du ein solches Fahrzeug betrittst.

  • Jeffry:


  • ocmd:addfraktionscar(playerid,params[])
    {
    new fid,vid,mid,color1,color2, Float:x,Float:y,Float:z,Float:a;
    GetPlayerPos(playerid,x,y,z);
    GetPlayerFacingAngle(playerid,a);
    if(sscanf(params,"dddd",fid,mid,color1,color2)) return SendClientMessage(playerid,-1,"Benutze: /addfraktionscar [Fraktionsid] [Model] [Farbe1] [Farbe2]");
    fracVehicle[fid][e_vID] = CreateVehicle(mid,x,y,z,a,color1,color2,-1);
    new query[256];
    format(query, sizeof(query), "INSERT INTO FracVehicles (ModelID, PosX, PosY, PosZ, PosA, Color1, Color2, FracID) VALUES ('%d', '%d', '%f', '%f', '%f', '%f', '%d', '%d', '%d')",
    mid, x, y, z, a, color1, color2, fid);
    mysql_tquery(Handle, query);
    LoadFracVehicles();
    SendClientMessage(playerid,-1,"Du hast ein Fraktionsauto erstellt!");
    return 1;
    }
    Der Befehl muss dann so aussehen. Du hast die Vehicle-ID nicht richtig zu geordnet.


    EDIT:
    Obwohl du "ID" gar nicht abspeichern musst, könntest du das aus der Query auch entfernen. (Habe ich nun gemacht!)

  • Teste es mal so:
    COMMAND:delfraktionscar(playerid,params[])
    {
    new vid;
    if(!strlen(params))
    {
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,-1,"Du bist in keinem Fahrzeug!");
    vid = GetPlayerVehicleID(playerid);
    }
    else
    {
    vid = strval(params);
    if(!GetVehicleModel(vid)) return SendClientMessage(playerid,-1,"Dieses Fahrzeug existiert nicht!");
    }
    new idx = -1;
    for(new i=0; i<FRAC_VEHICLES; i++)
    {
    if(fracVehicle[i][e_vID] == vid)
    {
    idx = i;
    break;
    }
    }
    if(idx==-1) return SendClientMessage(playerid,-1,"Das Fahrzeug ist kein Fraktionsfahrzeug!");
    if(fracVehicle[idx][e_modelID] == 0) return SendClientMessage(playerid,-1,"Das Fahrzeug ist kein Fraktionsfahrzeug!");
    new query[256];
    format(query, sizeof(query), "DELETE FROM FracVehicles WHERE ID = %d", idx);
    mysql_tquery(handle, query);
    DestroyVehicle(fracVehicle[idx][e_vID]);
    LoadFracVehicles();
    SendClientMessage(playerid,-1,"Fraktionsfahrzeug entfernt!");
    return 1;
    }

  • COMMAND:delfraktionscar(playerid,params[])
    {
    new vid;
    if(!strlen(params))
    {
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,-1,"Du bist in keinem Fahrzeug!");
    vid = GetPlayerVehicleID(playerid);
    }
    else
    {
    vid = strval(params);
    if(!GetVehicleModel(vid)) return SendClientMessage(playerid,-1,"Dieses Fahrzeug existiert nicht!");
    }
    for(new i;i<FRAC_VEHICLES;i++)
    {
    if(vid == fracVehicle[i][e_vID])
    {
    new query[256];
    format(query, sizeof(query), "DELETE FROM FracVehicles WHERE ID = %d", vid);
    mysql_tquery(handle, query);
    DestroyVehicle(vid);
    LoadFracVehicles();
    SendClientMessage(playerid,-1,"Fraktionsfahrzeug entfernt!");
    return 1;
    }
    }
    return SendClientMessage(playerid,-1,"Das Fahrzeug ist kein Fraktionsfahrzeug!");
    }
    Dann könnte er das ganze auch gleich so schreiben, wenn ich mich nicht irre :D