Bankrob nur wenn Cop DUTY ist!!

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
  • Hallo, undzwar möchte ich das die Spieler nur eine Bank ausrauben können wenn ein Cop /duty ist.


    Hier der Befehl beim Ausrauben...



    if(strcmp(cmd, "/rob", true) == 0 || strcmp(cmd, "/ausrauben", true) == 0)
    {
    if(OnDuty[playerid]==1)
    if(!IsPlayerInRangeOfPoint(playerid,3.0,2141.8535,1637.0011,993.5761))
    {
    SendClientMessage(playerid,0xAA3333AA,"Du bist nicht im Tresorraum der Bank!");
    return 1;
    }
    new Cops = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerInfo[i][pMember] == 1 || PlayerInfo[i][pLeader] == 1 || PlayerInfo[i][pLeader] == 2 || PlayerInfo[i][pMember] == 2 || PlayerInfo[i][pLeader] == 3 || PlayerInfo[i][pMember] == 3)
    {
    Cops += 3;
    }
    }
    }


    if(Cops < 3)
    {
    SendClientMessage(playerid, COLOR_GREY, "Wenn keine Cops online sind, ist kein Geld im Tressor!");
    return 1;
    }
    if(rob == 1)
    {
    SendClientMessage(playerid,0xAA3333AA,"Die Bank wurde gerade erst überfallen!");
    return 1;
    }




    Und hier wäre der Befehl für /duty als Cop




    if(strcmp(cmd, "/duty", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    GetPlayerName(playerid, sendername, sizeof(sendername));
    if(IsACop(playerid))
    {
    if (IsPlayerInRangeOfPoint(playerid,3.0,227.6519,111.8072,1003.2188) ||IsPlayerInRangeOfPoint(playerid,3.0,255.3,77.4,1003.6)
    || IsPlayerInRangeOfPoint(playerid,3.0,-1616.1294,681.1594,7.1875) || IsPlayerInRangeOfPoint(playerid,3.0, 217.5230,184.4352,1003.0313)
    || IsPlayerInRangeOfPoint(playerid,3.0, 217.8921,78.9727,1005.0391)
    || PlayerInfo[playerid][pLocal] != 255)
    {
    if(OnDuty[playerid]==0)
    {
    format(string, sizeof(string), "* Officer %s nimmt seine Marke aus dem Schrank und meldet sich zum Dienst.", sendername);
    ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    GivePlayerWeapon(playerid, 41, 500); //spray
    GivePlayerWeapon(playerid, 3, 1); //Nightstick
    GivePlayerWeapon(playerid, 25, 100); //Shotgun
    GivePlayerWeapon(playerid, 24, 500); //Desert Eagle
    GivePlayerWeapon(playerid, 29, 500); //MP5
    OnDuty[playerid] = 1;
    }
    else if(OnDuty[playerid]==1)
    {
    format(string, sizeof(string), "* Officer %s legt seine Marke in den Schrank und macht Feierabend.", sendername);
    ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    ResetPlayerWeapons(giveplayerid);
    PlayerInfo[giveplayerid][pGun1] = 0; PlayerInfo[giveplayerid][pAmmo1] = 0;
    PlayerInfo[giveplayerid][pGun2] = 0; PlayerInfo[giveplayerid][pAmmo2] = 0;
    PlayerInfo[giveplayerid][pGun3] = 0; PlayerInfo[giveplayerid][pAmmo3] = 0;
    PlayerInfo[giveplayerid][pGun4] = 0; PlayerInfo[giveplayerid][pAmmo4] = 0;
    OnDuty[playerid] = 0;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, " Du bist in keiner Umkleide !");
    return 1;
    }
    }





    Es wäre wirklich sehr nett wenn mir jemand sagen könnte wie genau ich das machen muss. Weil sobald man als Cop Online ist können die sofort eine Bank ausrauben. Und das soll dann halt erst gehen wenn der Cop /duty ist....


    hoffe jemand kann mir dabei helfen...


    Greetz Fahne

  • das hier:

    if(PlayerInfo[i][pMember] == 1 || PlayerInfo[i][pLeader] == 1 || PlayerInfo[i][pLeader] == 2 || PlayerInfo[i][pMember] == 2 || PlayerInfo[i][pLeader] == 3 || PlayerInfo[i][pMember] == 3)
    {
    Cops += 3;
    }

    mit dem ersetzen:


    edit:


    da du GF vermutlich hast,mach einfach:

    if(IsACop(i) && OnDuty[i] == 1)
    {
    Cops +=3;
    }

  • So wie es aussieht benutzt Du eine alte Version des Projekt Sunset RP Skriptes.


    Du hast eigentlich schon alles was Du benötigst.


    Code
    if(strcmp(cmd, "/rob", true) == 0 || strcmp(cmd, "/ausrauben", true) == 0) {	if(OnDuty[playerid]==1) {		if(!IsPlayerInRangeOfPoint(playerid,3.0,2141.8535,1637.0011,993.5761)){			return SendClientMessage(playerid,0xAA3333AA,"Du bist nicht im Tresorraum der Bank!");		}    		new Cops = 0;		for(new i = 0; i < MAX_PLAYERS; i++){		    if(IsPlayerConnected(i)){		        if(PlayerInfo[i][pMember] == 1 || PlayerInfo[i][pLeader] == 1 || PlayerInfo[i][pLeader] == 2 || PlayerInfo[i][pMember] == 2 || PlayerInfo[i][pLeader] == 3 || PlayerInfo[i][pMember] == 3)		        {				if(OnDuty[i] != 0) {			            Cops ++;				}		        }		    }		}		if(Cops < 3) {	        	return SendClientMessage(playerid, COLOR_GREY, "Wenn keine Cops online sind, ist kein Geld im Tressor!");		}    		if(rob == 1) {			return SendClientMessage(playerid,0xAA3333AA,"Die Bank wurde gerade erst überfallen!");		}



    Sollte ohne Probleme Funktionieren ;)

    Chief Technology Officer (CTO)


    Interesse an folgenden Domains?

    fivemp.de - planet-zoo.de

    Jetzt anschreiben :)

  • Einmal für Dich zur Erläuterung.


    Im Godfather wird jegliche Staatsdiener Status, Job bezüglich, in diesem Code gesetzt:
    OnDuty[MAX_PLAYERS];


    Wobei die Erklärung folgende ist:
    // 0 = Nicht im Dienst (Wird bei OnPlayerConnected im Normalfall gesetzt)// 1 = Spieler befindet sich nach /duty im Staatlichen Dienst// MAX_PLAYERS = Maximale Größe des Arrays, wobei später hier die eigene SpielderID, der Index-Wert ist



    Im Klartext heißt das, sofern Du in der Grundstruktur dieses System im Godfather nichts geändert hast, es so geht.

    Chief Technology Officer (CTO)


    Interesse an folgenden Domains?

    fivemp.de - planet-zoo.de

    Jetzt anschreiben :)



  • Danke mit deiner Funktion klappt es endlich...


    Aber die nächste Frage...wie kann ich das machen das wenn der user /afk geht das er dann automatisch nicht mehr /duty ist?




    if(strcmp("/afk",cmdtext,true) == 0)
    {
    if(PlayerCuffed[playerid] >= 1 || PlayerTied[playerid] >= 1)
    {
    SendClientMessage(playerid,COLOR_GREY,"Du kannst jetzt nicht AFK gehen!");
    return 1;
    }
    if(!M_Bot[playerid][PAFK])
    {
    KillTimer(M_Bot[playerid][PAFKTimer]);
    M_Bot[playerid][PAFKTimer] = SetTimerEx("AFKOn",15000,0,"i",playerid);
    }
    else SendClientMessage(playerid,0xAA3333AA,"*Du bist schon AFK!*");
    return 1;
    }