|›› Bot auf Befehl (oder ähnliches) erst starten / Bot spawnen 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
  • Das würde ich au ma gerne wissen :)


    Also eig is das nicht möglich ^^ weil man bei OnGameModeInit() ConnectNPC() einfügen muss, un dann muss der Bot connecten :D


    Aber evtl kann man das iwi mit nem Plugin oder so machen.... :D kp aber eig ist das so gut wie unmöglich ;)

  • native StartRecordingPlayback(playbacktype, recordname[]);
    native StopRecordingPlayback();
    native PauseRecordingPlayback();
    native ResumeRecordingPlayback();
    Die Funktionen werden aber nicht im gamemode, sondern im npcmode script gesteuert.
    Guck dir einfach mal die scriptfiles/beispiele im server/npcmodes/ ordner an.


    Um befehle zu uebergeben kann man unter Umstaenden das ganze so gestalten:
    gamemode/filterscript welches entsprechende kommandos verarbeitet: SendPlayerMessageToPlayer(playerID_bot, ...); bei bestimmten bot command, z.B. '/taxi'
    und im file des bots: OnClientMessage(color, text[]); mit dem call ueberpruefen, ob 'text' die vom gamemode/filterscript gesendete Nachricht ist und entsprechnde Start/Stop-Recording Befehle benutzen.

    Einmal editiert, zuletzt von SBIKA ()

  • Ja, dass is ja klar, aber kann der Bot auch einfach so eine Strecke abfahren ohne sie voher abgefahren zu haben ?


    iwi wenn man die Positionen definiert dann ne Abfrage macht un dann den Bot dahin schickt, geht das evtl :D

  • Theoretisch müsste ich also die Scriptfiles im NPCMODE Ordner bearbeiten?
    -> Doppelpost: Ich möchte das der Bot erst dann Spawnt wenn ich in der Nähe bin oder den Command eingebe. Also mit spawnen = Strecke Abfahren beginnt. Also REC abspielen sozusagen.

  • Ich möchte das der Bot erst dann Spawnt wenn ich in der Nähe bin oder den Command eingebe. Also mit spawnen = Strecke Abfahren beginnt. Also REC abspielen sozusagen.


    Dann guck dir mal npctest.pwn an. Dort ueberprueft der bot mit einem Timer, ob ein Spieler in der Naehe ist. Wenn das der Fall ist kannst du eine Variable setzen, dass der Bot in benutzung ist und wenn er es nicht ist kannst du das RecordFile abspielen lassen.
    Wenn du mehrere Bots gleichzeitig fuer einen und den selben Task verwenden moechtest (also wenn bot1 in benutzung, dann soll bot2 einspringen) waere es aber zu empfehlen die Distanz mit dem Server-Script zu ueberpruefen und im Server-Script eine occupied variable zu haben. Dann die befehlsgebung, wie bereits beschrieben.

  • Bekomme ERRORs weil ja kein playerid etc. definiert ist. Du hättest kein Bspw. Parat?


    \npcmodes\Busnoob.pwn(11) : error 017: undefined symbol "IsPlayerAdmin"
    \npcmodes\Busnoob.pwn(13) : error 017: undefined symbol "playerid"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.


    #include "a_npc"//Baut die Include "a_npc" ein
    #include "a_samp"
    #define RECORDING "Busnoob"// BulletLS gegen euren Aufnahmenamen ersetzen!


    main()
    {
    }


    public OnRecordingPlaybackEnd()
    {
    if(IsPlayerAdmin)
    {
    if(IsPlayerInRangeOfPoint(playerid, 125, 2128.0864,-1135.3912,25.5855)
    {
    StartRecordingPlayback(1, RECORDING);//1 = Aufnahmetyp - Fahrzeug, Recording = Der oben definierte Aufnahmename
    }
    }
    }


    public OnNPCEnterVehicle(vehicleid, seatid)
    {
    StartRecordingPlayback(1, RECORDING);//1 = Aufnahmetyp - Fahrzeug, Recording = Der oben definierte Aufnahmename
    }
    public OnNPCExitVehicle()
    {
    StopRecordingPlayback();
    }

  • #include "a_npc"//Baut die Include "a_npc" ein
    #include "a_samp"
    #define RECORDING "Busnoob"// BulletLS gegen euren Aufnahmenamen ersetzen!


    main()
    {
    }


    public OnRecordingPlaybackEnd()
    { for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerAdmin(i))
    {
    if(IsPlayerInRangeOfPoint(i, 125, 2128.0864,-1135.3912,25.5855)
    {
    StartRecordingPlayback(1, RECORDING);//1 = Aufnahmetyp - Fahrzeug, Recording = Der oben definierte Aufnahmename
    }
    } }return 1;
    }


    public OnNPCEnterVehicle(vehicleid, seatid)
    {
    StartRecordingPlayback(1, RECORDING);//1 = Aufnahmetyp - Fahrzeug, Recording = Der oben definierte Aufnahmename
    }
    public OnNPCExitVehicle()
    {
    StopRecordingPlayback();
    }




    machs ma so ;)



    mfg. :thumbup:

  • NPCs sind in SA-MP normale Clients. Auf die Script variablen anderer Scripts koennen sie nicht einfach so zugreifen. Nur mit hilfe der Funktionen, die in a_npc.inc definiert sind. Daher ist es vermutlich auch nicht moeglich IsPlayerAdmin() zu verwenden.
    Ausserdem versuchst du IsPlayerAdmin als Variable und nicht als funktion zu nutzen und woher nimmst du die playerId? OnRecordingPlaybackEnd hat keine playerId die uebergeben wird.


    Edit:
    Korrektur bezueglich OnClientMessage - Funktioniert nicht mit chatMessages, wie ich annahm, sondern nur mit ServerMessages - also nicht SendPlayerMessageToPlayer, sondern SendClientMessage verwenden, um dem NPC Nachrichten zu uebermitteln.
    Es gibt aber auch noch den Callback OnPlayerText fuer NPCs. Damit kann man auch Nachrichten von Spielern (Chat) verarbeiten.


    http://wiki.sa-mp.com/wiki/NPC:OnClientMessage
    http://wiki.sa-mp.com/wiki/NPC:OnPlayerText

    Einmal editiert, zuletzt von SBIKA ()