Also, wenn du ein Skript basteln willst, dass das ermöglicht, lass mir ncoh die Freiheit alles mit Callscripts selbst regeln zu können, also einzelne Variablenabfragen von Item-, Actor- und den normalen Spiel Variablen, sowie die Fähigkeit diese einzeln auf den anderen Spielstand, und von diesem Spielstand auch etwas auf den anderen, zu kopieren. Ich habs nicht so gern wenn durch ein Script wirklich alles geregelt wird, ich brauch von dem Script nur seine Hauptfunktion, den Rest mach ich dann mit Events, auch dass abfragen nach ID's und so würde ich gerne einzeln mit Callscripts in Events machen (Da ich nicht gut Scripten kann, bin ich so nämlich beim Gestalten des Spiels um einiges flexibler, wenn das Script wirklich nur das nötigste macht, also das, was ich nicht mit normalen Events regeln kann).
Also ich persönlich tendire zu der Item-, Actor-, wasauchimmer-ID, da die möglichkeiten zu schummeln so doch ziemlich reduziert sind, allerdings hätte ich auch gerne die Möglichkeit diese ID jederszeit umtauschen zu können, da dies auch von vorteil sein könnte. Wenn's nicht zu viel Aufwand ist.
PS. Ich habs noch nicht ausprobiert, aber funktioniert dein Save-Party Script eigentlich nur beim Standart Kampf System, oder bei jedem, dass die normalen Monstertruppen benutzt?
PPS. Wie lautet eigentlich der Code, um einer Variable Die ID eines bestimmten Gegners im Kampf zuzuweisen?
PPPS. Gibt es auch eine Möglichkeit im Spiel die Encounter Troop und die Steps Everage auf einer Karte, bis man ebendiese verlässt, zu ändern.
Geändert von OneEyeShadow (09.08.2009 um 20:58 Uhr)
mir ist aufgefallen, dass ich dir noch gar nicht gesagt habe, wie man von ki zu einem menschlichen spieler wechselt :/
mit einem call script
schaltest du auf computer gesteuerte gegner und mit
auf eine vom spieler gesteuerte.
leider hat der maker nen bug, dass call scripts, die auf = false enden oftmals das spiel zum aufhängen bringen.
probier deshalb besser
das soltle wenn möglich direkt vor dem kampf stehen, weil diese einstellung nicht mit gespeichert wird!
außerdem hab ich einen kleinen fehler in meinem script gefunden.
in zeile 430 und 438 muss
[cdoe]if $scene.turn % 2 == 0[/code]
durch
ersetzt werden.
ansonsten kann es zu fehlern bei der zielauswahl kommen.
@PS
das kann man so nicht sagen.
ich habe einige stellen des standart ks neu schreiben müssen. wenn das andere ks nur das standart ks verändert und meine veränderten stellen nur per alias manipuliert oder sie komplett in ruhe lässt, funktioniert es. ansonsten jedoch nicht.
letztendlich würde ich sagen: probieren geht über studieren
@PPS
falls du die id des gegners in der datanbank meinst:
ID durch variablen id un index durch den index des gegners ersetzen.
der gegner, der als erstes einer truppe hinzugefügt wurde, hat den index 0,
der 2. hat den index 1 usw.
@PPPS
$game_map.encounter_step = neuer wert
$game_map.encounter_list = Liste mit IDs
"neuer wert" sollte klar sein
Liste mit IDs wäre zb
[1,4,9]
in diesem fall würde man gegen die erste, vierte oder neunte truppe kämpfen.
du kannst auch per
$game_map.encounter_list.push(ID)
nur eine truppe hinzufügen oder per
$game_map.encounter_list.delete(ID)
eine truppe entfernen.
(Achtung habs nicht getestet, soltle aber funktionieren)
Edit:
Tausch Script:
funktionen:
Tausch.set_file(name oder id)
name muss der Dateiname sein zb "Save1.rxdata" <- Achtung mit "
id muss die nummer des Speichers sein (normalerweise eine zahl von 1-4)
Wählt den Speicher aus, mit dem getauscht werden soll/von dem die informationen gesammelt werden.
Ich empfehle dir diesen Befehl in der Script option eines conditional branch zu verwenden. wenn der speicher nicht existiert, wird der else zeig ausgeführt. da kannste dann zb ne message mit "Speicher nicht vorhanden" oder so reinsetzen
(Edit: else zweig wird ebenfalls ausgeführt, wenn ID des Spiel = ID des gespeicherten Spiels)
Tausch.get_items(start,ende)
setzt auf die variablen start bis (einschließlich) ende die anzahl der items (fängt immer mit dem item der id 1 an, egal welchen wert start hat).
$game_variables[vID] = Tausch.get_item(iID)
weist der variable vID die anzahl der items mit der ID iID zu.
tauscht eigene_Menge items mit der ID eigene_ID gegen andere_Menge items des anderen Speichers mit der ID andere_ID.
diesen Befehl am besten ebenfalls in einem Conditional Branch benutzen, da der else Zweig ausgeführt wird, wenn einer der beiden nicht genügend items hat.
Diese 3 Item funktionen gibt es natürlich noch für waffen unf rüstungen.
Dazu musst du einfach item durch weapon oder armor ersetzen. (bzw items durch weapons oder armors)
Tausch.get_actors(start,ende)
weist den variablen von start bis (einschließlich) ende die id der helden in der party zu.
nettes Bsp:
@>Script: Tausch.get_actors(1,4)
@>Text: Der Speicher hat die Helden \n[\v[1]], \n[\v[2]],
\n[\v[3]] und \n[\v[4]] in der Party
Tausch.actors
gibt die helden in der party des speichers zurück.
mit Tausch.actors[0].name erhältst du zb den Namen des 1. Helden.
was du sonst noch alles mit anstellen kannst (Eigenschaften etc) kannst du ja in der liste ein paar posts weiter oben lesen.
man sollte vielleicht noch sagen, dass veränderungen an den helden nicht gespeichert werden, bis etwas getauscht wird.
das liegt daran, dass diese option nur für das auslesen von daten ist
nochmal Edit:
mähhh -.-
jetzt hab ich doch glatt dieses sicherungssystem mit der ID vergessen.
werds nochmal rein editen...gleich...wenn ichs gescriptet hab ._.
wieder Edit:
so ist drinne.
allerdings konnte ich es nicht mit der ID für jeden gegenstand machen, weil nur gespeichert wird, wie viele items (auch waffen etc) man von welcher sorte hat.
man kann also nur den gesammten stapel eine ID zuweisen. wäre blöd, wenn zb von allen 10 tränken gesagt wird sie seien von einem anderen spielstand, nur weil man einen einzigen durch nen tausch bekommen hat.
(bzw man kann somit die id des eigenen spielstandes bei items löschen - nicht gerade sicher :/)
über $game_party.spiel_id = neue Zahl kannst du deine id zu testzwecken verändern.
--
Es ist ein magisches Liopleurodon =D
Geändert von Shining Advances (10.08.2009 um 13:15 Uhr)
Danke, das Skript funktioniert wirklich gut, aber kannst du nicht auch noch hinzufügen, dass von den Gegnern die HP und SP auch noch sichtbar sind? Denn ich sonst ist der eine Spieler bein einem HotSeat Kampf ziemlich im Nachteil, da er keine Ahnung hat, wie viel HP und SP seine Actors gerade haben.
Oh, und ich hab mal wieder ein paar fragen zu ein paar zeilen Codes, die ich brauche:
1. wie kann ich durch Code die HP/SP eines Actors verändern?
2. kann ich irgendwie per Code die Skills eines Enemies von der Datenbank abfragen und dann in eine Variable speichern?
3. Wie kann ich einem Actor einen Skill per Variable zuweisen?
4. Kann ich irgendwie per Skript die Character Grafik (Ich meine die, die auf der Karte animiert wird) und evtl. auch die andere Grafik eines Actors verändern?
5. Ist es Möglich einen bestimmten Actor eine (besser zwei bzw. drei^^) Variable verändern zu lassen oder ihm einen Skill hinzuzufügen, Parameter, Grafik, States, Klasse und dergleichen zu ändern wenn er bspw. ein bestimmtes Level erreicht oder auch einen Skill ausführt oder irgendeines seiner Parameter einen bestimmten Wert erreicht oder irgendein Switch umgelegt ist oder so, also ich meine irgendwie direkt, so dass das auch mit diesem CopyActor Skrypt mitkopiert werden könnte, und ich kein Commen event auf Parallel Proces zu heben brauche.
PS. Irgendwie funktioniert das mit dem Encounter umändern bei mir nicht so richtig ...
Geändert von OneEyeShadow (10.08.2009 um 15:41 Uhr)
die anzeige unten sollte eigentlich wechseln, sobald der andere spieler am zug ist.
1)
kommt darauf an, ob die die maximalen hp/sp meinst oder die aktuellen:
$game_actors[ID].maxhp = wert
$game_actors[ID].maxsp = wert
$game_actors[ID].hp = wert
$game_actors[ID].sp = wert
2)
gegner besitzen keine skills sondern nur aktionen. deshalb muss man jede aktion abfragen, ob sie einen skill ausführt
skills = []
for action in $data_enemies[ID].actions
if action.kind == 1
skills.push(action.skill_id)
end
end
$game_variables[vID] = skills[nr].to_i
ID -> ID des gegners
vID -> ID der variable
nr -> der wievielte skill des gegners (fängt bei 0 an)
kannst du direkt die lauf grafik eines helden ändern.
($game_player.refresh sorgt dafür, dass die änderung auf der karte sichtbar wird, wenn der held an 1. position in der party ist.)
5)
am einfachsten wäre es bei Game_Actor hinter zeile 468
(also nach
learn_skill(j.skill_id)
end
end
)
folgendes einzufügen:
if self.name == "Helden Name"
if self.eigenschaft == wert
self.eigenschaft = neuer wert
end
end
Bsp:
if self.name == "Arshes"
if self.dex == 100
self.int = 200
end
end
in diesem beispiel würde der held arshes, sobald seine dexterity (heißt das so?) 100 erreicht einen intelligenz wert von 200 erhalten.
diese abfrage geschiht nur bei einem level up (davon ausgehend, dass nur dann sich seine werte verändern)
du kannst danach das selbe einfach nochmal mit anderen helden namen einfügen, falls noch bei anderen eigenschaften verändert werden sollen.
un wegen dem encounter...ich hab aus versehen am ende ein end vergessen.
korrigierte version:
class Game_Map
def encounter_step=(n)
@map.encounter_step = n
end
def encounter_list=(n)
@map.encounter_list = n
end
end
PS:
fahre morgen für 3 tage weg.
falls es also noch was gibt, musst du hoffen, dass jemand anderes hilft oder geduldig sein
Danke für den Code, kannst du mir nochmal erklären, wie das mit dem Encounter gemacht werden muss, bei mir kommt da immer ne Fehlermeldung.
Achja, bei deinem Save_Party Script hab ich nen kleinen Bug entdeckt, wenn man einen normalen Kampf gewinnt setzt es das Level aller Kämpfer wieder auf eins, und anstatt EXP zu bekommen, verlieren sie alle EXP, die sie hatten.
Edit: Kannst du noch das normale Menü so verändern, dass man statt den Map Grafiken die Battler Grafiken der Actors sieht (auch bei den ganzen untermenüs).
Und kannst du das Battle Script so verändern, dass man immer nur mit einer bestimmten (durch eine Variable bestimmt) Anzahl an Actors gleichzeitig kämpfen kann, und sobald einer von diesen Tod ist in ein auswahlfenster wechselt, wo man einen anderen Actor (Mit Battler Graphic) aus der Party auswählen kann der dann weiterkämpft, also mit dem, der KO ist ausgetauscht wird, und dementsprechend auch die Funktionen von Skills und Items, die als Ziel One Ally haben entsprechend funktionieren lässt, und das man dann Game Over ist, wenn alle Party Member KO sind, und wenn du eine Anzeige für die Gegnerischen HP, SP und einen bestimmten Wert reinbaust, die man per Switch ein und ausschalten kann?
Ich weiß, dass ist etwaaaas viel, aber für mein Aktuelles Project brauche ich diese Scripts, ich würde mich wirklich freuen, wenn du die scripten könntest.
Geändert von OneEyeShadow (13.08.2009 um 16:30 Uhr)
ja einfach im callscript sowas schreiben
$game_map.encounter_step = 100 # jett kommen wenig gegner
oder
$game_map.encounter_list = [1,2,3] # jetzt kommen die ersten drei troops
musst nur auf den zeilenumbruch achten,
nicht das sowas passiert:
machst du ein pokemon spiel? (das mim im kampf austauschen kommt mir so bekannt vor^^)
war deine frage, ob das script auch mit anderen ks funktioniert auf das pokemon starterkit bezogen?
wie auch immer....
das mit dem austauschen sollte nicht zu schwer sein. (soll der gegner eigentlich auch austauschen?)
allerdings weiß ich noch nicht so recht, wie ich das mit dem multiplayer ermöglichen soll.
gib mir ein bisschen zeit^^
bezüglich exp
du musst folgendes aus dem kampf script löschen:
def exp
return EXP
end
müsste in zeile 322-324 sein.
danach musst du folgendes am ende hinzufügen:
class Game_Battler
def wexp
return exp
end
end
class Game_Actor
def wexp
return EXP
end
end
und in scene_battle 2 in zeile 149
exp += enemy.exp
durch
exp += enemy.wexp
ersetzen.
bezüglich grafiken:
Window_Base zeile 108-114 mit folgendem ersetzen
machst du ein pokemon spiel? (das mim im kampf austauschen kommt mir so bekannt vor^^)
war deine frage, ob das script auch mit anderen ks funktioniert auf das pokemon starterkit bezogen?
...
Ich mach so was ähnliches, ohne Pokemon, aber mit gewissen anderen Monstern, aber meine Frage auf das Kampfskript war aus reiner neugier.
Zitat
das mit dem austauschen sollte nicht zu schwer sein. (soll der gegner eigentlich auch austauschen?)
...
Ja, sollte er schon, aber am besten wärs, wenn er das nach zufallsprinzip oder über eine festgelegte reienfolge macht, und wenn alle Enemies x und y Koordinaten dann über Variablen bestimmt werden würden und wenn man per Variable die Anzahl der gleichzeitig aktiven Battler (beider seiten) bestimmen könnte ...
Zitat
bezüglich grafiken:
Window_Base zeile 108-114 mit folgendem ersetzen
...
Ah, danke, jetzt habe ich das Problem auch nicht mehr, danke.
PS: Das Spiel, das ich gerade am makern bin kannst du dir, wenn du lust hast, oder neugierig bist, hier mal ansehen, evtl. (eher: ganzbestimmt) findest du dazu ja noch ein paar Verbesserungsvorschläge.
Geändert von OneEyeShadow (14.08.2009 um 14:41 Uhr)