Beiträge von Firzen

    Das kann so auch nicht funktionieren, weil Du die for-Schleife oben von 0 bis MAX_PLAYERS laufen lässt und mit jeder PlayerID einmal die IsPlayerInArea-Funktion aufrufst, die jedoch die PlayerID für GetPlayerPos verwendet. Wenn der Spieler mit dieser ID aber nicht existiert, gibt das einen Fehler und das Script bricht ab.



    forward AreaCheck();
    public AreaCheck()
    {
    new i;

    for(i=0; i<MAX_PLAYERS; i++)
    { // Blitz' Garagen Cp
    if(IsPlayerConnected(i)
    {
    if(IsPlayerInArea(i, -1498.2483, 2537.9236, -1470.3575, 2511.3096))
    { SetPlayerCheckpoint(i, -1477.8943, 2533.8799, 55.9759, 3.0); }
    else
    { DisablePlayerCheckpoint(i); }
    }
    }
    }


    stock IsPlayerInArea(playerID, Float:X_max, Float:X_min, Float:Y_max, Float:Y_min)
    {
    new Float:X, Float:Y, Float:Z;

    GetPlayerPos(playerID, X, Y, Z);
    if(X >= X_max && X <= X_min && Y >= Y_max && Y <= Y_min)
    { return 1; }


    return 0;
    }


    So sollte es funktionieren.

    Meine erste Vermutung wäre, dass Du noch nicht auf SA-MP 0.2.2 (R2) geupdated hast. GTA Action hat das nämlich bereits. Daher kommste mit älteren SA-MP Versionen nicht mehr drauf.

    ShowPlayerMarkers zeigt die normalen viereckigen Markierungen aller Spieler an. Das zum Einen und zum Anderen ist es noch wichtig, welchen Alpha-Wert die Farben Deiner Spieler haben. Farben werden ja in den meisten Modes so definiert:
    #define COLOR_GRAY 0x777777AA
    Wichtig ist das AA am Ende, das ist der Wert für die Deckkraft der Farbe. Die meisten nehmen AA, kA warum, aber wenn man 00 wählt ist die Deckkraft 0 und somit komplett transparent. Wenn das der Fall ist bei Deinen Spielerfarben, dann liegt es daran. Der Alphawert hat keinen Einfluss auf die Schriftfarbe, sondern nur auf die Farbe des viereckigen Markers auf dem Radar.
    Ich empfehle AA oder wenn Du's komplett undurchsichtig haben willst FF.

    Verdicken?
    Wieso verdicken?
    Der Tag soll die Schriftart in eine Monospace-Schriftart ändern, mehr nicht.


    Monospace bedeutet, dass jedes Zeichen und jeder Buchstabe die gleiche Breite in Anspruch nehmen.


    Monospace:
    abcdefghij
    0123456789
    !?"§$%&/()


    Normal:
    abcdefghij
    0123456789
    !?"§$%&/()

    Moin, :whistling:


    ich wollte fragen, ob es wohl möglich wäre, hier im Forum einen [tt]-Tag einzuführen, der den Text dann eben wie in HTML mit einer Monospace-Schriftart auszeichnet. Ginge viel schneller, als immer die Schriftart in Courier New zu ändern.
    (Ich verwende das immer gerne, um Scriptteile bzw. -ausdrücke hervorzuheben) :P


    Nein, sonst habe ich keine Probleme. :D


    MfG Firzen

    Ihr seid euch schon im Klaren, dass man mit GetPlayerName den Namen eines Spielers in einer Variable abspeichert, mit SetPlayerName jedoch den Namen eines Spielers ändert, oder?
    GetPlayerName war schon richtig.


    Nur meine Syntax war etwas falsch, ich habe die Länge vergessen, daher auch die „Number of Arguments does not match Definition“-Fehler. :whistling:
    Richtig heißt es:

    GetPlayerName(playerid, playername, sizeof(playername));


    Aber in Zukunft wollen wir solche Probleme nicht lösen, indem wir einfach den Funktionsnamen ändern... :thumbdown:


    Außerdem glaube ich, dass Zeile 9 („{“) und 57 („}“) im unteren Pawn-Fenster von Blitz auch Fehler geben werden. Ich würde die rauslöschen. :rolleyes:

    3. Ich heiße nicht Fritzen!
    4.

    public OnPlayerConnect(playerid)
    {
    new playername[MAX_PLAYER_NAME];


    GetPlayerName(playerid, playername);


    if(strcmp(playername, "Dein_Name", true) == 0)
    { SetPlayerCheckpoint(playerid, x1, y1, z1); }
    else if(strcmp(playername, "Name_Deines_Freundes", true) == 0)
    { SetPlayerCheckpoint(playerid, x2, y2, z2); }


    return 1;
    }


    public OnPlayerEnterCheckpoint(playerid)
    {
    new playername[MAX_PLAYER_NAME];


    GetPlayerName(playerid, playername);


    if(strcmp(playername, "Dein_Name", true) == 0)
    {
    //Hier das rein, was mit Dir passieren soll, wenn Du Deinen Checkpoint betrittst
    }
    else if(strcmp(playername, "Name_Deines_Freundes", true) == 0)
    {
    //Hier das rein, was mit Deinem Freund passieren soll, wenn er seinen Checkpoint betritt
    }


    return 1;
    }

    Jeder Spieler kann zur selben Zeit nur einen Checkpoint haben.
    Also jeder Spieler seinen eigenen, den nur er sieht, aber nur einen davon.


    Wenn man mehrere „imitieren“ will, muss man eine Hintergrundschleife (mit Zeitverzögerung) einbauen, die in regelmäßigen Zeitabständen prüft, z.B. an welchem der beiden Checkpoints jeder einzelne Spieler näher dran ist.


    Und dann wird in dieser Schleife für jeden einzelnen Spieler je nach dessen Position entweder der eine oder der andere Checkpoint sichtbar gemacht.
    Ist etwas komplizierter, daher werde ich das nicht jetzt erklären (siehe Uhrzeit ^^).


    Aber ich denke, das Prinzip habe ich hier deutlich beschrieben.


    PS.: Dein Ava hat einen verpixelten Rand und deshalb mag ich ihn nicht! :P

    ... ich weiß zwar nicht genau, was Du da gerade erzählst, aber in meinem letzten Beitrag habe ich doch alles schon erklärt.


    Zitat


    Benützt du deine ,,Interne IP" oder deine ,,Externe IP" ?


    (Externe IP = Ändert sich jedes mal mit einem Neustart oder Verbindugen Trennen)


    (Interne IP = Bleibt immer gleich, standfeste Adresse )


    Mit externe IP meint wer auch immer wahrscheinlich Deine Dynamische IP, die Du im Internet verwendest. Die interne wäre demnach die in Deinem Netzwerk, die Dir aber World Wide nichts bringt.


    Wenn Du Deinen Server startest, dann verbindet er sich mit dem Master Server und übergibt Deine aktuelle IP Adresse. Daher kann man ihn dann in der Internetliste finden.
    Wenn Du Deinen PC nun ausschaltest und wieder einschaltest (oder Router oder what ever) verlierst Du die Verbindung zum INternet, also zu Deinem Internetanbieter und der gibt die IP, die Du verwendet hast, für andere Leute (Kunden) frei. Es ist sehr wahrscheinlich, dass dann jemand anderes die IP bekommt, der zufälligerweise keinen SA-MP Server am laufen hat, daher wird der Server dann als offline angezeigt.
    Wenn Du den PC nun wieder startest, verbindest Du Dich wieder zu Deinem Internetanbieter und der gibt Dir irgendeine IP, die gerade frei ist. Wenn Du Deinen Server startest, verbindet der sich zum Master Server und übergibt dem Deine aktuelle, also die neue, IP, aber die Favoriten von irgendwelchen Leuten bleiben dabei unberührt. Die haben immernoch die alte IP von Dir, die aber mittlerweile ein ganz anderer PC hat.


    Das ganze nennt sich dann Dynamische IP Adresse, da sie sich ja immer verändert, wenn man neu connectet. Ist wahrscheinlich deshalb so, weil die Anzahl verfügbarer gültiger InternetIPAdressen nicht für alle Menschen auf der Welt ausreicht und glücklicherweise nicht alle gleichzeitig online sind. (Da gibt's aber so schöne Theorien... *gg*)


    So, nochmal erklär' ich's nicht.


    public OnPlayerEnterCheckpoint(playerid)
    {
    new vehicleid;

    if(inside[playerid])
    {
    SetPlayerCheckpoint(playerid, -1526.695557, 2643.044922, 55.496315, 5.0);

    if(IsPlayerInAnyVehicle(playerid))
    {
    vehicleid = GetPlayerVehicleID(playerid);

    SetVehiclePos(vehicleid, -1532.687622, 2636.229492, 55.496315);
    SetVehicleZAngle(vehicleid, 349);
    LinkVehicleToInterior(vehicleid, 0);
    }
    else
    {
    SetPlayerPos(playerid, -1532.687622, 2636.229492, 55.496315);
    SetPlayerFacingAngle(playerid, 349);
    SetPlayerInterior(playerid, 0);
    }

    inside[playerid] = 0;
    }
    else
    {
    SetPlayerCheckpoint(playerid, -1546.324097, 2606.455078, 38.083424, 5.0);

    if(IsPlayerInAnyVehicle(playerid))
    {
    vehicleid = GetPlayerVehicleID(playerid);

    SetVehiclePos(vehicleid, -1554.798218, 2612.801025, 38.086201);
    SetVehicleZAngle(vehicleid, 89);
    LinkVehicleToInterior(vehicleid, 0);
    }
    else
    {
    SetPlayerPos(playerid, -1554.798218, 2612.801025, 38.086201);
    SetPlayerFacingAngle(playerid, 89);
    SetPlayerInterior(playerid, 0);
    }

    inside[playerid] = 1;
    }

    printf("Jp's Garage(%d)", playerid);
    return 1;
    }


    Keine Garantie, dass es geht, habe es nicht kompiliert...


    public OnPlayerEnterCheckpoint(playerid)
    {
    if(IsPlayerInAnyVehicle(playerid))
    { SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z); }
    else
    { SetPlayerPos(playerid, x, y, z); }


    return 1;
    }


    Sitzt ein Spieler in einem Fahrzeug, wird er mitteleportiert, falls es teleportiert wird.

    Wenn Du jedesmal nach dem PC-Neustart einen neue IP hast, nehme ich an, dass Du Dich bei jedem Start neu mit Deinem Anbieter verbindest und eine Dynamische IP hast. Das bedeutet, dass Dein Anbieter Dir jedes Mal, wenn Du Dich mit dem Internet verbindest, eine IP gibt, die gerade unbenutzt ist und daher ist es bei jedem Verbinden eine andere (, da es ja auch noch 'ne Menge anderer Kunden gibt, die dann Deine alte, die Du beim Trennen der Verbindung verloren hast, bekommen haben können).


    Es gibt so noip-Dienste, die Dir eine Art Static IP geben, also eine Adresse, die immer gleich bleibt, ich kenne mich damit aber nicht aus, da ich so einen Dienst noch nie verwendet habe, musste mal Googlen oder vielleicht ist hier ja einer im Forum, der damit Erfahrungen hat.


    Und beim Server beenden würde ich immer exit verwenden und nicht mit dem [X] Schließen, bin mir nicht sicher, ob beides das Gleiche ist. Weil Du kannst ja auch in OnGameModeExit Anweisungen einfügen, für die der Server dann auch Zeit braucht beim Beenden.

    Hast Du SetPlayerCheckpoint(playerid,-1553.267212, 2610.346436, 38.096241,2.0); auch in OnPlayerConnect?
    Der Checkpoint muss nämlich erst gesetzt werden, bevor man ihn betreten kann.


    Und sonst würde ich mal versuchen DisablePlayerCheckpoint(playerid) einzubauen, bevor ein neuer gesetzt wird...

    Im GTA Handbuch steht es nicht, weil man im Einzelspieler nicht als Beifahrer mitfahren kann.


    Außerdem würde ich nicht immer pauschal [G] sagen, da man die Steuerung verändern kann, was z.B. ich gemacht habe und auch von anderen erwarte (, da die Standardsteuerung meiner Meinung nach Mist ist).


    Im Steuerungsmenü müsste das „Gang-Strg. Vor“ oder so heißen (So heißt's im Handbuch).
    (Bei mir ist die Taste [Num8] z.B. damit belegt)



    Edit:
    Da hat doch einer was gepostet, während ich am Schreiben war. *gg*