/duty geht nicht :(

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
  • Hallu ,


    ich habe ein kleines Problem... es geht sich um den Befehl /duty. Bei den Cops (fraktion) geht's super, aber beim FBI iwie nicht.
    hier ist einmal der code selbst.


    fehler werden keine ausgespuckt..


    CMD:duty(playerid,params[])
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerInRangeOfPoint(i, 1.0 ,1525.7338,-1674.2052,5.8906))
    {
    if(Spieler[playerid][fraktion] == 1)
    {
    new string[128];
    format(string,sizeof(string),"{FF9900}Polizist : %s ist nun im Dienst!",ReadName(playerid));
    SendClientMessageToAll(COLOR_ADMIN, string);
    Spieler[playerid][duty] = 1;
    dutycheck(playerid);
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);


    }
    else if(IsPlayerInRangeOfPoint(i, 1.0 , 235.6204,115.2621,1003.2188))
    {
    if(Spieler[playerid][fraktion] == 2)
    {
    new string[128];
    format(string, sizeof(string),"{FF9900}FBI Agent : %s ist nun im Dienst!",ReadName(playerid));
    SendClientMessageToAll(COLOR_ADMIN, string);
    Spieler[playerid][duty] = 1;
    dutycheck(playerid);
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);
    }
    }
    }
    }
    return 1;
    }

    Grüße,


    Kaffeepause.

    Wenn das Leben dir eine Zitrone gibt, frag nach Salz und Tequila!

  • Das liegt an
    if(Spieler[playerid][fraktion] == 1)
    Mit dem "== 1" bestimmst du das nur die Fraktion 1 dies kann.
    Wenn mehrere Fraktionen dies können sollen musst du es so schreiben:
    if(Spieler[playerid][fraktion] == 1) || Spieler[playerid][fraktion] == 2)


    #Edit: Ups hab nicht den ganzen Code angeschaut.



    MfG,
    .Fabian!

  • Die Schleife ist dort nicht richtig.
    CMD:duty(playerid,params[])
    {
    if(IsPlayerInRangeOfPoint(playerid, 1.0 ,1525.7338,-1674.2052,5.8906))
    {
    if(Spieler[playerid][fraktion] == 1)
    {
    new string[128];
    format(string,sizeof(string),"{FF9900}Polizist : %s ist nun im Dienst!",ReadName(playerid));
    SendClientMessageToAll(COLOR_ADMIN, string);
    Spieler[playerid][duty] = 1;
    dutycheck(playerid);
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);
    }
    }
    else if(IsPlayerInRangeOfPoint(playerid, 1.0 , 235.6204,115.2621,1003.2188))
    {
    if(Spieler[playerid][fraktion] == 2)
    {
    new string[128];
    format(string, sizeof(string),"{FF9900}FBI Agent : %s ist nun im Dienst!",ReadName(playerid));
    SendClientMessageToAll(COLOR_ADMIN, string);
    Spieler[playerid][duty] = 1;
    dutycheck(playerid);
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);
    }
    }
    return 1;
    }

  • Dann erhöhe mal den Umkreis, 1 ist relativ wenig.
    CMD:duty(playerid,params[])
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0 ,1525.7338,-1674.2052,5.8906))
    {
    if(Spieler[playerid][fraktion] == 1)
    {
    new string[128];
    format(string,sizeof(string),"{FF9900}Polizist : %s ist nun im Dienst!",ReadName(playerid));
    SendClientMessageToAll(COLOR_ADMIN, string);
    Spieler[playerid][duty] = 1;
    dutycheck(playerid);
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);
    }
    }
    else if(IsPlayerInRangeOfPoint(playerid, 3.0 , 235.6204,115.2621,1003.2188))
    {
    if(Spieler[playerid][fraktion] == 2)
    {
    new string[128];
    format(string, sizeof(string),"{FF9900}FBI Agent : %s ist nun im Dienst!",ReadName(playerid));
    SendClientMessageToAll(COLOR_ADMIN, string);
    Spieler[playerid][duty] = 1;
    dutycheck(playerid);
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);
    }
    }
    return 1;
    }

  • Dann teste es so und poste dann was im Server Log steht, wenn du den Befehl eingibst:
    CMD:duty(playerid,params[])
    {
    printf("%d / %d / %d", IsPlayerInRangeOfPoint(playerid, 3.0 ,1525.7338,-1674.2052,5.8906), IsPlayerInRangeOfPoint(playerid, 3.0 , 235.6204,115.2621,1003.2188), Spieler[playerid][fraktion]);
    if(IsPlayerInRangeOfPoint(playerid, 3.0 ,1525.7338,-1674.2052,5.8906))
    {
    if(Spieler[playerid][fraktion] == 1)
    {
    new string[128];
    format(string,sizeof(string),"{FF9900}Polizist : %s ist nun im Dienst!",ReadName(playerid));
    SendClientMessageToAll(COLOR_ADMIN, string);
    Spieler[playerid][duty] = 1;
    dutycheck(playerid);
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);
    }
    }
    else if(IsPlayerInRangeOfPoint(playerid, 3.0 , 235.6204,115.2621,1003.2188))
    {
    if(Spieler[playerid][fraktion] == 2)
    {
    new string[128];
    format(string, sizeof(string),"{FF9900}FBI Agent : %s ist nun im Dienst!",ReadName(playerid));
    SendClientMessageToAll(COLOR_ADMIN, string);
    Spieler[playerid][duty] = 1;
    dutycheck(playerid);
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);
    }
    }
    return 1;
    }

  • Zu not erstelle einfach mal bei dieser Coord. "235.6204,115.2621,1003.2188" ein Pickup.

  • Zitat

    [18:43:53] [join] Kaffeepause. has joined the server (0:127.0.0.1)
    [18:43:55] loadprofil(exp: 10, level: 13)
    [18:44:12] 0 / 1 / 2
    [18:44:16] saveuser(level: 13, exp: 10)
    [18:44:16] [part] Kaffeepause. has left the server (0:1)

    PickUp steht dort bereits :D oder wie meinst du das?

    Grüße,


    Kaffeepause.

    Wenn das Leben dir eine Zitrone gibt, frag nach Salz und Tequila!

  • PickUp steht dort bereits :D oder wie meinst du das?


    Du musst den Befehl einmal ausführen, damit es geprintet wird. ( Zu Jeffrys Post )


    Kontrollier mal ob das Pickup und der Ort wo du den befehl eingibst identisch sind.

  • Es wird schon richtig 'geprintet'.


    Zitat

    [18:44:12] 0 / 1 / 2


    Es wird zuerst überprüft ob der Spieler in der Nähe vom ersten Punkt ist. Es wird 0 zurückgegeben, also ist er nicht in der Nähe.
    Dann wird die Nähe zum zweiten Punkt überprüft. Es wird 1 zurückgegeben, also ist er in der Nähe.
    Und zum Schluß, in welcher Fraktion der Spieler ist. Es wird 2 zurückgegeben, also FBI.


    Sollte eigentlich funktionieren.. :huh:


    mfg
    Ace'X

  • Auch die Nachricht ist nicht zu sehen.
    und nein der Compiler sagt nur das

    Zitat

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

    Alles tuti :D

    Grüße,


    Kaffeepause.

    Wenn das Leben dir eine Zitrone gibt, frag nach Salz und Tequila!

  • Ok, das passt.
    Dann debugge es so und poste dann nochmal was im Server Log steht, wenn du den Befehl ausführst:
    CMD:duty(playerid,params[])
    {
    printf("%d / %d / %d", IsPlayerInRangeOfPoint(playerid, 3.0 ,1525.7338,-1674.2052,5.8906), IsPlayerInRangeOfPoint(playerid, 3.0 , 235.6204,115.2621,1003.2188), Spieler[playerid][fraktion]);
    if(IsPlayerInRangeOfPoint(playerid, 3.0 ,1525.7338,-1674.2052,5.8906))
    {
    printf("Nahe 1");
    if(Spieler[playerid][fraktion] == 1)
    {
    printf("Fraktion 1");
    new string[128];
    format(string,sizeof(string),"{FF9900}Polizist : %s ist nun im Dienst!",ReadName(playerid));
    printf("string: %s", string);
    SendClientMessageToAll(COLOR_ADMIN, string);
    Spieler[playerid][duty] = 1;
    dutycheck(playerid);
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);
    printf("ok");
    }
    }
    else if(IsPlayerInRangeOfPoint(playerid, 3.0 , 235.6204,115.2621,1003.2188))
    {
    printf("Nahe 2");
    if(Spieler[playerid][fraktion] == 2)
    {
    printf("Fraktion 2");
    new string[128];
    format(string, sizeof(string),"{FF9900}FBI Agent : %s ist nun im Dienst!",ReadName(playerid));
    printf("string: %s", string);
    SendClientMessageToAll(COLOR_ADMIN, string);
    Spieler[playerid][duty] = 1;
    dutycheck(playerid);
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);
    printf("ok");
    }
    }
    printf("Ende");
    return 1;
    }

  • ich glaub ich bekomm nen kind ... et geht :D


    Grüße,


    Kaffeepause.

    Wenn das Leben dir eine Zitrone gibt, frag nach Salz und Tequila!