Beiträge von Kaliber

    Entschuldigung das ich so blöd frage. Aber wie muss ich das machen


    Die solltest dich echt erstmal mit den Basics einer Programmier-Sprache auseinander setzen :S


    stock PayDay(playerid)
    {
    SpielerInfo[playerid][pRespekt]++; //Hier bekommt er 1nen Respekt Punkt
    if(IsVIP(playerid)) SpielerInfo[playerid][pRespekt]++; //Wenn er VIP ist bekommt er noch einen Respekt Punkt
    //Hier dein Zins-System:
    new Float:zinsen;
    if(kein Haus && kein VIP) zinsen = 0.05;
    else if(Haus && kein VIP) zinsen = 0.08;
    else if(Haus && VIP) zinsen = 0.1;
    Bankkonto += Bankkonto * zinsen;

    //Die Nachrichten für den PayDay sollteng genau hier hin..(damit man unten doch mit return arbeiten kann)


    //Einfach unten dran das Level System:
    new level = GetPlayerScore(playerid);
    if(SpielerInfo[playerid][pRespekt] < level*4) return 1;
    if(GetPlayerMoney(playerid) < level*5000) return SCM(playerid,-1,"Sie brauchen mehr Geld für das LevelUp"); //Hier hat er zu wenig Geld (pro Level 5000..sprich level 1 = 5.000$...level 2 = 10.000$...level 3 = 15.000$)
    //Dann hier paar Messages
    GivePlayerMoney(playerid,-(level*5000)); //Hier auch das Geld für das Level abziehen..
    GivePlayerMoeny(playerid,500); //Hier z.B. 500$ für LevelUp
    SetPlayerScore(playerid, level+1); //Hier level up
    SpielerInfo[playerid][pRespekt] = 0; //Hier wieder Resetten
    return 1;
    }


    mfg. :rolleyes:

    Okay. Mein kleines Problem ist. Wie mache ich das mit den Levelpunkten(Respektpunkten) und pro Level 2 mehr?


    Naja, denk einfach mal nach auf welche Werte sich diese Respektpunkte beziehen, nämlich auf Geld und Level.


    enum spieler //Hier dein Spieler-Enum
    {
    pRespekt, //Einfach mal Hier rein
    pPunkte, //Das auch einfach mal hier rein
    }
    new SpielerInfo[MAX_PLAYERS][spieler]; //Ich nenne deine Variable mal SpielerInfo zur Verdeutlichung


    //Timer
    SetTimer("Server_Timer",1000*60,1);


    forward Server_Timer(); //Wird jede Minute aufgerufen
    public Server_Timer()
    {
    for(new i; i<MAX_PLAYERS; i++) //Die Schleife geht alle Spieler durch
    {
    if(!IsPlayerConnected(i)) continue; //Wer nicht online ist, kann übersprungen werden
    SpielerInfo[i][pPunkte]++;
    if(SpielerInfo[i][pPunkte] != 60) continue;//Wenn noch keine Stunde online war..gehts weiter
    PayDay(i); //Hier gibts dann einen PayDay
    SpielerInfo[i][pPunkte] = 0; //Wieder die Zeit auf 0 setezn
    }
    return 1;
    }


    stock PayDay(playerid)
    {
    SpielerInfo[playerid][pRespekt]++; //Hier bekommt er 1nen Respekt Punkt
    if(IsVIP(playerid)) SpielerInfo[playerid][pRespekt]++; //Wenn er VIP ist bekommt er noch einen Respekt Punkt
    //Hier dein Zins-System:
    new Float:zinsen;
    if(kein Haus && kein VIP) zinsen = 0.05;
    else if(Haus && kein VIP) zinsen = 0.08;
    else if(Haus && VIP) zinsen = 0.1;
    Bankkonto += Bankkonto * zinsen;
    return 1;
    }


    //Und dann unter deinem BuyLevel Command:
    new level = GetPlayerScore(playerid);
    if(SpielerInfo[playerid][pRespekt] < level*4) return SCM(playerid,-1,"Sie haben nicht genügend Respektpunkte!"); //Hier hat er nicht genug Respektpunkte (pro Level 4..sprich level 1 = 4..level 2 = 8..level 3 = 12)
    if(GetPlayerMoney(playerid) < level*5000) return SCM(playerid,-1,"Sie besitzen zu wenig Geld!"); //Hier hat er zu wenig Geld (pro Level 5000..sprich level 1 = 5.000$...level 2 = 10.000$...level 3 = 15.000$)
    //Dann hier paar Messages
    SetPlayerScore(playerid, level+1); //Hier level up
    SpielerInfo[playerid][pRespekt] = 0; //Hier wieder Resetten


    Hoffe das hilft dir ein wenig :rolleyes:

    Ich finde es echt hilfsbereit wenn ihr mir helft ein individuelles PayDay System zu machen.


    Was erwartest du jetzt von uns? :huh:


    Wir können dir schlecht helfen, da wir überhaupt nicht wissen, wie du deine Spieler speicherst, wie weit du mit deinem System schon bist...?! :huh:


    Desweiteren, google doch mal nach individuellem PayDay, dann weißt du schonmal so grob wie du das alles zu erstellen hast (Timer + Callback + Variablen)...und das mit dem Zinssystem ist doch nur eine simple if-Abfrage:


    new Float:zinsen;
    if(kein Haus && kein VIP) zinsen = 0.05;
    else if(Haus && kein VIP) zinsen = 0.08;
    else if(Haus && VIP) zinsen = 0.1;
    Bankkonto += Bankkonto * zinsen;


    mfg. :thumbup:


    Hab nicht gelesen was drüber stand...


    Ich dachte er hat sowas gemeint:


    if(!IsPlayerAdmin(playerid)) { } //und das wäre nutzlos
    else {


    }


    mfg. :rolleyes:

    Also ist die if Abfrage dann eigentlich wirkungslos wenn nichts dahinter steht oder?


    Richtig..ist logisch oder? :rolleyes:


    und wenn man return 0 dahinter schreibt? Oder muss return 1 hin?


    In diesem Fall egal.


    Und ist es besser mit case zu arbeiten?


    Ja :)


    Noch was kleines, in den Tutorials habe ich immer gesehen dass Funktionen ohne stock erstellt werden? Für was braucht man diese dann überhaupt?


    stock ist ein Wort für den Compiler, sobald stock vor einer Funktion oder Variable steht und diese nicht verwendet wird, wird sie vom Compiler ignoriert :)


    mfg. :thumbup:

    Wäre für hilfe dankbar.


    1. Lässt du die Animation Preloaden? :huh:


    Wenn nicht schreibe mal unter OnPlayerRequestClass (ganz nach oben in die 1. Zeile:)


    ApplyAnimation(playerid,"MEDIC","null",0.0,0,0,0,0,0);


    2. Schreibe das mal so:


    ocmd:wiederbeleben(playerid)
    {
    if(!IsPlayerInRangeOfPoint(playerid,5,tx[i],ty[i],tz[i]))return SendClientMessage(playerid,error,"Du bist nicht in der Nähe einer Leiche!");
    if(GetPlayerAnimationIndex(playerid) != 0) return SendClientMessage(playerid,error,"Du reanimierst bereits eine Person!");
    for(new i; i<MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i))continue;
    if(SpielerInfo[i][pTot] == 0)continue;
    new string[MAX_PLAYER_NAME + 34];
    format(string,sizeof(string),"'%s' begint mit deiner Reanimation.",SpielerName(playerid));
    SendClientMessage(i,hinweis,string);
    ApplyAnimation(playerid,"MEDIC","CPR",4.1,1,1,1,0,888*10,1);
    SetTimerEx("reanimation",888*10,false,"i",playerid);
    break;
    }
    return 1;
    }


    mfg. :thumbup:

    Also, ich habe mir mal dein Skript angeschaut...und da sind einige Fehler drinnen ^^


    Zum einen, erstelle die Objekte unter OnGameModeInit und nicht unter OnPlayerConnect.


    Desweiteren nutze am besten einen Streamer..


    und leggen könnte es höchstens wegen dem AutoSave oder weil jemand gerade den Server connected hatte...


    Aber ansonsten sieht das ok aus :)


    mfg. :thumbup: