Registrierung
Linkliste Second Forum Chat Second Forum Treffen Suche Mitgliederliste Häufig gestellte Fragen Gästebuch Kalender

 
Amazonien Rollenspiel in SL
 

Hier kann man sich über die letzten Beiträge im Board live informieren, das kleine Fenster welches sich durch einen Klick öffnet aktualisiert sich von alleine alle 60 Sekunden.

Guckloch öffnen
 

Second Forum - Ein deutschsprachiges Forum zu Second Life » Support zu Second Life » Fragen zu Scripting in Second Life » finde den Fhler im Script einfach nicht ... » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen


Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen finde den Fhler im Script einfach nicht ...
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »

nico nico ist weiblich
SF Roockie


images/avatars/avatar-1675.jpg

[meine Galerie]


Dabei seit: 23.03.2010
Beiträge: 39
Second Life Geburtstag: 17.10.2009
Fähigkeiten: Prims - Häuser

traurig finde den Fhler im Script einfach nicht ... 23.03.2010 15:25 [OPTIONEN] [HOCH] [RUNTER]

… und drehe mich immer schneller im Kreis.

Erst mal ein liebes Hallo an ALLE,

und gleich zu meinem Problemchen J

Bin fleißig am bauen und wie es so ist, versuche ich mich jetzt auch etwas in das Scripting einzuarbeiten.
Nun habe ich ein Pool gebaut und möchte eine Abdeckung dazu machen, die sich bei Berührung mittels größer werdendem Loch öffnet.

Das öffnen funzelt auch spi J, inklusive des Chat-Textes. Will ich das Pool jedoch schliessen, sagt mir die Abdeckung brav, dass sie sich schliessen will, aber .., es schliesst sich nichts.

Bei der nächsten Berührung die wieder das öffnen auslöst .., ist zack, die Abdeckung des Pool geschlossen und öffnet sich (inklusive Ansage wieder brav …

Irgendwie verstehe ich jetzt nicht warum dem so ist und darum hier mal das Script. Vielleicht ist jemand so lieb und sagt mir wo ich den Fehler gemacht habe.



default
{
state_entry()
{
llSetText("",<0,0,0>,1);
}
touch_start(integer nd)
{
llSay(0, "Bitte zurück treten, ich gebe das Pool frei ... !");
float i;
for(i=0.0; i<1.1; i+= .1)
{
llSetPrimitiveParams([PRIM_TYPE,PRIM_TYPE_BOX,PRIM_HOLE_DEFAULT,<0.0,1.0,0.
0>,i,<0.0,0.0,0.0>,<1.0,1.0,0.0>,<0.0,0.0,0.0>]);
}
state other;
}
}
state other
{
state_entry()
{
llSetText("",<0,0,0>,1);
}
touch_end(integer nd)
{
llSay(0, "Bitte aus dem Wasser gehen, ich schliesse das Pool ...!");
state default;
float i;
for(i=1.0; i>-.1; i-= .1)
{
llSetPrimitiveParams([PRIM_TYPE,PRIM_TYPE_BOX,PRIM_HOLE_DEFAULT,<0.0,1.0,0.
0>,i,<0.0,0.0,0.0>,<1.0,1.0,0.0>,<0.0,0.0,0.0>]);
}

}
}



Ich weiss, das

state_entry()
{
llSetText("",<0,0,0>,1);
}


Nach dem

}
state other
{

ist nicht wirklich nötig, ändert aber GAR NICHTS.


Ich danke schon mal allen im voraus, die mir bisschen helfen können und auch wollen.

Gruss, nico
Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von nico am 23.03.2010 um 15:25 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.


Vega Elcano
unregistriert
RE: finde den Fhler im Script einfach nicht ... 23.03.2010 16:02 [OPTIONEN] [HOCH] [RUNTER]

Zitat:
Original von nico am 23. M&auml;rz 2010, 15:25 Uhr
… und drehe mich immer schneller im Kreis.

Erst mal ein liebes Hallo an ALLE,

und gleich zu meinem Problemchen J


Ebenfalls ein liebes Hallo Smile

nach einem kurzen Durchschauen, sind mir zumindest ein paar Fragen aufgekommen, die Dir vielleicht weiter helfen können:

1) Warum verwendest Du in den beiden States (default,other) unterschiedliche
touch-Events? Erst Start und dann End. Wäre das Script schnell genug, könnte es theoretisch beide States bei einem Klick abarbeiten. Beim Drücken der Taste den State Default und beim loslassen den State other und Du wärst wieder im Default-State. Gut so schnell dürfte das Script nie sein Smile

2) Im State other rufst du den Befehl "state default" auf _bevor_ die FOR-Schleife abgerabeitet wird. Insofern kann das Schließen doch gar nicht stattfinden?

3) Warum zähltst Du bis -1 runter, während Du beim Öffnen von 0 beginnst? Die Schrittweite ist doch .1. Insofern würde es mir auf den ersten Blick logischer erscheinen bis -.1 runter zu zählen oder mit ">=0." zu prüfen.

Naja, soviel auf die Schnelle. Vielleicht helfen Dir diese Fragen ein bisschen, um es zum laufen zu bringen.

Schöne Grüße
Vega
Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von Vega Elcano am 23.03.2010 um 16:02 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.


nico nico ist weiblich
SF Roockie


images/avatars/avatar-1675.jpg

[meine Galerie]


Dabei seit: 23.03.2010
Beiträge: 39
Second Life Geburtstag: 17.10.2009
Fähigkeiten: Prims - Häuser

Themenstarter Thema begonnen von nico
23.03.2010 16:52 [OPTIONEN] [HOCH] [RUNTER]

Hallo Vega,

DANKE … was so ein Gedankenanstoss bewirken kann .. J Zeigt einfach wieder mal, dass man vor lauter Bäume den Wald nicht mehr sewhen kann.

Allgemein … Befasse mich jetzt etwa seit 14 Tagen mit dem Scripten nid suche mir die versch. Befehle und Syntax im WIKI zusammen, schau in das eine und andere Skript an und versuche (betone versuche) mich zurecht zu finden. Darum komme ich gar nicht auf die Idee, mal zu kürzen, sondern halte mich mal an das, was ich im WIKI finde und kombiniere die (wenn vorhanden) Syntax-Beispiele.

Zu Punkt 1. ..: werde ich ausprobieren, war aber nicht dr Fehler.

Zu Punkt 2. ..: DAS IST DER HASE HINTER DEM BUSCH … Ja, das "state default" weg genommen und … …, es funzelt so wie ich es will


Zu Punkt 3. … : Funktioniert nur so, hab das so in ähnlicher Form aus einem Beispiel. Baer auc das werde ich mir noch näher ansehen.

Nochmals vielen Dank,

Gruss, nico
Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von nico am 23.03.2010 um 16:52 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.


Aleco Collas Aleco Collas ist männlich
Satyr


images/avatars/avatar-1396.jpg

[meine Galerie]


Dabei seit: 06.01.2009
Beiträge: 3.255
SL Nick: Aleco Collas

23.03.2010 17:39 [OPTIONEN] [HOCH] [RUNTER]

Gib' mir mal deinen SL-Nick, dann schiebe ich dir einiges an Scripten rüber, die du ansehen kannst!

cu
Aleco
Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von Aleco Collas am 23.03.2010 um 17:39 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.


Vega Elcano
unregistriert
23.03.2010 17:59 [OPTIONEN] [HOCH] [RUNTER]

Zitat:
Original von nico am 23. M&auml;rz 2010, 16:52 Uhr
Hallo Vega,

DANKE … was so ein Gedankenanstoss bewirken kann .. J Zeigt einfach wieder mal, dass man vor lauter Bäume den Wald nicht mehr sewhen kann.


Ja, manchmal reicht es einfach aus, wenn mal jemand anders drauf schaut. Es freut mich, dass ich helfen konnte, schließlich habe auch ich hier im Forum schon ein paar mal von anderen gute Hilfe bekommen. Hierfür auch noch mal einen allgemeinen Dank in die Runde Smile

Zitat:

Allgemein … Befasse mich jetzt etwa seit 14 Tagen mit dem Scripten nid suche mir die versch. Befehle und Syntax im WIKI zusammen, schau in das eine und andere Skript an und versuche (betone versuche) mich zurecht zu finden. Darum komme ich gar nicht auf die Idee, mal zu kürzen, sondern halte mich mal an das, was ich im WIKI finde und kombiniere die (wenn vorhanden) Syntax-Beispiele.

Zu Punkt 1. ..: werde ich ausprobieren, war aber nicht dr Fehler.


Hätte mich auch gewundert. Ich fand es nur ungewöhlich. Auf welches Event man triggert ist eigentlich Geschamcksache, wobei klassische Anwendungen ja meistens die Aktion erst auf das "Mouse-Release" (also touch_end) Event ausführen.

Zitat:

Zu Punkt 2. ..: DAS IST DER HASE HINTER DEM BUSCH … Ja, das "state default" weg genommen und … …, es funzelt so wie ich es will


Einfach weg, oder hinter die FOR-Schleife? Ganz ohne "state default" dürfte es eigentlich auch nicht gehen.

Zitat:

Zu Punkt 3. … : Funktioniert nur so, hab das so in ähnlicher Form aus einem Beispiel. Baer auc das werde ich mir noch näher ansehen.


OK, wie gesagt, war mir nur so als Fragezeichen ins Auge gesprungen.

Schöne Grüße
Vega
Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von Vega Elcano am 23.03.2010 um 17:59 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.


Wolwaner Jervil Wolwaner Jervil ist männlich
SL Guided Tours


images/avatars/avatar-1287.jpg

[meine Galerie]


Dabei seit: 15.11.2007
Beiträge: 1.403
SL Nick: Wolwaner Jervil
Second Life Geburtstag: 01.12.2006
Fähigkeiten: Prims - Sonstiges; Texturen - Sonstiges; Scripting - Sonstiges; Sonstiges - Fotographie

23.03.2010 18:43 [OPTIONEN] [HOCH] [RUNTER]

Ich bin mir nicht sicher, aber wenn ein Start und End Event im Script vorgesehen ist, dann werden auch beide angestoßen, eventuell zeitverzögert.

Meiner Meinung nach sollte kein event verloren gehen.

__________________
Wol
SL Guided Tours - Wir zeigen Euch SecondLife
Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von Wolwaner Jervil am 23.03.2010 um 18:43 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.


Vega Elcano
unregistriert
23.03.2010 19:10 [OPTIONEN] [HOCH] [RUNTER]

Zitat:
Original von Wolwaner Jervil am 23. M&auml;rz 2010, 18:43 Uhr
Ich bin mir nicht sicher, aber wenn ein Start und End Event im Script vorgesehen ist, dann werden auch beide angestoßen, eventuell zeitverzögert.

Meiner Meinung nach sollte kein event verloren gehen.


Naja, im Prinzip hast Du natürlich recht. Da in diesem Fall die beiden Events aber in unterschiedlichen States enthalten sind, kann eigentlich immer nur das des gerade aktiven States ausgeführt werden, oder?

Schöne Grüße
Vega
Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von Vega Elcano am 23.03.2010 um 19:10 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.


nico nico ist weiblich
SF Roockie


images/avatars/avatar-1675.jpg

[meine Galerie]


Dabei seit: 23.03.2010
Beiträge: 39
Second Life Geburtstag: 17.10.2009
Fähigkeiten: Prims - Häuser

Themenstarter Thema begonnen von nico
24.03.2010 10:48 [OPTIONEN] [HOCH] [RUNTER]

Hallo zusammen,

Ja Vega, Du hattest mit der Frage:

Zitat:
Einfach weg, oder hinter die FOR-Schleife? Ganz ohne "state default" dürfte es eigentlich auch nicht gehen.

Recht.

Es hat alles solange 100 %ig funktioniert, solange ich online war. Nach einem neuem Einloggen war es so, dass wenn ich das Pool öffnete, es sich sofort immer voll öffnete und einfach nur noch schloss.
Nachdem ich das Script (ohne Änderung) neu speicherte, funktionierte es wieder bis zum neuen Einloggen wieder.
Wo und wie nun diese Info, dass das Pool (auch wenn geschlossen) offen ist nur dann blieb, wenn ich ausloggte. Da bin ich echt überfragt.

Also setzte ich das “state default;” nach der Schliessen-Schlaufe, damit quasi nach derem durchlauf alles auf Null gesetzt wird und jetzt .., funktioniert es auch nach einem neuen Einloggen und dies, egal ob das Pool dann offen oder geschlossen ist.

So sieht das Script jetzt aus:

default
{
state_entry()
{
llSetText("",<0,0,0>,1);
}
touch_start(integer nd)
{
llSay(0, "Bitte zurück treten, ich gebe das Pool frei ... !");
float i;
for(i=0.0; i<1.1; i+= .1)
{
llSetPrimitiveParams([PRIM_TYPE,PRIM_TYPE_BOX,PRIM_HOLE_DEFAULT,<0.0,1.0,0.
0>,i,<0.0,0.0,0.0>,<1.0,1.0,0.0>,<0.0,0.0,0.0>]);
}
state other;
}
}
state other
{
state_entry()
{
llSetText("",<0,0,0>,1);
}
touch_end(integer nd)
{
llSay(0, "Bitte aus dem Wasser gehen, ich schliesse das Pool ...!");
float i;
for(i=1.0; i>-.1; i-= .1)
{
llSetPrimitiveParams([PRIM_TYPE,PRIM_TYPE_BOX,PRIM_HOLE_DEFAULT,<0.0,1.0,0.
0>,i,<0.0,0.0,0.0>,<1.0,1.0,0.0>,<0.0,0.0,0.0>]);
}
state default;
}

}



Mein Fazit aus dieser Erfahrung: Jedes Script auch nach einem neuen Einloggen überprüfen. Ja, men lernt immer dazu.

Nochmals VIELEN Dank für die Hilfe,

Gruss, nico
Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von nico am 24.03.2010 um 10:48 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.


Vega Elcano
unregistriert
24.03.2010 16:23 [OPTIONEN] [HOCH] [RUNTER]

Zitat:
Original von nico am 24. M&auml;rz 2010, 10:48 Uhr
Es hat alles solange 100 %ig funktioniert, solange ich online war. Nach einem neuem Einloggen war es so, dass wenn ich das Pool öffnete, es sich sofort immer voll öffnete und einfach nur noch schloss.
Nachdem ich das Script (ohne Änderung) neu speicherte, funktionierte es wieder bis zum neuen Einloggen wieder.
Wo und wie nun diese Info, dass das Pool (auch wenn geschlossen) offen ist nur dann blieb, wenn ich ausloggte. Da bin ich echt überfragt.


Hmm, eigentlich wundert mich jetzt mehr, dass es zu Anfang funktioniert hat. Denn aus dem "state other" hätte das Script (ausser durch das Zurücksetzen beim neu speichern) nie wieder herauskommen dürfen. Und solange das Script dort drin ist, ist das von Dir geschilderte Verhalten mit plötzlich aufspringen und langsam wieder zu gehen, konsequent. Deine Schleife zum Schließen startet ja immer mit ganz offen.

Und der Unterschied zwischen neu Einlogen oder nicht hängt wirklich mit dem Einlogen Deinerseits zusammen? Oder rezzed Du den Pool dann auch wieder neu?

Aber ein interessantes Skript. Ich glaube, ich werde heute Abend damit auch mal herumspielen. Ich baue mir gerade eine Skybox/Raumschiff, wo ich mir vorstellen kann, damit eine ganz nette "Luftschleuse" zu bauen Smile

Zitat:

Mein Fazit aus dieser Erfahrung: Jedes Script auch nach einem neuen Einloggen überprüfen. Ja, men lernt immer dazu.


Ich habe mir auch angewöhnt standartmäßig (außer es ist bewust gewollt) in jedem state das Event "on_rez" abzufangen, und das Script zu reseten:

code:
1:
2:
3:
on_rez(integer para) {
   llResetScript();}


Damit hat man dann zumindest bei Rezzen einen definierten Ausgangs-Zustand.

Schöne Grüße
Vega
Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von Vega Elcano am 24.03.2010 um 16:23 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.


nico nico ist weiblich
SF Roockie


images/avatars/avatar-1675.jpg

[meine Galerie]


Dabei seit: 23.03.2010
Beiträge: 39
Second Life Geburtstag: 17.10.2009
Fähigkeiten: Prims - Häuser

Themenstarter Thema begonnen von nico
24.03.2010 19:09 [OPTIONEN] [HOCH] [RUNTER]

Das Script funktionierte zu Beginn immer so, dass es sich das Pool

- bei der ersten Berührung öffnet, inkl. die Chatansage

- bei der zweiten Berührung aber nicht schloss, aber die richtige Chatansage kam

- bei der dritten Berührung, schloss sich das Pool schlagartig und öffnete sich wie bei der ersten Berührung.

Dies immer so, egal ob ausloggen oder nicht.

Nachdem ich das “state default;“ rausgenommen habe, funktionierte es im vollem Umfang. Dies aber nur solange, bis ich mal ausgeloggt habe. War ich wieder online, kam es eben dazu, dass es sich nicht mehr öffnete, sondern wie zuvor schlagartig zu, jetzt schlagartig offen war und sich nur immer langsam schloss. Nach Neuabspeicherung funzelte es wieder solange bis ich wieder neu online kam. Dann musste ich es erst neu speichern, damit es wieder richtig funktionierte.

Also ich verstehe dieses Verhalten auch nicht.

Das mit dem, in jedem state das Event mit "on_rez" abzufangen und das Script zu redeten ist eine interessante und gute Lösung und hätte in meinem Fall den Fehler (wenn auch ungewollt) kompensiert.

Auf jeden Fall finde ich es sehr interessant, dass man aus so einem kleinem Script so vieles, auch eigenartiges erkennen kann. Wäre das bei einem größerem Script, so wäre es um ein vielfaches schwierig das Problem zu analysieren.

Zitat:
Ich baue mir gerade eine Skybox/Raumschiff, wo ich mir vorstellen kann, damit eine ganz nette "Luftschleuse" zu bauen


Ja Vega, dieses Script eignet sich sicher sehr gut für eine effektvolle Luftschleuse.

Gruss, nico

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von nico: 24.03.2010 19:11.

Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von nico am 24.03.2010 um 19:09 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.


Vega Elcano
unregistriert
25.03.2010 20:37 [OPTIONEN] [HOCH] [RUNTER]

Zitat:
Original von nico am 24. M&auml;rz 2010, 19:09 Uhr
Auf jeden Fall finde ich es sehr interessant, dass man aus so einem kleinem Script so vieles, auch eigenartiges erkennen kann. Wäre das bei einem größerem Script, so wäre es um ein vielfaches schwierig das Problem zu analysieren.


Ja das stimmt, deshalb sind so kleine Scripte eigentlich auch sehr schön um gewisse Effekte zu untersuchen. Im Zweifelsfall muss man dann Hard-Core-Debugging anwenden und bei jedem zweiten Befehl ein eindeutiges "llSay()" bzw. wenn man die Umgebung um einen herum nicht so belästigen will ein "llOwnerSay()" einbauen. Dann kann man meistens früher oder später nachvollziehen, wie das Script abgearbeitet wird. Aber das kann manchmal ganz schön lästig werden Augen rollen

Schöne Grüße
Vega
Der Betreiber und die Moderatoren von Second Forum distanzieren sich hiermit ausdrücklich von dem von Vega Elcano am 25.03.2010 um 20:37 verfassten Beitrag.
Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung.

Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Second Forum - Ein deutschsprachiges Forum zu Second Life » Support zu Second Life » Fragen zu Scripting in Second Life » finde den Fhler im Script einfach nicht ...

Views heute: 2.708 | Views gestern: 8.744 | Views gesamt: 44.549.751



Impressum


Forensoftware: Burning Board 2.3.6
Designed by: ART[I]SIGN GbR
#top #top