Key-Abfrage?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo.
    Ich möchte gerne wissen, wie ich z.B. per %s abfragen kann, welche Taste der Spieler auf z.B. KEY_SECONDARY_ATTACK gelegt hat.
    Beispiel:
    Ich habe einen Skinshop, dort steht man soll die Sprinten Taste drücken für den nächsten Skin.
    Ich möchte aber dort den Tasten-Namen anzeigen.
    Sprich wenn der User mit Umschalt Sprintet soll da "SHIFT" oder "UMSCHALT" stehen. Und wenn er Sprinten auf Leertaste hat soll da "LEERTASTE" oder "SPACE" stehen.
    Hat jemand eine Lösung dazu? :)

  • Hm, mal schauen.
    Habe aber ein anderes Problem, undzwar folgendes.
    Wenn ich in ein Fahrzeug einsteige und Leertaste drücke und Numpad 4 drücke, passiert nichts.
    if(HOLDING(KEY_SPRINT) && PRESSED(KEY_ANALOG_LEFT))
    {
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    new vid = GetPlayerVehicleID(playerid);
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x,y,z);
    new engine, light, alarm, doors, bonnet, boot, objective;
    new mod = GetVehicleModel(GetPlayerVehicleID(playerid));
    if(IsAFahrrad(mod))return SendClientMessage(playerid, COLOR_GREY, "Ein Fahrrad hat kein Motor.");
    GetVehicleParamsEx(vid, engine, light, alarm, doors, bonnet, boot, objective);
    if(engine == VEHICLE_PARAMS_OFF || engine == VEHICLE_PARAMS_UNSET)
    {
    if(gGas[vid] <= 0)return SendClientMessage(playerid, COLOR_GREY, "Kein Benzin mehr!");
    KillTimer(carmsgwait[playerid]);
    SetVehicleParamsEx(vid, VEHICLE_PARAMS_ON, light, alarm, doors, bonnet, boot, objective);
    TextDrawSetString(CarMessage[playerid], "~w~Motor ~g~an");
    TextDrawShowForPlayer(playerid, CarMessage[playerid]);
    }
    else
    {
    KillTimer(carmsgwait[playerid]);
    SetVehicleParamsEx(vid, VEHICLE_PARAMS_OFF, light, alarm, doors, bonnet ,boot, objective);
    TextDrawSetString(CarMessage[playerid], "~w~Motor ~r~aus");
    TextDrawShowForPlayer(playerid, CarMessage[playerid]);
    }
    carmsgwait[playerid] = SetTimerEx("HideCarMessage", 8000, 0, "i", playerid);
    }
    }


    Ich hoffe es kann jemand helfen. :/

  • Nun, ich habe es jetzt folgendermaßen:

    if((newkeys & KEY_SPRINT) && !(oldkeys & KEY_SPRINT) && (newkeys & KEY_ANALOG_LEFT) && !(oldkeys & KEY_ANALOG_LEFT))
    {
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    new vid = GetPlayerVehicleID(playerid);
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x,y,z);
    new engine, light, alarm, doors, bonnet, boot, objective;
    new mod = GetVehicleModel(GetPlayerVehicleID(playerid));
    if(IsAFahrrad(mod))return SendClientMessage(playerid, COLOR_GREY, "Ein Fahrrad hat kein Motor.");
    GetVehicleParamsEx(vid, engine, light, alarm, doors, bonnet, boot, objective);
    if(engine == VEHICLE_PARAMS_OFF || engine == VEHICLE_PARAMS_UNSET)
    {
    if(gGas[vid] <= 0)return SendClientMessage(playerid, COLOR_GREY, "Kein Benzin mehr!");
    KillTimer(carmsgwait[playerid]);
    SetVehicleParamsEx(vid, VEHICLE_PARAMS_ON, light, alarm, doors, bonnet, boot, objective);
    PlayerTextDrawSetString(playerid, CarMessage[playerid], "~w~Motor ~g~an");
    PlayerTextDrawShow(playerid, CarMessage[playerid]);
    }
    else
    {
    KillTimer(carmsgwait[playerid]);
    SetVehicleParamsEx(vid, VEHICLE_PARAMS_OFF, light, alarm, doors, bonnet ,boot, objective);
    PlayerTextDrawSetString(playerid, CarMessage[playerid], "~w~Motor ~r~aus");
    PlayerTextDrawShow(playerid, CarMessage[playerid]);
    }
    carmsgwait[playerid] = SetTimerEx("HideCarMessage", 8000, 0, "i", playerid);
    }
    }


    Funktionieren tut es aber immernoch nicht.
    Also ich möchte, dass man Leertaste gedrückt halten muss und dann Num4 drücken muss. :(

  • Mit ~k~~VEHICLE_ACCELERATE~ und ~k~~VEHICLE_TURRETLEFT~ kannst du per SendClientMessage(); die Tastennamen ausgeben auf die der Spieler die jeweilige funktion gelegt hat.


    SendClientMessage(playerid, -1, "KEY_SPRINT = ~k~~VEHICLE_ACCELERATE~ ; KEY_ANALOG_LEFT = ~k~~VEHICLE_TURRETLEFT~");