Ergebnis 1 bis 18 von 18

Thema: Suche nach Copy-Actors-Scrypt

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    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)

  2. #2
    mir ist aufgefallen, dass ich dir noch gar nicht gesagt habe, wie man von ki zu einem menschlichen spieler wechselt :/
    mit einem call script
    Code:
    $game_temp.ki = true
    schaltest du auf computer gesteuerte gegner und mit
    Code:
    $game_temp.ki = false
    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
    Code:
    $game_temp.ki = false
    a = "b"
    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
    Code:
    if $scene.turn % 2 == 0 or $game_temp.ki
    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:
    Code:
    $game_variables[ID] = $game_troop.enemies[Index].id
    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
    Code:
    class Game_Map
      def encounter_step=(n)
        @map.encounter_step = n
      end
      def encounter_list=(n)
        @map.encounter_list = n
      end
    $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:

    Code:
    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)

    Code:
    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).

    Code:
    $game_variables[vID] = Tausch.get_item(iID)
    weist der variable vID die anzahl der items mit der ID iID zu.

    Code:
    Tausch.trade_item(eigene_ID,andere_ID,eigene_Menge,andere_Menge)
    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)

    Code:
    Tausch.get_actors(start,ende)
    weist den variablen von start bis (einschließlich) ende die id der helden in der party zu.
    nettes Bsp:
    Code:
    @>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
    Code:
    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.

    Geändert von Shining Advances (10.08.2009 um 13:15 Uhr)

  3. #3
    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)

  4. #4
    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

    Code:
    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)

    3)
    $game_actors[ID].learn_skill($game_variables[vID])


    4)
    Code:
    $game_actors[ID].set_graphic("character grafik",character hue,"battler grafik", battler hue)
    $game_player.refresh
    hue ist diese veränderung der farben. hat nen wert zwischen 0-255
    bei den grafik namen an die " denken!

    wenn du bei Game_Actor vor character_name (zeile 13) das attr_reader durch attr_accessor ersetzt, aknnst du per
    Code:
    $game_actors[ID].character_name = "grafikname"
    $game_player.refresh
    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
    Code:
              learn_skill(j.skill_id)
            end
          end
    )
    folgendes einzufügen:
    Code:
          if self.name == "Helden Name"
            if self.eigenschaft == wert
              self.eigenschaft = neuer wert
            end
          end
    Bsp:
    Code:
          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:
    Code:
    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

  5. #5
    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)

  6. #6
    was denn fürne fehlermeldung....

  7. #7
    Das übliche: "Syntax error occurred while running Script", oder so ähnlich.

    Das liegt warscheinlich daran, dass ich nicht so genau weiß, wie ich das verwenden muss ...

  8. #8
    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:
    Code:
    $game_map.encounter_list = [1,2
    ,3]
    #sondern sowas
    $game_map.encounter_list =
    [1,2,3]
    #oder sowas
    $game_map.encounter_list = [1,2,
    3,4,5,6,7,8,9,12,22,33,
    44]
    das komma darf nie am anfang einer zeile stehen

  9. #9
    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:
    Code:
      def exp
        return EXP
      end
    müsste in zeile 322-324 sein.
    danach musst du folgendes am ende hinzufügen:
    Code:
    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
    Code:
    exp += enemy.exp
    durch
    Code:
    exp += enemy.wexp
    ersetzen.

    bezüglich grafiken:
    Window_Base zeile 108-114 mit folgendem ersetzen
    Code:
      def draw_actor_graphic(actor, x, y)
        bitmap = RPG::Cache.battler(actor.character_name, actor.character_hue)
        cw = bitmap.width
        ch = bitmap.height
        src_rect = Rect.new(0, 0, cw, ch)
        self.contents.blt(x - cw / 4, y - ch / 2, bitmap, src_rect)
      end
    aber bedenke, dass die grafiken jetzt nicht mehr 100% rein passen!

  10. #10
    Hallo Shining Advances, wieder zurück?


    Zitat Zitat
    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 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 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)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •