Beiträge von Mostey

    Deine Abfragen ergeben auch keinen Sinn weil sie äquivalent sind, wie ich vorher bereits erwähnt habe. Sie fragen beide das gleiche ab, ist genauso wie wenn ich folgendes mache:


    new a = 2;
    if(a == 2)
    a = 3;
    else if(a ==2)
    a = 4;


    "a" wäre nach den Anweisungen immer 3, weil die Bedingung mit der ersten Abfrage schon erfüllt ist und es so gar nicht zum else kommt.


    Das mit dem bitweisen & hat übrigens ne kompliziertere Hintergrundgeschichte. Du solltest allerdings immer mit dem bitweisen & abfragen, da man sonst deine Funktionen einfach exploiten kann.

    Dann lag der vorherige Fehler bei der Schleife womöglich an den fehlenden Klammern, ist mir jetzt gerade aufgefallen.


    Keys fragt man immer mit dem bitweisen '&' ab, du vergleichst hier schließlich Bits in einer Variable und nicht die Variable selbst.


    if(oldkeys & KEY_SECONDARY_ATTACK)


    Außerdem: Was reagiert nicht?


    Edit: Deine 2 Abfragen ergeben keinen Sinn da beide äquivalent zueinander sind.

    Hi!


    Ich würde gerne Daten von der Datenbank ressourcensparend herauslesen und speichern. Dabei bin ich auf sscanf gestoßen, allerdings funktioniert mein Code nicht.



    Wäre klasse wenn einer von euch sich das mal ansehen könnte.

    Moin,


    seit längerem arbeite ich nun mit PlayerTextDraws und habe sehr viel damit zutun. Mein derzeitiges System umfasst 2 Gruppen von PlayerTextDraws, wovon der Größteil darin auswählbar ist. (SelectTextDraw)
    Mir ist nun aufgefallen, dass wenn ich die erste Gruppe öffne, etwas auswähle und anschließend beende (mittels PlayerTextDrawDestroy) und danach die 2. Gruppe öffne, sich die IDs verschieben. Heißt, ich klicke beim 2. auf beispielsweise "Start", es öffnet sich aber die Hilfebox der ersten Gruppe.


    Um das Problem nun übergangsweise zu überbrücken, nutze ich nun die PlayerTextDrawHide Funktion, um die PlayerTextDraws unsichtbar für die Spieler zu machen. Bei einem Disconnect des Spielers werden dann mittels einer Funktion alle PlayerTextDraws zerstört, die von ihm hätten erstellt werden können.


    PS: Sie sind nicht konstant deklariert, geht ja auch schlecht.


    Kennt jemand dieses Problem und hat eine Lösung dazu? Kann mir sehr gut vorstellen dass das heftig an Ressourcen zieht.


    Jemand eventuell dazu eine Lösung? Soeben ist wieder ein Problem mit der Hidelösung aufgetaucht. Ich müsste nun extra eine Variable setzen und neue Stocks erstellen um unterscheiden zu können, ob der Spieler diese 2 Gruppen von TextDraws je offen hatte. (sonst werden immer wieder neue erstellt -> Limit wird überschritten)


    Was genau soll ich darunter verstehen?


    "Streamed in" heißt doch im Prinzip nur, dass das Fahrzeug für mich sichtbar ist, oder? Und das ist es nämlich definitiv.




    Mir ist das eben auch aufgefallen, geht aber trotzdem nicht. Hätte mich auch gewundert, da die Vehicle ID unter 5 ist und so in meinen MAX_PLAYERS Bereich fällt.


    Es gibt aber nen kleines Update dazu: Ich kann dynamisch gespawnte Fahrzeuge Ingame (per CreateVehicle) abschleppen, statische Fahrzeuge allerdings nicht. Egal ob ich die von der DB per AddStaticVehicle oder CreateVehicle lade. 8|

    Warum funktioniert das Anhängen eines Fahrzeugs nicht? Bin nun seit einer Stunde drann aber egal wie ich das Problem angehe, es funktioniert einfach nicht...


    if(newkeys & KEY_ACTION)
    {
    if(GetJob(playerid) == MECHANIKER && GetJobVeh(GetPlayerVehicleID(playerid)) == MECHANIKER)
    {
    new vehid,
    Float:vehx,
    Float:vehy,
    Float:vehz;

    for(new i; i < MAX_PLAYERS; i++)
    {
    if(!IsValidVehicle(i)) continue;
    GetVehiclePos(i, vehx, vehy, vehz);
    if(IsPlayerInRangeOfPoint(playerid, 5.0, vehx, vehy, vehz))
    vehid = i;
    }
    AttachTrailerToVehicle(vehid,GetPlayerVehicleID(playerid));
    }
    }


    Joa, das war mir bewusst. Ich frage mich nur, ob die Methode mit der Eingangsvariable mehr Ressourcen verbraucht als wenn ich jeden Public einzeln erstellen würde.


    Danke für die Antworten. :)

    Warum kommen viele Timer zusammen? mal eben so geht das alles nicht.


    Für viele Tore zum Beispiel.


    Nein, ich meinte eine Methode um nicht immer einen neuen public erstellen zu müssen. Das man da eventuell einen public mit einer Eingangsvariable erstellt, die die Timernummer angibt. Im Public selbst wird dann nur im Switch was hinzugefügt, und dann wird dementsprechend die Eingangsvariable in den Timer mit reingegeben.

    Kennt jemand zufällig eine Methode, um alle Timer per Funktion in einem Public ausführen zu lassen? Wäre das sinnvoll mit Eingangsvariablen zu machen?


    Auf Dauer kommen doch recht viele Timer im Script zusammen und nehmen relativ viel Platz weg.

    Bei der Funktion RemovePlayerFromVehicle ist das normal, kommt halt auch immer auf die Geschwindigkeit an, in der diese Abfrage ausgeführt wird.


    Eine andere Möglichkeit (außer den Spieler neben das Fahrzeug zu porten) kenne ich leider nicht...

    Kann eigentlich nicht sein, der Code stimmt jedenfalls.


    Füg doch mal eine Konsolenausgabe ein, dann siehst du ja die Zwischenwerte.


    //Oben im Script:
    new Variable1 = 0;


    printf("Variable davor enthält Wert: %d",Variable1),
    Variable1 ++;
    printf("Und nach dem Addieren hat sie den Wert: %d", Variable1);
    if(Variable1 == 2)return SendClientMessage(playerid, ROT, "Diese Variable entspricht bereits 2!");

    if(alter >= 10 && alter <= 99)
    {
    // wenn zahl zwischen 10 und 99, dann ->
    }
    else return ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Altersystem","Geben sie bitte an wie Alt sie sind (10-99)","Weiter","");


    Deine Abfrage hat keinen wirklichen Sinn ergeben. Zumindest verwirrt dein Dialog mich ziemlich...

    Debugging könnte uns helfen. Das heißt du fügst mal ein paar Konsolenausgaben ein, so wirst du schnell feststellen was hier nicht funktioniert.


    new vehid = GetPlayerVehicleID(playerid);
    for(new i; i < GetMaxPlayers(); i++)
    {
    if(GetPlayerVehicleID(i) == vehid && GetPlayerVehicleSeat(i) >= 1 && GetPlayerVehicleSeat(i) <= 3) // Hab das mal mit den Standard 4-Türern so gemacht, gibt natürlich noch Ausnahmen wie zum Beispiel den Bus.
    {
    RemovePlayerFromVehicle(i);
    printf("ID: %d wurde ejected",i);
    }
    print("Durchlauf %d beendet", i);
    }


    Du müsstest für jeden Durchlauf nun eine Ausgabe bekommen. Das Ergebnis kannst du uns dann auch gerne mitteilen. :)