Levelsystem für alles(@Keks, bitte einmal vorbeischaun)

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
  • Moin Leute,
    ich wollt mal für nen Tut für Levelsysteme fragen.
    Was genau soll das sein?
    Nun ja so etwas ähnliches wie nen Adminsystem, sprich beim Command
    if(playerisgTeam == COPS <3)
    so was kommt. So in etwa auch wie bei GF, dieses Leadersystem und das eben für eigentlich alles.
    Wie macht man so etwas`?


    LG Weed

    Einma vorbei schaun lohnt sich
    www.prt-clan.com der GamerClan für GTA-SAMP.Wir haben einen leistungsstarken vServer und ein hoch entwickeltes RealLife Script der Marke eigenbau, zu 100% Selfmade.
    Bald geht der RL-Server on, seid alle dabei. Regestriert euch und fiebert mit!!!


    Einmal editiert, zuletzt von Weed ()

  • Globale Variable:
    new PlayerRank[MAX_PLAYERS];


    Beispielbefehl:
    if(strcmp(cmdtext, "/wtf", true) == 0)
    {
    if(PlayerRank[playerid] == 1)
    {
    PlayerRank[playerid]++;
    return 1;
    }
    if(PlayerRank[playerid] == 6)
    {
    return SendClientMessage(playerid, 0xFF0000FF, "Du bist bereits Rank 6 ^^");
    PlayerRank[playerid] = 6;
    return 1;
    }
    }

  • Omfg, 290 Beiträge aber keine Ahnung von Pawn haben........


    dcmd?
    strget?
    strtok?

  • strget
    jop meine beiträge sind a.) nicht immer die sinvollsten(siehe off topic)
    und b.) geprägt von hilferufen^^
    glaube das thema ist untergegangen

    Einma vorbei schaun lohnt sich
    www.prt-clan.com der GamerClan für GTA-SAMP.Wir haben einen leistungsstarken vServer und ein hoch entwickeltes RealLife Script der Marke eigenbau, zu 100% Selfmade.
    Bald geht der RL-Server on, seid alle dabei. Regestriert euch und fiebert mit!!!


    2 Mal editiert, zuletzt von Weed ()

  • also einmal rall ich dcmd nit und dann ist da nichts mit invite und ich versteh nit was er mit dem level was er da meinte meint, das ist ja jetzt für nen command aber wie erstellt man level???


    kommt schon einer muss das doch wissen

    Einma vorbei schaun lohnt sich
    www.prt-clan.com der GamerClan für GTA-SAMP.Wir haben einen leistungsstarken vServer und ein hoch entwickeltes RealLife Script der Marke eigenbau, zu 100% Selfmade.
    Bald geht der RL-Server on, seid alle dabei. Regestriert euch und fiebert mit!!!


    Einmal editiert, zuletzt von Weed ()

  • Deinem Post entnehme ich mal, dass du strget verwendest
    //ganz nach oben:
    new rank[MAX_PLAYERS];
    //OnPlayerCommandText:
    if(!strcmp(strget(cmdtext,0),"/invite")) {
    if(!strlen(strget(cmdtext,1))) return SendClientMessage(playerid,FARBE,"/invite ID Rank");
    new typ=strval(strget(cmdtext,1));
    if(IsPlayerConnected(typ)) {
    if(!strlen(strget(cmdtext,2))) return SendClientMessage(playerid,FARBE,"/invite ID Rank");
    new rang=strval(strget(cmdtext,2));
    rank[typ]=rang;//hier seetzt du das level von ihm auf deinen 2ten parameter
    //man könnte jetzt noch nachrichten senden... aber aus zeitgründen kann ichs jetzt nicht^^
    }
    else { SendClientMessage(playerid,FARBE,"ID nicht vergeben");}
    return 1;
    }

  • gut die invite funktion hab ich aber muss es nicht noch iwo was geben wo ich definiere wie viele level es gibt z.b.? oder einfach nur new rank?

  • könnte ich auch new rank[blabla] = admin machen?


    /edit muss man eig das rank iwie deklarieren? eig ja nur wie? und kann man mehrere levelsysteme machen?
    UNd ganz wichtig, wie mach ich das der auch noch das rank savet, und nebenbei wie mach ich das der auch das gTeam savet?

    dcmd_register(playerid, params[])
    {
    if (IsPlayerConnected(playerid))
    {
    new string[256];
    new password[100];
    new Player[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Player, sizeof(Player));
    format(string, sizeof(string), "%s.ini", Player);
    if (sscanf(params, "s", password))
    {
    return SendClientMessage(playerid, 0xffffff, " /register password");
    }
    if (dini_Exists(string))
    {
    return SendClientMessage(playerid, 0xffffff, " Der name ist bereits registriert");
    }
    else
    {
    dini_Create(string);
    dini_Set(string, "password", password);
    dini_IntSet(string, "score", 0);
    dini_IntSet(string, "cash", 0);
    SendClientMessage(playerid, 0xffffff, " Bitte einloggen: /login password");
    }
    }
    return 1;
    }


    SQL
    PS es gibt fehlerC:\Dokumente und Einstellungen\Administrator\Desktop\samp02Xserver.win32\gamemodes\DM.pwn(684) : warning 225: unreachable code
    C:\Dokumente und Einstellungen\Administrator\Desktop\samp02Xserver.win32\gamemodes\DM.pwn(689) : warning 219: local variable "typ" shadows a variable at a preceding level
    C:\Dokumente und Einstellungen\Administrator\Desktop\samp02Xserver.win32\gamemodes\DM.pwn(696) : error 017: undefined symbol "rank"
    C:\Dokumente und Einstellungen\Administrator\Desktop\samp02Xserver.win32\gamemodes\DM.pwn(696) : warning 215: expression has no effect
    C:\Dokumente und Einstellungen\Administrator\Desktop\samp02Xserver.win32\gamemodes\DM.pwn(696) : error 001: expected token: ";", but found "]"
    C:\Dokumente und Einstellungen\Administrator\Desktop\samp02Xserver.win32\gamemodes\DM.pwn(696) : error 029: invalid expression, assumed zero
    C:\Dokumente und Einstellungen\Administrator\Desktop\samp02Xserver.win32\gamemodes\DM.pwn(696) : fatal error 107: too many error messages on one line


    if(!strcmp(strget(cmdtext,0),"/setlevel"))
    {
    if(!strlen(strget(cmdtext,1)))
    return
    SendClientMessage(playerid,ROT,"/setlevel ID Rank");
    new typ=strval(strget(cmdtext,1));
    if(IsPlayerConnected(typ))
    {
    if(!strlen(strget(cmdtext,2)))
    return
    SendClientMessage(playerid,ROT,"/setlevel ID Rank");
    new rang=strval(strget(cmdtext,2));
    rank[typ]=rang;//hier seetzt du das level von ihm auf deinen 2ten parameter
    SendClientMessage(playerid,WEIS,"Du hast das Level des Players gesetzt");
    SendClientMessage(zieo,WEIS,"Dein Level wurde gesetzt");
    }
    else
    {
    SendClientMessage(playerid,ROT,"ID nicht vergeben");
    }
    return 1;
    }
    komt schon iwer weiß das

    Einma vorbei schaun lohnt sich
    www.prt-clan.com der GamerClan für GTA-SAMP.Wir haben einen leistungsstarken vServer und ein hoch entwickeltes RealLife Script der Marke eigenbau, zu 100% Selfmade.
    Bald geht der RL-Server on, seid alle dabei. Regestriert euch und fiebert mit!!!


    5 Mal editiert, zuletzt von Weed ()

  • Bei dem "rank[blablabla]" kannst du nur Zahlen eintragen, z.b.:
    rank[blablabla]=20;
    //-------------------------------------
    Zum saven:
    //bei dcmd_register
    ...
    dini_IntSet(string, "score", 0);
    dini_IntSet(string, "cash", 0);
    dini_IntSet(string,"team",gTeam[playerid]);
    dini_IntSet(string,"rank",rank[playerid]);
    ...
    //beim login:
    rank[playerid]=dini_Int(string,"rank");
    gTeam[playerid]=dini_Int(string,"team");
    ...
    //OnPlayerDisconnect:
    //falls du ein autosave hast:
    dini_IntSet(string,"team",gTeam[playerid]);
    dini_IntSet(string,"rank",rank[playerid]);
    //PS: ich nenn die datein jetzt einfach mal "string", weil das bei dir bei dcmd_register auch soe hieß
    Zu den Errors bei /setlevel:
    Hast du ganz oben "new rank[MAX_PLAYERS];" stehen? (also globale Variable)
    Und "typ" verwendest du bereits i-wo anders, nenns einfach um


    PS: Geile Überschrift xD

  • if(!strcmp(strget(cmdtext, 0), "/invite"))
    {
    if(gLeader[playerid] == TEAM_COPS)
    {
    new typ=strval(strget(cmdtext,1));
    if(IsPlayerConnected(typ))
    {
    new string [32];
    new sendername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, sendername, sizeof (sendername));
    format(string, sizeof(string), "Du hast %s eingeladen...",sendername);
    SendClientMessage(playerid, WEIS, string);
    Team[typ]=Team[playerid];
    SendClientMessage(ziel, GELB,"Du wurdest von %s in einen Beruf eingestellt",sendername);
    }
    else
    {
    SendClientMessage(playerid,ROT,"ID nicht vergeben");
    }
    return 1;
    if(!strcmp(strget(cmdtext,0),"/makeleader"))
    {
    new teamid = strval(strget(cmdtext,2));
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerRank[playerid]<1)
    {
    SendClientMessage(playerid,ROT,"Du bist kein Admin");
    }
    if(PlayerRank[playerid]>1)
    {
    gLeader[ziel] = teamid;


    SendClientMessage(ziel,WEIS,"Du bist nun Leader eines Teams");
    }
    }
    return 1;
    }

    if(!strcmp(strget(cmdtext,0),"/setlevel"))
    {
    if(PlayerRank[playerid]>4)
    return
    SendClientMessage(playerid,ROT,"Du bist kein Admin oder bestitzt nicht das benötigte Level);
    {
    if(!strlen(strget(cmdtext,1)))
    return
    SendClientMessage(playerid,ROT,"/setlevel ID Rank");
    new typ=strval(strget(cmdtext,1));
    if(IsPlayerConnected(typ))
    {
    if(!strlen(strget(cmdtext,2)))
    return
    SendClientMessage(playerid,ROT,"/setlevel ID Rank");
    new rang=strval(strget(cmdtext,2));
    rank[typ]=rang;//hier seetzt du das level von ihm auf deinen 2ten parameter
    SendClientMessage(playerid,WEIS,"Du hast das Level des Players gesetzt");
    SendClientMessage(ziel,WEIS,"Dein Level wurde gesetzt");
    }
    else
    {
    SendClientMessage(playerid,ROT,"ID nicht vergeben");
    }
    return 1;
    }
    }
    return 0;
    }


    ich dachte mir wo du doch gleich dabei bist kannste alles machen^^ das hängt zusammen, das makeleader kann nur der admin machen also der rankfutzi, und invite nur der leader also hängt das zusammen :D:D wenn du spaß an der freude hast kannste mir das bei setlevel ja mal mit %s machen und bei makeleader, ja wieso den nit also jeder der spaß hat kann mir helfen :D :thumbup:


    PS: die hat stiel...

  • [...]
    SendClientMessage(playerid,ROT,"Du bist kein Admin oder bestitzt nicht das benötigte Level");
    {
    if(!strlen(strget(cmdtext,1)))
    return
    SendClientMessage(playerid,ROT,"/setlevel ID Rank");
    new typ=strval(strget(cmdtext,1));
    if(IsPlayerConnected(typ))
    {
    if(!strlen(strget(cmdtext,2)))
    return
    SendClientMessage(playerid,ROT,"/setlevel ID Rank");
    new rang=strval(strget(cmdtext,2));
    rank[typ]=rang;
    new s[100], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,typ,name,sizeof(name));
    format(s,sizeof(s),"Du hast das Level von %s auf %d gesetzt",name,rank);
    SendClientMessage(playerid,WEIS,s);
    GetPlayerName(playerid,name,sizeof(name));
    format(s,sizeof(s),"Dein Level wurde von %s auf %d gesetzt",name,rank);
    SendClientMessage(typ,WEIS,s);
    }
    [...]

  • Beim /invite Befehl noch:
    [...]
    GetPlayerName(typ, sendername, sizeof (sendername));
    format(string, sizeof(string), "Du hast %s eingeladen...",sendername);
    SendClientMessage(playerid, WEIS, string);
    Team[typ]=Team[playerid];
    GetPlayerName(playerid, sendername, sizeof (sendername));
    SendClientMessage(ziel, GELB,"Du wurdest von %s in einen Beruf eingestellt",sendername);
    [...]

  • ich meine eher klappen die? und noch was, wie geht das das ich nit rankt <3 schreiben muss sondern isPlayerAdmin>3

    Einma vorbei schaun lohnt sich
    www.prt-clan.com der GamerClan für GTA-SAMP.Wir haben einen leistungsstarken vServer und ein hoch entwickeltes RealLife Script der Marke eigenbau, zu 100% Selfmade.
    Bald geht der RL-Server on, seid alle dabei. Regestriert euch und fiebert mit!!!


    Einmal editiert, zuletzt von Weed ()

  • if(!strcmp(strget(cmdtext,0),"/setlevel"))
    {
    if(PlayerRank[playerid]<4)
    return
    SendClientMessage(playerid,ROT,"Du bist kein Admin oder bestitzt nicht das benötigte Level);
    }
    else
    {
    if(!strlen(strget(cmdtext,1)))
    return
    SendClientMessage(playerid,ROT,"/setlevel ID Rank");
    new typ=strval(strget(cmdtext,1));
    if(IsPlayerConnected(typ))
    {
    if(!strlen(strget(cmdtext,2)))
    return
    SendClientMessage(playerid,ROT,"/setlevel ID Rank");
    new rang=strval(strget(cmdtext,2));
    rank[typ]=rang;//hier seetzt du das level von ihm auf deinen 2ten parameter
    SendClientMessage(playerid,WEIS,"Du hast das Level des Players gesetzt");
    SendClientMessage(ziel,WEIS,"Dein Level wurde gesetzt");
    }
    else
    {
    SendClientMessage(playerid,ROT,"ID nicht vergeben");
    }
    return 1;
    }


    SQL
    C:\Programme\Rockstar Games\Server\dassolltebleiben.pwn(537) : warning 225: unreachable code
    C:\Programme\Rockstar Games\Server\dassolltebleiben.pwn(539) : error 017: undefined symbol "PlayerRank"
    C:\Programme\Rockstar Games\Server\dassolltebleiben.pwn(539) : warning 215: expression has no effect
    C:\Programme\Rockstar Games\Server\dassolltebleiben.pwn(539) : error 001: expected token: ";", but found "]"
    C:\Programme\Rockstar Games\Server\dassolltebleiben.pwn(539) : error 029: invalid expression, assumed zero
    C:\Programme\Rockstar Games\Server\dassolltebleiben.pwn(539) : fatal error 107: too many error messages on one line


    was nun?