Fraktionssystem

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 Liebe Samp leute, ich habe ein Fraktionssystem erstellt und bin bis jz soweit:

    enum fraktEnum{
    f_name[128],
    Float:f_x,
    Float:f_y,
    Float:f_z,
    Float:f_r,
    f_inter,
    f_world,
    }
    new fInfo[][fraktEnum] = {
    {"Zivilist", 0.0, 0.0, 0.0, 0.0, 0, 0},
    {"LSPD", 295.2865,-55.4151,2.7772,293.463, 0, 0},
    {"Taxi", 0.0, 0.0, 0.0, 0.0, 0, 0}


    };


    if(!isPlayerInFrakt(playerid, 0)){
    new fID;
    fID = SpielerInfo[playerid][pFraktion];
    SetPlayerPos(playerid, fInfo[fID][f_x],fInfo[fID][f_y],fInfo[fID][f_z]);
    SetPlayerFacingAngle(playerid, fInfo[fID][f_r]);
    SetPlayerInterior(playerid, fInfo[fID][f_inter]);
    SetPlayerVirtualWorld(playerid, fInfo[fID][f_world]);




    Wie kann ich daraus nun ein /makeleader Befehl machen und auch speichern dann ob er leader ist oder nicht?
    Und auch ein invite und uninvite befehl und /setrang?

  • Du hast ja bestimmt sowas Ähnliches wie ein enum für die Spielerdaten:
    Da erstellst du 2 zusätzliche Variablen oder wenn du es wie im Godfather machen willst, 3.


    Die sollten so ähnlich aussehen:

    enum Spieler {
    pFraktion,
    pFraktionRang
    }


    Bei einem makeleader Befehl machst du, dass "pFraktion" die entsprechende FraktionsID bekommt und den maximalen Fraktionsrang.
    Bei invite auch nur Rang 0 oder 1, je nachdem wie du es haben willst und so weiter. Hoffe das hat dir geholfen.


    //edit: Rechtschreibfehler FTW

    Mit freundlichen Grüßen
    Zeuto

  • Jz speichert er die Fraktion,aber den Rank 6 nicht:
    ocmd:makeleader(playerid, params[])
    {
    if(SpielerInfo[playerid][pAdminlevel] < 6) return SendClientMessage(playerid,Rot,"Möglich ab: "COLO" Adminrank 6");
    new pID, fID;
    if(sscanf(params,"ui",pID,fID))return SendClientMessage(playerid,Rot, "INFO: /makeleader [playerid] [fraktid]");
    if(fID >= sizeof(fInfo))return SendClientMessage(playerid,Rot, "Fraktion existiert nicht.");
    SpielerInfo[pID][pFraktion] = fID;
    SpielerInfo[pID][pRang] = 6;
    new string[128];
    format(string,sizeof(string),"%s hat dich zum Leader der Fraktion %s gemacht",GetName(playerid), fInfo[fID][f_name]);
    SendClientMessage(pID, Rot, string);
    SendClientMessage(playerid, Rot, "Du hast einen Spieler zum Leader gemacht.");
    return 1;
    }

  • Hier drei Tutorials die eigentlich alles beschreiben was du aufgezählt hast:


    1.) Mit MySQL speichern/laden: http://forum.sa-mp.com/showthread.php?t=392856
    2.) Für die Struktur der Befehle: http://forum.sa-mp.com/showthread.php?t=368631
    3.) Mit Dini (hat eigentlich alles, ist aber ziemlich chaotisch aufgebaut): http://forum.sa-mp.com/showthread.php?t=296601


    Das sollten mehr als genug Informationen sein um deine Wünsche zu erfüllen! ;)



    EDIT:
    Zeig mal deine Speicherfunktion, der Teil der Fraktion und Rang speichern soll.
    [PeL]Smiley: Siehe hier.

  • Hier drei Tutorials die eigentlich alles beschreiben was du aufgezählt hast:


    1.) Mit MySQL speichern/laden: http://forum.sa-mp.com/showthread.php?t=392856
    2.) Für die Struktur der Befehle: http://forum.sa-mp.com/showthread.php?t=368631
    3.) Mit Dini (hat eigentlich alles, ist aber ziemlich chaotisch aufgebaut): http://forum.sa-mp.com/showthread.php?t=296601


    Das sollten mehr als genug Informationen sein um deine Wünsche zu erfüllen! ;)


    Die Grundbasis habe ich ja schon aber das Problem:
    Jz speichert er die Fraktion,aber den Rank 6 nicht:

    PAWN Quelltext
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ocmd:makeleader(playerid, params[])
    {
    if(SpielerInfo[playerid][pAdminlevel] < 6) return SendClientMessage(playerid,Rot,"Möglich ab: "COLO" Adminrank 6");
    new pID, fID;
    if(sscanf(params,"ui",pID,fID))return SendClientMessage(playerid,Rot, "INFO: /makeleader [playerid] [fraktid]");
    if(fID >= sizeof(fInfo))return SendClientMessage(playerid,Rot, "Fraktion existiert nicht.");
    SpielerInfo[pID][pFraktion] = fID;
    SpielerInfo[pID][pRang] = 6;
    new string[128];
    format(string,sizeof(string),"%s hat dich zum Leader der Fraktion %s gemacht",GetName(playerid), fInfo[fID][f_name]);
    SendClientMessage(pID, Rot, string);
    SendClientMessage(playerid, Rot, "Du hast einen Spieler zum Leader gemacht.");
    return 1;
    }

  • stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    SpielerInfo[playerid][ pLevel] = mysql_GetInt(Tabelle_Spieler, "Level","Name", GetName(playerid));
    SpielerInfo[playerid][ pAdminlevel] = mysql_GetInt(Tabelle_Spieler, "Adminlevel","Name", GetName(playerid));
    SpielerInfo[playerid][ pSkin] = mysql_GetInt(Tabelle_Spieler, "Skin","Name", GetName(playerid));
    SpielerInfo[playerid][ pGeld] = mysql_GetInt(Tabelle_Spieler, "Geld","Name", GetName(playerid));
    SpielerInfo[playerid][ pFraktion] = mysql_GetInt(Tabelle_Spieler, "Fraktion","Name", GetName(playerid));
    SpielerInfo[playerid][ pRang] = mysql_GetInt(Tabelle_Spieler, "Rang","Name", GetName(playerid));
    format(SpielerInfo[playerid][pRegDate],32,"%s", mysql_GetString(Tabelle_Spieler, "Registrierungsdatum","Name", GetName(playerid)));
    //Sachen werden gegeben
    GivePlayerMoney(playerid, SpielerInfo[playerid][ pGeld ]);
    SetPlayerScore (playerid, SpielerInfo[playerid][ pLevel ]);
    SetPlayerSkin (playerid, SpielerInfo[playerid][ pSkin ]);
    }
    return 1;
    }


    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    SpielerInfo[playerid][ pGeld ] = GetPlayerMoney(playerid);
    SpielerInfo[playerid][ pLevel ] = GetPlayerScore(playerid);
    SpielerInfo[playerid][ pSkin ] = GetPlayerSkin(playerid);
    mysql_SetInt(Tabelle_Spieler, "Level", SpielerInfo[playerid][ pLevel ], "Name", GetName(playerid));
    mysql_SetInt(Tabelle_Spieler, "Adminlevel", SpielerInfo[playerid][ pAdminlevel ], "Name", GetName(playerid));
    mysql_SetInt(Tabelle_Spieler, "Skin", SpielerInfo[playerid][ pSkin ], "Name", GetName(playerid));
    mysql_SetInt(Tabelle_Spieler, "Geld", SpielerInfo[playerid][ pGeld ], "Name", GetName(playerid));
    mysql_SetString(Tabelle_Spieler, "Registrierungsdatum", SpielerInfo[playerid][ pRegDate ], "Name", GetName(playerid));
    mysql_SetInt(Tabelle_Spieler,"Fraktion",SpielerInfo[playerid][pFraktion],"Name",GetName(playerid));
    mysql_SetInt(Tabelle_Spieler,"Rang",SpielerInfo[playerid][pLevel],"pRang",GetName(playerid));
    }
    return 1;
    }


    stock CreateAccount(playerid, passwort[])
    {
    new query[256],Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    mysql_real_escape_string(Name,Name);
    mysql_real_escape_string(passwort,passwort);
    format(query, sizeof(query), "INSERT INTO "Tabelle_Spieler" (Name, Passwort) VALUES ('%s', '%s')", Name, passwort);
    mysql_query(query);
    SetPlayerColor(playerid, Zivifarbe);
    SetPlayerSkin(playerid, SpielerInfo[playerid][ pSkin ]);
    mysql_SetInt(Tabelle_Spieler, "Level",Startlevel, "Name", GetName(playerid));
    mysql_SetInt(Tabelle_Spieler, "Adminlevel",0, "Name", GetName(playerid));
    mysql_SetInt(Tabelle_Spieler, "Skin",(ZiviSkin[random(10)]), "Name", GetName(playerid));
    mysql_SetInt(Tabelle_Spieler, "Geld",Startgeld, "Name", GetName(playerid));
    mysql_SetInt(Tabelle_Spieler, "Fraktion",0, "Name", GetName(playerid));
    mysql_SetInt(Tabelle_Spieler, "Rang",0, "Name", GetName(playerid));
    //Registrierungsdatum
    new Datum[30];
    getdate(Jahr, Monat, Tag);gettime(Stunde,Minute);
    format(Datum, sizeof(Datum), "%d.%d.%d um %d:%d", Tag, Monat, Jahr, Stunde,Minute);
    SpielerInfo[playerid][pRegDate] = Datum;
    mysql_SetString(Tabelle_Spieler, "Registrierungsdatum", Datum, "Name", GetName(playerid));
    return 1;
    }

  • Danke Jeffry,hat geklappt jz nurnoch eine einzige Frage :D
    Wie mach ich das in meinem Stats befehl :
    ocmd:stats(playerid,params[])
    {
    new string[128];
    format(string, sizeof(string),""COLB"|===============Allgemeine Informationen===============|"COLO"Name: "COLW"%s\n"COLO"Level: "COLW"%d\n"COLO"Geld: "COLW"%d\n"COLO"Adminlevel:"COLW"%d\nFraktion:",GetName(playerid), SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pGeld],SpielerInfo[playerid][pAdminlevel]);
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,""COLO"4You Reallife Stats",string,"Ok","");
    return 1;
    }
    Bei Fraktion der Name steht?
    Letzte frage :D
    sry für's nerven

  • ocmd:stats(playerid,params[])
    {
    new string[256];
    format(string, sizeof(string),""COLB"|===============Allgemeine Informationen===============|"COLO"Name: "COLW"%s\n"COLO"Level: "COLW"%d\n"COLO"Geld: "COLW"%d\n"COLO"Adminlevel:"COLW"%d\nFraktion:%s",GetName(playerid), SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pGeld],SpielerInfo[playerid][pAdminlevel],GetFrakName(SpielerInfo[playerid][pFraktion]));
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,""COLO"4You Reallife Stats",string,"Ok","");
    return 1;
    }


    stock GetFrakName(fID)
    {
    new name[24];
    switch(fID)
    {
    case 0: name = "Keine";
    case 1: name = "Name der Frak 1";
    case 2: name = "Name der Frak 2";
    default: name = "Keine";
    }
    return name;
    }


    Keine Sorge, du nervst nicht. Ich helfe gerne. :)

  • ocmd:stats(playerid,params[])
    {
    new string[256];
    /*401*/ format(string, sizeof(string),""COLB"|===============Allgemeine Informationen===============|\n"COLO"Name: "COLW"%s\n"COLO"Level: "COLW"%d\n"COLO"Geld: "COLW"%d\n"COLO"Adminlevel:"COLW"%d\n"COLO"Fraktion:"COLW"%s\n"COLO"Rang:"COLW"%d",GetName(playerid), SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pGeld],SpielerInfo[playerid][pAdminlevel],GetFrakName(SpielerInfo[playerid][pFraktion],SpielerInfo[playerid][pRang]));
    ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,""COLO"[4YR]Statistiken",string,"Ok","");
    return 1;
    }
    C:\Users\kevin\Desktop\server\gamemodes\self.pwn(401) : warning 202: number of arguments does not match definition
    Bitte mit Erklärung was falsch war/ist :)

  • /*401*/ format(string, sizeof(string),""COLB"|===============Allgemeine Informationen===============|\n"COLO"Name: "COLW"%s\n"COLO"Level: "COLW"%d\n"COLO"Geld: "COLW"%d\n"COLO"Adminlevel:"COLW"%d\n"COLO"Fraktion:"COLW"%s\n"COLO"Rang:"COLW"%d",GetName(playerid), SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pGeld],SpielerInfo[playerid][pAdminlevel],GetFrakName(SpielerInfo[playerid][pFraktion],SpielerInfo[playerid][pRang]));
    Zu
    /*401*/ format(string, sizeof(string),""COLB"|===============Allgemeine Informationen===============|\n"COLO"Name: "COLW"%s\n"COLO"Level: "COLW"%d\n"COLO"Geld: "COLW"%d\n"COLO"Adminlevel:"COLW"%d\n"COLO"Fraktion:"COLW"%s\n"COLO"Rang:"COLW"%d",GetName(playerid), SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pGeld],SpielerInfo[playerid][pAdminlevel],GetFrakName(SpielerInfo[playerid][pFraktion]) ,SpielerInfo[playerid][pRang]);


    Du hast die pRang Variable in die GetFrakName Funktion geschrieben. Das war der Fehler.

  • Gute Frage nächste Frage haha :D
    Habe ein Ban Befehl erstellt,aber wie gehts nun weiter beim Login abfragen ob der gebannt ist und das auch Speichern also pBan auf 1 setzen usw.


    ocmd:ban(playerid,params[])
    {
    new pID,reason[128],string[128],msg[128];
    if(SpielerInfo[playerid][pAdminlevel] < 1) return SendClientMessage(playerid,Rot,"Möglich ab: "COLO" Adminrank 1");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,Rot,"Keiner ist Verbunden mit dieser ID!");
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,Rot,""COLO"Verwendung: "COLR"/ban [ID] [Grund]");
    format(string,sizeof(string),""COLO"[%s] %s "COLR"hat dich vom Server gebannt, "COLO"Grund: "COLR"%s.",adminrang(playerid),GetName(playerid),reason);
    format(msg,sizeof(msg),""COLO"[%s] %s "COLR"hat den Spieler "COLO"%s "COLR"vom Server gebannt, "COLO"Grund: "COLR"%s",adminrang(playerid),GetName(playerid),GetName(pID),reason);
    ShowPlayerDialog(pID,DIALOG_BAN,DIALOG_STYLE_MSGBOX,"Ban",string,"Verlassen","");
    SendClientMessageToAll(Rot,msg);
    mysql_SetInt(Tabelle_Spieler, "Ban",1, "Name", GetName(pID));
    SavePlayer(pID);
    Kick(pID);
    return 1;
    }

  • Habs hinbekommen,weiß aber nicht wie ich die Abfrage bei OnPlayerConnect mache:
    {
    mysql_GetInt(Tabelle_Spieler, "Ban","Name", GetName(playerid));
    SendClientMessage(playerid,Rot,"Du bist gebannt vom Server!");
    Kick(playerid);
    }

    Einmal editiert, zuletzt von [PeL]Smiley ()

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