Job Aufbau - Wie?

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..
    Könnte mir wer, eine kurze Erklärung geben (am besten mit OCMD),
    wie ein Job z.B. Drogendealer (bitte den nehmen), bei dem 2 Spieler gebunden sind, also, dass Spieler A /drug [ID] [Anzahl] [Preis] eintippt und Spieler B /accept drugs oder /cancel drugs machen kann halt...


    Bitte alles in OCMD, da ich nicht mit strcmp etc. klarkomme...


    MfG


  • #define ACCEPT_DRUGS 1


    enum spielerenum
    {
    ....
    Accept[4], // Typ ID, Spieler ID, Parameter 1, Parameter 2 <- Dynamisch gehalten für bessere Übersicht
    ...
    };


    ocmd:drug(playerid, params[])
    {
    if(GetPlayerJob(playerid) != JOB_DEALER)return SCM(...);
    new pID, anzahl, preis;
    if(sscanf(params, "udd", pID, anzahl, preis))return SCM(...);
    if(!IsPlayerConnected(pID))return SCM(...);
    if(Player[playerid][Accept][0] != 0)return SCM(...); Er hat noch eine Anfrage am laufen
    if(anzahl <= 0 || preis <= 0)return SCM(...);
    Player[pID][Accept][0] = ACCEPT_DRUGS;
    Player[pID][Accept][1] = playerid;
    Player[pID][Accept][2] = anzahl;
    Player[pID][Accept][3] = preis;
    format(...);
    SCM("%s will dir % Drogen für %€ verkaufen. /accept, /cancel");
    return 1;
    }


    ocmd:accept(playerid, params[])
    {
    if(!Player[pID][Accept][0])return SCM(...);
    new what[16];
    if(strcmp(params, "drugs", true, 5))
    {
    if(Player[pID][Accept][0] != ACCEPT_DRUGS)return SCM(...);
    // Geld nehmen, und Player[pID][Accept][1] geben
    // Accept alles auf 0 (0, 1, 2, 3)
    // formatierte Nachricht beiden senden
    }
    return 1;
    }


    Den /cancel solltest du dann auch schaffen...


    MfG, Piet :)


  • Hey, erstmal danke für deine Hilfe, abber wofürr das Accept[4], // Typ ID, Spieler ID, Parameter 1, Parameter 2 <- Dynamisch gehalten für bessere Übersicht
    Und wofür brauche ich #define ACCEPT_DRUGS 1


    Und was für 'ne Abfrage ist das:
    if(Player[pID][Accept][0] != ACCEPT_DRUGS)return SCM(...);
    Also was bezweckt sie?



    MfG


  • Hey, erstmal danke für deine Hilfe, abber wofürr das Accept[4], // Typ ID, Spieler ID, Parameter 1, Parameter 2 <- Dynamisch gehalten für bessere Übersicht


    Das ist ein Array damit etwas Ordnung reinkommt, in diesem wird die Typ ID der Anfrage = 0, die ID des Spielers von dem du die Anfrage bekommen hast = 1, und 2 Parameter z.B. für Preis und Anzahl



    Und wofür brauche ich #define ACCEPT_DRUGS 1


    Diese Konstante ist nützlich wenn man nicht mehr weiß welche ID das für den Array Anfrage Job war.


    z.B.:

    #define ACCEPT_DRUGS 1
    #define ACCEPT_GUNS 2



    Und was für 'ne Abfrage ist das:
    if(Player[pID][Accept][0] != ACCEPT_DRUGS)return SCM(...);
    Also was bezweckt sie?


    Wenn die Anfrage die der Spieler bekommen hat nicht für Drogen ist, sendet er im eine Nachricht und bricht weiteres ab.


    Hoffe dass ich deine Fragen beantworten konnt...


    Gruß, Piet