Wie kann ich des verkürzen?

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 einen buylevel befehl gemacht, sprich er fragt das level und die respektpunkte ab, nur so wie ich des gemacht habe ist mir das zu unsauber und umständlich, ich wollte es mit stocks etc. machen, nur krieg ik das nicht hin, kann mir evtl jmd. helfen bzw. ein beispiel draus machen?


    Der Befhl buylevel:

    Spoiler anzeigen
    CMD:buylevel(playerid,params[])
    {
    //Ab Level 2:
    new string[85],string2[85],string3[85],string4[85],string5[85];
    if(Eingeloggt[playerid]==0)return SendClientMessage(playerid, Rot,"Du musst dich vorher einloggen!");
    format(string,sizeof(string),"Du hast nicht genügend Respektpunkte! Du hast %d von 4",SpielerInfo[playerid][pRespektpunkte]);
    if(GetPlayerScore(playerid) == 2 && SpielerInfo[playerid][pRespektpunkte] >= 4)
    {SendClientMessage(playerid, Orange, "Du bist jetzt Level 3!");SpielerInfo[playerid][pRespektpunkte]-=4;SetPlayerScore(playerid, 3);SavePlayer(playerid);}
    else SendClientMessage(playerid, Rot, string);
    //Ab Level: 3
    format(string2,sizeof(string2),"Du hast nicht genügend Respektpunkte! Du hast %d von 6",SpielerInfo[playerid][pRespektpunkte]);
    if(GetPlayerScore(playerid) == 3 && SpielerInfo[playerid][pRespektpunkte] >= 6)
    {SendClientMessage(playerid, Orange, "Du bist jetzt Level 4!");SpielerInfo[playerid][pRespektpunkte]-=6;SetPlayerScore(playerid, 4);SavePlayer(playerid);}
    else SendClientMessage(playerid, Rot, string2);

    Spoiler anzeigen
    //Ab Level: 4
    format(string3,sizeof(string3),"Du hast nicht genügend Respektpunkte! Du hast %d von 8",SpielerInfo[playerid][pRespektpunkte]);
    if(GetPlayerScore(playerid) == 4 && SpielerInfo[playerid][pRespektpunkte] >= 8)
    {SendClientMessage(playerid, Orange, "Du bist jetzt Level 5!");SpielerInfo[playerid][pRespektpunkte]-=8;SetPlayerScore(playerid, 5);SavePlayer(playerid);}
    else SendClientMessage(playerid, Rot, string3);
    return 1
    }
    Und halt so weiter...


    Hoffe jmd. versteht mich :)
    Lg :) && Danke für jede (hilfreiche) Antwort ;)


  • Du könntest die Preise und Respektpunkte Anzahl in eine Enum schreiben wie man das abfragt weiss ich leider nicht
    Mfg


    Schwachsinn, es ist nur logisches denken gefragt.


    Es würde aber immer Konstant steigen, wie du es immer hast.
    Also, du brauchst noch eine Variable, wo die maximalen Respektpunkte stehen
    die du benötigst.

    gehided da es geklappt hat

    Natürlich musst du beim Registrieren die Maximalen repektpunkte auf eine beliebige Zahl setzen.

    Einmal editiert, zuletzt von xFreeze ()

  • Du hast mich auf ne Idee gebracht ;D


    Ich habs jetzt ma so, aber des mit dem neededrespekt stock funkt nicht ganz ;o



    stock LevelSystem(playerid)
    {
    new string[85];
    format(string,sizeof(string),"Du hast zu wenig Respektpunkte! Du hast %d von %d",SpielerInfo[playerid][pRespektpunkte],NeededRespekt(playerid));
    if(GetPlayerScore(playerid) == 2 && SpielerInfo[playerid][pRespektpunkte]>=4)
    {
    SendClientMessage(playerid, Orange, "Du bist jetzt Level 3");
    SpielerInfo[playerid][pRespektpunkte]-=4;
    SetPlayerScore(playerid,3);
    SavePlayer(playerid);
    }
    if(GetPlayerScore(playerid) == 3 && SpielerInfo[playerid][pRespektpunkte]>=8)
    {
    SendClientMessage(playerid, Orange, "Du bist jetzt Level 4");
    SpielerInfo[playerid][pRespektpunkte]-=8;
    SetPlayerScore(playerid,4);
    SavePlayer(playerid);
    }
    else SendClientMessage(playerid, Orange, string);
    return 1;
    }


    stock NeededRespekt(playerid)
    {
    new Respekt[50];
    switch(GetPlayerScore(playerid))
    {
    case 2:{Respekt="4";} //Level 2 = Braucht 4 Respektpunkte
    case 3:{Respekt="8";} //Level 3 = Braucht 8 Respektpunkte
    case 4:{Respekt="12";}//Level 4 = Braucht 12 Respektpunkte
    }
    return 1;
    }


    Merkst du den Fehler? Ik nicht ^^


    //Edit
    bei der errormessage das man zu wenig respektpunkte hat, steht du hast %d von 1 Respektpunkten, da sollte ja eig. von 4 stehen ?(

  • Du kannst dir auch einen Algorithmus ausdenken, der das "Levelwachstum" beschreibt. Ansonsten müsstest du für jedes Xte Level aufschreiben, wie viele Respektpunkte er braucht.


    Als Beispiel:


    Code
    stock LevelRespektPoints(level)
    {
          return ((2*level)+2);
    }


    Würde z.B. für Level 1 = 4 sein und für Level 2 = 6 usw. Denk dir was aus ;)


    Mfg,
    UncleSub