Key wird nicht abgefragt?

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
  • Hi,


    ich habe mir folgendes Script zusammengebastelt:
    public erzabgeben(playerid, vehicleid)
    {
    new str[128];
    new rnd = random(Load[vehicleid]);
    format(str,sizeof str,"Du hast %skg Gestein abgeliefert!\nIn diesem Gestein befanden sich {009BFF}%skg Eisenerz {FFFFFF}.\n\nDafür erhälst du %s€!",inspoints(Load[vehicleid]),inspoints(rnd),inspoints(rnd+1000));
    pInfo[playerid][pMoney] += rnd+1000;
    JobInfo[EisenKG] += rnd;
    PlayerTextDrawHide(playerid, JobInfo0[playerid]);
    TextDrawHideForPlayer(playerid, JobInfo1);
    PlayerTextDrawHide(playerid, JobInfo2[playerid]);
    ErzjobCP[playerid] = 0;
    JobInfo[Erzbergstadium] += 1;
    SaveJobInfo();
    ShowPlayerDialog(playerid,DLG_ERZ,DIALOG_STYLE_MSGBOX,"Job :: Erzarbeiter",str,"Schliessen","");
    return 1;
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(IsPlayerInAnyVehicle(playerid) && GetPlayerVehicleSeat(playerid) == 0) {
    if(Erzabgeben[playerid] == 1) {
    if(GetPlayerVehicleID(playerid) == 406) {
    if(HOLDING(KEY_ANALOG_DOWN)) {
    if(IsCoordBehindVehicle(GetPlayerVehicleID(playerid),680.9702,824.3072,-26.7051)) {
    erztimer[playerid]=SetTimerEx("erzabgeben",7000,0,"dd",playerid,GetPlayerVehicleID(playerid));
    kadpressed[playerid] = 1;
    } else {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Dein Fahrzeug befindet sich nicht mit der Ladefläche zum Gesteinsfilter!");
    }
    }
    if(RELEASED(KEY_ANALOG_DOWN)) {
    if(kadpressed[playerid] == 1) { KillTimer(erztimer[playerid]); }
    }
    }
    }
    }
    return 1;
    }
    Doch leider wird der "erzabgeben"-Callback nie aufgerufen 8|
    Woran liegt es?


    lg

  • Sicher das du if(GetPlayerVehicleID(playerid) == 406)
    meinst und nicht GetVehicleModel(GetPlayerVehicleID(playerid)) == 406?

    Hyper Code

    Wir entwickeln professionelle Ressourcen für FiveM, die auf verschiedenste Bedürfnisse zugeschnitten sind

    und stellen dabei stets die Kundenzufriedenheit in den Mittelpunkt.

    Mit einer Vielzahl von Ressourcen hast du zahlreiche Anpassungsmöglichkeiten, um sie zu deinem eigenen Projekt zu machen. Jede Ressource ist etwas Besonderes, da wir viel Liebe und Sorgfalt in alles stecken, was wir erschaffen.


    Besucht uns unter

    https://hyper-code.eu oder im Discord unter discord.gg/hypercode

  • Sicher das du if(GetPlayerVehicleID(playerid) == 406)
    meinst und nicht GetVehicleModel(GetPlayerVehicleID(playerid)) == 406?


    Ja, das wars, ist schon spät am Abend :D


    Nun habe ich hier mit noch ein Problem:
    stock IsCoordBehindVehicle(veh,Float:x,Float:y,Float:z)
    {
    new Float:size[3]; GetVehicleModelInfo(GetVehicleModel(veh), VEHICLE_MODEL_INFO_SIZE, size[0],size[1],size[2]);
    new Float:vangle; GetVehicleZAngle(veh,vangle);
    x = floatadd(x,(-size[0]* floatsin(-vangle,degrees)));
    y = floatadd(y,(-size[1]* floatcos(-vangle,degrees)));
    if(IsVehicleInRangeOfPoint(veh,7,x,y,z)) return 1;
    return 0;
    }
    Das ist nicht, ob das Vehikel mit dem hinteren Teil zur Koordinate steht, sondern mit der Front, wie muss ich das umschreiben? Jeffry:

  • stock IsCoordBehindVehicle(veh,Float:x,Float:y,Float:z)
    {
    new Float:size[3]; GetVehicleModelInfo(GetVehicleModel(veh), VEHICLE_MODEL_INFO_SIZE, size[0],size[1],size[2]);
    new Float:vangle; GetVehicleZAngle(veh,vangle);
    x = floatadd(x,(size[0]* floatsin(-vangle,degrees)));
    y = floatadd(y,(size[1]* floatcos(-vangle,degrees)));
    if(IsVehicleInRangeOfPoint(veh,7,x,y,z)) return 1;
    return 0;
    }
    Ohne die Minuse vor size in der Berechnung. Das dreht das ganze praktisch um.