2 registered members (AndrewAMD, ozgur),
1,415
guests, and 7
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Random Panel
#433824
12/07/13 16:06
12/07/13 16:06
|
Joined: Jan 2004
Posts: 76 Germany
eq
OP
Junior Member
|
OP
Junior Member
Joined: Jan 2004
Posts: 76
Germany
|
Hi, ich versuche nun schon seit Tagen, in lite c ein Random-Script zu programmieren. Ich hab die Foren und das AUM durchforstet und nun die verschiedensten Varianten ausprobiert. Am Ende habe ich IMMER das Problem, dass immer nur dasselbe erste Panel angezeigt wird. (Ich möchte, zur Erklärung, als Intro und während das Level lädt, eines aus zehn Panels zufällig auswählen und anzeigen) Ich habe nun als eine Variante hier zum Beispiel ein modifiziertes AUM-Scrpt (dort kann man aus verschiedenen Sounds zufällig einen auswählen) genommen:
sound_id = integer(random(5));
switch (sound_id)
{
case 0:
set (random01, SHOW);
break;
case 1:
set (random01, SHOW);
break;
case 2:
set (random01, SHOW);
break;
case 3:
set (random01, SHOW);
break;
case 4:
set (random01, SHOW);
break;
}
wait (1);
}
so wie ich das 'verstehe', gibt random(5) eine Zahl zwischen 0 und 4 zurück, und "integer" macht daraus eine ganze Zahl. Das Switch schaltet dann auf den Wert. Leider wird bei mir IMMER nur das erste Panel angezeigt. Nun habe ich im Forum gelesen, dass man unbedingt zuvor irgendwo in der Nain ein "random_seed(0);" aufrufen müsste. Hab ich ausprobiert - aber es wird einfach immer nur das erste Panel angezeigt. übrigens: Auch wenn ich das ganze mit
if (sound_id == 1) set (random01, SHOW);
usw
versuche, wird mir immer nur das allererste Panel angezeigt. Sfz. Und ich weiss nun wirklich nicht mehr weiter, - obwohl die Scriptbeispiele ja aus dem AUM sind. Würde mich über Hilfe, am besten vllt sogar in Form eines Snippets oder Scripts sehr freuen (das Problem kostet mich grad wirklich richtig viel Zeit...) Grüße
“It's not about what it is, it's about what it can become.”
(Dr. Seuss, The Lorax)
|
|
|
Re: Random Panel
[Re: Ch40zzC0d3r]
#433826
12/07/13 16:27
12/07/13 16:27
|
Joined: Jan 2004
Posts: 76 Germany
eq
OP
Junior Member
|
OP
Junior Member
Joined: Jan 2004
Posts: 76
Germany
|
ups, sry, nene ich hab das nur fürs forum neu rüberkopiert, - daran liegt es nicht. das stimmte zuvor schon.
“It's not about what it is, it's about what it can become.”
(Dr. Seuss, The Lorax)
|
|
|
Re: Random Panel
[Re: eq]
#433827
12/07/13 16:33
12/07/13 16:33
|
Joined: Jan 2004
Posts: 76 Germany
eq
OP
Junior Member
|
OP
Junior Member
Joined: Jan 2004
Posts: 76
Germany
|
sound_id = integer(random(5));
switch (sound_id)
{
case 0:
set (random01, SHOW);
break;
case 1:
set (random02, SHOW);
break;
case 2:
set (random03, SHOW);
break;
case 3:
set (random04, SHOW);
break;
case 4:
set (random06, SHOW);
break;
}
wait (1);
}
- immer nur das erste panel. Ich hab auch schon versucht, mit 'reset' jeweils die anderen Panels auszuschalten, da passieren dann ganz komsiche sachen - also die Panels ändern sich wie in einer schnellen Slideshow.
“It's not about what it is, it's about what it can become.”
(Dr. Seuss, The Lorax)
|
|
|
Re: Random Panel
[Re: Ch40zzC0d3r]
#433856
12/07/13 23:46
12/07/13 23:46
|
Joined: Jan 2002
Posts: 4,225 Germany / Essen
Uhrwerk
Expert
|
Expert
Joined: Jan 2002
Posts: 4,225
Germany / Essen
|
Vielleicht mal den ganzen Code posten? Ist das in einer Schleife? Wie initialisierst Du die Panels?
Always learn from history, to be sure you make the same mistakes again...
|
|
|
Re: Random Panel
[Re: Uhrwerk]
#433880
12/08/13 10:35
12/08/13 10:35
|
Joined: Jan 2004
Posts: 76 Germany
eq
OP
Junior Member
|
OP
Junior Member
Joined: Jan 2004
Posts: 76
Germany
|
///////////////////////////////
#include <acknex.h>
#include <default.c>
#include <mtlFX.c>
///////////////////////////////
random_seed(0);
BMAP* arrowNull = "arrowNull.tga";
BMAP* IntroBlack = "panel_black.bmp";
BMAP* IntroBfSeMa = "panel_intro_01_bfsema.bmp";
BMAP* Rand01 = "PanelArtticketP01.bmp";
BMAP* Rand02 = "PanelArtticketP02.bmp";
BMAP* Rand03 = "PanelArtticketP03.bmp";
BMAP* Rand04 = "PanelArtticketP04.bmp";
BMAP* Rand05 = "PanelArtticketP05.bmp";
BMAP* Rand06 = "PanelArtticketP06.bmp";
BMAP* Rand07 = "PanelArtticketP07.bmp";
BMAP* Rand08 = "PanelArtticketP08.bmp";
BMAP* Rand09 = "PanelArtticketP09.bmp";
BMAP* Rand10 = "PanelArtticketP10.bmp";
PANEL* black ={pos_x = 0;pos_y = 0;layer = 12;bmap = IntroBlack;alpha = 100;}
PANEL* bfsema ={pos_x = 0;pos_y = 0;layer = 11;bmap = IntroBfSEMa;alpha = 100;}
PANEL* random01 ={pos_x = 0;pos_y = 0;layer = 10;bmap = Rand01;alpha = 100;}
PANEL* random02 ={pos_x = 0;pos_y = 0;layer = 10;bmap = Rand02;alpha = 100;}
PANEL* random03 ={pos_x = 0;pos_y = 0;layer = 10;bmap = Rand03;alpha = 100;}
PANEL* random04 ={pos_x = 0;pos_y = 0;layer = 10;bmap = Rand04;alpha = 100;}
PANEL* random05 ={pos_x = 0;pos_y = 0;layer = 10;bmap = Rand05;alpha = 100;}
PANEL* random06 ={pos_x = 0;pos_y = 0;layer = 10;bmap = Rand06;alpha = 100;}
PANEL* random07 ={pos_x = 0;pos_y = 0;layer = 10;bmap = Rand07;alpha = 100;}
PANEL* random08 ={pos_x = 0;pos_y = 0;layer = 10;bmap = Rand08;alpha = 100;}
PANEL* random09 ={pos_x = 0;pos_y = 0;layer = 10;bmap = Rand09;alpha = 100;}
PANEL* random10 ={pos_x = 0;pos_y = 0;layer = 10;bmap = Rand10;alpha = 100;}
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////M A I N //////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
var random_value;
var track_number;
var track_handle;
var soundhandle, sound_id;
function main()
{
/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////Mouse/////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
mouse_mode = 1;
mouse_map = arrowNull;
///////////////////////////////////////Screen///////////////////////////////
screen_size.x = 1024; screen_size.y = 600;
wait(1);
set (black, SHOW);set(black, TRANSLUCENT);////////black ON//////////////////////////////
set (bfsema, SHOW);set(bfsema, TRANSLUCENT);
//////////////////////////////////////////////////black off/////////////////////////////
while(black.alpha > 0){ black.alpha -= 5;wait(1);}
reset(black, SHOW);reset(black, TRANSLUCENT);
wait(-2);
//////////////////////////////////////////////////Panel BfSeMa
while(bfsema.alpha > 0){bfsema.alpha -= 2;wait(1);}
reset(bfsema, SHOW);reset(bfsema, TRANSLUCENT);
wait(-2);
sound_id = integer(random(5));
switch (sound_id)
{
case 0:
set (random01, SHOW);
break;
case 1:
set (random02, SHOW);
break;
case 2:
set (random03, SHOW);
break;
case 3:
set (random04, SHOW);
break;
case 4:
set (random06, SHOW);
break;
}
wait (1);
}
Das ist der ganze Testcode. (Er läuft, zeigt aber eben immer nur Panel 01 an) Hinweis: Ich hab auch schon versucht, den Random-Teil in eine extra Funktion zu schreiben und in der main zu starten. Klappte auch nicht. Das mit den random-Bitmaps werd ich mal als ncähstes ausprobieren - Vielen Danke für den Vorschlag. Grundsätzlich interessiert mich aber schon auch, das Problem zu verstehen. Zum einen weil der Code ja aus dem AUM ist, zum anderen weil es hier offensichtlich im Forum darüber schon länger Diskussionen gibt. Grüße erstmal. Merci.
“It's not about what it is, it's about what it can become.”
(Dr. Seuss, The Lorax)
|
|
|
Re: Random Panel
[Re: Ch40zzC0d3r]
#433885
12/08/13 12:08
12/08/13 12:08
|
Joined: Jan 2002
Posts: 4,225 Germany / Essen
Uhrwerk
Expert
|
Expert
Joined: Jan 2002
Posts: 4,225
Germany / Essen
|
random_seed muss - wie Ch40zzC0d3r schon gesagt hat - in einer Funktion stehen. Am besten am Anfang der main Funktion. Zudem solltest Du eine Farbe für das Füllen des Bildschirms setzen, sonst verschmiert der Bildschirm, weil die alten Bilder überlagert werden.
vec_set(screen_color,vector(128,128,128));
Always learn from history, to be sure you make the same mistakes again...
|
|
|
Re: Random Panel
[Re: Uhrwerk]
#433887
12/08/13 13:41
12/08/13 13:41
|
Joined: Jan 2004
Posts: 76 Germany
eq
OP
Junior Member
|
OP
Junior Member
Joined: Jan 2004
Posts: 76
Germany
|
tz. das war s tatsächlich. hab das 'random_seed(0);' an den anfang der main geschrieben, und bekomme endlich meine zufallspannel. supi. vielen dank! zur bildschirmfarbe: ich lade ja gleich am anfang erstmal ne schwarze bitmap. - für das intro möchte ich zunächst kurz mein label-logo anzeigen, dann zufällig eines der ca zehn verschiedenen spiele-covers (das ganze soll später eine art multiplayer-chat mit zusatzfunktionen werden, den man dann (im besten falle täglich) vom desktop aus starten soll. weswegen ich möchte, dass der start a.) nicht langwelig wird, aber auch b.) so schnell wie nur möglich abgeht....)- und zuletzt dann ein lade-panel mit ladebalken. (zur zeit noch der balken aus dem handbuch, aber ich hab denke ich, in den AUMs ne bessere version gefunden) für diese startsequenz dachte ich eben, es ist am besten, wenn ich die panels -nicht- einblende, sondern ab dem ersten bild lade (das schwarze panel hat den layer 12 und liegt über allen anderen) - und sie dann nacheiannder ausblende. - bis das letzte bild (nach dem levelstart im hindetrgrund) smooth ins spoiel überblendet. (mein palyer fällt dabei zudem noch ins level, vllt lass ich ihn dabei dann auch noch drehen? mal sehn) wie auch immer, ich bin sehr froh das random-problem endlich geklärt zu haben da ich das auch noch an anderen stellen einbauen möchte. wie schön, wenn sich die dinge nach zwei tagen, die echt an die nerven gingen, endlich klären... nochmals vielen dank.
“It's not about what it is, it's about what it can become.”
(Dr. Seuss, The Lorax)
|
|
|
|