Sscanf 2 funktioniert nacht Bot dc auf User nichtmehr

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 Breadfish.


    Habe einen Bug mit dem Scanf Plugin von Y_Less.
    Dazu aber bisher in dessen Thread usw nichts gefunden.


    Das Problem ist, wenn ich ca 8 Bots habe. Einer davon aus irgendeinem Grund gekickt wird (Ursache unklar jedoch nicht das Thema), buggt diese ID
    Angenommen der Bot ist id 0. Sobald der Bot einen disconnect hat, ist id 0 "buggy". Das bedeutet alle befehle mit sscanf funktionieren nicht mehr auf den User (u Paramater)
    Dazu kommt, dass aber ReturnUser() noch funktioniert.


    Hatte eventuell jemand das selbe Problem und hat eine Lösung gefunden?



    Gruß
    Dark.Shadow

    ik bin der vito c:

  • Das Script ist dauerhaft im Debug modus und es bringt nichts.
    Es liegt ja am sscanf Plugin nicht am Script.


    ulbi -> Wenn du meinst das er neu connecten soll -> Er soll ja nicht neu connecten.
    Es sind Bots die mal da sind und mal eben nicht.


    Gruß

    ik bin der vito c:

  • Nein es gibt kein bug in bezug auf NPCs hab das ganze selbst gerade getestet es wird ihrgend was blockiert


    in bezug zum aufruf bei OnPlayerConnect(playerid) also wird der übeltäter sich hinter SSCANF_Join verbirgen ich hab nur noch nicht raus gefunden wie sich das blockieren lässt

    public OnPlayerConnect(playerid)
    {
    new
    name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof (name));
    SSCANF_Join(playerid, name, IsPlayerNPC(playerid));
    return SSCANF_OnPlayerConnect(playerid);
    }


    //edit


    Mal so eine Frage gehen nur die Befehle nicht die mit der spielerid arbeiten oder andere mit normalen nummer auch nicht oder strings etc...

  • Nur die Befehle mit dem u Paramater funktionieren nichtmehr.


    Alle anderen mit integers usw garkein Prob


    Nur sobald ein u Paramater drin ist, kommt immer der Fehler, das der Spieler nicht connected ist.


    Gruß


    Beispiel:


    ocmd:freefromcar(playerid, params[])
    {
    if ( GetPlayerFaction(playerid) != FRAK_WHEELMAN ) return SendInfoMsg(playerid, "Du bist kein Wheelman!");
    if ( GetPlayerState(playerid) != PLAYER_STATE_DRIVER ) return SendInfoMsg(playerid, "Du bist nicht der Fahrer eines Fahrzeuges!");
    if ( GetPVarInt(playerid, "FreefromCar_Timer") == 1 ) return SendInfoMsg(playerid, "Du versuchst nocht jemanden aus dem Fahrzeug zu ziehen!");

    new vehicleid = GetPlayerVehicleID(playerid);
    new vehiclemodel = GetVehicleModel(vehicleid);

    new seat, pID;
    if ( sscanf(params, "iu", seat, pID) ) {
    return SendNutzMsg(playerid, "/freefromcar [SitzID (0 -> Hinten links, 1 -> hinten rechts, 3 -> Motorrad)] [Spieler]");
    }

    if ( seat < 0 || seat > 4 ) return SendInfoMsg(playerid, "Sitz ID über 0 und maximal 3!");
    if ( seat != 3 && VehicleIstEinBike(vehiclemodel) ) return SendInfoMsg(playerid, "Du musst Sitz 3 auswählen, da du auf einem Motorrad bist!");
    if ( !IsPlayerConnected(playerid) ) return SendInfoMsg(playerid, "Der Spieler ist nicht online!");
    if ( GetDistanceBetweenPlayers(playerid, pID) > 10 ) return SendInfoMsg(playerid, "Du bist nicht nah genug am Spieler dran!");
    if ( PlayerCuffed[pID] == 0 && PlayerTied[pID] == 0 ) return SendInfoMsg(playerid, "Der Spieler ist nicht gefesselt!");

    SetPVarInt(playerid, "FreefromCar_Timer",1);
    GameTextForPlayer(playerid, "~r~Bleibe 10 Sekunden am Fahrzeug",5000, 4);
    ProxDetector(30.0, playerid, sprintf("* %s versucht %s in sein Fahrzeug zu ziehen.",SpielerName(playerid), SpielerName(pID))
    , COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);

    if ( seat == 0 ) seat = 2;
    if ( seat == 1 ) seat = 3;
    if ( seat == 3 ) seat = 1;

    SetTimerEx("FreeFromCar",10000,0,"iiii",playerid, pID, vehicleid, seat);
    return 1;
    }

    ik bin der vito c:

  • Hm ok dan läuft ihrgend was bei OnPlayerConnected schief das problem ist halt die uhrsache davon zu finden hast vllt weitere hooks mit der hooking methode
    die du in der sscanf2 include siehst da diese Methode eigentlich sehr schnell ist dürfte es eigentlich keine probleme geben da OnPlayerConnect die gehookte version als erstes
    aufgerufen wird.

  • Gehookt wird bei Onplayerconnect soweit ich weiß der Streamer, sscanf und foreach denke ich


    Gruß


    Nun gut das liegt nicht daran es geht um seine 4 hooking methode und zwar mit state zu arbeiten diese ist weit aus schneller und nicht so lästig wie
    mit CallLocalFunction oder CallRemoteFunction zu arbeiten das der Server abschmiert wenn ein leerer string übergeben wird.
    Dies Hooking Methode hat erst seit seiner neusten sscanf2 include drinne so viel ich weiß ( ich kann mich in dem bezug auch irren).


    du kannst ja mal was ausgeben lassen in dem hook um zu sehen ob das überhaupt aufgerufen wird dazu gehst du in die include und schreibst print("asdfghj");
    was auch immer du willst die hauptsache ist raus zu bekommen ob da der fehler auch bei dir liegt.
    Zum testen kann ja auch in dem fall mal den hook auch umschreiben vllt wirkt auch ihrgend was anderes auf state ein.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen