/takedienstmarke

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 Abend,
    ich steh grad irgendwie auf dem Schlauch und weiß nicht weiter.
    Kurz um was es geht: Copstirbt dann wird ein Pickup mit label erstellt



    so meine Frage ist nun wie muss ich die Positon von dem Pickup Abfragen und kann gleichzeitig auch wissen ob der jenige Cop ist.


  • Beim erstellen des Pickups fragst du dann die Fraktion ab ob der tote ein cop ist und erstellst danach dein pickup.
    Die Float Koordinaten speicherst du unter OnPlayerDeath in deine Variable mit am besten der größe MAX_PLAYERS.


    Beim CMD gehst du wieder mit einer Schleife alle TodPickups durch und fragst dann mit deiner IsPlayerInRangeOfPoint ab ob er in der Nähe ist.


    Code
    for(new i = 0; i < sizeof(TodPickup); i++)
    	{
    	    if(TodPickup[i][TodErstellt] == 0) continue;
    	    if(!IsPlayerInRangeOfPoint(playerid,3.0,TodPickup[i][TodPickupX],TodPickup[i][TodPickupY],TodPickup[i][TodPickupZ])) continue;
    	    //Was passiert wenn er in der rechtweite von einem der Pickups ist
    	    return 1;
    	}

    KleineHilfe 2.0

  • Und wo genau hackt es nun nachdem du den CMD angepasst hast?



    if(strcmp("/takedienstmarke", cmd, true) == 0)
    {
    if(PlayerInfo[playerid][pLeader] != 21 && PlayerInfo[playerid][pMember] != 21) return SendClientMessage(playerid,COLOR_ERRORTEXT,"Du bist kein Mitglied der Freiheitskämpfer und kannst diesen Befehl nicht nutzen.");
    if(PlayerInfo[playerid][pDienstmarke] != 0) return SendClientMessage(playerid,-1,"Du trägst bereits eine Dienstmarke")
    for(new i = 0; i < sizeof(TodPickup); i++)
    {
    if(TodPickup[i][TodErstellt] == 0) continue;
    if(!IsPlayerInRangeOfPoint(playerid,3.0,TodPickup[i][TodPickupX],TodPickup[i][TodPickupY],TodPickup[i][TodPickupZ])) continue;
    SendClientMessage(playerid,COLOR_YELLOW,"Du hast die Dienstmarke eines Officers erfolgreich aufgehoben");
    PlayerInfo[playerid][pDienstmarke] = 1;
    return 1;
    }
    return 1;
    }

    KleineHilfe 2.0

    3 Mal editiert, zuletzt von YaBroo ()

  • Naja funkt doch nicht ganz, ich kann bei jeden pickup /takedienstmarke machen und bekomme sie dann auch.
    es soll aber nur bei spielern gehen die cop sind.


  • //Sry, ich habe vergessen dir noch ne Abfrage einzubauen.


    if(TodPickup[i][TodErstellt] == 0) continue;


    zu
    if(TodPickup[i][TodErstellt] == 0 || TodPickup[i][TodCop] == 0) continue;



    Somit werden nur die TodCop Pickups gewertet.


    lg

    KleineHilfe 2.0

    3 Mal editiert, zuletzt von YaBroo ()