Simple Job 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
  • 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

    RFT

    2 Mal editiert, zuletzt von RFT ()

  • C:\Dokumente und Einstellungen\Yakup K\Desktop\Server\gamemodes\LVRP1.pwn(48) : error 017: undefined symbol "Jobs_On_This_Server"
    C:\Dokumente und Einstellungen\Yakup K\Desktop\Server\gamemodes\LVRP1.pwn(60) : error 001: expected token: "}", but found "-label-"
    C:\Dokumente und Einstellungen\Yakup K\Desktop\Server\gamemodes\LVRP1.pwn(277) : error 017: undefined symbol "Jobs_On_This_Server"
    C:\Dokumente und Einstellungen\Yakup K\Desktop\Server\gamemodes\LVRP1.pwn(277) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\Yakup K\Desktop\Server\gamemodes\LVRP1.pwn(278) : error 017: undefined symbol "DIALOG_SLYLE_LIST"
    C:\Dokumente und Einstellungen\Yakup K\Desktop\Server\gamemodes\LVRP1.pwn(456) : error 017: undefined symbol "respone"
    C:\Dokumente und Einstellungen\Yakup K\Desktop\Server\gamemodes\LVRP1.pwn(461) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\Yakup K\Desktop\Server\gamemodes\LVRP1.pwn(482) : warning 213: tag mismatch
    C:\Dokumente und Einstellungen\Yakup K\Desktop\Server\gamemodes\LVRP1.pwn(489) : error 017: undefined symbol "Jobs_On_This_Server"
    C:\Dokumente und Einstellungen\Yakup K\Desktop\Server\gamemodes\LVRP1.pwn(489) : error 017: undefined symbol "str"
    C:\Dokumente und Einstellungen\Yakup K\Desktop\Server\gamemodes\LVRP1.pwn(489) : error 017: undefined symbol "str"
    C:\Dokumente und Einstellungen\Yakup K\Desktop\Server\gamemodes\LVRP1.pwn(489) : fatal error 107: too many error messages on one line


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



    9 Errors.


    Kann mir jmd helfen?

  • gleichen error -.-



    Das sind meine
    C:\Users\Nico\Desktop\Alles was mit gta zu tuen hat\2Ter Versuch\gamemodes\GaR.pwn(15) : error 017: undefined symbol "Jobs_On_This_Server"
    C:\Users\Nico\Desktop\Alles was mit gta zu tuen hat\2Ter Versuch\gamemodes\GaR.pwn(341) : error 017: undefined symbol "cmd"
    C:\Users\Nico\Desktop\Alles was mit gta zu tuen hat\2Ter Versuch\gamemodes\GaR.pwn(345) : warning 213: tag mismatch
    C:\Users\Nico\Desktop\Alles was mit gta zu tuen hat\2Ter Versuch\gamemodes\GaR.pwn(346) : error 017: undefined symbol "DIALOG_SLYLE_LIST"
    C:\Users\Nico\Desktop\Alles was mit gta zu tuen hat\2Ter Versuch\gamemodes\GaR.pwn(350) : error 017: undefined symbol "cmd"
    C:\Users\Nico\Desktop\Alles was mit gta zu tuen hat\2Ter Versuch\gamemodes\GaR.pwn(569) : error 017: undefined symbol "respone"
    C:\Users\Nico\Desktop\Alles was mit gta zu tuen hat\2Ter Versuch\gamemodes\GaR.pwn(574) : warning 213: tag mismatch
    C:\Users\Nico\Desktop\Alles was mit gta zu tuen hat\2Ter Versuch\gamemodes\GaR.pwn(595) : warning 213: tag mismatch
    C:\Users\Nico\Desktop\Alles was mit gta zu tuen hat\2Ter Versuch\gamemodes\GaR.pwn(602) : error 017: undefined symbol "str"
    C:\Users\Nico\Desktop\Alles was mit gta zu tuen hat\2Ter Versuch\gamemodes\GaR.pwn(602) : error 017: undefined symbol "str"
    C:\Users\Nico\Desktop\Alles was mit gta zu tuen hat\2Ter Versuch\gamemodes\GaR.pwn(602) : error 029: invalid expression, assumed zero
    C:\Users\Nico\Desktop\Alles was mit gta zu tuen hat\2Ter Versuch\gamemodes\GaR.pwn(602) : fatal error 107: too many error messages on one line


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



    9 Errors.

  • 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

    RFT

  • Ich hab en paar Errors wie mach ich die weg ? ^^


    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(259) : error 001: expected token: "}", but found "-label-"
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(267) : warning 227: more initiallers than enum fields
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(267) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(267) : warning 227: more initiallers than enum fields
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(267) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(267) : warning 227: more initiallers than enum fields
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(267) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(267) : error 018: initialization data exceeds declared size

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • also so ?


    jName[32],



    Weil wenn ich das mache kommt das:


    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(267) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(267) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(267) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2107) : warning 219: local variable "X" shadows a variable at a preceding level
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2107) : warning 219: local variable "Y" shadows a variable at a preceding level
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2107) : warning 219: local variable "Z" shadows a variable at a preceding level
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2111) : error 035: argument type mismatch (argument 2)
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2112) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2112) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2112) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2112) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2107) : warning 203: symbol is never used: "Z"
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2107) : warning 203: symbol is never used: "Y"
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2107) : warning 203: symbol is never used: "X"
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2792) : warning 219: local variable "X" shadows a variable at a preceding level
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2792) : warning 219: local variable "Y" shadows a variable at a preceding level
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2792) : warning 219: local variable "Z" shadows a variable at a preceding level
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2793) : error 035: argument type mismatch (argument 2)
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2795) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2795) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2795) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2796) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2796) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2796) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2796) : warning 213: tag mismatch
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2792) : warning 203: symbol is never used: "Z"
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2792) : warning 203: symbol is never used: "Y"
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(2792) : warning 203: symbol is never used: "X"


    Oder muss ich das X,Y,Z durch Koordinaten ersetzen ? ^^ weil das ist oben nicht so gut ersichtlich..


    Übringens Gutes Tut, hab ich schon immer gesucht :D


  • yaaa X Y Z soltle man durch die Koridinaten die du mit /save ingame gemacht hast ersetzen ;)

  • Ich habe folgende Fehler... Was nun?



    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas\gamemodes\Untitle.pwn(89) : error 017: undefined symbol "DIALOG_SLYLE_LIST"
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas\gamemodes\Untitle.pwn(100) : warning 217: loose indentation
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas\gamemodes\Untitle.pwn(269) : error 017: undefined symbol "str"
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas\gamemodes\Untitle.pwn(269) : error 017: undefined symbol "str"
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas\gamemodes\Untitle.pwn(269) : error 029: invalid expression, assumed zero
    C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas\gamemodes\Untitle.pwn(269) : fatal error 107: too many error messages on one line


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



    5 Errors.

  • Ah, Ok THX Keine Warnings keine Errors mehr :) noch ist es nicht zu spät zum copilen :D


    //Edit


    Ingame geht das ganze nicht, also der Dialog wird aufgerufen und man wählt z.B. Drogen Dealer aus und danach passiert ganix mehr ?!



    Es folgt nacher ein Update was vorher getestet wird.
    Bin zurzeit mit einem iPhone online.
    Daher müsst ihr euch leider etwas gedulden nacher gibt's ne getestete bugfreie Version

    RFT