Beiträge von RFT

    Ihr müsst folgendes oben definieren




    #define Jobs_On_This_Server 1




    Der Fehler cmd war mein fehler statt cmd muss dort cmdtext stehen =)
    respone gegen response austauschen und dort wor der str Fehler kommt "new str[128];" eintragen
    Dialog_Slyle_List gegen DIALOG_STYLE_LIST austauschen und somir sollten alle Errors behoben sein

    Wenn es Er!k ist hat der sich die Chance meiner Meinung nach 100% vermasselt denn die beleidigungen VIA PN war echt nicht ohne.





    //Edit: Bei diesen User hier handelt es sich nicht um Er!k.


    LG RFT

    Hallo,


    ich habe soeben eine Anfrage bekommen.
    Ein User wollte wissen wie man Nebenjob´s hinzufügt.
    Daraufhin dachte ich mir das ich mal ein Tutorial für ein Job System bastel.
    Dies kann man auch als Nebenjob System nutzen.




    Als aller erstes definieren wir die Jobs dazu setzen wir erstmal eine Enum Struktur:



    enum JobI
    {
    jName[32],
    Float: jX,
    Float: jY,
    Float: jZ,
    }



    Ich erstelle zum Beispiel mal den Job Drogen Dealer:



    #define Jobs_On_This_Server 1 //Hier einträgen wieviele Jobs auf euren Server geben soll diese müssen allerdings alle definiert werden
    new Jobs[Jobs_On_This_Server][JobI]={
    {"Drogen Dealer", 0.0, 0.0, 0.0}

    // %1 %2 %3 %4
    };


    Beschreibung:


    %1: Der name des Berufes
    %2,%2,%3: Die X, Y, Z Koordinaten wo der Spieler seinen Beruf nachgehen kann.



    Als nächstes erkläre ich euch wie die Leute einen Job annehmen können.
    Die Jobs werden aller untereinander im Dialog aufgelistet.
    Hier der Befehl um einen Job anzunehmen.


    Wir definieren für unser JobSystem ein Dialog. (Off Topic: Hier zeige ich euch das man auch eine ID für mehrere Dialoge verwenden kann)



    #define DiaJob 1



    if(strcmp(cmd, "/jobs", true) == 0)
    {
    if(GetPVarInt(playerid, "pJob") != 0)return true; // Der Spieler hat schon einen Job
    new str[256];
    for(new i=0; i < Jobs_On_This_Server; i++)format(str, sizeof(str), "%s\n%s", str, Jobs[i][jName]);
    ShowPlayerDialog(playerid, DiaJob, DIALOG_SLYLE_LIST, "Jobs", str, "Auswählen", "Abbrechen");
    SetPVarInt(playerid, "DiaAction", 1); //Brauchen wir damit wir nur eine Dialogid benötigen.
    return true;
    }
    if(strcmp(cmd, "/kündigen", true) == 0)
    {
    if(GetPVarInt(playerid, "pJob") == 0)return true; // Der Spieler hat keinen Job
    ShowPlayerDialog(playerid, DiaJob, DIALOG_STYLE_MSGBOX, "Kündigung", "Bist du dir sicher das du deinen Job kündigen willst?", "Ja", "Abbrechen");
    SetPVarInt(playerid, "DiaAction", 2); //Brauchen wir damit wir nur eine Dialogid benötigen.
    return true;
    }



    Jetzt folg der wichtigste Teil zu diesen Job System.
    Dieser folgende Code gehört unter OnDialogResponse)



    if(dialogid==DiaJob)
    {
    switch(GetPVarInt(playerid, "DiaAction"))
    {
    case 1:
    {
    if(respone)
    {
    SetPVarInt(playerid, "SelectedJob", listitem+1);
    SetPVarInt(playerid, "DiaAction", 3);
    new str[128];
    format(str, 128, "Bist du dir sicher das du den Job %s\nMachen möchtest ?", Jobs[listitem+1][jName]);
    ShowPlayerDialog(playerid, DiaJob, DIALOG_STYLE_MSGBOX, "Bestätigen", str, "JA", "Zurück");
    }
    else return true;
    }
    case 2:
    {
    if(response)
    {
    SetPVarInt(playerid, "DiaAction", 0);
    ShowPlayerDialog(playerid, DiaJob, DIALOG_STYLE_INPUT, "Kündigung", "Du hast deinen Beruf erfolgreich gekündigt.", "OK", "");
    SetPVarInt(playerid, "pJob", 0);
    }
    else return true;
    }
    case 3:
    {
    if(response)
    {
    SetPVarInt(playerid, "pJob", GetPVarInt(playerid, "SelectedJob"));
    new str[128];
    format(str, 128, "Info: Du hast den Job %s\nNun angenommen.", Jobs[GetPVarInt(playerid, "pJob")][jName]);
    ShowPlayerDialog(playerid, DiaJob, DIALOG_STYLE_MSGBOX, "Info", str,"OK", "");
    SetPVarInt(playerid, "DiaAction", 0);
    return true;
    }
    else
    {
    for(new i=0; i < Jobs_On_This_Server; i++)format(str, sizeof(str), "%s\n%s", str, Jobs[i][jName]);
    ShowPlayerDialog(playerid, DiaJob, DIALOG_SLYLE_LIST, "Jobs", str, "Auswählen", "Abbrechen");
    SetPVarInt(playerid, "DiaAction", 1); //Brauchen wir damit wir nur eine Dialogid benötigen.
    return true;
    }
    }
    }
    }




    Ob der Spieler ein einem Beruf ist könnt ihr so abfragen


    BSP:

    if(GetPVarInt(playerid, "pJob") ==1)//Wäre in unseren Fall der Drogen Dealer



    Ich hoffe ich konnte es soweit verständlich erklären.
    Dieses Script ist nicht auf Fehler getestet da ich es hier im Forum geschrieben habe.



    //Edit[1]: Fehlerbehebung 1
    //Edit[2]: Fehlerbehebung 2


    LG RFT

    Dazu bräuchten wir mehr Code das da oben sind ja nur die Variabeln.
    Wir bräuchten den abschnitt wo die Werte ausgelesen werden.



    LG RFT

    Setz unter Taxi für den Spieler noch eine Variable.
    Ob er den Taxi Befehl genutzt hat. Unter /annehmen fragst du dann ab ob der Spieler ein Taxi gerufen hat.
    Ausserdem wieso nutzt du für ein Befehl strcmp und danach wieder ocmd ?



    LG RFT


    if(GetPlayerWantedLevel(playerid) > 1)


    Ab jetzt werden die Wanted Levels nur noch abgezogen wenn er Spieler über 1 Also 2 Wanteds oder mehr hat.

    So weit ich weiß geht das nicht sollte jemand wissen wie es geht oder das es möglich ist belehrt mich eines besseren


    MFG


    Billy



    Es sind ja leider nur Objekte.
    Diese Leuchten können nur ab einer bestimmtem Woldtimer leuchten von daher ist es nicht möglich.


    LG RFT

    Mach lieber ein extra Timer der das überprüft und nicht unter OnPlayerUpdate



    Würde ich nicht machen. Er möchte ja überprüfen ob der Spieler sich die ganzen zwei Minuten im Radius befindet. Soll er da etwa ein Timer nehmen der jede Sekunde ein Callback aufruft ?
    Das dann sagen wir mal für 20 Spieler ? Da finde ich die Lösung unter "OnPlayerUpdate" angebrachter.


    LG RFT

    Im Hacking Befehl



    SetPVarInt(playerid, "pHack", 1);




    unter OnPlayerUpdate



    if(GetPVarInt(playerid, "pHack") == 1)
    {
    if(IsPlayerInRangeOfPoint(playerid, radius, X, Y, Z))return true;
    else{ KillTimer(/*DenTimerhalt*/); Vielleicht noch SendClientMessage als Info daz}
    }