Beiträge von Snail

    Ich glaube das muss man so machen :


    if (newkeys & KEY_DOWN)


    bin mir aber nicht 100 % sicher


    Ich habe bei meinem TDM-Script lediglich die Maustasten und Shift verwendet
    und bei shift hat das so funktioniert :
    if (newkeys & KEY_JUMP)


    Wie das mit PRESSED geht weiß ich ehrlichgesagt nicht


    if (strcmp("/test", cmdtext, true, 10) == 0)
    {
    darf[playerid] = 1;
    textvar[playerid] = 1;
    TextDrawShowForPlayer(playerid,test[playerid]);
    // Ich gehe davon aus, dass das TextDraw NUR für den Spieler der Text eingeben hat angezeigt werden soll
    // --> For-schleife raus und anstatt [i] --> [playerid], damit nur das TextDraw der playerid geändert wird
    return 1;
    }


    if (strcmp("/testaus", cmdtext, true, 10) == 0)
    {
    darf[playerid] = 0;
    textvar[playerid] = 0;
    TextDrawHideForPlayer(playerid,test[playerid]);
    // Hier das selbe wie bei /test
    return 1;
    }



    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(PRESSED(KEY_DOWN))
    {
    if(darf[playerid] == 1)
    {
    if(textvar[playerid] == 1)
    {
    new string[64];
    format(string, sizeof(string), "~y~Kicken~n~~r~Bannen");
    TextDrawSetString(test[playerid], string);
    auswahl[playerid] = 1;
    textvar[playerid] = 2;
    }
    else if(textvar[playerid] == 2)
    {
    new string[64];
    format(string, sizeof(string), "~r~Kicken~n~~y~Bannen");
    TextDrawSetString(test[playerid], string);
    auswahl[playerid] = 2;
    textvar[playerid] = 1;
    }
    }
    }
    // Hier ebenso die For-Schleife raus
    // Falls was mit den Variablen nicht stimmt, kann ich dir nicht helfen,
    // da ich nicht weiß wie diese Verwendet werden


    return 1;
    }


    Hoffe ich konnte dir damit helfen :)

    Du könntest es mit einer Variable und dem Callback OnPlayerKeyStateChange machen
    --> Wenn das Textdraw angezeigt wird var auf 1 setzten
    dann wenn man Pfeilrechts drückt wird die Var um eins erhöht und TextDrawHideForPlayer + TextDrawSetString + TextDrawShowForPlayer
    Bei TextDrawSetString einfach sowas nehmen : format(string, sizeof(string), "~w~1. Bannen~n~~r~2. Kicken~n~~w~3. usw");
    mit Pfeillinks das selbe nur Var -1


    Allerdings wird eine Abfrage benötigt ala if(var == 1), damit wenn er bei 1 ist die Var nicht auf 0 wird sondern auf 3 gesetzt wird
    Und natürlich auch bei 3, damit die Var nicht 4 wird sondern wieder bei 1 ist


    Dann beim Enter einfach die Var abfragen und je nachdem dann mit einer if abfrage deine gewünschte Aktion ausführen


    Ist am Anfang sehr kompliziert aber wenn man ein bissl mit sowas arbeitet wirds einfach :)

    Du kannst überprüfen obs ein fraktionscar ist oder nicht
    wenn er nicht dazu befugt ist damit zu fahren -> RemovePlayerFromVehicle (glaub ich)
    + Timer der dann später überprüft ob er noch fahrer ist (nach 5-10 sek)

    Wenn ich mich nicht irre funktioniert das nicht, weil er ja vor dem connecten kein Rcon-Admin ist --> er wird gekickt

    Du könntest es mit der || (oder)- Funktion machen
    spart allerdings auch nicht wirklich viel ein



    if(GetPlayerWeapon(playerid) == wID || GetPlayerWeapon(playerid) == wID ) {
    Kick(playerid);
    return 0;


    Einfach alle deine Waffen so eintragen und wenn du faul bist kannst du auch waffen-IDs nehmen anstatt WEAPON_MINIGUN.
    Im wiki gibts ne Liste mit den IDs

    Wenn ich mich nicht irre müsste das gehen mit
    SendRconCommand("login 123");
    wobei 123 dann durch dein Rcon-Passwort ersetzt werden muss
    Dann musste nurnoch die IPs speichern und beim Connecten vergleichen lassen


    Allerdings ist das nicht sonderlich effektiv, da sich die IP täglich ändert (dank Router)


    EDIT : denkfehler
    das bezieht sich ja nur auf loadfs etc. und nicht auf eine Playerid

    Zum "else- Abfrage" gehört auch immer ein "if- Abfrage"
    hast du es nicht gepostet oder existiert diese nicht, denn else bedeutet ja nur dass ein Ereigniss in Kraft tritt unter der Bedingung, dass die if-Abfrage nicht zu trifft


    // Ich werd langsam waren schon drei schneller ;)

    haben sie auch nicht
    allerdings gibts manche freehoster die nur eine bestimmte größe
    einer datei zum hochladen erlauben


    @ alex :


    was dein Problem betrifft, solltest du die strings verkleinern
    d.h.



    new string[256];
    format(string, sizeof(string), "Hallo %s", playername);


    Der String ist für 256 Zeichen ausgelegt, allerdings werden nicht so viele benötigt,
    da "Hallo %s" nur aus max. 69 Zeichen besteht (5 für Hallo und max. 64 für den Spielername) // EDIT : Spielername max. 24 Zeichen
    --> du verkleinerst den String und sparst somit Speicher


    gruß Snail


    PS : hoffe das stimmt was ich geschrieben hab :)

    Zu Problem zwei verwendest dein Script wahrscheinlich CreateVehicle
    Einfach die Modelid sowie die Position aus der savepositions.txt nehmen
    Bei weiteren Problemen zu diesem Befehl bitte erst mal das wiki verwenden
    da wird das erklärt


    //EDIT : Allernativ könntest du allerdings hinter AddStaticVehicle einfach ein Ex schreiben


    Zu deinem ersten Problem kann man dir ohne Code nicht helfen

    InteriorEnters[1] = CreatePickup(pickup id, 23, x y z); //Hier wird bestimmt wo der eingang ist
    InteriorExits[1] = CreatePickup(pickup id, 23, x y z); //Hier wird bestimmt wo der ausgang ist

    Hier ist dir aber ein Fehler unterlaufen, den es beginnt bei 0 und endet mit 99 aufgrund von new InteriorEnters[100];
    new InteriorExits[100];