Fragen zu Service System

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

  • Hey,


    Habe mal eine frage hab den fehler mitlerweile rausgefunden das es an pID hackt.
    Gibt es die möglichkeit es so zu machen:



    new pID = strcmp(option[32]);


    Oder muss man das ganze irgendwie umändern?

  • Versuche es so:
    ocmd:accept(playerid, params[])
    {
    if(!IsLoggedIn(playerid))return 1;
    new string[256], option[32];

    //Befehle mit Option und keinem Parameter:
    if(sscanf(params, "s[32]", option))
    {
    SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze: {00FF00}/accept [Option]");
    SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Optionen: {AFAFAF}Paket, Heirat, Ticket");
    return 1;
    }
    if(strcmp(option, "paket", true) == 0)
    {
    if(pAcceptPaket[playerid] != -255)
    {
    if(IsLoggedIn(pAcceptPaket[playerid]))
    {
    if(Spieler[playerid][pErstehilfe] == 1)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du hast bereits ein Erstehilfe-Paket.");
    new Float:pos[3];
    GetPlayerPos(pAcceptPaket[playerid], pos[0], pos[1], pos[2]);
    if(!IsPlayerInRangeOfPoint(playerid, 4.0, pos[0], pos[1], pos[2]))return SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}* Du bist nicht in der Nöhe vom Sanitäter.");
    GiveMoney(playerid, -500);
    format(string, sizeof(string), "{33CCFF}* %s hat dein Erste-Hilfe-Paket für $500 gekauft.", GetName(playerid));
    SendClientMessage(pAcceptPaket[playerid], COLOR_WHITE, string);
    GameTextForPlayer(pAcceptPaket[playerid], "~w~Paket verkauft~n~~g~500$", 5000, 1);
    format(string, sizeof(string), "{33CCFF}* Du hast für $500 ein Erste-Hilfe-Paket von %s gekauft.", GetName(pAcceptPaket[playerid]));
    SendClientMessage(playerid, COLOR_WHITE, string);
    SendClientMessage(playerid, COLOR_WHITE,"{33CCFF}* Mit /erstehilfe kannst du deine Wunden Versorgen.");
    pAcceptPaket[playerid] = -255;
    Spieler[playerid][pErstehilfe] = 1;
    Spieler[pAcceptPaket[playerid]][pJobMoney] += 500;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du hast keine Angebot erhalten!");
    return 1;
    }
    return 1;
    }
    else if(strcmp(option, "ticket", true) == 0)
    {
    if(pAcceptTicket[playerid] != -255)
    {
    if(IsLoggedIn(pAcceptTicket[playerid]))
    {
    GiveMoney(playerid, -pAcceptTicketPreis[playerid]);
    GiveMoney(pAcceptTicket[playerid], pAcceptTicketPreis[playerid]);
    format(string, sizeof(string), "{33CCFF}Du hast den Strafzettel von %s in Höhe von $%d bezahlt.", GetName(pAcceptTicket[playerid]), pAcceptTicketPreis[playerid]);
    SendClientMessage(playerid, COLOR_WHITE, string);
    format(string, sizeof(string), "{33CCFF}%s hat deinen Strafzettel in Höhe von $%d bezahlt.", GetName(playerid), pAcceptTicketPreis[playerid]);
    SendClientMessage(pAcceptTicket[playerid], COLOR_WHITE, string);
    pAcceptTicket[playerid] = -255;
    pAcceptTicketPreis[playerid] = 0;
    }
    else
    {
    SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler ist offline. Strafzettel wurde zurückgezogen.");
    pAcceptTicket[playerid] = -255;
    pAcceptTicketPreis[playerid] = 0;
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du hast keine Anfrage für ein Ticket erhalten.");
    return 1;
    }
    return 1;
    }
    else if(strcmp(option, "heirat", true) == 0)
    {
    if(pAcceptHeirat[playerid] != -255)
    {
    if(IsLoggedIn(pAcceptHeirat[playerid]))
    {
    if(Spieler[playerid][pVerheiratet] == 1)
    {
    SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du bist bereits verheiratet.");
    pAcceptHeirat[playerid] = -255;
    return 1;
    }
    if(Spieler[pAcceptHeirat[playerid]][pVerheiratet] == 1)
    {
    SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler ist bereits verheiratet.");
    pAcceptHeirat[playerid] = -255;
    return 1;
    }
    if(GetMoney(pAcceptHeirat[playerid]) < 15000)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Das Heiraten kostet 15.000$");
    GiveMoney(pAcceptHeirat[playerid], -15000);
    format(string, sizeof(string), "{FF9933}NEWS: %s und %s sind nun verheiratet.", GetName(playerid), GetName(pAcceptHeirat[playerid]));
    SendClientMessageToAll(COLOR_WHITE, string);
    Spieler[playerid][pVerheiratet] = 1;
    Spieler[pAcceptHeirat[playerid]][pVerheiratet] = 1;
    SavePlayer(playerid);
    SavePlayer(pAcceptHeirat[playerid]);
    format(Spieler[playerid][pVerheiratetName], MAX_PLAYER_NAME+1, "%s", GetName(pAcceptHeirat[playerid]));
    format(Spieler[pAcceptHeirat[playerid]][pVerheiratetName], MAX_PLAYER_NAME+1, "%s", GetName(playerid));
    pAcceptHeirat[playerid] = -255;
    return 1;
    }
    }
    return 1;
    }

    //Befehle mit Option und einem Parameter:
    new pID;
    if(sscanf(params, "s[32]u", option, pID))
    {
    SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze: {00FF00}/accept [Option] [ID]");
    SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Optionen: {AFAFAF}Polizei");
    return 1;
    }
    if(strcmp(option, "polizei", true) == 0)
    {
    new Float:pos[3];
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler ist nicht online.");
    if(Spieler[playerid][pFraktion] != 1 && Spieler[playerid][pFraktion] != 2 && Spieler[playerid][pFraktion] != 3)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du bist kein Beamter.");
    if(pServicePolice[pID] == 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler benötigt keinen Polizist.");
    if(GetPlayerInterior(pID) > 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler ist in einem Interior. Ortung nicht möglich.");
    if(GetPlayerVirtualWorld(pID) > 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler ist in einem Interior. Ortung nicht möglich.");
    format(string, sizeof(string), "{33CCFF}Polizist %s hat deine Meldung entgegengenommen und ist nun auf dem Weg zu dir.", GetName(playerid));
    SendClientMessage(pID, COLOR_WHITE, string);
    format(string, sizeof(string), "{33CCFF}Du hast die Meldung von %s angenommen, mach dich auf den Weg zu ihm/ihr.", GetName(pID));
    SendClientMessage(playerid, COLOR_WHITE, string);
    pServicePolice[pID] = 0;
    GetPlayerPos(pID, pos[0], pos[1], pos[2]);
    SetPlayerCheckpointEx(playerid, pos[0], pos[1], pos[2], 4.0, CP_SERVICE, CP_TYPE_POLIZEI);
    return 1;
    }

    return 1;
    }

  • Danke werde ich versuchen,



    Andere frage wollte das als 2 Möglichkeit mit einbauen:




    Er sagt mir jedes mal das ich kein Sanitäter bin warum?

  • Ich bin in der Fraktion 1 Also LSPD.
    Fraktion 2 ist FBI.
    Fraktion 3 ist LVPD.


    Fraktion 4 ist LSMD also Medic



    Ich wollte machen das man als LSPD/FBI/LVPD


    Notrufe mit /notruf ID annehmen kann wie die Medics

  • Dann sollte es so ausreichen, das wäre dann der gleiche Befehl wie zuvor, nur für Sanitäter und Polizisten zulässig.
    ocmd:notruf(playerid, params[])
    {
    new pID;
    if(Spieler[playerid][pFraktion] < 1 || Spieler[playerid][pFraktion] > 4) return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du bist kein Sanitäter bzw. Polizist.");
    if(sscanf(params, "u", pID))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze: {00FF00}/notruf [SpielerID/Name]");
    if(Spieler[pID][pTot] <= 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler ist nicht tot.");
    SetPlayerCheckpointEx(playerid, Spieler[pID][pTotX], Spieler[pID][pTotY], Spieler[pID][pTotZ], 3.0, CP_TYPE_SANI, INVALID_CHECKPOINT_TYPE);
    GameTextForPlayer(playerid, "~w~notruf~n~~r~redmarker", 5000, 1);
    return 1;
    }


    Ich habe die ganzen Klammern und Einrückungen entfernt, da diese Art von Schreibweise, mit Anweisung hinter der if-Abfrage und darunter trotzdem eine eingerückte Klammer wahnsinnig verwirrend ist, unübersichtlich ist und sehr schnell zu Fehlern führt.

  • Habe mich falsch ausgedrückt.




    Der Teil wahr schon richtig im Code.
    Nur das der Code für LSPD/FBI/LVPD zugänglich ist.
    Also wen man in der Fratkion ist.



    if(pServicePolice[pID] == 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler benötigt keinen Polizist.");if(GetPlayerInterior(pID) > 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler ist in einem Interior. Ortung nicht möglich.");if(GetPlayerVirtualWorld(pID) > 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler ist in einem Interior. Ortung nicht möglich.");format(string, sizeof(string), "{33CCFF}Polizist %s hat deine Meldung entgegengenommen und ist nun auf dem Weg zu dir.", GetName(playerid));SendClientMessage(pID, COLOR_WHITE, string);format(string, sizeof(string), "{33CCFF}Du hast die Meldung von %s angenommen, mach dich auf den Weg zu ihm/ihr.", GetName(pID));SendClientMessage(playerid, COLOR_WHITE, string);pServicePolice[pID] = 0;GetPlayerPos(pID, pos[0], pos[1], pos[2]);SetPlayerCheckpointEx(playerid, pos[0], pos[1], pos[2], 4.0, CP_SERVICE, CP_TYPE_POLIZEI);



    Der für Medic ist schon richtig so.
    Der Funktioniert ja einwandfrei aber der für die Polizisten nicht.

  • Leider nein er nimmt nur das für Sanitäter.



    Die Polizei sollte das annehmen könn:


    Code
    if(pServicePolice[pID] == 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler benötigt keinen Polizist.");if(GetPlayerInterior(pID) > 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler ist in einem Interior. Ortung nicht möglich.");if(GetPlayerVirtualWorld(pID) > 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler ist in einem Interior. Ortung nicht möglich.");format(string, sizeof(string), "{33CCFF}Polizist %s hat deine Meldung entgegengenommen und ist nun auf dem Weg zu dir.", GetName(playerid));SendClientMessage(pID, COLOR_WHITE, string);format(string, sizeof(string), "{33CCFF}Du hast die Meldung von %s angenommen, mach dich auf den Weg zu ihm/ihr.", GetName(pID));SendClientMessage(playerid, COLOR_WHITE, string);pServicePolice[pID] = 0;GetPlayerPos(pID, pos[0], pos[1], pos[2]);SetPlayerCheckpointEx(playerid, pos[0], pos[1], pos[2], 4.0, CP_SERVICE, CP_TYPE_POLIZEI);


    Und die Sanitäter wen jemand gestorben ist.
    Das Funktioniert leider irgendwie nicht...

  • Jetzt verstehe ich was du meinst. Du musst dich deutlicher ausdrücken.
    ocmd:notruf(playerid, params[])
    {
    new pID;
    if(Spieler[playerid][pFraktion] == 4)
    {
    if(sscanf(params, "u", pID))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze: {00FF00}/notruf [SpielerID/Name]");
    if(Spieler[pID][pTot] <= 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler ist nicht tot.");
    SetPlayerCheckpointEx(playerid, Spieler[pID][pTotX], Spieler[pID][pTotY], Spieler[pID][pTotZ], 3.0, CP_TYPE_SANI, INVALID_CHECKPOINT_TYPE);
    GameTextForPlayer(playerid, "~w~notruf~n~~r~redmarker", 5000, 1);
    }
    else if(Spieler[playerid][pFraktion] >= 1 && Spieler[playerid][pFraktion] <= 3)
    {
    if(sscanf(params, "u", pID))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze: {00FF00}/notruf [SpielerID/Name]");
    if(pServicePolice[pID] == 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler benötigt keinen Polizist.");
    if(GetPlayerInterior(pID) > 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler ist in einem Interior. Ortung nicht möglich.");
    if(GetPlayerVirtualWorld(pID) > 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler ist in einem Interior. Ortung nicht möglich.");
    format(string, sizeof(string), "{33CCFF}Polizist %s hat deine Meldung entgegengenommen und ist nun auf dem Weg zu dir.", GetName(playerid));
    SendClientMessage(pID, COLOR_WHITE, string);
    format(string, sizeof(string), "{33CCFF}Du hast die Meldung von %s angenommen, mach dich auf den Weg zu ihm/ihr.", GetName(pID));
    SendClientMessage(playerid, COLOR_WHITE, string);
    pServicePolice[pID] = 0;
    GetPlayerPos(pID, pos[0], pos[1], pos[2]);
    SetPlayerCheckpointEx(playerid, pos[0], pos[1], pos[2], 4.0, CP_SERVICE, CP_TYPE_POLIZEI);
    }
    else
    {
    SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du bist kein Sanitäter bzw. Polizist.");
    }
    return 1;
    }

  • Beitrag von Dr. Frauenarzt ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Erledigt ().