Beiträge von Kaliber

    Das kannst du so machen:


    new r_Spieler[2][3] = {
    {-1, ...}, {-1, ...}
    };


    for(new i,idx[2]; i<MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i)) continue;
    if(gTeam[i] == TEAM_BLUE && idx[0] < sizeof r_Spieler[]) r_Spieler[0][idx[0]] = i,idx[0]++;
    if(gTeam[i] == TEAM_GREEN && idx[1] < sizeof r_Spieler[]) r_Spieler[1][idx[1]] = i,idx[1]++;
    }
    //Und dann so:
    if(r_Spieler[0][2] != -1)
    {
    //Nur wenn alle IDs vergeben sind:
    new random_Spieler1 = r_Spieler[0][random(3)];
    }
    if(r_Spieler[1][2] != -1)
    {
    //Nur wenn alle IDs vergeben sind:
    new random_Spieler2 = r_Spieler[1][random(3)];
    }


    mfg. :thumbup:

    Also würde es mich auch freuen, wenn das zufällig mal einer herausgefunden hat.


    Lies doch den Text von Jeffry...


    oder ihr verwendet mal google und findet auf Wikipedia folgendes:


    Zitat von Wikipedia

    Unmittelbar vor dem Übersetzen eines Programms in Maschinensprache fügt der Präprozessor Kopien der benötigten Includes an diejenigen Stellen des Programms ein, die vom Programmierer mit einer Include-Anweisung und dem Namen des jeweiligen Includes gekennzeichnet wurden.


    mfg. :rolleyes:

    //Edit:
    Ich habe mal einen Fix geschrieben für den normalen Chat.


    Ihr kennt das Problem alle, ihr wollt ein % Zeichen schreiben und es kommt nur ein #...


    Das behebt ihr nun so:


    stock _Fix(const string[],bool:chat=false) {
    new tmp[145],pos = strfind(string,"#");
    strcat(tmp,string);
    if(pos == -1) return tmp;
    for(;;) {
    if(tmp[((pos-1) < 0)?0:(pos-1)] != '\\') {
    strdel(tmp,pos,pos+1),strins(tmp,(!chat)?("%%"):("%%%%"),pos,sizeof tmp);
    pos = strfind(tmp,"#",false,pos+((!chat)?(2):(4)));
    }
    else {
    strdel(tmp,pos-1,pos);
    pos = strfind(tmp,"#",false,pos);
    }
    if(pos == -1) break;
    }
    return tmp;
    }


    //Und unter OnPlayerText:
    public OnPlayerText(playerid,text[]) {
    format(text,146,_Fix(text)); //Das muss die 1. Zeile hier sein:
    return 1;
    }


    //Wenn ihr allerdings mit einer eigenen Message arbeitet, dann so:
    public OnPlayerText(playerid,text[]) {
    format(text,146,_Fix(text,true)); //Das muss die 1. Zeile hier sein:
    //Halt unten der Rest
    SendClientMessage(playerid,-1,text);
    return 0;
    }


    Dadurch wird aus dem # ein %...wenn ihr jetzt aber ein normales # inGame schreiben wollt, müsst ihr \# eingeben ;)


    //Fakultät:
    Also, mir ist keine Funktion bekannt und habe auch noch keine gesehen (nicht mal im Englischen Forum), dass man die Fakultät berechnen kann.


    Also, hier eine Funktion, mit der das möglich ist:


    stock fac(x) {
    if(x < 0) return 0;
    if(0 <= x <= 1) return 1;
    if(x==2) return x;
    new y=1,i=x;
    for(; i!=0; i--) y *= i;
    return y;
    }


    //Anwendung:
    new x = 5;
    printf("Die Fakultät von %d ist: %d",x,fac(x));
    //->: Die Fakultät von 5 ist: 120


    Keywords: Fakultät, Factorial


    mfg. :thumbup:


    //Edit: Umbenannt wegen Pille...wobei das völlig egal ist, da man das eh selber kann <(^.^)>
    //Edit²: Prozent-Fix

    Nene


    Achso, dann so:


    ocmd:setmoney(playerid,params[])
    {
    new pID, money;
    if(sscanf(params,"ui",pID,money))return SendClientMessage(playerid,COLOR_RED,"Benutze: /setmoney [PlayerID] [Summe]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,COLOR_RED,"Ein Spieler mit dieser ID ist nicht online!");
    sSpieler[pID][Geld] += money;
    GivePlayerMoney(pID, sSpieler[pID][Geld]);
    return 1;
    }


    mfg. :thumbup:

    SetMoney, soll also das Geld setzen.


    Sprich wenn du /setmoney 0 5000 eingibst, soll dieser Spieler egal, wie viel Geld er vorher hatte 5000$ haben?


    Wenn ja, dann muss das so aussehen:


    ocmd:setmoney(playerid,params[])
    {
    new pID, money;
    if(sscanf(params,"ui",pID,money))return SendClientMessage(playerid,COLOR_RED,"Benutze: /setmoney [PlayerID] [Summe]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,COLOR_RED,"Ein Spieler mit dieser ID ist nicht online!");
    ResetPlayerMoney(pID),sSpieler[pID][Geld]= money;
    GivePlayerMoney(pID, money);
    return 1;
    }


    mfg. :thumbup:

    und was bedeuten diese ganzen nummern hier ?


    Ich hab doch extra das Wiki verlinkt...das gibt es auch in Deutsch:


    ApplyAnimation(playerid, animlib[], animname[], Float:fDelta, loop, lockx, locky, freeze, time, forcesync);
    playerid Die ID des Spielers, der die Animation ausführen soll.
    animlib[] Der Name der Bibliothek der Animation.
    animname[] Der Name der Animation.
    fDelta Die Geschwindigkeit der Animation.
    loop 1, um die Animation wiederholen zu lassen, 0, um sie nur ein Mal abzuspielen.
    lockx 0, um den Spieler auf die ursprüngliche X-Position zurückzubringen, nachdem die Animation fertig ist. 1 bewirkt das Gegenteil.
    locky 0, um den Spieler auf die ursprüngliche Y-Position zurückzubringen, nachdem die Animation fertig ist. 1 bewirkt das Gegenteil.
    freeze 0, um den Spieler nach der Animation wieder frei beweglich zu machen, 1, um ihn am Ende der Bewegung "einzufrieren".
    time Länge der Animation in Millisekunden. Wird 0 angegeben, hört die Animation nicht von selbst auf.
    forcesync 1, um die Animation mit allen Spielern zu synchronisieren (in allen Instanzen) (optional).


    mfg. :rolleyes:

    Oder man nutzt einfach gettime, dann spart man sich den Timer ;)


    new var[MAX_PLAYERS];


    //Unter OnPlayerConnect
    var[playerid] = 0;


    //Im Befehl
    if((gettime()-var[playerid]) < 1000*60*5) return SendClientMessage(playerid,ROT,"Die 5 Minuten sind noch nicht Vorbei!");
    var[playerid] = gettime();


    mfg. :thumbup:

    stock SaveGZ()
    {
    for(new i,string[128]; i<MAX_GZ; i++)
    {
    format(string,128,"UPDATE table_name SET owner='%s',maxX='%f' WHERE id='%d'",GZ[i][owner],GZ[i][max_x],i);
    mysql_query(string);
    }
    return 1;
    }


    Halt das Query vollständig ausfüllen ;)


    mfg. :thumbup:

    Ich möchte von euch keinen Code sondern, wie man sowas umsetzen könnte.


    Na...wie sollte man wohl sowas umsetzen...


    Einfach einen Query schreiben, der so ungefähr aussehen müsste:


    new string[128];
    //Hier Insert, wenn es der erste eintrag ist
    format(string,128,"INSERT INTO table_name (id,owner,maxX,maxY,minX,minY,flaggeX,...) VALUES (%d,'%s','%f','%f','%f','%f','%f',...)",zoneid,GZ[zoneid][owner],GZ[zoneid][max_x],...);


    //Andernfalls Update
    format(string,128,"UPDATE table_name SET owner='%s',maxX='%f' WHERE id='%d'",GZ[zoneid][owner],GZ[zoneid][max_x],zoneid);


    mysql_query(string);


    mfg. :thumbup: