• Anmelden

Dragoon93

Gesperrter Nutzer

  • »Dragoon93« wurde gesperrt
  • »Dragoon93« ist der Autor dieses Themas

Motto: >>>!!!Triavolution RULEZ!!!<<<

  • Nachricht senden

1

Freitag, 26. Dezember 2008, 23:28

2 MAIN-Scripts miteinander kombinieren (PokemonStarterKit+HüpfendeKokosnuss-MinispielScript)

Guten Abend liebe Community,
Ich hätte gerne zwei MAIN-Scripts miteinander kombiniert.
Ich schätze mal, es ist nicht sehr einfach, deshalb würde ich es als Anfänger in RGSS nie hinbekommen >.<
Das ist einmal das Main-Script aus dem Pokemon Starter Kit und einmal das geniale MinispielScript von unserem "Hüpfende Kokosnuss".
Ich hoffe, mir kann jemand dabei helfen.

Spoiler: MAIN-Script - Pokemon Starterkit

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 =begin 
Graphics.frame_rate=40 
window=Window.new 
window.x=0 
window.y=0 
window.width=200 
window.height=200 
window.windowskin=Bitmap.new("Graphics/Windowskins/Window.png") 
window.openness=255 
loop do 
window.openness=(Graphics.frame_count*2)&0xFF 
Graphics.update 
end 
exit 
=end 
 
def pbCallTitle 
return Scene_Intro.new(['Pic_1'], 'Pic_2') 
end 
 
def mainFunction 
if $DEBUG 
pbCriticalCode { mainFunctionDebug } 
else 
mainFunctionDebug 
end 
return 1 
end 
 
def mainFunctionDebug 
begin 
getCurrentProcess=Win32API.new("kernel32.dll","GetCurrentProcess","","l") 
setPriorityClass=Win32API.new("kernel32.dll","SetPriorityClass",%w(l i),"") 
getPriorityClass=Win32API.new("kernel32.dll","GetPriorityClass",%w(l),"l") 
getCurrentThread=Win32API.new("kernel32.dll","GetCurrentThread","","l") 
setThreadPriority=Win32API.new("kernel32.dll","SetThreadPriority",%w(l i),"") 
setPriorityClass.call(getCurrentProcess.call(),32768) # "Above normal" priority class 
$data_animations = load_data("Data/Animations.rxdata") 
$data_tilesets = load_data("Data/Tilesets.rxdata") 
$data_common_events = load_data("Data/CommonEvents.rxdata") 
$data_system = load_data("Data/System.rxdata") 
$game_system = Game_System.new 
setScreenBorderName("border.png") 
Graphics.update 
Graphics.freeze 
$scene = pbCallTitle 
while $scene != nil 
$scene.main 
end 
Graphics.transition(20) 
rescue Hangup 
pbEmergencySave 
raise 
end 
end 
 
 
loop do 
retval=mainFunction 
if retval==0 # failed 
loop do 
Graphics.update 
end 
elsif retval==1 # ended successfully 
break 
end 
end 

zum Lesen den Text mit der Maus markieren

Spoiler: MAIN-Script MINISPIEL

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#============================================================================== 
# ** Main 
#------------------------------------------------------------------------------ 
# After defining each class, actual processing begins here. 
#============================================================================== 
 
begin 
spielnr = 1 #0 IM HAUPTSPIEL, ANSONSTEN DIE MINISPIEL-ID 
#------- 
# the default fontname 
Font.default_name = "Arial" 
# the defualt fontsize 
Font.default_size = 22 
# Prepare for transition 
Graphics.freeze 
# Manage Variablen setzen 
$manage = Manage.new 
$manage2 = Manage2.new 
#------- 
#Er lädt die manage.rxdata aus dem Hauptordner, falls dies ein Minigame ist 
if FileTest.exist?("../DataZero.rxdata") && spielnr != 0 
$manage = load_data("../DataZero.rxdata") 
end 
#Wenn dieses Spiel das Hauptspiel ist oder es vom Hauptspiel autorisiert wurde 
if $manage[spielnr] == true || spielnr == 0 
# Make scene object (title screen) 
$scene = Scene_Title.new 
else 
p "Du musst das Minispiel aus dem Hauptgame starten!" 
$scene = nil 
end 
 
# Call scene's main method as long as $scene is valid 
while $scene != nil 
$scene.main 
end 
#------- 
#Falls der Spieler das Game regulär verlässt oder das Game sich selbst beendet, 
#wird dafür gesorgt, dass er es nicht ohne das Hauptgame erneut starten kann 
if spielnr != 0 
$manage[spielnr] = false 
save_data($manage, "../DataZero.rxdata") 
end 
#------- 
# Fade out 
Graphics.transition(20) 
#------- 
rescue Errno::ENOENT 
# Supplement Errno::ENOENT exception 
# If unable to open file, display message and end 
filename = $!.message.sub("No such file or directory - ", "") 
print("Unable to find file #{filename}.") 
#------- 
#Falls der Spieler das Game über ALT+F4 oder einen Klick auf das X verlässt, 
#wird dafür gesorgt, dass er es nicht ohne das Hauptgame erneut starten kann 
rescue SystemExit 
if spielnr != 0 
$manage[spielnr] = false 
save_data($manage, "../DataZero.rxdata") 
end 
#------- 
end 
zum Lesen den Text mit der Maus markieren

2

Samstag, 27. Dezember 2008, 11:05

Ich versteh nicht ganz was das erste Main macht, aber versuch es mal so:
Gaaanz unten tust du das erste Main rein, und eins obendrüber fügst du einfach mein Main ein ^^
Könnte klappen, ich weiß es nicht.

Sora

Knappe

Motto: Lest ihr euch alle Mottos durch?

  • Nachricht senden

3

Samstag, 27. Dezember 2008, 11:23

kann man nicht einfach beides addieren und untereinander im selben script schreiben?

Neo-Bahamut

Himmelsgleicher

Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

  • Nachricht senden

4

Samstag, 27. Dezember 2008, 13:13

Nein, in beiden kommt

Quellcode

1
2
3
while $scene != nil
$scene.main
end

vor, daher würde das nach dem Beenden des Spiels das ganze nochmal neu laden... oder so^^
Spoiler: Wurstinator
zum Lesen den Text mit der Maus markieren

Spoiler: Lazer-Wurst
zum Lesen den Text mit der Maus markieren

Spoiler: Hallowurst
zum Lesen den Text mit der Maus markieren

Dragoon93 (online mit der Wii)

unregistriert

5

Sonntag, 28. Dezember 2008, 00:40

Wenn ich das eine Script unter dem anderen einfüge klappt das nich-.-

Dragoon93

Gesperrter Nutzer

  • »Dragoon93« wurde gesperrt
  • »Dragoon93« ist der Autor dieses Themas

Motto: >>>!!!Triavolution RULEZ!!!<<<

  • Nachricht senden

6

Montag, 29. Dezember 2008, 23:44

Kann man diese Scripts miteinander verbinden?

Dragoon93

Gesperrter Nutzer

  • »Dragoon93« wurde gesperrt
  • »Dragoon93« ist der Autor dieses Themas

Motto: >>>!!!Triavolution RULEZ!!!<<<

  • Nachricht senden

7

Freitag, 2. Januar 2009, 18:41

Könnte das nicht jemand irgendwie versuchen? Ich brauche dieses ganz dringend als ein einziges MAIN Script

Dragoon93

Gesperrter Nutzer

  • »Dragoon93« wurde gesperrt
  • »Dragoon93« ist der Autor dieses Themas

Motto: >>>!!!Triavolution RULEZ!!!<<<

  • Nachricht senden

8

Sonntag, 11. Januar 2009, 22:58

push >.<

Evrey

Oberschurke im Ruhestand

Motto: "Satzzeichen sind keine Rudeltiere." - Chesra

  • Nachricht senden

9

Sonntag, 11. Januar 2009, 23:17

Hui o__O" Das kann sehr hässlich werden... Vor allem sollten Main-Scripte eg. so wenig wie möglich machen o__O" Vor allem, da die Struktur im PS-Main ziemlich bescheuert aufgebaut ist... Ich würde mal vermuten, dass es mit diesen beiden (fast) nicht machbar ist, ohne Fehlermeldungen zu erhalten /=
  • :medal: Werbung

    Bild

    Cpp Quellcode

    1
    
    #define TRUE FALSE //Happy debugging suckers
    (Einfach nur wundervoll.)
  • :palette: 1plus3 :cake:

    Bild
  • :fires: Nuuuhminaaah

    Bild
  • :medal: compétences

    mes compétences
    :heart_full: :heart_full: :heart_full: :heart_full: :heart_full: max.
    :ruler-triangle: Maps machen :heart_full: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :media-player: Musik machen :heart_full: :heart-half: :heart-empty: :heart-empty: :heart-empty:
    :cup: Scripts machen :heart_full: :heart_full: :heart_full: :heart_full: :heart-break:
    :paper: Story ausdenken :heart_full: :heart_full: :heart_full: :heart-empty: :heart-empty:
    :cut: Pixeln und so :heart-empty: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :game: Events proggen :heart_full: :heart_full: :heart_full: :heart_full: :heart_full:
    (Dieser Tab ist rein satirisch.)
  • :folder-open: mes projets

    • :addressbook: Silentium
      :book: Name: Silentium
      :rmxp: Maker: Eigenbau (C++, x86-SSE/AVX-Assembly, Ruby/Lua)

      :paper: Story
      :game: NPCs
      :cup: Scripts
      :drill: Ressis
      :ruler-triangle: Maps
      :compile: Gesamt
      (3+4)% 42 69% 0815 -17.438 103.38% ± 6.3mm²

      (Die Tabelle erfüllt lediglich satirische Zwecke.)
    • :compile: Onyx
      Eine in C++ implementierte, modulare, plattformunabhängige, virtuelle Maschine. Die Test-Version ist bereits halb fertig. Ab dann gibt es vielleicht mehr Infos. Sie soll die auf dem ersten Blick LISP-artige und eigens dafür konstruierte Sprache Obsidian ausführen können. Experimentell wird auch ein Lua-Compiler für Onyx gebaut. Ziel ist eine leistungsfähige, virtuelle Maschine für beliebige Scriptsprachen. Theoretisch gesehen müsste man bloß noch einen kompatiblen Compiler schreiben, der Quellcode jener Sprache in Onyx-Assembly, oder direkt in Onyx-Bytecode übersetzt. Ob die jemand nutzen wird, ist eine andere Frage und nur ein sekundäres... nein, eher tertiäres Ziel dieser VM. Primär dient es mir lediglich dazu, mein Verständnis von Hardware, ISA, und Assembly zu vertiefen, sowie eigene Grenzen auszutesten.

      :exclamation: Warnung!
      Das Entwickeln einer virtuellen Maschine oder Programmiersprache (im wahnsinnigsten Fall beides) ist eine höchst komplizierte Tätigkeit, aus der viel Frust und Hirnmatsche hervor gehen. Sollte sich dennoch ein ähnlich wahnsinniger finden, der sowas zusammen schustern will, so lege ich ihm/ihr die folgenden Bücher ans Herz:
      • Compiler - Das Drachenbuch [978-3-8273-7097-6]
        Dieses Buch schlachtet ausführlich und leicht verständlich die Grundlagen bis hoch zu den Experten-Techniken des Compilerbaus aus. Es fängt mit der Automaten-Theorie und formalen Sprachen an, arbeitet sich durch Analysetechniken vor, und landet schließlich bei Techniken wie Optimierung und Register-Zuweisung. Das Buch wiegt 3Kg oder 4Kg. Hab's mal gewogen. Ist also nicht gerade die Lektüre für unterwegs.

      • Computerarchitektur [3-8273-7016-7]
        Hier werden leicht verständlich die wichtigsten Entwicklungen der Rechnerarchitekturen erklärt (Gut, das Buch ist in die Jahre gekommen, aber der Weg zu heute ist ein winziger Schritt, den man sich nach diesem Buch selbst erdenken kann). Hauptbestandteil des Buchs ist eine relativ umfassende Betrachtung der Funktionsweise dreier gänzlich unterschiedlicher, aber dominierender Prozessor-Typen am Beispiel des Pentium II, UltraSPARC II, sowie picoJava. Die meisten Elemente dieses Buchs sind zwar für die Konstruktion einer virtuellen Maschine irrelevant, oder aufgrund der Tatsache, dass die VM Software ist und z.B. Byte-Grenzen hat, sogar zu Leistungseinbußen führen kann, doch ist ein hinreichendes Verständnis dieser Maschinen, mit denen wir arbeiten, äußerst hilfreich für die Überlegungen, wie die VM arbeiten soll.

      Es kann sehr hilfreich und inspirierend sein, den Code quelloffener, virtueller Maschinen anderer Sprachen zu überfliegen. Meine Lieblings-Quelle war und ist stets die VM von Lua. Sie ist schlank, verständlich, in C implementiert, und basiert im Gegensatz zu vielen anderen Scriptsprachen-VMs auf einer Register-Maschine statt einer Stapelmaschine. Es wäre natürlich vorteilhaft, die entsprechende Sprache zu verstehen, in der man auch die eigene VM implementieren will. Weiterhin ist es äußerst vorteilhaft, eine leistungsstarke und bequeme Sprache wie C++ zu beherrschen, um die VM zu implementieren. Und bevor irgendwer auf die Idee kommt: Assembly ist NICHT als dominierende Sprache für den Bau einer VM geeignet. Wer die Frage des "Warum?" nicht beantworten kann, sollte zunächst die gewählte Sprache und Assembly hinreichend verstehen lernen, und es dann erneut mit der Frage versuchen. Es lohnt sich dennoch, Assembly zu lernen. Allein schon, um erneut das Verständnis zu vertiefen, zumal ihr mehr oder weniger gezwungen seid, auch für eure VM eine Assembler-Sprache zu entwickeln (Außer natürlich ihr schreibt eure Test-Programme Bit für Bit ;3).
  • :locale: enfin

    Je ne peux pas parler français.
    C'est tout ce que Goodle et les restes de cours de français.
Signaturstand: 24.07.2013

Dragoon93

Gesperrter Nutzer

  • »Dragoon93« wurde gesperrt
  • »Dragoon93« ist der Autor dieses Themas

Motto: >>>!!!Triavolution RULEZ!!!<<<

  • Nachricht senden

10

Montag, 12. Januar 2009, 20:12

Aber wie soll ich das denn sonst machen`?
Ich habe ja ein Komplettes Hauptspiel und möchte dieses Pokemonspiel als Minispiel eingebaut haben.
Es sollen ja alle funktionen enthalten sein...
Kann man das nicht sonst irgendwie umscripten?

11

Samstag, 17. Januar 2009, 00:09

Ich hab keine Ahnung wie das Pokemon-Dings funktioniert, habs aber trotzem mal versucht, ein Test schlug fehl (mir fehlt ja auch einiges zum Testen, aber nein, du brauchst es nicht zu posten, keine Lust ^^).
Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
=begin 
Graphics.frame_rate=40 
window=Window.new 
window.x=0 
window.y=0 
window.width=200 
window.height=200 
window.windowskin=Bitmap.new("Graphics/Windowskins/Window.png") 
window.openness=255 
loop do 
window.openness=(Graphics.frame_count*2)&0xFF 
Graphics.update 
end 
exit 
=end 
 
def pbCallTitle 
return Scene_Intro.new(['Pic_1'], 'Pic_2') 
end 
 
def mainFunction 
if $DEBUG 
pbCriticalCode { mainFunctionDebug } 
else 
mainFunctionDebug 
end 
return 1 
end 
 
def mainFunctionDebug 
begin 
spielnr = 1 #0 IM HAUPTSPIEL, ANSONSTEN DIE MINISPIEL-ID <------------------------------------
# Manage Variablen setzen 
$manage = Manage.new 
$manage2 = Manage2.new 
#Er lädt die manage.rxdata aus dem Hauptordner, falls dies ein Minigame ist 
if FileTest.exist?("../DataZero.rxdata") && spielnr != 0 
$manage = load_data("../DataZero.rxdata") 
end 
#Wenn dieses Spiel das Hauptspiel ist oder es vom Hauptspiel autorisiert wurde 
if $manage[spielnr] == true || spielnr == 0 
getCurrentProcess=Win32API.new("kernel32.dll","GetCurrentProcess","","l") 
setPriorityClass=Win32API.new("kernel32.dll","SetPriorityClass",%w(l i),"") 
getPriorityClass=Win32API.new("kernel32.dll","GetPriorityClass",%w(l),"l") 
getCurrentThread=Win32API.new("kernel32.dll","GetCurrentThread","","l") 
setThreadPriority=Win32API.new("kernel32.dll","SetThreadPriority",%w(l i),"") 
setPriorityClass.call(getCurrentProcess.call(),32768) # "Above normal" priority class 
$data_animations = load_data("Data/Animations.rxdata") 
$data_tilesets = load_data("Data/Tilesets.rxdata") 
$data_common_events = load_data("Data/CommonEvents.rxdata") 
$data_system = load_data("Data/System.rxdata") 
$game_system = Game_System.new 
setScreenBorderName("border.png") 
Graphics.update 
Graphics.freeze 
$scene = pbCallTitle 
else
p "Du musst das Minispiel aus dem Hauptgame starten!" 
$scene = nil 
end
while $scene != nil 
$scene.main 
end 
#Falls der Spieler das Game regulär verlässt oder das Game sich selbst beendet, 
#wird dafür gesorgt, dass er es nicht ohne das Hauptgame erneut starten kann 
if spielnr != 0 
$manage[spielnr] = false 
save_data($manage, "../DataZero.rxdata") 
end 
Graphics.transition(20) 
rescue Hangup 
pbEmergencySave 
raise 
end 
#Falls der Spieler das Game über ALT+F4 oder einen Klick auf das X verlässt, 
#wird dafür gesorgt, dass er es nicht ohne das Hauptgame erneut starten kann 
rescue SystemExit 
if spielnr != 0 
$manage[spielnr] = false 
save_data($manage, "../DataZero.rxdata") 
end 
end 
 
 
loop do 
retval=mainFunction 
if retval==0 # failed 
loop do 
Graphics.update 
end 
elsif retval==1 # ended successfully 
break 
end 
end
zum Lesen den Text mit der Maus markieren

Probier das mal...
Ach wenn der Skripter sein Skript doch auch schön kommentiert hätte. Leute, kommentiert!

Dragoon93

Gesperrter Nutzer

  • »Dragoon93« wurde gesperrt
  • »Dragoon93« ist der Autor dieses Themas

Motto: >>>!!!Triavolution RULEZ!!!<<<

  • Nachricht senden

12

Samstag, 17. Januar 2009, 11:57

Es funktioniert noch nicht ganz-.- Sobald ich game.exe starte (egal von wo, also normal oder vom Hauptspiel aus)
»Dragoon93« hat folgendes Bild angehängt:
  • Fehler.jpg

13

Samstag, 17. Januar 2009, 12:57

Hast du auch den Manage-Part in deinem Game? Mein Skript besteht ja aus MAIN- und Manage-Part ^^

Dragoon93

Gesperrter Nutzer

  • »Dragoon93« wurde gesperrt
  • »Dragoon93« ist der Autor dieses Themas

Motto: >>>!!!Triavolution RULEZ!!!<<<

  • Nachricht senden

14

Samstag, 17. Januar 2009, 21:59

ok, mit dem Manage Script drin:
Script 'Manage' line 156 NameError occurred
undefined method 'main# for class 'Scene_title'

15

Samstag, 17. Januar 2009, 23:26

Tja das liegt an der Methode "fremde_schalter_akzeptieren".
Anscheinend hat der Pokemon-Title keine Main-Methode.
Tja das Pokemon Starter Kit scheint sehr viel zu verändern. Verwendest du Befehle, um Schalter im Minispiel aus dem Hauptspiel heraus zu ändern? Wenn nein, kann ich das Problem beheben... aber wer weiß, was noch so für Probleme auftreten.
Das Ändern von Schaltern im Hauptspiel aus dem Minispiel heraus wird weiterhin möglich sein ^^

Ich möchte noch mal erwähnen, dass dieses inkompatibilitätsproblem nicht am meinem Manage-Skript liegt, sondern dass es am Pokemon-Starter-Kit liegt, welches offenbar viel verändert.

Dragoon93

Gesperrter Nutzer

  • »Dragoon93« wurde gesperrt
  • »Dragoon93« ist der Autor dieses Themas

Motto: >>>!!!Triavolution RULEZ!!!<<<

  • Nachricht senden

16

Samstag, 17. Januar 2009, 23:31

Es muss nicht unbedingt Schalter "übertragen", wäre aber schon nicht schlecht.
Wenn du mir damit weiterhelfen könntest, wäre das wirklich spitze^^

17

Sonntag, 18. Januar 2009, 00:54

Spoiler: Statt dem aktuellem Manage-Part... weis nicht obs funzt

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
=begin
Haupt- und Minispielverwaltung
von Hüpfende Kokosnuss und Leonheart
v0.9 5th of June 2008
 
  Features:
   - Endlos viele Minispiele, können nur aus Hauptgame gestartet werden
   - So lange Minispiel läuft, gehts im Hauptgame nicht weiter
   - Möglichkeit, aus einem Game den Schalter eines anderen Games umzustellen
 
  Zum Einbau:
  Es sind 2 Skripts. Einmal den Manage-Part und dann noch der Main-Part.
  Schritt-für-Schritt Anleitung:
 
  1  Die Hauptordner der Minispiele müssen im Hauptordner des Haupspiels liegen
     (also auf der selben Ebene, auf der die Game.exe des Hauptspiels liegt).
     Die Datei, um ein Minispiel zu starten, muss immer Game.exe heißen uns sich
     im Hauptordner des Minispiels befinden.
 
  2  Editiert im Manage-Part die Zeilen unter "@minispiel = []". (Zeile 86)
     Geht nach folgedem Muster vor: 
     @minispiel[Nummer des Minispiels] = "Ordnername des Minispiels"
     Ihr könnt endlos viele Minispiele einbauen.
 
  3  Kopiert den Manage-Part in euer Hauptspiel und jedes eurer Minispiele.
     Der Manage-Part ist für jedes der Games gleich.
 
  4  Kopiert den Main-Part und fügt ihn in euer Hauptspiel ein, löscht den
     alten Main-Part eures Hauptspieles. Tragt in Zeile 8 "spielnr = 0" ein. 
     Ohne die ". Das bedeutet, dass dieses Spiel das Hauptgame ist.
     Nun kopiert ihr den Main-Part des Hauptspiels in jedes eurer Minispiele,
     aber bei jedem eurer Minispiele müsst ihr noch in Zeile 8 die Spielnummer
     eintragen. Bei Minispiel 1 tragt ihr also in Zeile 8 des dortigen Main-Parts
     "spielnr = 1" ein.
 
  Verwendung:
 
  Um ein Minispiel zu starten, gebt einfach den Callscript-Befehl
 
  minispiel_aufrufen(Nummer des Minispiels)
 
  ein. Die Minispielnummern habt ihr ja vorher im Manage-Part des Skriptes fest-
  gelegt, und ihr habt natürlich im Main-Part jedes Minispiels nicht vergessen,
  die Nummer des Minispiels einzutragen.
 
  Ferner gibt es 3 Befehle, die dazu dienen, Schalter spieleübergreifend 
  umzustellen.
  Spieleübergreifend?
  Das bedeutet, dass ihr zum Beispiel aus eurem Hauptgame heraus den Schalter 3
  des Minispiels 1 an - oder ausstellen könnt.
  Jetzt zu den 3 Methoden, einen Schalter umzustellen:
  Schalter umstellen:
 
    fremder_schalter_ausstellen(schalter, ziel)
    oder
    fremder_schalter_anstellen(schalter, ziel)
 
  Statt "schalter" müsst ihr die Schalter-ID angeben, statt "ziel" gebt ihr die 
  ID des Spiels an... das Hauptspiel hat die ID 0, die anderen IDs
  habt ihr im Manage-Part festgelegt.
  Achtung! Ein Schalter, der so umgestellt wurde, steht jedesmal, wenn das Spiel 
  gestartet wird, auf der Position, die ihr angegeben habt. Setzt ihr einmal
  einen Schalter auf diese Art, bleibt er immer und in allen Spielständen so.
  Auch wenn ihr das Spiel neu startet.
  Solltet ihr einen Schalter im Spiel ändern, der vorher auf diese weise
  "festgesetzt" wurde, so wird das kurzfristig funktionieren, doch wenn ihr 
  das Spiel dann speichert und neu ladet, hat der Schalter wieder seinen alten
  Wert.
  Eine Festsetzung des Schalters kann nur durch den Befehl, den Schalter
  frei zu setzen, aufgehoben werden. Dieser Befehl ändert den Status des Schalters
  in bereits vorhandenen Spielständen nicht, aber es sorgt dafür, dass das Spiel,
  dem der Schalter gehört, wieder selbst über seinen Schalter bestimmen darf.
  Der Befehl hierzu ist:
 
    fremder_schalter_freisetzen(schalter, ziel)    
 
 
 
Ich hoffe, dieses Skript wird euch nützlich sein. Bitte um Creditseintrag.
Huepfende_Kokosnuss@gmx.de
=end
 
class Interpreter
 
  alias mg_initialize initialize
    def initialize(depth = 0, main = false)
      mg_initialize(depth, main)
      @minispiel = []
      # HIER JETZT DIE MINISPIELE REGISTRIEREN
      @minispiel[1] = "Minispiel1" #Minispiel mit der ID 1 hat den Ordnernamen "Minispiel1"
      @minispiel[2] = "Minispiel2" #Minispiel mit der ID 2 hat den Ordnernamen "Minispiel2"
    end
 
 
  def minispiel_aufrufen(id)
    $manage[id] = true
    save_data($manage, "manage.rxdata")
      system("start #{@minispiel[id]}/Game.exe")
    loop do
      p "Schließe erst das Minispiel!" 
      fremde_schalter_akzeptieren
      $manage = load_data("manage.rxdata")
      break if $manage[id] == false
    end
    $game_map.need_refresh = true
  return true
  end
 
  def fremder_schalter_anstellen(schalter, ziel)
    $manage2[schalter] = 1
    if ziel == 0
      save_data($manage2, "../schalter.rxdata")
    elsif ziel != nil
      save_data($manage2, "#{@minispiel[ziel]}/schalter.rxdata")
    end
    return true
  end
 
  def fremder_schalter_ausstellen(schalter, ziel)
    $manage2[schalter] = 2
    if ziel == 0
      save_data($manage2, "../schalter.rxdata")
    elsif ziel != nil
      save_data($manage2, "#{@minispiel[ziel]}/schalter.rxdata")
    end
    return true
  end
 
  def fremder_schalter_freisetzen(schalter, ziel)
    $manage2[schalter] = 0
    if ziel == 0
      save_data($manage2, "../schalter.rxdata")
    elsif ziel != nil
      save_data($manage2, "#{@minispiel[ziel]}/schalter.rxdata")
    end
    return true
  end
 
  def fremde_schalter_akzeptieren
    if FileTest.exist?("schalter.rxdata")
    $manage2 = load_data("schalter.rxdata")
    for i in 1..5000
      if $manage2[i] == 1
        $game_switches[i] = true
      elsif $manage2[i] == 2
        $game_switches[i] = false
      end
    end
    save_data($manage2,"schalter.rxdata")
    end
  return true
  end
 
end
 
class Manage
  def initialize
    @data = []        
  end
  def [](switch_id)
    if @data[switch_id] != nil
      return @data[switch_id]
    else
      return false
    end
  end
  def []=(switch_id, value)
    @data[switch_id] = value
  end
end
 
class Manage2
  def initialize
    @data = []        
  end
  def [](variable_id)
    if @data[variable_id] != nil
      return @data[variable_id]
    else
      return 0
    end
  end
  def []=(variable_id, value)
      @data[variable_id] = value
  end
end
zum Lesen den Text mit der Maus markieren

Dragoon93

Gesperrter Nutzer

  • »Dragoon93« wurde gesperrt
  • »Dragoon93« ist der Autor dieses Themas

Motto: >>>!!!Triavolution RULEZ!!!<<<

  • Nachricht senden

18

Sonntag, 18. Januar 2009, 01:10

Also das ist ja einfach perfekt!
es funktioniert ohne Probleme^^
Danke Kokosnuss^^
Du erhälst den Orden: "Bester RMXP Scripter" von mir^^ :D

19

Sonntag, 18. Januar 2009, 12:57

Danke ^^"
Ja, wenn du jetzt einen Schalter übertragen willst wird es aber kompliziert...

Also das Übertragen von Schaltern aus dem Minispiel ins Hauptspiel läuft ganz normal ab, auf dem gewohnten Weg über fremder_schalter_anstellen, fremder_schalter_ausstellen und fremder_schalter_freisetzen. (Sprich: Wenn du aus dem Minispiel heraus dem Hauptspiel sagen willst "Er hat das Minispiel durch!", wird das funktionieren).

Aber andersrum geht es nicht mehr so gut. Wenn du das wirklich doch noch brauchst, dann musst du auf der Map einmalig den Eventskript-Befehl "fremde_schalter_akzeptieren" absetzen.
Das ist schon umständlich, aber du hast ja gesagt dass du das warscheinlich eh nicht brauchst ^^
Na dann viel Spaß noch damit.

Ähnliche Themen

Social Bookmarks