Beiträge von JustMe.77

    Irgendwas lässt dein Server im Callback OnPlayerTakeDamage() abschmieren. Zeig den Callback mal her.


    Mencent :thumbup:


    Habe den Callback gelöscht, er wird aber so aussehen wenn ich ihn wieder einfüge:



    public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
    {
    PlayerPlaySound(issuerid,17802,0.0,0.0,0.0);
    return 1;
    }

    Warum ist mein Server abgeschmiert:


    [22:26:29] [join] [LnD]JustMe.77 has joined the server (0:93.130.83.66)
    [22:27:01] [chat] [[LnD]JustMe.77]: t
    [22:27:02] [chat] [[LnD]JustMe.77]: t
    [22:27:41] [debug] Server crashed while executing LnD.amx
    [22:27:41] [debug] AMX backtrace:
    [22:27:41] [debug] #0 00000014 in ?? () from LnD.amx
    [22:27:41] [debug] #1 00007d14 in public OnPlayerTakeDamage () from LnD.amx
    [22:27:41] [debug] System backtrace:

    Benutzt du dieses YSI Zeug überhaupt? Darin befindet sich nämlich der Fehler.
    Wenn du diese impl.inc öffnest und dort die beiden Callbacks raus löschst, dann sollte es klappen.



    Kanns dort nicht finden:


    Spoiler anzeigen
    //task DoPulse1

    Spoiler anzeigen
    static stock
    YSI_g_sTimer[32] = "y_zonepulse_";

    Spoiler anzeigen
    forward __GangZonePulse(playerid, zone, from, to, time, stage, delay, time2, delay2, r0, g0, b0, a0, r1, g1, b1, a1);

    Spoiler anzeigen
    public __GangZonePulse(playerid, zone, from, to, time, stage, delay, time2, delay2, r0, g0, b0, a0, r1, g1, b1, a1)
    {
    if (!IsPlayerConnected(playerid))
    {
    return;
    }
    valstr(YSI_g_sTimer[12], zone);
    //format(YSI_g_sTimer, sizeof (YSI_g_sTimer), "y_zonepulse_%d", zone);
    stage = (stage + 1) % (time + time2);
    if (stage == time)
    {
    GangZoneShowForPlayer(playerid, zone, to);
    SetPVarInt(playerid, YSI_g_sTimer, SetTimerEx("__GangZonePulse", delay, 0, "iiiiiiiiiiiiiiiii", playerid, zone, from, to, time, stage, delay, time2, delay2, r0, g0, b0, a0, r1, g1, b1, a1));
    return;
    }
    else if (stage == 0)
    {
    GangZoneShowForPlayer(playerid, zone, from);
    SetPVarInt(playerid, YSI_g_sTimer, SetTimerEx("__GangZonePulse", delay2, 0, "iiiiiiiiiiiiiiiii", playerid, zone, from, to, time, 0, delay, time2, delay2, r0, g0, b0, a0, r1, g1, b1, a1));
    return;
    }
    if (stage > time)
    {
    // Fade back
    new
    multiplier = 2 * time2 - stage;
    // r = r1 * multiplier / time2 + r0,
    // g = g1 * multiplier / time2 + g0,
    // b = b1 * multiplier / time2 + b0,
    // a = a1 * multiplier / time2 + a0;
    //P:7("__GangZonePulse: %d %d %x %x %x %x", playerid, zone, r & 0xFF, g & 0xFF, b & 0xFF, a & 0xFF);
    GangZoneShowForPlayer(playerid, zone, ((r1 * multiplier / time2 + r0) << 24) | (((g1 * multiplier / time2 + g0) & 0xFF) << 16) | (((b1 * multiplier / time2 + b0) & 0xFF) << 8) | ((a1 * multiplier / time2 + a0) & 0xFF));
    //GangZoneShowForPlayer(playerid, zone, (r << 24) | ((g & 0xFF) << 16) | ((b & 0xFF) << 8) | (a & 0xFF));
    SetPVarInt(playerid, YSI_g_sTimer, SetTimerEx("__GangZonePulse", ZONE_PULSE_STAGE_TIME, 0, "iiiiiiiiiiiiiiiii", playerid, zone, from, to, time, stage, delay, time2, delay2, r0, g0, b0, a0, r1, g1, b1, a1));
    }
    else
    {
    // Fade there.
    //new
    // r = r1 * stage / time + r0,
    // g = g1 * stage / time + g0,
    // b = b1 * stage / time + b0,
    // a = a1 * stage / time + a0;
    //P:7("__GangZonePulse: %d %d %x %x %x %x", playerid, zone, r & 0xFF, g & 0xFF, b & 0xFF, a & 0xFF);
    GangZoneShowForPlayer(playerid, zone, ((r1 * stage / time + r0) << 24) | (((g1 * stage / time + g0) & 0xFF) << 16) | (((b1 * stage / time + b0) & 0xFF) << 8) | ((a1 * stage / time + a0) & 0xFF));
    SetPVarInt(playerid, YSI_g_sTimer, SetTimerEx("__GangZonePulse", ZONE_PULSE_STAGE_TIME, 0, "iiiiiiiiiiiiiiiii", playerid, zone, from, to, time, stage, delay, time2, delay2, r0, g0, b0, a0, r1, g1, b1, a1));
    }
    return;
    }

    Spoiler anzeigen
    stock _GangZonePulse(@PlayerSet:ps, zone, from, to, time, delay = ZONE_PULSE_STAGE_TIME, time2 = -1, delay2 = -1)
    {
    //static
    // YSI_g_sTimer[32];
    //format(YSI_g_sTimer, sizeof (YSI_g_sTimer), "y_zonepulse_%d", zone);
    valstr(YSI_g_sTimer[12], zone);
    if (time2 == -1)
    {
    time2 = time;
    }
    if (delay2 == -1)
    {
    delay2 = delay;
    }
    time /= ZONE_PULSE_STAGE_TIME;
    time2 /= ZONE_PULSE_STAGE_TIME;
    // Do a load of maths in advance.
    new
    r0 = (from >>> 24),
    g0 = (from >>> 16 & 0xFF),
    b0 = (from >>> 8 & 0xFF),
    a0 = (from & 0xFF),
    r1 = ((to >>> 24) - r0),
    g1 = ((to >>> 16 & 0xFF) - g0),
    b1 = ((to >>> 8 & 0xFF) - b0),
    a1 = ((to & 0xFF) - a0);
    // This method would have simpler maths in the main timer, but with less
    // accurate results (possibly MUCH less accurate). For reference, this way
    // would result in:
    //
    // cur = from + fromAdd - fromSub;
    //
    /*new
    thereAdd,
    thereSub,
    backAdd,
    backSub;
    if (to >>> 24 > from >>> 24) thereAdd |= ((to >>> 24) - (from >>> 24)) / time << 24, backSub |= ((to >>> 24) - (from >>> 24)) / time2 << 24;
    else thereSub |= ((from >>> 24) - (to >>> 24)) / time << 24, backAdd |= ((from >>> 24) - (to >>> 24)) / time2 << 24;
    if (to >>> 16 & 0xFF > from >>> 16 & 0xFF) thereAdd |= ((to >>> 16 & 0xFF) - (from >>> 16 & 0xFF)) / time << 16, backSub |= ((to >>> 16 & 0xFF) - (from >>> 16 & 0xFF)) / time2 << 16;
    else thereSub |= ((from >>> 16 & 0xFF) - (to >>> 16 & 0xFF)) / time << 16, backAdd |= ((from >>> 16 & 0xFF) - (to >>> 16 & 0xFF)) / time2 << 16;
    if (to >>> 8 & 0xFF > from >>> 8 & 0xFF) thereAdd |= ((to >>> 8 & 0xFF) - (from >>> 8 & 0xFF)) / time << 8, backSub |= ((to >>> 8 & 0xFF) - (from >>> 8 & 0xFF)) / time2 << 8;
    else thereSub |= ((from >>> 8 & 0xFF) - (to >>> 8 & 0xFF)) / time << 8, backAdd |= ((from >>> 8 & 0xFF) - (to >>> 8 & 0xFF)) / time2 << 8;
    if (to & 0xFF > from & 0xFF) thereAdd |= ((to & 0xFF) - (from & 0xFF)) / time, backSub |= ((to & 0xFF) - (from & 0xFF)) / time2;
    else thereSub |= ((from & 0xFF) - (to & 0xFF)) / time, backAdd |= ((from & 0xFF) - (to & 0xFF)) / time2;*/
    foreach (new p : PS(ps))
    {
    KillTimer(GetPVarInt(p, YSI_g_sTimer));
    GangZoneShowForPlayer(p, zone, from);
    // Don't delay at the start (because that's just silly, it already is
    // that colour).
    SetPVarInt(p, YSI_g_sTimer, SetTimerEx("__GangZonePulse", ZONE_PULSE_STAGE_TIME, 0, "iiiiiiiiiiiiiiiii", p, zone, from, to, time, 0, delay, time2, delay2, r0, g0, b0, a0, r1, g1, b1, a1));
    }
    }

    Spoiler anzeigen
    #define GangZonePulse(%0) PSF:_GangZonePulse(%0)
    #define GangZonePulseForPlayer(%0) PSF:_GangZonePulse(%0)
    #define GangZonePulseForAll(%0) PSF:_GangZonePulse(ALL_PLAYERS,%0)

    Spoiler anzeigen
    stock _GangZoneStopPulse(@PlayerSet:ps, zone)
    {
    //static
    // YSI_g_sTimer[32];
    //format(YSI_g_sTimer, sizeof (YSI_g_sTimer), "y_zonepulse_%d", zone);
    valstr(YSI_g_sTimer[12], zone);
    foreach (new p : PS(ps))
    {
    KillTimer(GetPVarInt(p, YSI_g_sTimer));
    }
    }

    Spoiler anzeigen
    #define GangZoneStopPulse(%0) PSF:_GangZoneStopPulse(%0)
    #define GangZoneStopPulseForPlayer(%0) PSF:_GangZoneStopPulse(%0)
    #define GangZoneStopPulseForAll(%0) PSF:_GangZoneStopPulse(ALL_PLAYERS,%0)

    Jeffry:


    Ich möchte Slice's Damage System benutzen, habe alles gemacht so wie beschrieben.
    Ein Schritt davon ist die beiden Callbacks OnPlayerGiveDamage und OnPlayerTakeDamage zu ersetzen undzwar mit dem hier public OnPlayerDamage(&playerid, &Float:amount, &issuerid, &weapon, &bodypart)


    Das habe ich gemacht und ich erhalte diese Errors:


    C:\Users\Dave\Desktop\Hoe's Wonderland\pawno\include\YSI\y_hooks/impl.inc(2340) : error 021: symbol already defined: "OnPlayerTakeDamage"
    C:\Users\Dave\Desktop\Hoe's Wonderland\pawno\include\YSI\y_hooks/impl.inc(2387) : error 021: symbol already defined: "OnPlayerGiveDamage"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.


    Ich habe die beiden ganz sicher gelöscht, und so viele Zeilen habe ich nicht. Und Slice kann ich gerade auch nicht fragen da er nicht online ist :c

    Solche Server zeichnen sich einfach als unfähig aus. Wenn ich jemanden für Cheats verdächtige dann beobachte ich ihn für eine Zeit lang, auch wenn es mal etwas länger dauert, immernoch besser als eine lächerliche Kontrolle durchzuführen. Cheats/Hacks zu löschen dauert höchstens 15 Sekunden.

    Benutze den Anticheat Clienten von Whitetiger (http://www.samp-ac.com) und installier ihn auf dein Server.
    Vorteile:


    -Kostenlos
    -Detectet jeden Cheat/Hack
    -Leicht zu installieren
    -Normale Spieler können ihn ohne weiteres nicht umgehen
    -Ist auf mehreren Servern installiert, was für dich bedeutet das man nicht den Clienten nur für deinen Server installieren muss.


    Und erstell dir Ein Script womit nicht alle User den Clienten benutzten müssen, sondern nur die die bei dir gebannt wurden, und Spieler die bei euch verdächtig sind.
    Ein Befehl womit die User ohne Anticheat nicht connecten können.



    So ist das aufm DayZ Server geregelt (Signatur)

    Ich hatte mal das selbe Problem mit Spark: Mods installiert, Ingame funktionierten sie nicht.


    Das lag aber an einem Anticheat Clienten, und um das zu beheben habe ich die Mods neu installiert, aber dieses mal Spark als Admin ausgeführt.


    Probiere es mal aus, vielleicht hilft es ja..

    Richtig, wie Benny schon erwähnt hat liegt es am Gamemode und nicht am Host wie vorher vermutet.
    Doch laut Pottus / Slice liegt es höchstwahrscheinlich am Streamer Plugin woran so schnell wie möglich geabeitet wird und so mit auch hoffentlich das Problem gelöst wird.


    Weiteres Feedback ist wie immer gerne gesehen.


    EDIT:


    Slice/Pottus haben das Problem behoben und somit wird es hoffentlich keine Server Crashes mehr geben. Die Spielerzahlen sind wieder stabil, da sie nach einem Crash immer schlechter wurden.
    Außerdem gibt es diesen ganzen Monat 2x VIP Coins wenn man welche erwerbt, schnappt zu und das ist kein April Scherz 8o .



    Dann bist du nicht an der Position. Zeig mal deinen Code.


    PermanenT: Der Timer wird alle 3 Sekunden aufgerufen, zwangsläufig kann er nur nach 3 Sekunden wieder raus teleportiert werden, und nicht früher.


    Oben im Script



    forward lookup();


    public lookup() {
    for(new i; i < MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i)) continue;
    if(!IsPlayerInRangeOfPoint(i,1.0,3422.0671,-1810.0132,11.9972)) continue;
    if(IsPlayerInRangeOfPoint(i,1.0,3419.1365,-1815.3472,10015.5713))
    SetPlayerPos(i,3422.0671,-1810.0132,11.9972);
    SetPlayerPos(i,3419.1365,-1815.3472,10015.5713);
    }
    return 1;
    }



    SetTimer("lookup",3000, true);


    OnFilterScriptInit

    Alles klar, danke euch habe es hinbekommen :)


    Nun möchte ich das ich vom Interior wieder zurückgeportet werde innerhalb 3 Sekunden, welchen Code muss ich wieder benutzen, welchen nicht?


    Zurzeit sieht's so aus:



    Oben im Script



    forward lookup();


    public lookup() {
    for(new i; i < MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i)) continue;
    if(!IsPlayerInRangeOfPoint(i,1.0,3422.0671,-1810.0132,11.9972)) continue;
    SetPlayerPos(i,3419.1365,-1815.3472,10015.5713);
    }
    }


    OnFilterScriptInit


    SetTimer("lookup",3000, true);

    Hier stehen die Erklärungen:
    http://wiki.sa-mp.com/wiki/AddPlayerClass_DE


    Ist das denn so korrekt? Möchte das wenn der Spieler diese Zone betretet zu den Koordinaten hinteleportiert wird.


    if(!IsPlayerInRangeOfPoint(1,3422.0671,-1810.0132,11.9972)) continue;
    SetPlayerPos(i,3419.1365,-1815.3472,10015.5713);


    Kriege aber diese Warnings:



    C:\Users\Dave\Desktop\Hoe's Wonderland\filterscripts\Island.pwn(13) : warning 202: number of arguments does not match definition
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Warnings.

    Hallo, ich habe immer ein Problem die Koordinaten zu entnehmen.


    Zum Beispiel von diesen beiden die X, Y & Z Achse.


    AddPlayerClass(30,3422.0671,-1810.0132,11.9972,350.0853,0,0,0,0,0,0); // InselEingang
    AddPlayerClass(30,3419.1365,-1815.3472,10015.5713,82.1083,0,0,0,0,0,0); // ImHausdrin



    By the way wofür steht die 30 ?