Hillfe bei meinem GetInCar befehl

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
  • So sieht der Befehl aus:


    ocmd:getincar(playerid,params[])
    {
    new pID,string[128],Float:x,Float:y,Float:z;
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,HELLBLAU,"/giv [ID]");
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,GRAU,"Du bist kein Cop!");
    {
    if(GetPlayerState(pID) == PLAYER_STATE_ONFOOT)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    GetPlayerPos(playerid,x,y,z);
    if(!IsPlayerInRangeOfPoint(pID,10,x,y,z))return SendClientMessage(playerid,HELLBLAU,"Dieser Spieler ist nicht in deiner Nähe!");
    PutPlayerInVehicle(pID, vehicleid, 3);
    format(string,sizeof(string),"Du hast %s in dein Auto gezogen!Vergesse nicht ihn zu fesseln!(/cuff)",SpielerName(pID));
    SendClientMessage(playerid,HELLBLAU,string);
    format(string,sizeof(string),"Du wurdest von %s in sein Auto gezogen!",SpielerName(playerid));
    SendClientMessage(pID,GRAU,string);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,HELLBLAU,"Dieser Spieler ist nicht am Laufen!");
    return 1;
    }
    else //HIER SOLL DER EROOR SEIN
    {
    SendClientMessage(playerid,HELLBLAU,"Du bist nicht der Fahrer!");
    return 1;
    }
    }
    }


    Aber ich bekommme noch diese beiden Errors und kann sie nicht lösen


    C:\Dokumente und Einstellungen\Cedric\Eigene Dateien\Dropbox\samp03x_svr_R2_win32\gamemodes\reallife.pwn(1140) : warning 225: unreachable code
    C:\Dokumente und Einstellungen\Cedric\Eigene Dateien\Dropbox\samp03x_svr_R2_win32\gamemodes\reallife.pwn(1140) : error 029: invalid expression, assumed zero
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

    Regelmäßiger Stuhlgang im Leben des Menschen ist das A&A

  • Die Else mit jeweils 2 Klammern schließen.

    Code
    else
    		{
    		    SendClientMessage(playerid,HELLBLAU,"Dieser Spieler ist nicht am Laufen!");
    		    return 1;
    		}
           }


    die andere auch


    Edit:

    Code
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
              {


    Da muss auch noch Klammer auf ^^

    Blub

  • [P4L]Chris@Key regelt :D


    Klar geht das.
    Beispiel:

    Spoiler anzeigen
    if (strcmp(cmdtext,"/sperre", true )==0)
    {
    if(IsACop(playerid))
    {
    if(Sperrebit[playerid]==0)
    {
    if(!IsPlayerInAnyVehicle(playerid))
    {
    new Float:x,Float:y,Float:z,Float:a;
    GetPlayerPos(playerid,x,y,z);
    GetPlayerFacingAngle(playerid,a);
    //GetXYInFrontOfPlayer(playerid,x,y,2.0);
    Sperre[playerid][0] = CreateDynamicObject(1228,x,y,z-0.5,0,0,a+90);
    Sperre[playerid][1] = CreateDynamicObject(1228,x+2.0 * floatsin(-a+90, degrees),y+2.0 * floatcos(-a+90, degrees),z-0.5,0,0,a+90);
    Sperre[playerid][2] = CreateDynamicObject(1228,x+4.0 * floatsin(-a+90, degrees),y+4.0 * floatcos(-a+90, degrees),z-0.5,0,0,a+90);
    Sperre[playerid][3] = CreateDynamicObject(1228,x-2.0 * floatsin(-a+90, degrees),y-2.0 * floatcos(-a+90, degrees),z-0.5,0,0,a+90);
    Sperre[playerid][4] = CreateDynamicObject(1228,x-4.0 * floatsin(-a+90, degrees),y-4.0 * floatcos(-a+90, degrees),z-0.5,0,0,a+90);
    Sperrebit[playerid]=1;
    SendClientMessage(playerid, COLOR_YELLOW,"Straßensperre erstellt!");
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED,"Du kannst keine Straßensperre erstellen wenn du in einem Auto bist!");
    }
    }
    else
    {
    DestroyDynamicObject(Sperre[playerid][0]);
    DestroyDynamicObject(Sperre[playerid][1]);
    DestroyDynamicObject(Sperre[playerid][2]);
    DestroyDynamicObject(Sperre[playerid][3]);
    DestroyDynamicObject(Sperre[playerid][4]);
    Sperrebit[playerid]=0;
    SendClientMessage(playerid, COLOR_YELLOW,"Straßensperre abgebaut!");
    }
    }
    else
    {
    }
    return 1;
    }

    Blub

    • Offizieller Beitrag

    Versuch es mal so:
    ocmd:getincar(playerid,params[])
    {
    new pID,string[128],Float:x,Float:y,Float:z;
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,HELLBLAU,"/giv [ID]");
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,GRAU,"Du bist kein Cop!");
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,HELLBLAU,"Du bist nicht der Fahrer!");
    if(GetPlayerState(pID) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid,HELLBLAU,"Dieser Spieler ist nicht am Laufen!");
    if(!IsPlayerInRangeOfPoint(pID,10,x,y,z))return SendClientMessage(playerid,HELLBLAU,"Dieser Spieler ist nicht in deiner Nähe!");
    new vehicleid = GetPlayerVehicleID(playerid);
    GetPlayerPos(playerid,x,y,z);
    PutPlayerInVehicle(pID, vehicleid, 3);
    format(string,sizeof(string),"Du hast %s in dein Auto gezogen!Vergesse nicht ihn zu fesseln!(/cuff)",SpielerName(pID));
    SendClientMessage(playerid,HELLBLAU,string);
    format(string,sizeof(string),"Du wurdest von %s in sein Auto gezogen!",SpielerName(playerid));
    SendClientMessage(pID,GRAU,string);
    return 1;
    }



    @[P4L]Chris@Key:
    Habe mein Post nur editiert, warst schneller :D

  • Er hat alle Abfragen direkt festgestellt, siehe alle "if" oben im Code. Damit wird direkt eine bestimmte Situation abgefragt und reagiert, ohne das der Code durchgelaufen wird und ein else anspringt.



    Achso okay, danke für euer hilfe aber eine Frage hätte ich noch. Wie kann ich es machen das ein Spieler im Auto gefreezt wird? Also das er nicht mehr aussteigen kann?

    Regelmäßiger Stuhlgang im Leben des Menschen ist das A&A

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
    • Offizieller Beitrag

    Gut das du fragst.
    Ich habe erstmal alle IF Abfragen gekürzt


    ocmd:getincar(playerid,params[])
    {
    new pID,string[128],Float:x,Float:y,Float:z;
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,HELLBLAU,"/giv [ID]");
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,GRAU,"Du bist kein Cop!");
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid,HELLBLAU,"Du bist nicht der Fahrer!"); //Hier
    if(GetPlayerState(pID) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid,HELLBLAU,"Dieser Spieler ist nicht am Laufen!"); //Hier
    if(!IsPlayerInRangeOfPoint(pID,10,x,y,z))return SendClientMessage(playerid,HELLBLAU,"Dieser Spieler ist nicht in deiner Nähe!"); //Hier habe Ich es nach oben gesetzt, damit vehiclieid nicht unnltig gesetzt wird falls er nicht in der Nähe ist.
    new vehicleid = GetPlayerVehicleID(playerid);
    GetPlayerPos(playerid,x,y,z);
    PutPlayerInVehicle(pID, vehicleid, 3);
    format(string,sizeof(string),"Du hast %s in dein Auto gezogen!Vergesse nicht ihn zu fesseln!(/cuff)",SpielerName(pID));
    SendClientMessage(playerid,HELLBLAU,string);
    format(string,sizeof(string),"Du wurdest von %s in sein Auto gezogen!",SpielerName(playerid));
    SendClientMessage(pID,GRAU,string);
    return 1;
    }


    Ich bin nur die Kriterien durchgegangen.
    Man sollte wenn möglich if-Abfragen ohne else nutzen.


    Zu deinen Fehler:
    ocmd:getincar(playerid,params[])
    {
    new pID,string[128],Float:x,Float:y,Float:z;
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,HELLBLAU,"/giv [ID]");
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) //"{" Fehlt, hat Ja [P4L]Chris@Key schon erwähnt
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,GRAU,"Du bist kein Cop!");
    {
    if(GetPlayerState(pID) == PLAYER_STATE_ONFOOT)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    GetPlayerPos(playerid,x,y,z);
    if(!IsPlayerInRangeOfPoint(pID,10,x,y,z))return SendClientMessage(playerid,HELLBLAU,"Dieser Spieler ist nicht in deiner Nähe!"); // Das wie schon erwähnt nach oben setzen, damit nicht unnötige Variablen gesetzt werden.
    PutPlayerInVehicle(pID, vehicleid, 3);
    format(string,sizeof(string),"Du hast %s in dein Auto gezogen!Vergesse nicht ihn zu fesseln!(/cuff)",SpielerName(pID));
    SendClientMessage(playerid,HELLBLAU,string);
    format(string,sizeof(string),"Du wurdest von %s in sein Auto gezogen!",SpielerName(playerid));
    SendClientMessage(pID,GRAU,string);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,HELLBLAU,"Dieser Spieler ist nicht am Laufen!");
    return 1;
    }
    } //<- das hat gefehlt.
    else //HIER SOLL DER EROOR SEIN
    {
    SendClientMessage(playerid,HELLBLAU,"Du bist nicht der Fahrer!");
    return 1;
    }
    }
    }
    Hoffe das diese Erklärung ausreicht :)
    EDIT:
    Zu deiner Frage:
    Einfach Freeze wenn er im Auto sitzt:
    TogglePlayerControllable

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen