Beiträge von Tion

    Gbug z.B.

    Ist doch schon von Anfang an drinne ? ;)


    Oder, wenn man als Beifahrer in nem Auto aufn Desk geht, das Auto weiterfährt und der Fahrer aussteigt.
    Wird das Auto sobald der Spieler vom Desk wieder zurückkommt geportet.

    Wird jetzt auch behoben, danke ;)


    Du solltest die include mal richtig hooken da wenn ich meine include nehme Fehler kommen da der hook nicht richtig ist

    Nutze jetzt auch ALS-Hooks - richtig gehookt war es ja vorher schon, nur halt nicht kompatibel ;)

    Hey alle zusammen,


    Wie mindestens 25% von ech schon mitbekommen haben sollten, wird Kalcor keine Bugfixes für den SA:MP-Server herausgeben, wenn sich der Bug auch irgendwie im Script fixen lässt. Ich habe mir jetzt 6 Bugs herausgesucht, die ich noch aus alten Zeiten in Erinnerung habe oder die neu sind und habe eine "Bugfix-Include" geschrieben ;)

    Include
    /* Fix-Include - behebt einige "Bugs"
    ** by Tion
    */

    Include
    // Bug 1: Kick
    // wenn ihr dem Spieler eine Nachricht sendet und ihn dann kickt, wird er zuerst gekickt
    // Bug 2: Driver-Change
    // wenn ihr jemanden als Fahrer in ein Fahrzeug setzt, obwohl es schon einen Fahrer hat,
    // kann der alte Fahrer den neuen nicht im Auto sehen
    // Bug 3: g-Bug
    // Wenn man in ein Auto einteigt und es fährt weg, wird man reingeportet
    // Bug 4: Sniper in Hydra
    // Wenn man mit einer Waffe in eine Hydra oder einen Hunter geht und in die FPV geht
    // bekommt man das Visier der Waffe zu sehen ( geht nur bei einigen und mach mal )
    // Bug 5:
    // Wenn man in einem Auto "sitzt", obwohl es zerstört wurde, dann nach links oder rechts
    // guckt crasht das Game. Passiert auch nur manchmal
    // Bug 6:
    // Wenn man in einem Auto stirbt sehen alle, dass man auf dem Auto stirbt, nur mal selber
    // sieht sich in dem Auto sterben | nur halb "gefixt"
    // Bug 7:
    // Steigt man als Fahrer aus während einer der Beifahrer auf dem Desktop ist, wird das
    // Auto zu der alten Position des Beifahrers geportet - danke an mbcool

    Include
    new Float:SF_VehicleEnterPosition[MAX_PLAYERS][3]; // b3
    new bool:SF_desktop[MAX_PLAYERS] = false;
    new SF_lastvehicle[MAX_PLAYERS];
    enum SF_ePortVeh {
    SF_vid,
    Float:SF_x,
    Float:SF_y,
    Float:SF_z,
    Float:SF_rot
    }
    new SF_portVeh[SF_ePortVeh];

    Include
    // b1
    forward SF_Kick(playerid);
    public SF_Kick(playerid) {
    Kick(playerid);
    }

    Include
    forward SF_PutPlayerInVehicle(playerid, vehicleid, seat);
    public SF_PutPlayerInVehicle(playerid, vehicleid, seat) {
    // b3
    SF_VehicleEnterPosition[playerid][0] = 0;
    SF_VehicleEnterPosition[playerid][1] = 0;
    SF_VehicleEnterPosition[playerid][2] = 0;
    // b2
    if(seat != 0) return PutPlayerInVehicle(playerid, vehicleid, seat);
    for(new i = 0; i < MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i) || !IsPlayerInVehicle(i, vehicleid) || GetPlayerVehicleSeat(i) != 0) continue;
    RemovePlayerFromVehicle(i);
    break;
    }
    return PutPlayerInVehicle(playerid, vehicleid, seat);
    }

    Include
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) {
    // b7
    SF_lastvehicle[playerid] = vehicleid;
    // b3
    if(ispassenger)
    GetPlayerPos(playerid, SF_VehicleEnterPosition[playerid][0], SF_VehicleEnterPosition[playerid][1], SF_VehicleEnterPosition[playerid][2]);
    return CallLocalFunction("SF_OnPlayerEnterVehicle", "iii", playerid, vehicleid, ispassenger);
    }

    Include
    public OnPlayerStateChange(playerid, newstate, oldstate) {
    // b7
    if(newstate == PLAYER_STATE_DRIVER && GetPlayerVehicleID(playerid) == SF_portVeh[SF_vid]) SF_portVeh[SF_vid] = -1;
    // b3
    if(newstate == PLAYER_STATE_DRIVER && SF_VehicleEnterPosition[playerid][0] != 0 && SF_VehicleEnterPosition[playerid][1] != 0 && SF_VehicleEnterPosition[playerid][2] != 0 && GetPlayerVehicleSeat(playerid) != 0) { // Er sitzt im Auto
    if(GetVehicleDistanceFromPoint(GetPlayerVehicleID(playerid), SF_VehicleEnterPosition[playerid][0], SF_VehicleEnterPosition[playerid][1], SF_VehicleEnterPosition[playerid][2]) >= 3) {
    RemovePlayerFromVehicle(playerid);
    SetPlayerPos(playerid, SF_VehicleEnterPosition[playerid][0], SF_VehicleEnterPosition[playerid][1], SF_VehicleEnterPosition[playerid][2]);
    }
    }
    // b4
    new model = GetVehicleModel(GetPlayerVehicleID(playerid));
    if(model == 520 || model == 425) SetPlayerArmedWeapon(playerid, 0);
    // b7
    if(oldstate == PLAYER_STATE_DRIVER) {
    for(new i = 0; i < MAX_PLAYERS; i++) {
    if(IsPlayerInAnyVehicle(i) && GetPlayerVehicleID(i) == SF_lastvehicle[playerid] && SF_desktop[i]) {
    GetVehiclePos(SF_lastvehicle[playerid], SF_portVeh[SF_x], SF_portVeh[SF_y], SF_portVeh[SF_z]);
    GetVehicleZAngle(SF_lastvehicle[playerid], SF_portVeh[SF_rot]);
    SF_portVeh[SF_vid] = SF_lastvehicle[playerid];
    break;
    }
    }
    }
    return CallLocalFunction("SF_OnPlayerStateChange", "iii", playerid, newstate, oldstate);
    }

    Include
    forward SF_DestroyVehicle(vid);
    public SF_DestroyVehicle(vid) {
    // b5
    for(new i = 0; i < MAX_PLAYERS; i++)
    if(IsPlayerInVehicle(i, vid)) RemovePlayerFromVehicle(i);

    DestroyVehicle(vid);
    }

    Include
    public OnVehicleDeath(vehicleid, killerid) {
    // b5 + b6
    for(new i = 0; i < MAX_PLAYERS; i++)
    if(IsPlayerInVehicle(i, vehicleid)) RemovePlayerFromVehicle(i);

    Include
    return CallLocalFunction("SF_OnVehicleDeath", "ii", vehicleid, killerid);
    }

    Include
    public OnGameModeInit() {
    SetTimer("SF_SecondTimer", 1000, true);
    CallLocalFunction("SF_OnGameModeInit", "");
    }

    Include
    forward SF_SecondTimer();
    public SF_SecondTimer() {
    // b7
    for(new i = 0; i < MAX_PLAYERS; i++) {
    if(IsPlayerInAnyVehicle(i) && GetPlayerVehicleID(i) == SF_portVeh[SF_vid] && GetPlayerVehicleSeat(i) != 0 && SF_desktop[i] == true) {
    SetVehiclePos(SF_portVeh[SF_vid], SF_portVeh[SF_x], SF_portVeh[SF_y], SF_portVeh[SF_z]);
    SetVehicleZAngle(SF_portVeh[SF_vid], SF_portVeh[SF_rot]);
    SF_portVeh[SF_vid] = -1;
    }
    SF_desktop[i] = true;
    }
    }

    Include
    public OnPlayerUpdate(playerid) {
    // b7
    SF_desktop[playerid] = false;
    return CallLocalFunction("SF_OnPlayerUpdate", "i", playerid);
    }

    Include
    #if defined _ALS_OnPlayerEnterVehicle
    #undef OnPlayerEnterVehicle
    #else
    #define _ALS_OnPlayerEnterVehicle
    #endif

    Include
    #if defined _ALS_OnGameModeInit
    #undef OnGameModeInit
    #else
    #define _ALS_OnGameModeInit
    #endif

    Include
    #if defined _ALS_OnPlayerStateChange
    #undef OnPlayerStateChange
    #else
    #define _ALS_OnPlayerStateChange
    #endif

    Include
    #if defined _ALS_OnPlayerUpdate
    #undef OnPlayerUpdate
    #else
    #define _ALS_OnPlayerUpdate
    #endif

    Include
    // b1
    #define Kick(%1) SetTimerEx("SF_Kick", 500, false, "i", %1)
    // b2
    #define PutPlayerInVehicle SF_PutPlayerInVehicle
    // b3
    #define PutPlayerInVehicle SF_PutPlayerInVehicle
    forward SF_OnPlayerEnterVehicle(playerid, vehicleid, ispassenger);
    #define OnPlayerEnterVehicle SF_OnPlayerEnterVehicle
    // b3 + b4
    forward SF_OnPlayerStateChange(playerid, newstate, oldstate);
    #define OnPlayerStateChange SF_OnPlayerStateChange
    // b5
    #define DestroyVehicle SF_DestroyVehicle
    forward SF_OnVehicleDeath(vehicleid, killerid);
    #define OnVehicleDeath SF_OnVehicleDeath
    // b6
    forward SF_OnGameModeInit();
    #define OnGameModeInit SF_OnGameModeInit
    // b7
    forward SF_OnPlayerUpdate(playerid);
    #define OnPlayerUpdate SF_OnPlayerUpdate
    Die Include einfach als "script_fix.inc" in eurem pawno/includes-Ordner speichern und in eurem Gamemode ganz oben per #include <script_fix> einbinden. Danach muss nichts mehr geändert werden, die Include hängt sich automatisch überall rein ;)


    Bug 1: Kick-Bug
    Irgendwan fing der SA:MP-Server an, Packete zu "priorisieren" - bedeutet, die Anweisungen werden unabhängig von der eigentlichen Reihenfolge an den Serber weitergeleitet. Dabei hat das Kick-Packet eine sehr hohe Priorität, überholt also sehr viele andere Packete.
    Sendet man dem Spieler jetzt eine Nachricht mit dem Grund, warum er gekickt wurde und kickt ihn danach, wird er zuerst gekickt und danach erhält er die Nachrich (nicht).
    Die Include zögert das Kick-Packet etwas hinaus und sendet es 500ms später, so dass sogar Dialoge noch rechtzeitig angezeigt werden, bevor der Client gekickt wird.


    Bug 2: Driver-Change
    Ab und zu wenn man einen Spieler per "PutPlayerInVehicle" als Fahrer in ein Auto setzt, wird der alte einfach "rausgekickt" ( logisch ), sieht den neuen Fahrer aber nicht im Auto sitzen ( unlogisch ).
    Die Include kickt immer zuerst den alten Fahrer raus, bevor der neue reingesetzt wird, so dass dieser bug gar nicht erst entstehen kann.


    Bug 3: g-Bug
    Steigt man in ein Auto ein und das Auto fährt weg, wird man hinterher geportet, egal wie weit sich das Auto entfernt hat.
    Die Include prüft die Distanz beim Einsteigen und wenn man im Auto ist, ist sie zu groß geworden ( -> Auto hat sich zu weit entfernt ) wird man wieder raus geholt.


    Bug 4: Sniper in Hydra
    Steigt man mit einer Sniper in eine Hydra oder einen Hunter und wechselt in die First-Person sieht man ab und zu das Sniper-Visier.
    Das ganze wird umgangen, indem beim Einstieg in die beiden Fahrzeuge die Waffe gewechselt wird.


    Bug 5: Crash durch Explosionen ( Spektakulärer Name, darauf sollte ich Copyright beantragen :love: )
    Sollte man es schaffen, in einem Auto zu überleben, obwohl das Auto kaputt gegangen ist ( Godmode ) und blickt dann nach rechts oder nach links, crasht das Spiel.
    Deshalb werden alle Spieler aus zerstörten Fahrzeugen entfernt.


    Bug 6: Sterben auf dem Auto
    Stirbt man in einem Auto sieht man sich selber in dem Auto sterben, alle anderen sehen einen aber auf dem Autodach sterben.
    Also wird man raus geworfen, wenn man stirbt, dann sehen alle einen an der gleichen Stelle sterben ;)


    Bug 7: Desktop-Vehicle-Port ( Since v2, gemeldet von mbcool )
    Verlässt man als Fahrer ein Auto während ein Beifahrer an einer anderen Stelle auf dem Desktop gewechselt ist, wird das Auto zu der anderen Stelle zurück geportet.
    Die Include portet das Auto beim Zurückkommen vom Desktop wieder an die Stelle, an der das Auto sein müsste


    Fehlt was ?
    Ich habe einen Bug übersehen, der sich scriptseitig lösen lässt ? Dann meldet euch hier, alle Bugs werden unter Nennung des Authores angehängt und gefixt.


    Tion


    E01: v0.2
    E02: v0.2a
    E03: v0.2b

    Die Nazis versuchen sich gegen die Juden zu wehren und können Waffen benutzen.
    Und pro Kill bekommen die Nazis 1xp und wenn man die Juden berührt und ihnen Handschellen anlegt und in die Gaskammer bring bekommt man 3xp.

    Ich weiß ja nicht, was du in der Schule gelernt hast, aber mir ist kein Zeitpunkt der Geschichte bekannt, in der sich Nazis gegen Deutsche wehren müssen...


    Aber die Idee an sich finde ich super - ich finde, man könnte das noch etwas steigern, indem man z.B. den Juden die Aufgabe gibt, den Aufsehern Wertsachen zu klauen und sie über den Tisch zu ziehen. Oh, und es muss eine Spießrutenlauf-Map geben, wo die Juden alle einen Weg laufen müssen, der rechts und links voller Nazis ist.


    Und die Gaskammern müssen realistisch sein, dass die Juden langsam sterben - je länger ein Jude überlebt, desto mehr XP bekommt der Nazi.


    Spaß beiseite, meinst du wirklich, es ist eine gute Idee, wenn es ein deutschen Nazi-vs-Juden-Server gibt ? Jedes Land der Welt kann es sich erlauben, nur wir nicht ;)

    Sie sind aber fast gestorben meine das hätten die doch iwi Verdient dann :thumbup:

    Und Leute, die gestorben sind haben es dann nicht verdient ? xD
    Ich finde die Idee eigenartig, aber schlage vor, dass wir die Diskussion lassen - ich bleibe dabei, dass es mich nicht interessiert, ob ich heute Nacht oder in 80 Jahren sterbe, macht für mich sowieso kein Unterschied ;)

    Meine Meinung zum Tod ? Mir egal, irgendwann stirbt jeder, und was danach passiert weiß sowieso keiner, also warum damit beschäftigen ?


    Gott ? Ob es ihn gibt oder nicht auch egal. Man kann nach seinen ethischen Moralen leben, dann hatte man ein erfülltes Leben und kommt, sollte er existieren, in den Himmel, wenn nicht, hat es nicht geschadet. Aber warum nach den Regeln spielen, wenn man auch gegenan kann ? Selbst wenn man dann im Fegefeuer landet, hatte man ein erfülltes Leben voller Spaß ;)


    Mir ist es egal, ob es den Gott gibt oder ob wir sterben, ersteres finden wir sowieso wenn erst nach zweieres raus, und zweites dauert noch ein bisschen und darüber müssen wir uns sowieso erst ein paar Minuten vorher Gedanken machen ;)

    Du sollst die ja auch nicht unten anfassen sondern an der Seite
    Und was man machen sollte ist vorher erden aber nicht während du es einbaust. So ist mir auch ein RAM kaputtgegangen, als ich während des Einbaus das Gehäuse angefasst habe

    Meinte ich doch, einmal vorher iwas geerdetes anfassen ( Heizkörper ), damit man nicht mehr statisch aufgeladen ist :whistling:
    Ich verstehe gerade nicht, wo das Problem sein soll :huh:

    @Swain_Blake:
    Aber ich sehe gerade, hier treffen "Hobbybastler" auf "Sohn eines Technikers" ( nicht auf Fähigkeiten bezogen, sondern auf Art der Umsetzung ) - wenn ich die Konstrukion mit den Festplatten sehe... Festplatten direkt aufeinander legen...
    Als Gegenbeispiel meine in einer Moisture Barrier Bag eingepackte Festplatte... Lassen wir die Diskussion lieber ^^


    du meinst wohl nie anfassen wenn er geerdet seit. Das trifft aber nicht auf Festplatten zu sondern eher auf CPU/RAM und Motherboard/GraKa, da eine Festplatte extra abgeschirmt ist

    Mit wurde es exakt anders herum beigebracht. Und - zumindest bei den Festplatten, die ich nutze - liegt meistens noch die Unterseite der Platine offen ;)


    schwachsinn hab ich schon tausende male gemacht nie ist was passiert

    Dann hast du es tausende male falsch gemacht. Egal, was du im PC anfässt, man sorgt IMMER dafür, dass man geerdet ist. immer. War eines der ersten Sachen, die mir beigebracht wurden ;)
    Google: Festplatte anfassen - geerdet ?
    Google: RAM anfassen geerdet
    Den Rest kannst du sicherlich selber suchen, habe ich am Handy keine Lust zu ;)


    2.5'' in 3.5'', aber manchmal hält das mit den Schienen nicht. Und schlag bitte keine Lösung mit Pappe oder so vor >.>


    Wollte das nur oben klar stellen, nicht, dass da iwas kaputt geht ;)


    Könnte ich seine Laptop Festplatte in meinen PC einbauen und sie dann wieder bei ihm einbauen? Ginge das?

    Wenn die Größe der Festplatte stimmt, ja.
    Dann wird Windows dich nur beim Start darauf hinweisen, dass die Hardware sich geändert hat und du musst es evtl neu aktivieren, dann sollte es aber gehen ;)
    Musst nur darauf achten, dass du nicht ausversehen die HDD des PCs zum Installieren nutzt :D


    Und immer daran denken, die Festplatten nie anfassen, wenn ihr nicht geerdet seit, sonst gehen sie kaputt ;)

    Er will es genau anders herum haben ;)


    Wenn du eine eigene Lösung haben willst...
    - nimm die Zahl als String
    - Gehe von hinten nach vorne durch
    - Hänge die aktuelle Zahl an einen anderen String vorne an
    - Wenn sich die Stelle der Zahl glatt durch 3 teilen lässt und nicht 0 ist, hänge an den String einen Punkt vorne an


    Fertig :)

    Festplatte in einen PC mit heilen Monitor, Windows installieren, Festplatte wieder in den Laptop einbauen. Er wird dir dann beim Start sagen, dass die Hardware sich verändert hat, dass kannst du einfach ignorieren ;)

    Der Fehler, dass der Server nicht startet, löst sich, wenn du die 2 Errors gefixt hast ;)
    Der sagt, dass das Script nicht erfolgreich parsen konnte, weil eine Funktion fehlt - das liegt an den Warnings ;)