Bot einstellen

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
  • Das kann ich dem Log nicht entnehmen, dort scheint alles zu klappen, der print, dass dein Account gespeichert wurde kommt ja auch.

    Hhhm hab mich dann jetzt falsch ausgedrückt ^^


    Die Konsole bleibt bestehen also schließt sich nicht automatisch, aber wenn ich den Testbefehl eingebe und der Bot Connectet geht garnichtsmehr.
    Andere Befehle geht nicht mehr, Tacho hängt sich auf, Maps werden nicht geladen, Nachrichten im Chat kann man nicht senden & lesen.
    Als würde sich der Server für den Spieler aufhängen...
    Durch dem neuen Code mit dem Timer seh ich den Bot überhaupt nicht mehr...

  • das hört sich jetzt vielleicht komisch an, aber ich habe das Problem nicht nach 5 Sekunden sondern nach ca 1-2 Minuten...


    Ich verstehe nur nicht was hat das denn damit zu tun? Oder hängt sich eine Abfrage auf??


    //Edit:
    Habe vergessen nun die Logs mitzuposten:

    ( war mit dem Timer nicht... )

  • Diese Meldungen dürften eigentlich mit dem Timer nichts zu tun haben.
    Aber so wie es scheint verbraucht irgendwas ziemlich viele Ressourcen.

    Ich prüfe mal nach worann das liegen könnte.
    Habe aber nicht viel weitergearbeitet wegen dem Bot System....


    Eine Frage habe ich, muss ich den Bot jetzt als Fahrer aufnehmen,
    sprich ich setz mich als Fahrer auf dem Motorrad starte die Aufnahme und stoppe diese?
    Oder soll ich die Aufnahme machen das ich als Beifahrer sitze?


    Macht das einen Unterschied, weil das weiß ich jetzt nicht genau...


    Stimmt denn die Abrage mit dem strcmp?
    Weil der Bot ja kein Skin gesetzt wurde...

  • Eine Frage habe ich, muss ich den Bot jetzt als Fahrer aufnehmen,

    Der Bot muss als Beifahrer aufgenommen werden, sprich irgendjemand fährt, und der der als Beifahrer sitzt startet die Aufnahme.



    Weil der Bot ja kein Skin gesetzt wurde...

    Setze das SetPlayerSkin auch mal in den Timer, möglicherweise greift da noch etwas anderes, was den Skin zu etwas anderem setzt.
    Der Timer wird ja aufgerufen, sprich die strcmp Abfrage passt.

  • Der Bot muss als Beifahrer aufgenommen werden, sprich irgendjemand fährt, und der der als Beifahrer sitzt startet die Aufnahme.

    Gut, dann lag ich doch richtig jedoch fährt niemand sondern ich bin aufgesteigen Aufnahme gestartet und dann wieder gestoppt...
    Wenn ich z.B. als Beifahrer sitze und Aufnehme und jmd anders das Fahrzeug fährt fährt der Bot aber nicht diese Route ab oder?
    Das wäre nur wenn er als Fahrer sitzt?

  • ich habe nun den Bot neu aufgenommen.
    Jetzt "crasht" bzw bekommt der Spieler keinen TimeOut mehr.
    Sobald ich den Testbefehl eingebe und auf nem Motorradsteige dauert das ca 20 Sekunden bis der Bot spawnt.
    Jeeeetzt ist es aber so das er hinter dem Motorrad sitzt und nicht als Beifahrer. Vorher war nicht mal ansatzweise hinten...


    Wiegesagt was nicht funktioniert ist das er sitzt und sein Skin geändert wird...
    Versuche das gleich mal mit dem Timer, was du @Jeffry heute geschrieben hattest...


    //Edit:


    Jetzt bin ich etwas verwirrt bezüglich dieser Einstellung:

    Da der Bot ja als Beifahrer sitzten soll, muss der RECORDING_TYPE 2 sein?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Nein, als Beifahrer ist er ja in einem Fahrzeug.

    gut danke.


    So habe nun das mit dem Timer versucht und folgendes wurde in den Logs ausgeschrieben:

    Code
    [connection] 127.0.0.1:62998 requests connection cookie.
    Incoming connection: 127.0.0.1:62998 id: 1
    [npc:join] MotorradBeifahrer has joined the server (1:127.0.0.1)
    Put 1 in vehicle 274 and seat 1.


    Das komische ist, der Bot hat weder die Skin-ID 1 und noch ist er Beifahrer...
    ich poste nochmal ein Screen wo er dann steht/spawnt:


    sa-mp-046.png


    Ich versteh's einfach nicht das der Bot immernoch steht und kein Skin hat....

  • Versuche es, wenn du so daneben stehst, mal mit diesem Befehl:
    if(!strcmp(cmdtext, "/test", true))
    {
    new botname[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerNPC(i))
    {
    GetPlayerName(i, botname, sizeof(botname));
    if(!strcmp(botname, "MotorradBeifahrer", true))
    {
    SetPlayerSkin(i, 1);
    PutPlayerInVehicle(i, vFahrschulMotorrad, 1);
    printf("TestBefehl: Setze %d auf Fahrzeug %d.", i, vFahrschulMotorrad);
    return 1;
    }
    }
    }
    return 1;
    }
    Sitzt er dann drauf bzw. bekommt den Skin?


    Stimmt die vehicleid? (/dl)

  • Stimmt die vehicleid? (/dl)

    Ja, vehicleid stimmt. Habe dafür ebenfalls ein Testbefehl gemacht, der mir den Vehicleid printet...
    Daran liegt es nicht....
    Hier ein Screen:
    sa-mp-049.png


    Sitzt er dann drauf bzw. bekommt den Skin?

    Nachdem ich den Befehl den du mir als letztes gepostet hast eingebe wird der Skin gesetzt.


    Also ich gebe den 1. Testbefehl ein, dann setze ich mich als Fahrer ins Fahrzeug. Nach paar Sekunden spawnt der Bot vor mir.
    Steige ab, gebe den 2. Testbefehl ( den du zuletzt gepostet hattest ein) und nur der Skin ändert sich...
    Der Bot sitzt aber nicht als Beifahrer...



    ( 1. Testbefehl den Bot connecten lassen )
    sa-mp-047.png


    ( 2. Testbefehl )
    sa-mp-048.png



    Serverlogs:

    Code
    Put 1 in vehicle 274 and seat 1.
    TestBefehl: Setze 1 auf Fahrzeug 274.


    Erst nachdem ich den 2. Testbefehl eingebe bekommt er den Skin... :/

  • Der Bot sitzt aber nicht als Beifahrer...

    Ich habe mal etwas herumgesucht, anscheinend geht das gar nicht.
    http://forum.sa-mp.com/showthread.php?t=462856
    http://forum.sa-mp.com/showthread.php?t=198206
    http://forum.sa-mp.com/showthread.php?t=121468


    Versuche mal in dem Testbefehl die Seat-ID auf 0 zu setzen (Fahrer) und steige von dem Motorrad ab, bevor du den Befehl eingibst.
    Sitzt er dann drauf?

  • Versuche mal in dem Testbefehl die Seat-ID auf 0 zu setzen (Fahrer) und steige von dem Motorrad ab, bevor du den Befehl eingibst.
    Sitzt er dann drauf?

    Ich verliere gerade den überblick ...


    Ich poste nochmal den Aktuellen Code und markiere noch was ich jetzt geändert habe wegen der Seat-ID:



    Code
    new vFahrschulMotorrad;


    Unter OnPlayerSpawn:

    Code
    if(IsPlayerNPC(playerid))
    {
       	new botname[MAX_PLAYER_NAME];
            GetPlayerName(playerid, botname, sizeof(botname));
    	if(!strcmp(botname, "MotorradBeifahrer", true))
    	{
    		SetPlayerSkin(playerid, 50);
    	    PutPlayerInVehicle(playerid, vFahrschulMotorrad, 0); // Seat-ID jetzt auf '0' gesetzt
      	}
    }


    Unter OnPlayerCommandText:


    Unter OnPlayerStateChange:

    Code
    if(newstate == PLAYER_STATE_DRIVER)
    {
        if(TakingLesson[playerid] == 1)
        {
    		vFahrschulMotorrad = GetPlayerVehicleID(playerid);
    		ConnectNPC("MotorradBeifahrer", "[BOT]MotorradBeifahrer");
    	}
    }


    Unter OnVehicleStreamIn:




    So, habe jetzt ja auf Seat-ID auf 0 gesetzt und das passiert InGame:


    ( Befehl /test eingegeben, kurz in das Fahrzeug gesetzt und wieder ausgestiegen )
    sa-mp-050.png


    ( Bot spawnt nach paar Sekunden, ebenfalls nicht als Fahrer.... )
    sa-mp-051.png


    ( Befehl /test3 eingegeben, nur der Skin hat sich geändert aber nur beim eingeben des Befehls.... )
    sa-mp-052.png



    Serverlog:


    Code
    [npc:join] MotorradBeifahrer has joined the server (1:127.0.0.1)
    TestBefehl: Setze 1 auf Fahrzeug 274.
    Put 1 in vehicle 274 and seat 0.

    Habe ich jetzt bei PutPlayerInVehicle das richtig gesetzt?

  • Das passt soweit alles.


    Habe ich jetzt bei PutPlayerInVehicle das richtig gesetzt?

    Ja.



    Eine letzte Möglichkeit fällt mir noch ein, versuch mal, den NPC neu aufzunehmen, als NPC im Fahrzeug und zwar als Fahrer. Sprich:

    • Steige auf das Motorrad
    • Starte die Aufnahme (in Fahrzeug-Aufnahme)
    • Bleibe 30 Sekunden stehen
    • Stoppe die Aufnahme
    • Steige ab.


    Dann versuche es mit dieser Aufnahme (kannst du ja gleich nennen und nur die alte Aufnahme ersetzen).
    Versuche es dann mit dem aktuellen Code, ob er dann als Fahrer da sitzt.

  • gut habe jetzt die Aufnahme neu gemacht ^^
    Komisch hatte vorher schon die Aufnahme gemacht aufjedenfall hat die .rec Datei mehr KB das heißt der kann nicht so schnell abbrechen.
    Jetzt ist aber etwas lustig/komisches, denn der Bot connectet spawnt kurz als Fahrer, nach 1-2 Sekunden ist der weg, dann wieder
    nach 1-2 Sekunden sitzt er und ist dann wieder weg...

  • Wie weg? Wohin wird er gesetzt?


    Versuche mal, während er als Fahrer da sitzt den Befehl zu nutzen, mit dem du ihn auf Seat ID 1 setzt, ob er dann nach hinten gesetzt wird.
    Falls das auch nicht geht, dann denke ich, dass es keine Möglichkeit gibt einen Standard-NPC als Beifahrer zu nutzen, wie es auch in den Threads aus dem englischen Forum besprochen wurde.

  • Wie weg? Wohin wird er gesetzt?

    Also er spawnt wirklich für ne gaanz kurze Zeit.
    ca 1-2 Sekunden ist er weg, hab mal geschaut er ist dann beim Zivispawn von mir und dann wieder aufm Motorrad....


    Versuche mal, während er als Fahrer da sitzt den Befehl zu nutzen, mit dem du ihn auf Seat ID 1 setzt, ob er dann nach hinten gesetzt wird.
    Falls das auch nicht geht, dann denke ich, dass es keine Möglichkeit gibt einen Standard-NPC als Beifahrer zu nutzen, wie es auch in den Threads aus dem englischen Forum besprochen wurde.

    Habe ich gerade gemacht, geht nicht.
    Also geht das leider nicht schade... Naja haben was dazu gelernt :)
    Bleibt wohl die Frage ob das SA:MP Team dies in Zukunft zum Möglichen macht :)


    Eine doofe Frage hätte ich undzwar würde das mit Actors gehen?
    Klar ich bräuchte eine PlayerID aber wenn ich dem ne ID zuweise und das anstelle setze würde das gehen?


    Code
    TestActor				=	CreateActor(Skin, X, Y, Z, A);
    
    
    PutPlayerInVehicle(TestActor, vFahrschulMotorrad, 1); // Eventuell so?

    oder eine Funktion umschreiben mit PutActorInVehicle oder so?
    Wäre soetwas möglich?

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