Bot soll auf mich zielen

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
  • Hey,


    ich habe es nun soweit geschafft einen Bot zu erstellen, der mir hinterherläuft und ab Distance 5.0 anfängt auf mich zu schießen.
    Aber der schießt halt nur in die Richtung, die er läuft.. Auf meine Position X,Y,Z, die sich alle 0,2 Sekunden aktualisiert per Timer.
    Doch er schießt immer leicht daneben. kA wieso :/
    Weiß einer wie ich diese Code verbessern kann?
    Gearbeitet wird mit : RNPC


    COMMAND:cbot(playerid,params[])
    {
    new Name[64];
    if(sscanf(params,"s",Name)) return Fehler(playerid,"[Benutze]: /cbot [Name]");
    npc = ConnectRNPC(Name);
    SetTimerEx("AttackerBot",200,true,"ii",npc,playerid);
    return 1;
    }
    /////////////////////////// COMMANDS /////////////////////////////


    forward AttackerBot(npcid, targetid);
    public AttackerBot(npcid, targetid)
    {
    new Float:x, Float:y, Float:z;

    GetPlayerPos(targetid, x, y, z);
    MoveRNPC(npcid, x, y, z, 0.006);
    if(IsPlayerInRangeOfPoint(npc, 5, x, y, z))
    {
    RNPC_SetWeaponID(30);
    RNPC_SetKeys(128 + 4);
    }
    return 1;
    }

    Einmal editiert, zuletzt von Sh12 ()

  • Benutz doch die normalen NPC funktionen von samp um den RNPC auszurichten. Es sollte gehen da das RNPC plugin kein eigenes NPCsystem enthält es erweiter nur
    die funktionsmöglichkeit der NPCs von samp. Jedoch brauchst du eine berechnung um den rotation des npcs zu bekommen damit er
    zum spieler steht. Da musst die position vom npc ermitteln und die des spielers und daraus die rotation den winkel errechnen.
    Trigonomie ist dein freund :D.

  • Benutz doch die normalen NPC funktionen von samp um den RNPC auszurichten. Es sollte gehen da das RNPC plugin kein eigenes NPCsystem enthält es erweiter nur
    die funktionsmöglichkeit der NPCs von samp. Jedoch brauchst du eine berechnung um den rotation des npcs zu bekommen damit er
    zum spieler steht. Da musst die position vom npc ermitteln und die des spielers und daraus die rotation den winkel errechnen.
    Trigonomie ist dein freund :D.

    Welche Funktionen von samp soll ich denn nutzen? :cursing:


    Für Trigonometrie und nicht Trigonomie *hust* braucht man aber 3 Punkte, wie der Name Trigono schon sagt (gr. für "Dreieck")..
    Aber ich habe nur 2..


    Die Position (Bot)
    Die Position (Spieler)


    Wie soll man da einen Winkel rausrechnen? ;)


    //EDIT:


    Ich dachte erst es könnte so möglich sein, aber man kann ja nicht die Koordinaten von "Norden" bekommen ^^


    Einmal editiert, zuletzt von Sh12 ()


  • Ich hoffe du konntest dein Selbstwertgefühl mit meiner korrektur des wortes Trigonometrie pushen.
    aber zurück zum Thema da gibt es auch so nette rechtwinklichen Dreiecke die man sich her leiten kann.



  • Verstehe ich jetzt nicht so ganz :X


    Was sollen die 200/90 und 120/20 darstellen?
    Und wie kommst du auch 200 und 60? :(


    pass mal auf ich weiß das erste bild war falsch gebe ich auch zu falsch beschriftet.


    Also nehmen wir an das sind koordinaten so kannst du mit der x und y koordinate die zwei anderen punkte berechnen
    und natürlich auch die hypotenuse also die seite c mit GetPlayerDistanceFromPoint.


    //edit siehe link
    die funktion
    http://forum.sa-mp.de/san-andr…eschnipsel-41#post1324998

    Einmal editiert, zuletzt von IPrototypeI ()

  • Also jetzt zielt er schon etwas besser, aber wenn ich zum Beispiel still stehe, schießt er immernoch leicht daneben :/


    Mein Code sieht so auf, für seine "Aktion"


    forward AttackerBot(npcid, targetid);
    public AttackerBot(npcid, targetid)
    {
    new Float:x, Float:y, Float:z;

    GetPlayerPos(targetid, x, y, z);
    MoveRNPC(npcid, x, y, z, 0.006);
    if(IsPlayerInRangeOfPoint(npc, 5, x, y, z))
    {
    SetPlayerFacingAngleToPoint(npcid, x, y);
    RNPC_SetWeaponID(30);
    RNPC_SetKeys(128 + 4);
    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Nice idee, wäre zu geil wenn es polizisten könnten zB das sie mit einem Bot streife fahren und dann per befehlt /attack [id] den gegner angreifen würden.. :)


    Ja dafür will ich es auch, wenn Police online ist und keine User, dass es zB virtuellen Bankrob gibt, aber
    es gibt ja nurnoch das Problem mit dem zielen :S Der Rest wäre nicht so schwer..

  • Ich habe es jetzt so und es ist alles wie vorher ://


    forward AttackerBot(npcid, targetid);
    public AttackerBot(npcid, targetid)
    {
    new Float:x, Float:y, Float:z;


    GetPlayerPos(targetid, x, y, z);
    MoveRNPC(npcid, x, y, z, 0.006);
    if(IsPlayerInRangeOfPoint(npc, 100, x, y, z))
    {
    RNPC_SetAngleQuats(0.0, 80.0, 0.0); ////////////////////////////
    RNPC_SetWeaponID(30);
    RNPC_SetKeys(128 + 4);
    }
    return 1;
    }