Archiv verlassen und diese Seite im Standarddesign anzeigen : KI für Gegner die schießen
Hallo,
Ich wollte mir eine KI für Gegner skripten.
Die Gegner sollten schießen können.
Bolß wollte das dann net so richtig :/
Und da wollte ich mal euch fragen, wie man das jetzt am blödesten anstellt^^
THX
Rash
Phönix Tear
31.03.2004, 14:07
???
Was du genau meinst ist mir jetzt unklar, aber soweit ich weiß gibt es hier einen Skript, der soetwas beinhaltet. (Heißt glaube ich "Pfeil&Bogen Skript".)
Wenn der Gegner da nicht zurückschießt, werd ich es dir wohl so erklären müssen. Dazu muss ich aber erstmal wissen, wann der Gegner schießen soll... (Einfach irgendwann, oder wenn der Held in Schussrichtung steht, oder sogar genau auf der Linie des Gegners, so dass der Pfeil ihn mit hoher Warscheinlichkeit trifft.)
Mach den Gegner platt und achte dabei darauf, wie du vorgegangen bist. Anschließend nimmst du dieses Verhalten (das erste müsste eifnach hinlaufen und ballern sein weil du das ja wohl machst, wenn der Gegner still steht)
anschließend widerhohlst du das Ganze, so lange, bis die KI ausreichend, zum weitermachen zu kompliziert oder zu gut wird
Ja, Dhan, mir ist schon klar wie ich das alles zu machen hab aberbei mir ist das problem mehr da, wann der Gegner Schießen soll...
Dann mach ein Script das ungefähr die Zeit zählt, die du brauchst, um den Charakter in Richtung Feind zu drehen und auf Enter zu drücken (in 0,0s-Schritten), erhöh das ein klein wenig und bau das so in das Feindscript ein
ja, danke...
aber ich habs leider nich so verstanden :rolleyes:
Kannst dus bitte nochmal für nicht-so-begabte wiederholen :rolleyes:
Also du kannst es beispielsweise so machen:
auf der Karte ist eine Art Gasse. In der Gasse steht der Gegner. Der Spieler läuft hoch bis zu einem Punkt, an dem er senkrecht zur Gasse ist. Dort ist ein unsichtbares Event, das einen Switch aktiviert.
Wenn man auf Enter drückt, wird der Switch deaktiviert und Variable X ausgegeben.
Dann gibts es ein ParallelProcess-CommonEvent mit dem Switch als Bedingung. Das macht folgendes:
wait 0,0s
Variable X +1
dann marschierst du zum Eingang der Gasse aufs Event, bringst deine Blickrichtung zum Gegner und drückst ab. Anschließend weißt du ungefähr, wie hoch die Reaktionszeit für sowas ist... oder was brauchst du?
Denk immer dran, der Gegner ist auch eine Person, die erst wahrnehmen muss und dann erst ballert... kein mit dem System verbundenes Wesen!
Oder was genau willst du wissen?
OK, ich habs eigentlich verstanden wass du gesagt hast bloß will ich nicht bei jedem gegner ein event hinpflaster^^
Ich wollte eher, dass wenn der gegner erst wenn er den hero sieht auf die jagt geht.
Ich möchte die gegner eine route ablaufen lassen...
So ähnlich wie bei "der Feind" eben.
Mephisto
01.04.2004, 00:55
also das geht so:
change variable: 0001 - hero x
change variable: 0002 - hero y
change variable: 0003 - gegner x
change variable: 0004 - gegner y
change ariable: 0003 - z.B minus 10
change variable: 0004 - minus 10
fork condition: var 0001 above 0003
change var: 0003 + 20
fork condition: var 0001 below 0003
fork condition: var 0002 above 0004
change var: 0004 + 20
fork condition: var 0002 below 0004
der gegner hat dich gesehän
end case
end case
end case
end case
bei diesem code ist das sichtfeld des gegners 20 x 20 um das gegner evbent
Danke Mephisto, aber irgendwie funzt das nicht so:
Es ist jetzt so wie wenn der gegner eine wand vor sich herschiebt die aber igendwie viel zu weit weg ist. und die aktion "du wurdest entdeckt" wird bloß ausgeführt wenn man in diese wand läuft.
Zwischen dieser wand und dem gegner wird nichts ausgeführt...
Frägelschö
01.04.2004, 22:03
Das kann eigentlich nur sein, wenn du in den Variablenvergleichen statt above und below same eingestellt hast.
nene mein jung, ich habs MIT below und abov gemacht...
Warum schreibt denn keiner?
Kann denn niemand helfen :confused:
sry 4 doppelpost :/
Hallo?
gibts denn hier niemand der sich vielleicht meiner wenigkeit annehmen würde?:\
PLZ!!!!!!!!
Ich komm absolut net weiter *heul*
PS: Sry, sry, sry 4 tripple post :/
so machst du dich bestimmt nich beliebt.. -.-''
Einfach nur geduldig sein...
Das is das erste was mein beim RPG-Maker haben sollte (hab ich seit meinem KS gelernt -.-'')
sven-seoman
09.04.2004, 22:34
@Rash the_real_Kamui hat recht du solltest warten und lösch die anderen Posts doch einfach weg! Oder förchtest du um deine Beiträge?
Abwarten und Tee trinken...
Jetzt ist eh alles egal weil:
RObin Hood helden in strumpfhosen läuft
:D :D :D :D :D :D
@ sven & kamui:
Schaut euch doch mal die Daten der Posts an... :rolleyes:
Außerdem ist das das erste mal, dass ich sowas mache.
Zudem war der Thread bei beiden Posts auf die 2. seite gerutscht und die Mods finden es OK wenn man 1-2 Tage später, wenn der Thread weit unten ist, den Thread wieder hoch zu posten.;)
Und wenn ich nicht so verzweifelt mit diesem Problem wäre, würde ich noch länger warten...
c ya Rash
FabiF.de_renamed
11.04.2004, 04:01
He Rash..... Ich weiß ja net was du gemacht hast!!!!!!!!!!1
Bei mir hat der Code von *Mephisto* funktioniert......
Danke Mephisto..... kann ich gut gebrauchen..... ;-)
MFG FabiF.de
FabiF.de_renamed
11.04.2004, 04:14
Ach übrigens.....
nach dem Code von Mephisto follow Hero kommt.. und er folgt dem Held... wie mach ich wenn sie in einer Liniestehen das der Gegner auf den held schießet???????
Please Help me!!!!
MFG FabiF.de
Damit der Gegner schießt muss man seine Koordinaten erst mal in zwei
Variabeln speichern.
Und dann "Gegner x - Hero x-Coordinate"
Und "Gegner y -Hero y-Coordinate"
Dann eine Fork ob Gegner x =0 ist.
in diese Fork noch eine Fork mit Else Case
ob Gegner y 0 above ist.
Da rein dann Schuss nach unten.
In die Else case noch eine Fork die abfragt
ob Gegner y 0 below ist
Da rein Schuss nach oben.
Nach dem End Case der letzten Fork
noch eine Fork die abfragt ob Gegner y =0
ist. In diese Fork kommt eine Fork mit Else Case ob
Gegner x 0 above ist.
Da rein Schuss nach rechts.
Ins Else Case noch 'ne Fork die abfragt ob
Gegner x 0 below ist.
da rein Schuss nach links.
FabiF.de_renamed
11.04.2004, 17:28
Ähmmm.......... Tiny das kapier ich nicht....Das funtzt nicht so wie ich will......
Kannst du das nochmal so schreiben wie es im RPG-Maker stehen würde.
Bitte.......
So wie Mephisto den Code
BITTEEEEEE............
MFG FabiF.de
<>Cange Var: Var[0001: Gegner x](Set)-Gegner's X Pos.
<>Change Var: Var[0002: Gegner y](Set)-Gegner's Y Pos.
<>Change Var: Var[0001: Gegner x](-)-Hero's X Pos.
<>Change Var: Var[0002: Gegner y](-)-Hero's Y Pos.
Das kommt zuerst
und Dann:
<>If Var(0001: Gegner x)0
<>If Var(0002: Gegner y)0(>=)
<>Hier kommt "Schuss nach unten"!
<>
:Else Case
<>If Var(0002: Gegner y)0(<=)
<>Hier kommt "Schuss nach oben"!
<>
:End Case
<>
:End Case
<>
Jetzt dasselbe noch mal mit vertauschten Variabeln
(nur den zweiten Teil).
Das ist jetzt kein Natürlicher Gegner aber er schießt
wenn du mit ihm auf einer in einer Linie bist in deine richtung.
Tiny
FabiF.de_renamed
12.04.2004, 01:41
Das Funktioniert trotzdem nicht so wie ich will.... ich hab ne Textdatei gemcht obs down left up oder right. is.... es kommt aber nur Dow und left... egel ob ich bei left rechtsstehe oder bei down oben...
ich muss irgendwas falsch gemacht haben.... is dieser code richtig... also das veränderte 2te teil???
Code:
<>If Var(0001: Gegner y)0
<>If Var(0002: Gegner x)0(>=)
<>Hier kommt "Schuss nach links/rechts"!
<>
:Else Case
<>If Var(0002: Gegner x)0(>=)
<>Hier kommt "Schuss nach links/rechts"!
<>
:End Case
<>
:End Case
<>
Mephisto
12.04.2004, 02:03
change variable: 0001 - gegner x
change variable: 0002 - gegner y
change variable: 0003 - held x
Change variable: 0004 - held y
Fork condition: Var 0001 same 0003
Fork condition: var 0002 above 0004
schuss nach oben
else case
schuss nach unten
end case
else case
fork condition: var 0002 same 0004
fork condition: var 0001 above 0003
schuss nach links
else case
schuss nach rechts
end case
end case
und das ganze codest du in ein event, wo step toward hero eingestellt iss ^_^
FabiF.de_renamed
12.04.2004, 02:12
Cool Mephisto...... THX Funtz.... THX du erscheinst in den credits...
Fals es mal rauskommen sollte....
TTTHHHHXXXXX
MFG FabiF.de
Ich meine Version auch mit "Show Message":
Links,Rechts,Unten,Oben gemacht und bei mir klappt es so.
ich muss irgendwas falsch gemacht haben.... is dieser code richtig... also das veränderte 2te teil???
Ich weiß nicht ob du dich vertippt
hast aber ich hab den Fehler:
Du hast 2 mal eine Fork
die abfragt ob "Gegner x" 0 above ist [If Var(0001: Gegner x)0(>=)]
aber bei der zweiten muss "below" hin
[If Var(0001: Gegner x)0(<=)]
(Ich vermute du hast das dann auch bei den andersrum vertauschten
Variabeln...)
EDIT: Ich seh grad das ich das falsch gemacht hab
Tiny§doof ...*umänder*
FabiF.de_renamed
12.04.2004, 02:26
Mephisto noch eine frage... da wo steht schuss Z.B. runter und ich mach set event plaze und es an die stelle vom gegner teleportir und dann in die entsprechende richtung beweg. macht er manchmal ne kurve dann schießt das hoch und dann auf einmal rechts.... wie kann ich das beheben????
MFG FabiF.de
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.