Also, es soll, und muss definitv nichts zum draufsetzen sein.
Aussehen tut es bisher so
________________________________________
#
float x = 0.0;
float y = 0.0;
float z = 0.0;
float s = 1.0;
vector campos;
rotation camrot;
vector movement;
vector position;
vector positionold;
rotation target;
integer on_ground;
default
{
state_entry()
{
llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION | PERMISSION_TRACK_CAMERA); // Rechte erhalten, Steuerung
}
attach(key AvKey)
{
movement = <0,0,0>;
position = llGetPos();
positionold = llGetPos();
if (AvKey != NULL_KEY)
{
llRequestPermissions(AvKey, PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION | PERMISSION_TRACK_CAMERA); // Rechte erhalten, Steuerung
llStartAnimation("Tablet stand_01");
}
if (AvKey == NULL_KEY)
if(llGetPermissionsKey() != NULL_KEY)
llStopAnimation("Tablet stand_01");
}
collision(integer num_detected)
{
on_ground=1;
}
land_collision(vector pos)
{
on_ground=1;
}
run_time_permissions(integer perm) //Rechte dialog beantwortete
{
llSetTimerEvent(0.8);
if(perm & PERMISSION_TAKE_CONTROLS) // erhielten wir ein ja
{
llTakeControls(CONTROL_FWD | CONTROL_BACK, TRUE, FALSE); // nehmen vor und zurück Steuerungstasten
}
}
control(key id, integer held, integer change) // etwas geschah bis eine unserer Steuerung
{
position = llGetPos();
positionold = llGetPos();
camrot = llGetCameraRot();
movement = llRot2Fwd(camrot) * 0.4;
if ( on_ground )
{
if (held & CONTROL_FWD ) // die „Vorwärts“ Taste wird gehalten
{
llStartAnimation("Tablet walk_01");
position = position + <movement.x, movement.y,0>;
llMoveToTarget(position,0.2);
}
else
if (held & CONTROL_BACK) // die „Rückwärts“ Taste wird gedrückt
{
llStartAnimation("Tablet walk_01");
position = position - <movement.x, movement.y,0>;
llMoveToTarget(position,0.2);
}
if (~held & change & CONTROL_FWD)
{
llStopAnimation("Tablet walk_01");
llStartAnimation("Tablet stand_01");
}
if (~held & change & CONTROL_BACK)
{
llStopAnimation("Tablet walk_01");
llStartAnimation("Tablet stand_01");
}
}
else
{
llStopAnimation("Tablet walk_01");
llStartAnimation("Tablet stand_01");
llStopMoveToTarget();
}
}
link_message(integer snum,integer posnum,string chain,key id)
{
if(posnum == 99 && chain == "reset")
{
llWhisper(0,"Script AO reset");
llResetScript();
}
}
timer()
{
llStopMoveToTarget();
on_ground=0;
}
changed(integer mask)
{
if(mask & CHANGED_TELEPORT)
{
llStartAnimation("Tablet stand_01");
}
if(mask & CHANGED_OWNER)
{
llResetScript();
}
}
}
#
________________________________
Ist aber meines erachtens nicht so gut gelöst mit der Kollisionsabfrage.
Hackelt auch sehr oft, da das llStopAnimation das beim nicht drücken der Vorwärtstaste ausgelöst werden soll. auch trotz Drückens ab und an ausgelöst wird. SL liest da wohl nicht jeden Tastendruck oder macht selber pausen.
Aber alles in allem bin ich mir sicher das es da einen besseren Weg geben muss. zB das man die Z achsen werte einfach ignoriert, oder rauslässt oder so..
Ach ja, wie fügt man Script so hier ein, daß es als script erscheint ? Hab das mit den Codetags nicht richtig hinbekommenund auch die Formatierungsbuttons nicht gefunden
gruß Jacky