Bots an bestimmten Orten sprechen 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
  • Ich habe mal eine Frage, ich weiß wie man Bots erstellt aber ich weiß nicht wie ich das machen kann das der Bot auch spricht, aber nicht nach Timer sondern nach Stelle auf der Map.


    Habe mir das so vorgestellt:
    BusBot fährt durch die Stadt, hält am BSN an und es soll eine Nachricht kommen die alle lesen können : Bus nach San Fiero fährt in 2 Minuten vom BSN ab.


    Dann fährt der Bus nach SF und dort soll er dann wieder eine Message senden: Bus nach Los Santos fährt in 2 Minuten vom Bahnhof SF ab.


    Ist sowas machbar?

  • Sowas müsstes du doch wissen schlisslich bietes du ja kleine Scriptaufgaben an (Steht in deiner sig)

  • Och leute was bringt mir solche aussagen?
    Spielt doch keine Rolle was für mich Standart sachen sind.
    Ich würde einfach gerne wissen wie ich sowas mache.
    Es soll auch nur für die Bots sein und nicht für andere User.
    Und kann ich das irgendwie so machen, dass der Bot vor User stehen bleibt?
    Weil die fahren sonst immer alles Kaputt.



    else if (IsPlayerInRangeOfPoint(playerid,4.0,1360.8248,2194.6482,14.2495))//BSN
    {
    SendClientMessagetoAll(playerid,COLOR_LIGHTBLUE, "Der Bus hat den BSN Erreicht.");
    }
    Muss ich da bei IsPlayerInRangeOfPoint(BusBot,4.0 ... oder muss da playerid hin?

  • es muss doch auch geupdatet werden ihr vögel omg wen man nicht s kann naja ihr wisst schon
    du machst ein timer lässt ihn alle 15 sec updaten

    SetTimer("Murat",15000,1);


    so dann zu den public



    forwad Murat();
    public Murat()
    {
    if (IsPlayerInRangeOfPoint(playerid,4.0,1360.8248,2194.6482,14.2495))//BSN
    {
    SendClientMessagetoAll(playerid,COLOR_LIGHTBLUE, "Alles fit Atze?");
    }
    return 1;
    }
    man kann es auch mit playerid machen aber naja den rest solltes du laut deiner sigi können :thumbup:

  • Dan lässte immer hübsch abfragen Ob der Bus (Bot) im Range ist. ansonsten nix senden.


    Bsp:


    public Murat()
    {
    if (IsPlayerInRangeOfPoint(playerid,4.0,1360.8248,2194.6482,14.2495))//ups
    {
    SendClientMessagetoAll(playerid,COLOR_LIGHTBLUE, "Alles fit Atze?");
    }
    else if (IsPlayerInRangeOfPoint(playerid,4.0,1360.8248,2194.6482,14.2495))//bla
    {
    SendClientMessagetoAll(playerid,COLOR_LIGHTBLUE, "Alles fit Atze?");
    }
    else if (IsPlayerInRangeOfPoint(playerid,4.0,1360.8248,2194.6482,14.2495))//blub
    {
    SendClientMessagetoAll(playerid,COLOR_LIGHTBLUE, "Alles fit Atze?");
    }
    return 1;
    }


    Gruss: Sonic

    I didn't hit you. I high fived your face.

  • sonic


    Da du den Parameter playerid in deinem Callback verwendest, musst du ihn auch oben hin schreiben ^^


    Also muss es so lauten:


    public Murat(playerid)
    {
    //bla
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

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

  • Oder mit einer for Schleife. Was aber unnötig erscheint, da man die Botid auch so auslesen kann. Und wenn wa hier schon Klug"ZENSIERT"
    Im forward muss es auch angepasst werden...


    forwad Murat(playerid);


    Gruss: Sonic

    I didn't hit you. I high fived your face.

  • Ich geb dir mal ein paar Tipps. Ich werde dir kein Script vorgeben ;)


    Also
    -Wenn der Spieler/NPC eine bestimmte Taste drückt und bei einer speziellen Position ist wird allen Leuten eine Nachricht geschickt ^^


    Hoffe du kannst was mit anfangen ;)

    Spoiler anzeigen
    10 Beiträge [X]
    50 Beiträge [X]
    100 Beiträge [X]
    150 Beiträge [X]
    200 Beiträge [X]
    250 Beiträge [X]
    300 Beiträge [X]
    350 Beiträge [X]
    400 Beiträge [X]
    450 Beiträge [X]
    500 Beiträge [X]
    550 Beiträge []
    600 Beiträge []
    650 Beiträge []
    700 Beiträge []
    750 Beiträge []

  • Und was bringt das wenn man das ganze per Timer auch machen kann :D


    Gruss: Sonic


    Ich denke das ein Timer mehr Ressourcen frisst / es evtl mehr laggen könnte als wenn man bei OnPlayerKeyStateChange abfragt ob der Spieler beispielsweise die Taste H drückt und ob der Spieler ein NPC ist und gleichzeitig bei einer speziellen Position ist :D


    Aber das ist seine entscheidung ^^

    Spoiler anzeigen
    10 Beiträge [X]
    50 Beiträge [X]
    100 Beiträge [X]
    150 Beiträge [X]
    200 Beiträge [X]
    250 Beiträge [X]
    300 Beiträge [X]
    350 Beiträge [X]
    400 Beiträge [X]
    450 Beiträge [X]
    500 Beiträge [X]
    550 Beiträge []
    600 Beiträge []
    650 Beiträge []
    700 Beiträge []
    750 Beiträge []

  • public Murat()
    {
    if (IsPlayerInRangeOfPoint(playerid,4.0,1360.8248,2194.6482,14.2495))//ups
    {
    SendClientMessagetoAll(playerid,COLOR_LIGHTBLUE, "Alles fit Atze?");
    }
    else if (IsPlayerInRangeOfPoint(playerid,4.0,1360.8248,2194.6482,14.2495))//bla
    {
    SendClientMessagetoAll(playerid,COLOR_LIGHTBLUE, "Alles fit Atze?");
    }
    else if (IsPlayerInRangeOfPoint(playerid,4.0,1360.8248,2194.6482,14.2495))//blub
    {
    SendClientMessagetoAll(playerid,COLOR_LIGHTBLUE, "Alles fit Atze?");
    }
    return 1;
    }


    Gilt das nur für den Bot?


  • wen du das so machst wie sonic dir gezeigt hat ja dan labert der bot immer wen er da und da ankommt habe ich genauso auch drin in mein script ;)

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