[Hilfe] /duty mit ocmd

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
  • Hier mein befehl:
    ocmd:duty(playerid,params[])
    {
    if(isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");
    if(IsPlayerInRangeOfPoint(playerid,7,197.9491,168.8688,1003.0234))
    if(GetPVarInt(playerid,"Duty")=0)return SendClientMessage(palyerid,BLAU,"Du bist nun Off-duty"); SetPVarInt(playerid,"Duty",0);//hier sind die Fehler (Zeile 248)
    SetPVarInt(playerid,"Duty",1);
    SendClientMessage(playerid,GRUEN,"Du bist nun On-Duty");
    return 1;

    Hier die Fehler


    C:\Users\Michael\Desktop\Server\gamemodes\Reallife2.pwn(248) : warning 211: possibly unintended assignment
    C:\Users\Michael\Desktop\Server\gamemodes\Reallife2.pwn(248) : error 022: must be lvalue (non-constant)
    C:\Users\Michael\Desktop\Server\gamemodes\Reallife2.pwn(248) : warning 215: expression has no effect
    C:\Users\Michael\Desktop\Server\gamemodes\Reallife2.pwn(248) : error 001: expected token: ";", but found ")"
    C:\Users\Michael\Desktop\Server\gamemodes\Reallife2.pwn(248) : error 029: invalid expression, assumed zero
    C:\Users\Michael\Desktop\Server\gamemodes\Reallife2.pwn(248) : 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.


    Ich wollte das, wenn man /duty eingibt On-Duty geht aber auch wenn man es nochmal eingibt Off-Duty

  • steht eig. schon oben aber naja.


    if(GetPVarInt(playerid,"Duty")=0)return SendClientMessage(palyerid,BLAU,"Du bist nun Off-duty"); SetPVarInt(playerid,"Duty",0);//hier sind die Fehler (Zeile 248)

  • nach der 2. if abfrage kommt nichts.. entweder return 1 oder return 0, je nachdem ob er da stehen soll oder nicht.
    bei der 3. abfrage returnst du, der vorgang endet also hier. trotzdem folgt noch eine funktion.


    außerdem solltest du klammern benutzen bei der 3. abfrage. also:


    if(GetPVarInt(playerid,"Duty")=0)
    {
    SendClientMessage(palyerid,BLAU,"Du bist nun Off-duty");
    return SetPVarInt(playerid,"Duty",0);
    }

  • So ich hab es jetzt hinbekommen kein fehler zu haben, aber wenn ich dann /duty mach steht da "Du bist kein Polizist" und werde so dann nicht On-Duty.


    ocmd:duty(playerid,params[])
    {
    if(isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");
    if(IsPlayerInRangeOfPoint(playerid,7,197.9491,168.8688,1003.0234))
    if(GetPVarInt(playerid,"Duty")==0)return SendClientMessage(playerid,BLAU,"Du bist nun Off-duty"); SetPVarInt(playerid,"Duty",0);//Bei (GetPVarInt(playerid,"Duty")==0)
    SetPVarInt(playerid,"Duty",1);
    SendClientMessage(playerid,GRUEN,"Du bist nun On-Duty");
    return 1;
    }


    Wie soll ich denn das machen?

  • falls er in Frak 1 ist, was ich aus deiner Abfrage schließe, dann ist er kein plozist und der vorgang wird abgebrochen.


    verusch es ersteinmal so:


    ocmd:duty(playerid,params[])
    {
    if(isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");
    if(IsPlayerInRangeOfPoint(playerid,7,197.9491,168.8688,1003.0234)) return 1; //ich weiß nicht was passieren soll wenn er in der umgebung ist....
    if(GetPVarInt(playerid,"Duty")==0)
    {
    SendClientMessage(playerid,BLAU,"Du bist nun Off-duty");
    return SetPVarInt(playerid,"Duty",0);//Bei (GetPVarInt(playerid,"Duty")==0) SetPVarInt(playerid,"Duty",1);
    }
    SendClientMessage(playerid,GRUEN,"Du bist nun On-Duty");
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • if(isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");


    muss geändert werden in das:

    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");

  • Muss er nicht unbedingt, wenn er es richtig macht. Da an der stelle a der Vorgang abgebrochen wird, also das was darunter steht nichtmehr passiert.


    Sein Problem war ja das er, obwohl er Polizist war, die Meldung "Sie sind kein polizist!" bekam.
    Das Lag an der falschen abfragen..