Problem mit Kofferraumsystem

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
  • Guten Tag,


    ich habe mir folgendes Filterscript runtergeladen DInv - Kofferrauminventar
    nun habe ich das Problem das mir immer die Nachricht kommt " Du hast keinen Schlüssel für dieses Fahrzeug."
    Wenn ich die Zeile entferne dann kommt diese Meldung zwar nicht aber jeder kann auf jeden Kofferraum zugreifen,
    ich hoffe jemand kann mir weiterhelfen ich bedanke mich im voraus.


    So geht ES:

    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/verstauen",cmdtext,true,10) == 0)
    {
    if(!IsPlayerNearVehicle(playerid)) return SendClientMessage(playerid,0xFFFFFFFF," Du befindest dich nicht in der Nähe eines Vehikels.");
    /*if(GetPVarInt(playerid,Barriere) != GetVehicleRights(GetClosestVehicle(playerid)))
    {
    return SendClientMessage(playerid,0xFF9900AA," Du hast keinen Schlüssel für dieses Fahrzeug.");
    }*/
    new engine,lights,alarm,doors,bonnet,boot,objective,Float:Pos[3],Float:distance,Float:bootdistance;
    SetPVarInt(playerid,"ClosestVehicle",GetClosestVehicle(playerid));
    bootdistance = GetVehicleBootDistance(GetVehicleModel(GetPVarInt(playerid,"ClosestVehicle")));
    GetVehiclePos(GetPVarInt(playerid,"ClosestVehicle"),Pos[0],Pos[1],Pos[2]);
    distance = GetPlayerDistanceFromPoint(playerid,Pos[0],Pos[1],Pos[2]);
    if(bootdistance-0.20 < distance && distance < bootdistance+0.20)
    {
    GetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,1,objective);
    ShowPlayerDialog(playerid,Verstauen,DIALOG_STYLE_MSGBOX,"Verstauen - Menü",GetVehicleSlotDataV(playerid),"Verstauen","Abbrechen");
    }
    return 1;
    }



    So geht es NICHT:

    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/verstauen",cmdtext,true,10) == 0)
    {
    if(!IsPlayerNearVehicle(playerid)) return SendClientMessage(playerid,0xFFFFFFFF," Du befindest dich nicht in der Nähe eines Vehikels.");
    if(GetPVarInt(playerid,Barriere) != GetVehicleRights(GetClosestVehicle(playerid)))
    {
    return SendClientMessage(playerid,0xFF9900AA," Du hast keinen Schlüssel für dieses Fahrzeug.");
    }
    new engine,lights,alarm,doors,bonnet,boot,objective,Float:Pos[3],Float:distance,Float:bootdistance;
    SetPVarInt(playerid,"ClosestVehicle",GetClosestVehicle(playerid));
    bootdistance = GetVehicleBootDistance(GetVehicleModel(GetPVarInt(playerid,"ClosestVehicle")));
    GetVehiclePos(GetPVarInt(playerid,"ClosestVehicle"),Pos[0],Pos[1],Pos[2]);
    distance = GetPlayerDistanceFromPoint(playerid,Pos[0],Pos[1],Pos[2]);
    if(bootdistance-0.20 < distance && distance < bootdistance+0.20)
    {
    GetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,1,objective);
    ShowPlayerDialog(playerid,Verstauen,DIALOG_STYLE_MSGBOX,"Verstauen - Menü",GetVehicleSlotDataV(playerid),"Verstauen","Abbrechen");
    }
    return 1;
    }




    Das habe ich wenn ich ehrlich bin nicht richtig verstanden was ich eintragen soll.

    #define Barriere "Fraktion" //Ändere den Namen in den Anführungszeichen (" ") in den PVar, welcher für die Fraktionsabfrage genutzt wird.



    stock GetVehicleRights(vehicleid)
    {
    switch(vehicleid)
    {
    //Hier kommt die Abfrage herein, welche Personen den
    //Kofferraum welcher Fahrzeuge benutzen dürfen.
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //----Beispiel: //
    //----switch(vehicleid) //
    //----{ //
    //---- case 1 .. 10: return 1; Der Kofferraum von VehicleID 1 - 10 ist jetzt nur noch für Fraktion 1 verfügbar. //
    //---- case 11 .. 24: return 2; Der Kofferraum von VehicleID 11 - 24 ist jetzt nur noch für Fraktion 2 verfügbar. //
    //----} //
    //----return -1; //
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



    }
    return -1;
    }

  • Also was muss in nun konkret tun ? ^^

    Eine Abfrage hinzufügen, die deinen Wünschen entspricht - kurz gesagt. Du musst halt durch Vergleiche überprüfen, welcher Spieler den Kofferraum von einem bestimmten Fahrzeug öffnen darf. Ist das System nur für Spielerfahrzeuge? Darf dann nur der Besitzer den Kofferraum benutzen oder jeder, wenn das Fahrzeug offen ist? Gibt es Fraktionsfahrzeuge? Dürfen nur Fraktionsmitglieder den Kofferraum öffnen?


    Diese Abfragen können wir dir leider nicht vorschreiben, denn wir kennen deine intere Struktur nicht, die für solche Vergleiche notwendig wären (sprich Variablenbezeichnungen).

  • Hast du denn bereits Fraktionen in deinem Code?
    Wenn ja, poste bitte mal einen Beispielcode zu deinen Fraktionen, am besten einen aussagekräftigen Befehl oder ähnliches.


    if(strcmp("/makeleader", cmd, true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid,COLOR_BENUTZETEXT,"/makeleader [Spieler ID] [Fraktionsid]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    new level = strval(tmp);
    if(level > 26 || level < -1) { SendClientMessage(playerid, COLOR_ERRORTEXT, " Es gibt nur 26 Fraktionen/Gangs, bitte wähle zwischen 1-26!"); return 1; }
    if(PlayerInfo[playerid][pAdmin] >= 1338)
    {
    if(IsPlayerConnected(giveplayerid))
    {
    if(PlayerInfo[giveplayerid][pMember] > 0)
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Dieser Spieler ist ein Member einer Gang/Fraktion!");
    return 1;
    }
    new ftext[20];
    if(level == -1) { ftext = "Zivilisten"; }
    else if(level == 2) { ftext = "Drift Access"; }
    else if(level == 3) { ftext = "Brigada"; }
    else if(level == 4) { ftext = "Medic"; }
    else if(level == 5) { ftext = "La Cosa Nostra"; }
    else if(level == 6) { ftext = "Yakuza"; }
    else if(level == 7) { ftext = "FBI"; }
    else if(level == 8) { ftext = "Hitman Agency"; }
    else if(level == 9) { ftext = "News Reporter"; }
    else if(level == 10) { ftext = "Wheelman Agency"; }
    else if(level == 11) { ftext = "Fahrschule"; }
    else if(level == 12) { ftext = "Regierung"; }
    else if(level == 13) { ftext = "Ordnungsamt"; }
    else if(level == 14) { ftext = "LS-PD"; }
    else if(level == 15) { ftext = "Biker Boys"; }
    else if(level == 16) { ftext = "SF-PD"; }
    else if(level == 17) { ftext = "Camorra"; }
    else if(level == 18) { ftext = "V.L.Atztecas"; }
    else if(level == 19) { ftext = "Grove Street"; }
    else if(level == 20) { ftext = "Ballas"; }
    else if(level == 21) { ftext = "West Coast Customs"; }
    else if(level == 22) { ftext = "Triaden"; }
    else if(level == 23) { ftext = "Red Soldiers"; }
    else if(level == 24) { ftext = "L.S.Vagos"; }
    else if(level == 25) { ftext = "Irish Crime Familys"; }
    else if(level == 26) { ftext = "Cali Kartell"; }
    else if(level == 1) { ftext = "SF Rifa"; }
    else { return 1; }
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    PlayerInfo[giveplayerid][pLeader] = level;
    PlayerInfo[giveplayerid][pTeam] = level;
    PlayerInfo[giveplayerid][pRank] = 12;
    PlayerInfo[giveplayerid][pGehalt] = 0;
    format(string, sizeof(string), " Du wurdest vom Admin %s zum Leader der/den %s gemacht.", sendername, ftext);
    SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), " Du hast %s zum Leader der/den %s gemacht.", giveplayer,ftext);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    SetPVarInt(playerid, "PVTeam", PlayerInfo[playerid][pLeader]);
    printf("Admin %s hat %s einen Leaderinvite für %s gegeben.", sendername, giveplayer, ftext);
    format(string,sizeof(string),"Admin %s hat %s zum Leader der/den %s gemacht!", sendername,giveplayer,ftext);
    EnterToLog("Leader",string);
    if(level != -1)
    {
    new Tage = 7;
    new wielange = (Tage*24*60*60);
    new Zeit = wielange+Time();
    PlayerInfo[giveplayerid][pInviteSperre] = Zeit;
    format(string, sizeof(string), "UPDATE `users` SET `InviteDatum`='%d' WHERE `Name`='%s'", Time(), giveplayer);
    self_mysql_queryEx(string);
    }
    Kleidungsshop[giveplayerid] = 1;
    PlayerInfo[giveplayerid][pJob] = 0;
    JoinSkinAuswahl(giveplayerid);
    SendClientMessage(giveplayerid, COLOR_LIGHTRED, "* Wähle einen Skin aus mit den Pfeiltasten. Bestätigen mit Umschalt.");
    SetPVarInt(giveplayerid, "PVTeam", level);
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_KEINADMIN, "*** INFO: Dies ist ein Adminbefehl, du bist kein Admin.");
    }
    }
    return 1;
    }


    ist das aussagekräftig genug^^

  • Dann kannst du es so machen:


    stock GetVehicleRights(vehicleid)
    {
    switch(vehicleid)
    {
    //Hier kommt die Abfrage herein, welche Personen den
    //Kofferraum welcher Fahrzeuge benutzen dürfen.
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    case 1 .. 10: return 1; //Der Kofferraum von VehicleID 1 - 10 ist jetzt nur noch für Fraktion 1 verfügbar. //
    case 11 .. 24: return 2; //Der Kofferraum von VehicleID 11 - 24 ist jetzt nur noch für Fraktion 2 verfügbar. //
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    }
    return -1;
    }


    Und die Abfrage:
    if(PlayerInfo[playerid][pTeam] != GetVehicleRights(GetClosestVehicle(playerid)))
    {
    return SendClientMessage(playerid,0xFF9900AA," Du hast keinen Schlüssel für dieses Fahrzeug.");
    }


    EDIT:
    @#Jugoslawija Sorry, da hatte sich ein "G" zu viel eingeschlichen.

    3HZXdYd.png

    2 Mal editiert, zuletzt von Jeffry () aus folgendem Grund: GPlayerInfo -> PlayerInfo

  • [b][/b]error 017: undefined symbol "GPlayerInfo"warning 215: expression has no effecterror 001: expected token: ";", but found "]"error 029: invalid expression, assumed zerofatal error 107: too many error messages on one lineCompilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase4 Errors.


    if(strcmp("/verstauen",cmdtext,true,10) == 0) { if(GPlayerInfo[playerid][pTeam] != GetVehicleRights(GetClosestVehicle(playerid))) { return
    SendClientMessage(playerid,0xFF9900AA," Du hast keinen Schlüssel für dieses Fahrzeug."); } new engine,lights,alarm,doors,bonnet,boot,objective,Float:Pos[3],Float:distance,Float:bootdistance; SetPVarInt(playerid,"ClosestVehicle",GetClosestVehicle(playerid)); bootdistance = GetVehicleBootDistance(GetVehicleModel(GetPVarInt(playerid,"ClosestVehicle"))); GetVehiclePos(GetPVarInt(playerid,"ClosestVehicle"),Pos[0],Pos[1],Pos[2]); distance = GetPlayerDistanceFromPoint(playerid,Pos[0],Pos[1],Pos[2]); if(bootdistance-0.20 < distance && distance < bootdistance+0.20) { GetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,1,objective); ShowPlayerDialog(playerid,Verstauen,DIALOG_STYLE_MSGBOX,"Verstauen - Menü",GetVehicleSlotDataV(playerid),"Verstauen","Abbrechen"); } return 1; }

  • Beitrag von Kaliber ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: nah ().
  • Solltest auch mal Vergleichen und nicht nur kopieren^^
    Du musst

    if(GPlayerInfo[playerid][pTeam]!=GetVehicleRights(GetClosetVehicle(playerid)))
    {
    return SendClientMessage(playerid,0xFF9900AA," Du hast keinen Schlüssel für dieses Fahrzeug.");
    }

    Zu:

    if(PlayerInfo[playerid][pTeam]!=GetVehicleRights(GetClosetVehicle(playerid)))
    {
    return SendClientMessage(playerid,0xFF9900AA," Du hast keinen Schlüssel für dieses Fahrzeug.");
    }

  • @Jeffry ich denke nicht


    hier noch mal der Code wie ich es eingefügt habe:



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/verstauen",cmdtext,true,10) == 0)
    {
    if(!IsPlayerNearVehicle(playerid)) return SendClientMessage(playerid,0xFFFFFFFF," Du befindest dich nicht in der Nähe eines Vehikels.");
    if(PlayerInfo[playerid][pTeam]!=GetVehicleRights(GetClosetVehicle(playerid)))
    {
    return SendClientMessage(playerid,0xFF9900AA," Du hast keinen Schlüssel für dieses Fahrzeug.");
    }
    new engine,lights,alarm,doors,bonnet,boot,objective,Float:Pos[3],Float:distance,Float:bootdistance;
    SetPVarInt(playerid,"ClosestVehicle",GetClosestVehicle(playerid));
    bootdistance = GetVehicleBootDistance(GetVehicleModel(GetPVarInt(playerid,"ClosestVehicle")));
    GetVehiclePos(GetPVarInt(playerid,"ClosestVehicle"),Pos[0],Pos[1],Pos[2]);
    distance = GetPlayerDistanceFromPoint(playerid,Pos[0],Pos[1],Pos[2]);
    if(bootdistance-0.20 < distance && distance < bootdistance+0.20)
    {
    GetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,1,objective);
    ShowPlayerDialog(playerid,Verstauen,DIALOG_STYLE_MSGBOX,"Verstauen - Menü",GetVehicleSlotDataV(playerid),"Verstauen","Abbrechen");
    }
    return 1;
    }
    if(strcmp("/entnehmen",cmdtext,true,10) == 0)
    {

    if(!IsPlayerNearVehicle(playerid)) return SendClientMessage(playerid,0xFFFFFFFF," Du befindest dich nicht in der Nähe eines Vehikels.");
    if(PlayerInfo[playerid][pTeam]!=GetVehicleRights(GetClosetVehicle(playerid)))
    {
    return SendClientMessage(playerid,0xFF9900AA," Du hast keinen Schlüssel für dieses Fahrzeug.");
    }
    new engine,lights,alarm,doors,bonnet,boot,objective,Float:Pos[3],Float:distance,Float:bootdistance;
    SetPVarInt(playerid,"ClosestVehicle",GetClosestVehicle(playerid));
    bootdistance = GetVehicleBootDistance(GetVehicleModel(GetPVarInt(playerid,"ClosestVehicle")));
    GetVehiclePos(GetPVarInt(playerid,"ClosestVehicle"),Pos[0],Pos[1],Pos[2]);
    distance = GetPlayerDistanceFromPoint(playerid,Pos[0],Pos[1],Pos[2]);
    if(bootdistance-0.20 < distance && distance < bootdistance+0.20)
    {
    GetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(GetPVarInt(playerid,"ClosestVehicle"),engine,lights,alarm,doors,bonnet,1,objective);
    ShowPlayerDialog(playerid,Entnehmen,DIALOG_STYLE_INPUT,"Entnehmen - Menü",GetVehicleSlotDataE(playerid),"Entnehmen","Abbrechen");
    }
    return 1;
    }
    return 0;
    }


  • (170) : error 017: undefined symbol "PlayerInfo"
    (170) : warning 215: expression has no effect
    (170) : error 001: expected token: ";", but found "]"
    (170) : error 029: invalid expression, assumed zero
    (170) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    4 Errors.


    Und das ist die Fehlerzeile:
    if(PlayerInfo[playerid][pTeam]!=GetVehicleRights(GetClosetVehicle(playerid)))