Ich brauche Hilfe beim Scripten, hab mich verrannt!
- DieFüchsin
- Adventure-Gott
- Beiträge: 4406
- Registriert: 12.03.2004, 16:55
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
Sorry, jetzt bin ich da
Ohne die Sprites nützt das wahrscheinlich nicht viel. Ich kann auch keinen Fehler im Code entdecken, habs aber noch nicht getestet.
Also die anderen Symbole sind immer gleich? Du meinst, es werden verschiedene Symbole zufällig angeordnet, aber bei jedem Neustart des Spiels sind sie immer an der selben Stelle?
Hm, wie gesagt, die Zufallszahlen, die AGS produziert, sind immer die gleichen. Hast Du mal meine Randomize-Funktion ausprobiert?
Ohne die Sprites nützt das wahrscheinlich nicht viel. Ich kann auch keinen Fehler im Code entdecken, habs aber noch nicht getestet.
Also die anderen Symbole sind immer gleich? Du meinst, es werden verschiedene Symbole zufällig angeordnet, aber bei jedem Neustart des Spiels sind sie immer an der selben Stelle?
Hm, wie gesagt, die Zufallszahlen, die AGS produziert, sind immer die gleichen. Hast Du mal meine Randomize-Funktion ausprobiert?
Use gopher repellent on funny little man
- DieFüchsin
- Adventure-Gott
- Beiträge: 4406
- Registriert: 12.03.2004, 16:55
Das mit den Zufallszahlen war wahrscheinlich nur Zufall, später funktionierte es, wie es sollte, nachdems vielleicht fünfmal immer gleich war.
Beim neu laden des Raums siehts so aus: die Muss-Platte liegt mit zufälligem Bild zufällig herum wie sie soll, aber die anderen Platten haben das gleiche Symbol (beim neuen Laden ist es immer ein anderes, zufällig ausgewähltes, aber alle platten tragen es)
Beim neu laden des Raums siehts so aus: die Muss-Platte liegt mit zufälligem Bild zufällig herum wie sie soll, aber die anderen Platten haben das gleiche Symbol (beim neuen Laden ist es immer ein anderes, zufällig ausgewähltes, aber alle platten tragen es)
Danke, Adventuretreff! <3
- DieFüchsin
- Adventure-Gott
- Beiträge: 4406
- Registriert: 12.03.2004, 16:55
- DieFüchsin
- Adventure-Gott
- Beiträge: 4406
- Registriert: 12.03.2004, 16:55
ich hatte die Zeile nur in einem Block ergänzt, allerdings konnte ich bisher noch nicht testen obs auch wirklich klappt, weil mir immer diese Fehlermeldung
http://www.adventuretreff.de/forum/view ... 9&start=15
dazwischen funkt, seit ich das mit der Arrayanimation eingefügt habe
http://www.adventuretreff.de/forum/view ... 9&start=15
dazwischen funkt, seit ich das mit der Arrayanimation eingefügt habe
Danke, Adventuretreff! <3
- DieFüchsin
- Adventure-Gott
- Beiträge: 4406
- Registriert: 12.03.2004, 16:55
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
Verdammt, Du hast recht
Code: Alles auswählen
function SetPlate(int plate, int symbol) { // plate 1-6, symbol 1-9
abs=10; // wenn views der platten z.B.: 11-16
object[plate].SetView(plate+abs, 0, symbol-1); // Platten sind objects 1-6
platesymbol[plate]=symbol; // <-- DAS HIER HAT GEFEHLT
}
Use gopher repellent on funny little man
- DieFüchsin
- Adventure-Gott
- Beiträge: 4406
- Registriert: 12.03.2004, 16:55
- DieFüchsin
- Adventure-Gott
- Beiträge: 4406
- Registriert: 12.03.2004, 16:55
wie genau funktioniert die funktion? ich hab ein bisschen rumprobiert, indem ich den charakter auf der platte hab hin und her laufen lassen und die variable gecheckt hab. aber manchmal wird 0 ausgegeben, obwohl der charakter eigentlich mittendrauf steht
und eine Platte gibt nur den wert 0 wieder...
kann man das ganze auch über hotspots regeln? hotspots sind sowieso schon vor ort.
und eine Platte gibt nur den wert 0 wieder...
kann man das ganze auch über hotspots regeln? hotspots sind sowieso schon vor ort.
Danke, Adventuretreff! <3
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
Hmm, ich hab keine Ahnung, woran das liegen könnte.
Zuerst wird das Objekt, das sich an der Position des Charakters befindet, in dem Objektpointer plate gespeichert.
Wenn dort kein Objekt ist, bekommt plate den Wert null.
Falls dort ein Objekt ist, wird dessen Nummer in plid gespeichert und dann geschaut, ob die Nummer irgendwas von 1-6 ist. Falls ja, wird anhand des Arrays die Symbolnummer zurückgeliefert.
In jedem anderen Fall wird 0 zurückgeliefert.
Du hast schon die Objekte 1-6 für die Platten benutzt, oder? Und nicht 0-5?
Ansonsten könntest Du statt dem "return 0;" mal "return -1;" ausprobieren. Wenn jetzt noch 0 zurückgeliefert wird, stimmt etwas mit dem Array nicht.
Code: Alles auswählen
function GetPlayerSymbol() {
Object*plate=Object.GetAtScreenXY(player.x, player.y);
if (plate!=null) {
int plid=plate.ID;
if (plid>=1 && plid<=6) return platesymbol[plid];
}
return 0;
}
Wenn dort kein Objekt ist, bekommt plate den Wert null.
Falls dort ein Objekt ist, wird dessen Nummer in plid gespeichert und dann geschaut, ob die Nummer irgendwas von 1-6 ist. Falls ja, wird anhand des Arrays die Symbolnummer zurückgeliefert.
In jedem anderen Fall wird 0 zurückgeliefert.
Du hast schon die Objekte 1-6 für die Platten benutzt, oder? Und nicht 0-5?
Ansonsten könntest Du statt dem "return 0;" mal "return -1;" ausprobieren. Wenn jetzt noch 0 zurückgeliefert wird, stimmt etwas mit dem Array nicht.
Use gopher repellent on funny little man
- DieFüchsin
- Adventure-Gott
- Beiträge: 4406
- Registriert: 12.03.2004, 16:55
Ich hab das ganze noch mal ausgiebig getestet und bin zu folgenden Ergebnissen gekommen:
Die Platten sind auf jeden Fall die Objekte 1-6.
Die Werte werden unregelmäßig wiedergegeben, zuweilen wird der richtige Wert angegeben, steht der Charakter mitten auf der Platte, dann wieder wird 0 ausgegeben. (Ändert sich immer beim Neustart).
Insgesamt wird auf jeden Fall nicht immer der gewünschte Wert ausgegeben, wenn der Charakter eigentlich optisch auf der Platte steht. Lässt sich das ganze nicht irgendwie anders lösen?
Übrigens werden bei der Symbolverteilung ausschließlich die Symbole 1-6 (nicht 7,8,9) verteilt.
Die Platten sind auf jeden Fall die Objekte 1-6.
Die Werte werden unregelmäßig wiedergegeben, zuweilen wird der richtige Wert angegeben, steht der Charakter mitten auf der Platte, dann wieder wird 0 ausgegeben. (Ändert sich immer beim Neustart).
Insgesamt wird auf jeden Fall nicht immer der gewünschte Wert ausgegeben, wenn der Charakter eigentlich optisch auf der Platte steht. Lässt sich das ganze nicht irgendwie anders lösen?
Übrigens werden bei der Symbolverteilung ausschließlich die Symbole 1-6 (nicht 7,8,9) verteilt.
Danke, Adventuretreff! <3
-
- Hobby-Archäologe
- Beiträge: 163
- Registriert: 28.04.2005, 16:26
- Wohnort: Mönchengladbach
Falls das ein scrollender Raum ist:
Ändere das:
in das:
Ändere das:
Code: Alles auswählen
Object*plate=Object.GetAtScreenXY(player.x, player.y);
Code: Alles auswählen
Object*plate=Object.GetAtScreenXY(player.x-GetViewportX(),player.y-GetViewportY())
- DieFüchsin
- Adventure-Gott
- Beiträge: 4406
- Registriert: 12.03.2004, 16:55
- DieFüchsin
- Adventure-Gott
- Beiträge: 4406
- Registriert: 12.03.2004, 16:55
so, ich lass mir die Symbolnummer jetzt ganz unspektakulär auf dem Hotspot stehend ausgeben, was auf jeden Fall funktioniert.
Allerdings verteilt es immer noch nur die ersten 6 symbole?!
EDIT: achsoo es werden ja auch nur 6 rausgesucht... alle klarheiten dürften hiermit beseitigt sein...
ein dickes danke nochmal an khrismuc!!!
Allerdings verteilt es immer noch nur die ersten 6 symbole?!
EDIT: achsoo es werden ja auch nur 6 rausgesucht... alle klarheiten dürften hiermit beseitigt sein...
ein dickes danke nochmal an khrismuc!!!
Danke, Adventuretreff! <3