Beiträge von 4#Future

    Das kommt zwar selten mal vor, aber ich finde es wirklich toll.


    Meiner Meinung nach zwar auch keine neue Idee, aber mein
    ein abwechslungsreiches Update der Standardkarte und kein
    jedweiliger Mist.


    Brotpunkte: 9 / 10

    Da war jemand schneller... :huh:


    MotorTimer = SetTimerEx("MotorSchaden", 5000, true, "ud", playerid, vehicleid);


    public MotorSchaden(playerid, vehicleid)
    {
    new Float:vHealth;
    GetVehicleHealth(vehicleid, vHealth);

    if(vHealth > 200)
    {
    Motor[vehicleid] = false;
    MotorSchadenA[vehicleid] = 1;
    KillTimer(MotorTimer);
    }

    return 1;
    }

    Meinste das so?

    Ob du nun fünf Variablen erstellst, ein Array oder die
    gekauften Fahrzeug einfach in einer Variable speicherst,
    ist dir selbst überlassen.


    Da du die Fahrzeug ID für den Spieler aber speichern
    musst, um ihn seine Fahrzeuge zuweisen zu könnnen,
    empfiehlt sich weiterhin das Array. Das muss dann natürlich
    in der Datenbank oder sonst wo gesichert werden.

    Um die Spieler auf der Karte unsichtbar erscheinen zu lassen,
    kannst du folgende Funktion benutzen: SetPlayerMarkerForPlayer


    Die Textfarbe und Namensfarbe kannst du dann innerhalb der
    Funktion OnPlayerText verändern und natürlich selbst festlegen.


    ---


    Möchtest du, dass dein Name auch bunt im TAB Menü angezeigt wird,
    solltest du, wie mein Vorgänger postete, die Funktion SetPlayerColor nutzen.

    Du speicherst deine Schlüssel einfach in den Carkey Variablen.


    Sind alle voll (die findest du durch eine Anweisung heraus),
    kann der Spieler einfach keine mehr kaufen. Und ist noch
    ein Schlüssel unbesetzt, kann er eben eins kaufen.


    Denkbar simpel :thumbup:

    Bitte fass dir mal an die Nase und überdenke deinen code


    Uhhh...
    Da habe ich ja mal gar nicht hingeschaut.
    Natürlich hast du Recht und ich habe mächtig "getrieft".


    if(strcmp(cmd, "/anhan", true) == 0)
    {
    var = strtok(cmdtext, idx);
    if(!strlen(var)) return SendClientMessage(playerid, -1, "[BENUTZE] /anhan [vehicleID]");

    if(PlayerInfo[playerid][pAdmin] == 3)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    if(strval(var) != INVALID_VEHICLE_ID)
    {
    AttachTrailerToVehicle(strval(var), GetPlayerVehicleID(playerid));
    SendClientMessage(playerid, -1, "Das Fahrzeug wurde angehängt.");
    return 1;
    }
    }
    }
    }

    Du verwendest die Funktion GetPlayerInterior und nutzt
    diese in einer Anweisung, um herauszufinden in welchem
    Interior sich der Spieler befindet.


    Dann spielst du die Musik einfach ab...

    if(GetPlayerInterior(playerid) == 1234)
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    PlayerPlaySound(playerid, 1234, X, Y, Z);
    }
    Du musst dir den Codeschnippsel natürlich anpassen.

    Die einfachere und richtig Lösung folgt unten.


    Noch ein Tipp:


    Wir helfen dir aus eigenen Interesse und nicht aus
    der Tatsache, dass du meinst, wir dir helfen zu müssen.
    Und niemand ist dazu da, sich um deine Dinge kümmern zu müssen.

    if(strcmp(cmd, "/anhan", true) == 0)
    {
    var = strtok(cmdtext, idx);
    if(!strlen(var)) return SendClientMessage(playerid, -1, "[BENUTZE] /anhan [vehicleID]");

    if(PlayerInfo[playerid][pAdmin] == 3)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    if(strval(var) != INVALID_VEHICLE_ID)
    {
    for(new c = 0; c < MAX_VEHICLES; c++)
    {
    AttachTrailerToVehicle(strval(var), GetPlayerVehicleID(playerid));
    }

    SendClientMessage(playerid, -1, "Das Fahrzeug wurde angehängt.");

    return 1;
    }
    }
    }
    }

    Du solltest vielleicht eine Anweisung einbauen, die überprüft,
    ob der Admin in einem Fahrzeug ist und in Reichweite des Fahrzeugs,
    dessen ID du ebenfalls als Parameter mit einfließen lassen solltest.


    Konkret: /anhan [vehicle ID]

    Die Funktion funktioniert exakt so, wie ich sie dir geschrieben habe.
    Ggf. musst du den String var anpassen, den es vielleicht nicht gibt.

    if(strcmp(cmd, "/me", true) == 0)
    {
    var = strtok(cmdtext, idx);
    if(!strlen(var)) return SendClientMessage(playerid, 0xFF0000FF, "[BENUTZE] /me [Text]");

    new plName[MAX_PLAYERS_NAME], string[125], Float:posX, Float:posY, Float:posZ;
    GetPlayerName(playerid, plName, sizeof(plName));
    format(string, sizeof(string), "* %s %s", plName, var);

    GetPlayerPos(playerid, posX, posY, posZ);
    ForAllPlayers(i) if(IsPlayerInRangeOfPoint(i, 50, posX, posY, poZ)) SendClientMessage(i, 0xFFFF00AA, string);
    return 1;
    }

    In der Spielervariable Auto1 speicherst du ja für gewöhnlich
    die ID des Fahrzeugs, die es im Spiel hat. Also kannst du diese
    auch einfach wieder aufrufen.


    Um festzustellen ob es die gleiche ID ist, wie diese in welchem
    Fahrzeug du gerade sitzt, nutzt du einfach folgende Anweisung.

    if(GetPlayerVehicleID(playerid) == GetPVarInt(playerid, "Auto1"))


    // überprüft ob die Fahrzeug ID gleich der gespeicherten ist

    Bitte schön...

    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new cmd[20], var[20], idx = 0;
    cmd = strtok(cmdtext, idx);

    if(strcmp(cmd, "/me", true) == 0)
    {
    var = strtok(cmdtext, idx);
    if(!strlen(var)) return SendClientMessage(playerid, 0xFF0000FF, "[BENUTZE] /me [Text]");

    new plName[MAX_PLAYERS_NAME], string[125], Float:posX, Float:posY, Float:posZ;
    GetPlayerName(playerid, plName, sizeof(plName));
    format(string, sizeof(string), "* %s %s", plName, var);

    GetPlayerPos(playerid, posX, posY, posZ);
    ForAllPlayers(i) if(IsPlayerInRangeOfPoint(i, 50, posX, posY, poZ)) SendClientMessage(i, 0xFFFF00AA, string);
    return 1;
    }
    }
    Du solltest du einfach einfügen können.


    Beachte aber, dass du nur das Kommando kopieren musst, nicht die gesamte Funktion.

    Jesus, unser Herr, hat mit allen Dingen etwas zu tun, mein Lieber.


    Ganz recht, heute vor vielen Jahren ist unser Herr, Jesus Christus, am Kreuz gestorben. Deshalb ist dies heute ein stiller Trauertag.


    Mal Spaß aus und vor...


    Ist das wirklich ein verzweifelter Versuch die 24380 Nutzer hier zu bekehren?


    Falls dem so ist, solltest du wissen, dass Chuck Norris dieses Forum gegründet
    hat und Gott, Chuck Norris einen Gefallen schuldig ist, für die Erfindung Satans.


    Mal ehrlich...


    Es tut mir leid! Lasst solchen Firlefanz bitte sein :thumbdown: