/f Chat + Rangsystem..

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
  • Guten Tag, wies die Überschrift suche ich ein Ranksystem und ein /Fraktionschat (/fch) Im Fraktion's Chat sollen vor den Namen die Jeweiligen Ränge definiert, habe es jetzt soweit dass ich die Rangnamen Definiert habe.


    // Army
    #define Armyrangname1 "Rekrut"
    #define Armyrangname2 "Soldat"
    #define Armyrangname3 "Seargent"
    #define Armyrangname4 "Lieutnant"
    #define Armyrangname5 "Ausbilder"
    #define Armyrangname6 "General"
    //PD


    #define lspdrangname1 "Praktikant"
    #define lspdrangname2 "Azubi"
    #define lspdrangname3 "Officer"
    #define lspdrangname4 "Ausbilder"
    #define lspdrangname5 "Co-Präsident"
    #define lspdrangname6 "Präsident"


    //GroveStreet
    #define groverangname1 "Knecht"
    #define groverangname2 "Thug"
    #define groverangname3 "Nigga"
    #define groverangname4 "Capo"
    #define groverangname5 "Underboss"
    #define groverangname6 "BigBoss"


    ocmd:f(playerid,params[])
    {
    new text[128];
    if(sscanf(params,"s",text))return SendClientMessage(playerid, ROT, "Benutzung: /f [TEXT]");
    format(text,sizeof(text),"%s %s: %s",ReturnRank(GetPVarInt(playerid,"rank"),GetPVarInt(playerid,"Fraktion")),SpielerName(playerid),text);
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isPlayerInFrakt(i,GetPVarInt(playerid,"Fraktion")))
    {
    SendClientMessage(i,BLAU,text);
    }
    }
    }
    return 1;
    }
    stock ReturnRank(Fraktion,rank)
    {
    new _s[128];
    switch(Fraktion)
    {
    case 1:
    {
    switch(rank)
    {
    case 0:format(_s,sizeof(_s),"%s",Armyrangname1);
    case 1:format(_s,sizeof(_s),"%s",Armyrangname2);
    case 2:format(_s,sizeof(_s),"%s",Armyrangname3);
    case 3:format(_s,sizeof(_s),"%s",Armyrangname4);
    case 4:format(_s,sizeof(_s),"%s",Armyrangname5);
    case 5:format(_s,sizeof(_s),"%s",Armyrangname6);
    }
    }
    case 2:
    {
    switch(rank)
    {
    case 0:format(_s,sizeof(_s),"%s",lspdrangname1);
    case 1:format(_s,sizeof(_s),"%s",lspdrangname2);
    case 2:format(_s,sizeof(_s),"%s",lspdrangname3);
    case 3:format(_s,sizeof(_s),"%s",lspdrangname4);
    case 4:format(_s,sizeof(_s),"%s",lspdrangname5);
    case 5:format(_s,sizeof(_s),"%s",lspdrangname6);
    }
    }
    }
    return _s;

    dazu hab ich den stock:


    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;

    EDIT: Habs so, jedoch wenn ich nun /f eingebe kommt zwar ne Nachricht aber ohne den Jeweiligen rank davor :s HILFEEEEEEEEEEEE

    Script-Neuling:[x]
    50 Beiträge: []
    100 Beiträge: []
    200 Beiträge: []
    350 Beiträge: []
    500 Beiträge: []
    Script-Fortgeschrittener: []
    600 Beiträge: []
    700 Beiträge: []
    900 Beiträge: []
    Script-Professioneller: []
    1500 Beiträge: []
    Script-Experte:[]
    _______________________


    Selfmade Fortschritt: 5%


    _______________________

    5 Mal editiert, zuletzt von [SdL]Andy ()

  • //Edit so gut jetzt geht fast alles, nur wenn ich /makeleader mache Lädt er nicht mit rang 6 ein, sondern mit rang 1 ... :s wie änder ich das ??.. Hier mein /makeleader befehl:


    Und wenn ich dann /fch mache, Kommt kein Rangname erst wenn ich reloggt habe.. ^^


    BITTE UM HILFE :D


    ocmd:makeleader(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,3))return 0;
    new pID,fID,string[128];
    if(sscanf(params,"ud",pID,fID))return SendClientMessage(playerid,BLAU,"/makeleader [playerid] [fraktionsid]");
    SetPVarInt(pID,"Fraktion",fID);
    SetPVarInt(pID,"rank",6);
    SendClientMessage(playerid,BLAU,string);
    SendClientMessage(playerid,WEIß,"Erfolgreich.");
    SendClientMessage(pID,ROT,"Du wurdest zum Leader einer Fraktion ernannt.");
    SendClientMessage(pID,WEIß,"_________________________________________________________________________________________.");
    SendClientMessage(pID,GRÜN,"Du hast nun die Pflicht 2 Wochen in dieser Fraktion zu bleiben.");
    SendClientMessage(pID,GRÜN,"Solltest du gegen diese Regel wiederstoßen, musst du mit einer Fraktionssperre rechnen.");
    SendClientMessage(pID,GRÜN,"Viel Glück beim aufbau dieser Fraktion !");
    SpielerSpeichern(pID);
    return 1;
    }

    Script-Neuling:[x]
    50 Beiträge: []
    100 Beiträge: []
    200 Beiträge: []
    350 Beiträge: []
    500 Beiträge: []
    Script-Fortgeschrittener: []
    600 Beiträge: []
    700 Beiträge: []
    900 Beiträge: []
    Script-Professioneller: []
    1500 Beiträge: []
    Script-Experte:[]
    _______________________


    Selfmade Fortschritt: 5%


    _______________________

    Einmal editiert, zuletzt von [SdL]Andy ()

  • Hast du immernoch bei der Switch-Case von 0 - 5.


    Ist klar das es nicht funktioniert wenn du Rang 6 eingibst. Es gibt nur zur Auswahl 0-5. Veränder das von 1-6. Dann sollte es eigentlich funktionieren.

    Die Macht etwas zu bewirken, ist in Dir. Du musst sie nur rauslassen


    cristiano-ronaldo-525-portugal-euro-2012-banner-wallpaper.jpg

  • //Edit, so, das Geht jetzt,danke jetzt noch das hier :


    Wenn ich Relogge / Restart mache, wird der Rangname nicht gespeichert, d.H beim fchat wird nurnoch mein name angezeigt kein Rangname, ich muss dann erst /makeleader wieder machen um die Rangnamen zu sehen .. :s

    Script-Neuling:[x]
    50 Beiträge: []
    100 Beiträge: []
    200 Beiträge: []
    350 Beiträge: []
    500 Beiträge: []
    Script-Fortgeschrittener: []
    600 Beiträge: []
    700 Beiträge: []
    900 Beiträge: []
    Script-Professioneller: []
    1500 Beiträge: []
    Script-Experte:[]
    _______________________


    Selfmade Fortschritt: 5%


    _______________________

    3 Mal editiert, zuletzt von [SdL]Andy ()

  • Speicherst du die Daten irgendwo. Also in einer Datei oder über MySQL?


    Weil wenn du dich ausloggst kannst du deinen Rang speichern und wenn du dich wieder einloggst kannst du die Rangid wieder laden.
    Somit musst du nicht immer /makeleader machen.

    Die Macht etwas zu bewirken, ist in Dir. Du musst sie nur rauslassen


    cristiano-ronaldo-525-portugal-euro-2012-banner-wallpaper.jpg

  • Nein hab ganznormales Pawno script keine ahnung über mysql... ^^


    Ahm habe das beim stock spielerspeichern und laden:


    dini_IntSet(Spielerdatei,"rank",GetPVarInt(playerid,"rank"));


    und bei stock LoadAccount


    dini_IntSet(Spielerdatei,"rank",GetPVarInt(playerid,"rank"));


    /edit habs rausgefunden hab den rank falsch geladen anstatt so:


    dini_IntSet(Spielerdatei,"rank",GetPVarInt(playerid,"rank"));


    muss es so sein:


    SetPVarInt(playerid,"rank",dini_Int(Spielerdatei,"rank"));


    Aber danke für den hinweis ^^

    Script-Neuling:[x]
    50 Beiträge: []
    100 Beiträge: []
    200 Beiträge: []
    350 Beiträge: []
    500 Beiträge: []
    Script-Fortgeschrittener: []
    600 Beiträge: []
    700 Beiträge: []
    900 Beiträge: []
    Script-Professioneller: []
    1500 Beiträge: []
    Script-Experte:[]
    _______________________


    Selfmade Fortschritt: 5%


    _______________________

    Einmal editiert, zuletzt von [SdL]Andy ()

  • Speicherst du auch die Daten wenn ein Spieler den Server verlässt oder du den Server neustartest?


    Mach einfach mal einen Befehl mit /saveall der alle Daten von jedem Spieler während der Server online ist in die Dateien speichert. Dann kannst du kurz offline gehen dann sollte es funktionieren.


    Um aus einer Datei die Daten auszulesen musst du das eingeben.
    Also diesen Befehl unter LoadAccount oder wie das bei dir heißt.


    SetPVarInt(playerid, "rank", dini_Int(Spielerdatei, "rank"));


    Sonst setzt du ja nichts in die PVariable "rank". Dann ist es klar das es nicht funktioniert :)

    Die Macht etwas zu bewirken, ist in Dir. Du musst sie nur rauslassen


    cristiano-ronaldo-525-portugal-euro-2012-banner-wallpaper.jpg

  • Ja, hatte den fehler grad schon rausgefunden, trz danke ^^

    Script-Neuling:[x]
    50 Beiträge: []
    100 Beiträge: []
    200 Beiträge: []
    350 Beiträge: []
    500 Beiträge: []
    Script-Fortgeschrittener: []
    600 Beiträge: []
    700 Beiträge: []
    900 Beiträge: []
    Script-Professioneller: []
    1500 Beiträge: []
    Script-Experte:[]
    _______________________


    Selfmade Fortschritt: 5%


    _______________________

  • Ja, also beim Restart/Reloggen wird es vernünftig gespeichert :) Danke nochmal :D

    Script-Neuling:[x]
    50 Beiträge: []
    100 Beiträge: []
    200 Beiträge: []
    350 Beiträge: []
    500 Beiträge: []
    Script-Fortgeschrittener: []
    600 Beiträge: []
    700 Beiträge: []
    900 Beiträge: []
    Script-Professioneller: []
    1500 Beiträge: []
    Script-Experte:[]
    _______________________


    Selfmade Fortschritt: 5%


    _______________________