PLAYER_RECORDING_TYPE_ONFOOT pausieren lassen

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
  • Guten Morgen/Abend


    habe folgendes Problem und ihr eventuell eine lösung:
    Habe einen NPC aufgenommen der zu Fuß streife läuft, soweit so gut solange ich den ganz normal laufen lasse ist alles gut, aber wenn ich den nun wie mit den Fahrenden Bots stopen lassen will wenn ein Spieler in der nähe ist (Personen Kontrolle) spinnt der total (der bleibt zwar stehen aber danach läuft er die strecke die er bisdahin nicht geschaft hat fast blitzschnell).


    Habe mir als vorlage eine pwn von den Fahrenden bots genommen und diese versucht anzupassen.


    #define RECORDING "streifesf"
    #include <a_npc>
    new gStoppedForTraffic = 0;
    public ScanTimer();
    #define AHEAD_OF_CAR_DISTANCE 5.0
    #define SCAN_RADIUS 5.0
    //------------------------------------------
    main(){}
    //------------------------------------------
    stock GetXYInfrontOfMe(Float:distance, &Float:x, &Float:y)
    {
    new Float:z, Float:angle;
    GetMyPos(x,y,z);
    GetMyFacingAngle(angle);
    x += (distance * floatsin(-angle, degrees));
    y += (distance * floatcos(-angle, degrees));
    }
    //------------------------------------------
    public OnNPCModeInit()
    {
    SetTimer("ScanTimer",200,1);
    }
    //------------------------------------------
    LookForAReasonToPause()
    {


    new Float:X,Float:Y,Float:Z;
    new x=0;
    GetMyPos(X,Y,Z);
    GetXYInfrontOfMe(AHEAD_OF_CAR_DISTANCE,X,Y);
    while(x!=MAX_PLAYERS) {
    if(IsPlayerConnected(x) && IsPlayerStreamedIn(x)) {
    if( GetPlayerState(x) == PLAYER_STATE_DRIVER ||
    GetPlayerState(x) == PLAYER_STATE_ONFOOT )
    {
    if(GetPlayerVehicleID(x)<100) { return 0; }
    if(IsPlayerInRangeOfPoint(x,SCAN_RADIUS,X,Y,Z)) {
    return 1;
    }
    }
    }
    x++;
    }
    return 0;
    }


    //------------------------------------------
    public ScanTimer()
    {
    new ReasonToPause = LookForAReasonToPause();
    if(ReasonToPause && !gStoppedForTraffic)
    {
    PauseRecordingPlayback();
    gStoppedForTraffic = 1;
    }
    else if(!ReasonToPause && gStoppedForTraffic)
    {
    ResumeRecordingPlayback();
    gStoppedForTraffic = 0;
    }
    }


    //------------------------------------------
    StartPlayback()
    {
    StartRecordingPlayback(PLAYER_RECORDING_TYPE_ONFOOT,RECORDING);
    gStoppedForTraffic = 0;
    }


    //------------------------------------------
    public OnRecordingPlaybackEnd()
    {
    StartPlayback();
    }
    //------------------------------------------


    //------------------------------------------


    Edit :keiner einen Plan ?