(http://www.250kb.de/u/091202/p/09454252.png)
(http://www.250kb.de/u/091202/p/3f56c0b2.png)
Worum geht's?
- Es geht um ein KS, welches ich gerne erbasteln möchte aber momentan Probleme damit habe.
Was brauche ich?
- Eventing-sichere Leute die mir bei Fragen helfen!
Wozu einen neuen Thread dafür öffnen?
- Ich werde sicher einige mehr Fragen haben und um die Hilfe-Threads usw. nicht zu zuspammen, mache ich hier gleich ein thread auf.
Wo brauchst du Hilfe?
- Momentan habe ich Schadensberechnung und "Aktionspunkte" fertig. Was ich bräuchte ist Hilfe beim KI welches recht zufällig gestaltet sein soll. Mein derzeitiges Problem ist die Abfrage des Gegners.
Was ist das für ein KS?
- Es ist ein KS direkt auf der Map und bisher aus Events gestaltet. Man soll eine gewisse Anzahl an Aktionspunkten zur Verfügung haben und diese dann für Schritte sowie Angriffe und Skills einsetzen können. Sind diese aufgebraucht, fängt die Runde des Gegners an.
(http://www.250kb.de/u/091202/p/e408200c.png)
Momentan keines mehr.
(http://www.250kb.de/u/091202/p/6e119b56.png)
Die Leute die mir viel und wirklich Helfen wollen, können mir entweder per PN oder hier im Thread bei Seite stehen.
Für engagierte ist ein Credit-Eintrag oder vllt. eine Gastrolle in dem Spiel drinne, welches sich auf diesem KS aufbaun wird.
Ich hoffe ihr könnt mir helfen und ich danke euch schonmal.MfGiNj
Hay InJ,
Mein derzeitig wichtigstes/größtes Problem ist die Abfrage des Ortes von dem Gegner.
Zu deinem jetzigen Problem, habe ich eine Lösung, entweder du benutzt wie schon im IRC gesagt, die Variante mit den Events, sprich du benutzt 4 Variablen, und setzt 2 immer mit den Koordinaten des Events und 2 mit den Koordinaten des Spielers, und addierst bzw. subtrahierst 1,um rauszubekommen, ob die beiden neben ein ander stehen.
Hierfür kannst du nochmal in meinem etwas älterem Tut, unter Anwendung der Variablen ein kleines Beispiel finden, was auf diese Problematik aufbaut.
*Schleichwerbung* => Link zum Tutorial (http://www.rpgvx.net/index.php/topic,3435.0.html)
Die zweite Möglichkeit ist, die zuerst nicht geklappt hat, aber jetzt wunderbar läuft ist eine kleine Erweiterrung für den Game_Interpreter.. Probier einfach mal das hier aus (Benutzung hat sich etwas verändert, aber zum positiven. :)):
=begin
Benutzung: Um eine ABfrage zu starten, ob das Event neben einem anderem Event oder neben einem SPieler steht,
zu starten, musst du unter Conditional Branch, Script, je nach Fall folgendes eingeben:
Bei Abfrage, ob ein Event neben dem Spieler steht:
nexto_to(event_id des events,true)
Bei Abfrage, ob ein Event neben einem anderem Event steht;
next_to(event_id des ersten events, false , event_id des zweiten events)
=end
class Game_Interpreter
def next_to(event_id1 = nil , player = false , event_id2 = nil)
if player == false
if $game_map.events[event_id1] != nil && $game_map.events[event_id2] != nil
if $game_map.events[event_id1].x == $game_map.events[event_id2].x + 1 && $game_map.events[event_id1].y == $game_map.events[event_id2].y || $game_map.events[event_id1].x == $game_map.events[event_id2].x - 1 && $game_map.events[event_id1].y == $game_map.events[event_id2].y || $game_map.events[event_id1].y == $game_map.events[event_id2].y + 1 && $game_map.events[event_id1].x == $game_map.events[event_id2].x || $game_map.events[event_id1].y == $game_map.events[event_id2].y - 1 && $game_map.events[event_id1].x == $game_map.events[event_id2].x
return true
else
return false
end
end
end
if player == true
if $game_player.x == $game_map.events[event_id1].x + 1 && $game_player.y == $game_map.events[event_id1].y || $game_player.x == $game_map.events[event_id1].x - 1 && $game_player.y == $game_map.events[event_id1].y || $game_player.y == $game_map.events[event_id1].y + 1 && $game_player.x == $game_map.events[event_id1].x || $game_player.y == $game_map.events[event_id1].y - 1 && $game_player.x == $game_map.events[event_id1].x
return true
else
return false
end
end
end
end
D.h so viel wie: Wenn der Gegner neben dem "Helden" steht soll er zufällig eine Aktion ausführen. Je nach Aktionspunkten ihm erlaubt sind.
Dazu kann man auch folgende Idee verwenden:
Erstelle ein Label, in dem eine Variable einen Zufallswert, mit dem Maximalwert, der Anzahl der möglichen Aktionen annehmen kann. Dann wird gegukt/abgefragt, welchen Wert die Variable hat, sobald die Variable einen Wert, der Aktion annimmt, wird abgefragt, ob die Anzahl der Punkte genügt. Falls Ja, so wird die aktion ausgeführt,und das Label beendet, ansonsten wird das Label von neu aufgeruffen. Da du willst, dass der Gegner neben dem Spieler ist, musst du vorher eine der oben genannten Möglichkeiten benutzen, um das Label überhaupt starten zu können.
Als Anmerkung: bei manchen Aktionen wie Angriff etc., kannst du noch vorher mit Variablen die Richtung ermitteln, in die das Event schauen muss, um wirklich den Spieler anzuschauen.
Ich hoffe ich hab mich halbwegs verständlich ausgedrückt.
Falls du weitere Fragen hast, helfe ich gern.
MfG
Deity