Beiträge von KeksOfDeath

    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid,x,y,z);
    if(PointToPoint(radius,x,y,z,x2,y2,z2)) {
    //...



    //--------------------
    stock PointToPoint(Float:radi, Float:x, Float:y, Float:z, Float:x1, Float:y1, Float:z1) {
    new Float:x2=x-x1, Float:y2=y-y1, Float:z2=z-z1;
    if(((x2 < radi) && (x2 > -radi)) && ((y2 < radi) && (y2 > -radi)) && ((z2 < radi) && (z2 > -radi))) return 1;
    return 0;
    }
    Wäre ein wenig resourcenschonender bei so vielen...

    Dein Portstimer läuft jede Sekunde, oder?
    Dann füge dies dort ein
    spielzeit[playerid]++;
    SetPlayerScore(playerid,spielzeit[playerid]/1800);
    Natürlich nciht vergessen, "new spielzeit[MAX_PLAYERS];" ganz oben hinzuschreiben

    Ist das mit SetTimerEx gemacht und für jeden einzelnd, oder nur 1 normaler Timer?
    Wenns nur ein normaler ist, müsste dies so aussehen:
    public Ports()
    {
    for(new playerid; playerid<MAX_PLAERS; playerid++) {
    if (PlayerToPoint(2.0, playerid, -1605.528687, 711.683044, 13.0616563))
    {
    SetPlayerInterior(playerid, 10);
    SetPlayerPos(playerid, 244.0218,108.4066,1003.2188);
    SetPlayerFacingAngle(playerid, 0.0);
    }}
    return 1;
    }

    if(text[0]=='!') {
    new name[MAX_PLAYER_NAME], s[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(s,sizeof(s),"%s: %s",name,text[1]);
    for(new i=0; i<MAX_PLAYERS; i++) {
    if(IsPlayerConnected(i)) {
    if(gTeam[i]==gTeam[plyerid]) {
    SendClientMessage(i,FARBE,s); }}}
    return 0;
    }

    Ja, wenn dort eine "return 0;" steht, kannst du /pm nicht verwenden, wenn dort eine "return 1;" steht, kannst dus verwenden

    Wenn er in ein Fahrzeug einsteigt...
    OnPayerEnterVehicle(playerid,vehicleid,ispassenger) {
    ispassenger ist heirbei der Sitz, also wenn ispassenger = 1 ist, ist er der Beifahrer, dann einfach ne neue Variable erstellen, fertig

    /pm [ID] [Text]
    ist standartmäßig im Script drinne, siehe den public "OnPlayerPrivmsg"
    Brauchst nix dafür scripten

    Zitat

    //ganz nach oben:
    new Float:altesleben[MAX_PLAYERS], wartezeit[MAX_PLAYERS], Text:wartetext[MAX_PLAYERS], lebenspickup warteding[MAX_PLAYERS];


    Hatte ein "," vergessen, muss so aussehen:
    //ganz nach oben:
    new Float:altesleben[MAX_PLAYERS], wartezeit[MAX_PLAYERS], Text:wartetext[MAX_PLAYERS], lebenspickup, warteding[MAX_PLAYERS];
    Und ich würde kein 120 MS Timer machen

    //ganz nach oben:
    new Float:altesleben[MAX_PLAYERS], wartezeit[MAX_PLAYERS], Text:wartetext[MAX_PLAYERS], lebenspickup warteding[MAX_PLAYERS];
    forward wartetimer(playerid);
    //OnGameModeInit:
    lebenspickup=CreatePickup(bla bla bla);
    for(new i=0; i<MAX_PLAYERS; i++) {
    wartetext[i]=TextDrawCreate(312,465," "); }
    //OnPlayerPickupPickup:
    if(pickupid==lebenspickup) {
    if(wartezeit[playerid]==0) {
    wartezeit[playerid]=300;
    warteding[playerid]=SetTimerEx("wartetimer",1000,1,"d",playerid); }
    else {
    SetPlayerHealth(playerid,altesleben[playerid]); }}
    //ganz anch unten:
    public wartetimer(playerid) {
    if(wartezeit[playerid]>=1) {
    new s[20];
    format(s,sizeof(s),"Wartezeit: %d",wartezeit[playerid]);
    TextDrawSetString(wartetext[playerid],s); }
    else {
    KillTimer(warteding[playerid]);
    TextDrawSetString(wartetext[playerid]," "); }
    return 1;
    }
    //am besten in einen timer, der sekündlich er oder alle 2 sekunden läuft und alle abzählt, oder so ähnlich:
    new Float:leben;
    GetPlayerHealth(playerid/*oder i*/,leben);
    if(leben!=altesleben[playerid]) {
    altesleben[playerid]=leben; }
    //OnPlayerConnect:
    TextDrawShowForPlayer(playerid,wartetext[playerid]);
    Wenn ich jetzt nichts vergessen habe, müsste es gehen...
    Werd aber das Gefühl nicht los, dass ich was vergessen habe... wird sich ja zeigen

    CubeDeath, hast du dir seine Frage überhaupt mal duruchgelesen? o.o
    Zum anderen: wie brauchen ein paar mehr Informationen...
    Wie liest du Parameter aus?
    Hast du bereits eine Variable, die die Kills zählt? Wenn ja, wie heißt sie
    Was für Runden?
    Ohne sowas kann man sowas immer sehr schlecht machen, weil man bei den Parametern häufig etwas trifft, was die Person nicht hat, oder man Sachen des öfteren zählt, ist ja auch Verschwendung, ...

    //ganz nach oben:
    new imderby[MAX_PLAYERS], derby;
    forward derbytimer();
    //wenn das derby startet:
    derby=1;
    SetTimer("derbytimer",180000,0);
    //ganz nach unten:
    public derbytimer() {
    for(new i=0; i<MAX_PLAYERS; i++) {
    if(IsPlayerConnected(i)) {
    if(imderby[i]==1) {
    //SpawnPlayer(i); oder i-wie sowas, sollen aj sicherlich aus der arena raus
    SendClientMessage(i,FARBE,"Das Derby ist vorbei"); }}}
    derby=0;
    return 1;
    }
    //OnPlayerDeath:
    if(imderby[playerid]==1) {
    TogglePlayerControllable(playerid,0); }
    //wenn sie die runde wählen:
    if(derby==1) return SendClientMessge(playerid,FARBE,"Das Derby läuft bereits oder i-wie sone Nachricht");
    Es kann sein, dass das jetzt nicht ganz mit dem übereinstimmt, was du wolltest, aber so wie ich das verstanden habe, könnte man das Derby 2 mal hintereinander starten, wie sonst kann man vorher noch da sein