PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [CS] Wo liegt der Fehler? (Ja, es geht um ein Script ^^?)



Exterminas_II
01-10-04, 05:40
Hi,
in diesem Script muss irgendwo ein sog. Syntax error, set expression returned an Error stecken, leider finde ich ihn nicht (mal wieder) ich hoffe ihr könnt mir helfen:

begin AR_bann1_sc

float zpos
float xpos
float ypos
short doonce

if ( Doonce == 0 )
SetAngle X 90
set zpos to ( Getpos, z )
set ypos to ( Getpos, y )
set xpos to ( Getpos, x )
set doonce to 1

endif

If ( GetStandingActor == 1 )

PlaceItem, AR_feuersäule_bann, xpos, ypos, zpos, 0
disable

endif


end

EDIT: Den Grung für die Fehlermeldung hab ich jetzt, die pos Variablen müßen Float sein und es heißt getpos, X statt X position , habe das script oben gefixt ,aber nun habe ich ein anderes Problem:

Das Script geht nicht, es sollte bewirjken das wenn ein NPC oder der Spieler auf einen gezeichneten Bann latscht (in_6th_calk00 oder so) eine Feuersäule an der Stelle erscheint an der der Bann lag, und der bann verschwindet.

Exterminas_II
01-10-04, 05:40
Hi,
in diesem Script muss irgendwo ein sog. Syntax error, set expression returned an Error stecken, leider finde ich ihn nicht (mal wieder) ich hoffe ihr könnt mir helfen:

begin AR_bann1_sc

float zpos
float xpos
float ypos
short doonce

if ( Doonce == 0 )
SetAngle X 90
set zpos to ( Getpos, z )
set ypos to ( Getpos, y )
set xpos to ( Getpos, x )
set doonce to 1

endif

If ( GetStandingActor == 1 )

PlaceItem, AR_feuersäule_bann, xpos, ypos, zpos, 0
disable

endif


end

EDIT: Den Grung für die Fehlermeldung hab ich jetzt, die pos Variablen müßen Float sein und es heißt getpos, X statt X position , habe das script oben gefixt ,aber nun habe ich ein anderes Problem:

Das Script geht nicht, es sollte bewirjken das wenn ein NPC oder der Spieler auf einen gezeichneten Bann latscht (in_6th_calk00 oder so) eine Feuersäule an der Stelle erscheint an der der Bann lag, und der bann verschwindet.

Exterminas_II
01-10-04, 07:50
Ich bin sonst eigentlich nicht so ungeduldig, aber ich fahre in ner Stunde ins Wochenende und würde das vorher gern fertig machen....

chris_tm
01-10-04, 07:54
Erstmal hab ich mich gewundert, weil ich mit GetPos X und Y Koordinaten auch schon in short Variablen gespeichert habe...ohne Fehlermeldung.
Aber es liegt an der Funktion <span class="ev_code_GREY">PlaceItem</span>. Die aktzeptiert nur floats.

Zum eigentlichen Problem:

Ich würde mal eine MessageBox einsetzen um zu sehen, ob <span class="ev_code_GREY">GetStandingActor</span> bei diesem Objekt überhaupt true (1) wird.
Wenn ja und wenn die MessageBox 3 mal auf dem Schirm ist dann muss noch ne DoOnce Variable in die Schleife rein...schließlich läuft ein Script auf einem Disableten Objekt weiter.

Also erstmal so testen:

<pre class="ip-ubbcode-code-pre">If ( GetStandingActor == 1 )

MessageBox "GetStandingActor funzt"
PlaceItem, AR_feuersäule_bann, xpos, ypos, zpos, 0
disable

endif</pre>

Und dann noch evtl. so:

<pre class="ip-ubbcode-code-pre">If ( GetStandingActor == 1 )
if ( Doonce == 1 )

MessageBox "GetStandingActor funzt"
PlaceItem, AR_feuersäule_bann, xpos, ypos, zpos, 0
disable

set Doonce to -1
endif

endif</pre>

Und dann evtl. ganz oben noch zum Performance schonen :

<pre class="ip-ubbcode-code-pre">if ( Doonce == -1 )
Return
endif</pre>

Exterminas_II
01-10-04, 08:09
Es geht nicht, aber das Problem ist die Tatsache das das hier:

SetAngle X 90

rein muss da der Bann sonst senkrecht in der Landschaft steht und somit gar nicht von GetStanding betroffen ist.Und selbst wenn ich das script so:

( Doonce == 0 )
SetAngle X 90
set zpos to ( Getpos, z )
set ypos to ( Getpos, y )
set xpos to ( Getpos, x )
set doonce to 1

endif



If ( GetStandingActor == 1 )

MessageBox "GetStandingActor funzt"
PlaceItem, AR_feuersäule_bann, xpos, ypos, zpos, 0
disable

endif

ändere gehts nicht http://forums.ubi.com/images/smiley/16x16_smiley-sad.gif

chris_tm
01-10-04, 08:23
Also wenn ich dich richtig verstehe hat Dein Test ergeben, dass GetStandingActor auf dem Objekt nicht funzt.

Könntest höchstens noch das probieren:

Du könntest versuchen auf den Bann ein unsichtbares Objekt zu legen z.B. eine auf 0.50 verkleinerte CollusionBox und probieren, ob da GetStandingActor funktioniert und dann von diesem aus den Bann zu Disablen:

ObjektID-&gt;Disable

Wenn die CollusionBox zu gross ist dann könntest Du noch so einen roten Activator, wie die, wo die Sounds dranhängen probieren...weiss aber nicht, ob die ne Collisionserkennung haben.

Exterminas_II
01-10-04, 08:37
Das mit der Box ist eine gute Idee, aber jetzt habe ich das Script das die Banne erzeugt so geändert:

begin AR_bann1_script

float timer

if (menumode == 1);Menü, Inventory, Dialog, etc aktiv ?
return ;dann hier stopp
endif

if (timer &lt; 2); 2 Sekunden gewartet?
set timer to timer + GetSecondsPassed
return
else
set timer to 0
endif

if ( Player-&gt;GetSpellEffects "AR_schadenbann" == 1 )
PlaceAtPC "AR_bann1_act_box" 1 1 1
PlaceAtPC "AR_bann1_act" 1 1 1 ; 1mal, hinter dem Spieler, 50 Abstand
Set timer to -28 ; mindestens 30 Sekunden Sperre gegen erneute Beschwöung

endif


end


und die Box erscheint nicht mal (Ja, ich weiß sie ist unsichtbar aber man kann ja nicht durch sie hindurch gehen,somit läßt sie sich erahnen)

chris_tm
01-10-04, 09:00
Achso, Du setzt das alles per Script in die Welt. Dann wird die CollusionBox wahrscheinlich aufrecht stehen. Dann wäre wohl "GetCollidingActor" besser als GetStandingActor.

Wenn man Objekte stark verkleinert oder vergrössert kann es zu Problmen bei der Collisionserkennung kommen.

Wirklich sicher sein ob das Obkjekt nun "da" ist oder nicht kannst Du wieder nur, wenn Du es mit ner MessageBox im Script ausprobierst...wenn keine MessageBox Nachricht erscheint weist Du, dass das Objekt wirklich nicht da ist...

Exterminas_II
01-10-04, 09:10
So, ich habe jetzt mal ne Message Box an die Box gehängt, und sie erscheint, fragt sich nur wo, ich werde jetzt mal ne sichtbare box nehmen um das zu testen.

Exterminas_II
01-10-04, 09:15
Ich habe gerade was interessantes festgestellt:
Wenn ich ein Object per Script einfüge ist es in jedem fall "durchgehbar" jetzt hatte ich nämlich die Box durch einen Tisch ersetzt, und durch den konnte ich genauso hindurchfliegen wie durch die Zeichnung, ich denke da liegt der Hundbegraben, weiß einer wie ich die Objecte "hart" machen kann?

EDIT:Upss sorry for Dopelpost, war wohl etwas aufgeregt

Exterminas_II
03-10-04, 13:29
Kennt denn jemand einen Mod wo ähnliches angewendet wird?Dann könnte ich mir das da abschauen.