Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

[Request] Spider Man Like Walk on walls

Scott Deharo
OMGTHISISAREALLYLONGTITLE
Join date: 28 Aug 2006
Posts: 614
05-28-2007 15:28
Hello, I need a script like IE you go into mouse look and shoot and then it moves you to that wall and you can crawl on the walls and stick to them.

If you can't just give me the script please advise how to make this IE what functions,

thanks a bunch!
_____________________
The SL Sun is much to big, time to update the SL Header...
Osgeld Barmy
Registered User
Join date: 22 Mar 2005
Posts: 3,336
05-28-2007 17:55
try products wanted
Lazink Maeterlinck
Registered User
Join date: 8 Nov 2005
Posts: 332
05-28-2007 19:04
You'll want either an attachment or hud, that has control and waits for a mouse click. Have it fire a prim until it collides with another prim. Then have the attachment move you to the wall. Thats to get to the wall, as for scaling it, you'll want an animation that does some scaling, and the attachment has control up like the up arrow or whatever you want. It will show the animation and the attachment will move up the wall slowly or fast, however you want to make it. That's a rough way of doing what you would like.
Scott Deharo
OMGTHISISAREALLYLONGTITLE
Join date: 28 Aug 2006
Posts: 614
05-28-2007 20:42
Nice ideas, thanks a bunch!

As for products wanted ect, I can't cause I'm a teen grid user, my forum account is messed up

Yes we TG'ers script to ;)
_____________________
The SL Sun is much to big, time to update the SL Header...
Tarak Voss
Meanderer
Join date: 14 Oct 2006
Posts: 330
05-29-2007 00:18
I've seen something similar (not identical to what you want) being sold for Ninja fighters - saw it in SLexchange (oops shouldn't have said that)
Yumi Murakami
DoIt!AttachTheEarOfACat!
Join date: 27 Sep 2005
Posts: 6,860
05-29-2007 08:33
I think there are grappling hooks available in SL, but I'm not aware of anything that lets you crawl on walls. The problem is that doing so would be incredibly difficult because detecting the wall under you is very hard - sensors can only detect that an object is present there, but not that the object has mass in any particular place.
Milambus Oh
Registered User
Join date: 6 Apr 2007
Posts: 224
05-29-2007 08:57
You might be able to use an Impulse to push the avatar against the surface of the wall.. used in combination with a crawling animation and using flight to control the up/down placement.

Otherwise, create an object that the avatar sits on and capture the keys to control the movement.
Yumi Murakami
DoIt!AttachTheEarOfACat!
Join date: 27 Sep 2005
Posts: 6,860
05-29-2007 10:29
From: Milambus Oh
You might be able to use an Impulse to push the avatar against the surface of the wall.. used in combination with a crawling animation and using flight to control the up/down placement.

Otherwise, create an object that the avatar sits on and capture the keys to control the movement.


Both of those are good for creating alternate methods of movement, but the problem is sensing when the person has (for example) reached the top of the wall, so if they crawl any further, they'll round the corner and start crawling along the roof.
Milambus Oh
Registered User
Join date: 6 Apr 2007
Posts: 224
05-29-2007 11:42
From: Yumi Murakami
Both of those are good for creating alternate methods of movement, but the problem is sensing when the person has (for example) reached the top of the wall, so if they crawl any further, they'll round the corner and start crawling along the roof.


Project out an object and have it test for onCollision.. if it collides your golden, if not some change needs to be made.
Scott Deharo
OMGTHISISAREALLYLONGTITLE
Join date: 28 Aug 2006
Posts: 614
06-02-2007 10:59
Sounds like a lot of work! I'll try those though.
_____________________
The SL Sun is much to big, time to update the SL Header...
Hunter Stern
Web Weaver
Join date: 7 Oct 2004
Posts: 377
06-02-2007 12:09
I can't believe noone mentioned Abramenlin's Wall Climber HUD thats Available at Devils Moon (goto Map>type 'Devils Moon' in region search>Teleport). It works great imo.
_____________________
Scott Deharo
OMGTHISISAREALLYLONGTITLE
Join date: 28 Aug 2006
Posts: 614
06-03-2007 18:59
im a TG'er ;(
_____________________
The SL Sun is much to big, time to update the SL Header...
grumble Loudon
A Little bit a lion
Join date: 30 Nov 2005
Posts: 612
06-04-2007 22:15
This script makes a car that can drive up walls by using it's rotation to decide on gravity.

CODE

//Fun car script, Can even drive upside down
//From Simple car script V1.0
//Released into the public domain by grumble Loudon and LaserFur Leonov

integer m_DesiredSpeed = 0; // forward/ reverse
integer m_WheelPos = 0; // Right / left

//
//*********************************************************************************
vector m_VelLast;
rotation m_RotLast;

UpdateStatus(){
string msg;

msg = "Wheel = " + (string) m_WheelPos;
msg += "\nSpeed = " + (string) m_DesiredSpeed;
msg += "\nEnergy = " + (string) llGetEnergy();
llMessageLinked(LINK_ALL_CHILDREN, 1, msg, NULL_KEY);
}

//*********************************************************************************
default
{
state_entry()
{
llMessageLinked(LINK_ALL_CHILDREN, 0, "stop", NULL_KEY);
llCollisionSound("", 0.0);
llSetSitText("Drive");
llStopSound();

llSetTimerEvent(0.0);

llSitTarget(<0.1, 0.35, 0.6>, <0,-0.2,0,1>);
llSetCameraEyeOffset(<-5.0, 0.0, 2.5>);
llSetCameraAtOffset(<0.0, 0.0, 1.0>);

// remove all flags
llRemoveVehicleFlags(-1);

llSetStatus(STATUS_PHYSICS, FALSE);
llSetBuoyancy(1); //floats

llSetForceAndTorque(<0,0,0>,<0,0,0>,TRUE);


}
//****************************************************************************
on_rez(integer startPram){
llResetScript();
}
//****************************************************************************

changed(integer change)
{
if (change & CHANGED_LINK)
{
key agent = llAvatarOnSitTarget();
if (agent)
{
if (agent != llGetOwner())
{
llSay(0, "You aren't the owner");
llUnSit(agent);
llPushObject(agent, <0,0,100>, ZERO_VECTOR, FALSE);
}
else
{
// You sit and are owner so get controls
llSetStatus(STATUS_PHYSICS, TRUE);
llSetStatus(STATUS_ROTATE_X | STATUS_ROTATE_Y | STATUS_ROTATE_Z, TRUE);
llSetForceAndTorque(<0,0,0>,<0,0,0>,TRUE);
llRequestPermissions(agent,PERMISSION_TAKE_CONTROLS);

//timer is turned on after premissions are ok
}
}
else
{
// You stand so car stops
// llMessageLinked(LINK_ALL_CHILDREN, 0, "stop", NULL_KEY);
llSetForceAndTorque(<0,0,0>,<0,0,0>,TRUE);
llSetStatus(STATUS_PHYSICS, FALSE);
llSetStatus(STATUS_ROTATE_X | STATUS_ROTATE_Y | STATUS_ROTATE_Z, FALSE);
llReleaseControls();
llStopSound();
llSetTimerEvent(0.0);
}
}

}
//****************************************************************************
run_time_permissions(integer perm)
{
if (perm)
{
// Take these controls and lets go
llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_RIGHT | CONTROL_LEFT | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT | CONTROL_UP | CONTROL_DOWN, TRUE, FALSE);

m_DesiredSpeed=0;
m_WheelPos = 0; // Right / left
UpdateStatus();
llLoopSound("car idle",0.3);
llSetTimerEvent(0.3);
}
}
//****************************************************************************
control(key id, integer level, integer edge)
{

if(level & CONTROL_FWD)
{
// Set cruising speed faster
if(m_DesiredSpeed < 20) //limit forward speed
{
m_DesiredSpeed +=1;
UpdateStatus();
}
}
if(level & CONTROL_BACK)
{
// Set cruising speed slower
if(m_DesiredSpeed > 10) //limit reverse speed
{
m_DesiredSpeed -=1;
UpdateStatus();
}
}
if((level & CONTROL_FWD) && (level & CONTROL_BACK))
{
// Forwards and Backwards <-- Brakes or stops
// llMessageLinked(LINK_ALL_CHILDREN, 0, "brake", NULL_KEY);
m_DesiredSpeed=0;
UpdateStatus();
}
if(level & (CONTROL_RIGHT|CONTROL_ROT_RIGHT))
{
m_WheelPos += 1; // Turn right
UpdateStatus();
}
if(level & (CONTROL_LEFT|CONTROL_ROT_LEFT))
{
m_WheelPos -= 1 ; // Turn left
UpdateStatus();
}
if(level & CONTROL_UP)
{
// add features for when you press up
}
if(level & CONTROL_DOWN)
{
// Added feature for when you press down
}

}
//****************************************************************************
timer()
{

// the timer actually moves vehicle
vector Force;
vector torque;

vector curVel = llGetVel();
rotation rot = llGetRot();
curVel /= rot; // Un-rotate curVel to our orentation

Force.x = m_DesiredSpeed; //forward
Force.y = 0; //Right left
Force.z = 0; //up down

Force -= curVel; // remove current speed
Force *= .3; //dampen accel/decell

Force.z += -0.58; //make gravity again, but in local direction.

Force *= llGetMass();

torque.x = 0;
torque.y = 0;
torque.z = 0;

llApplyImpulse(Force,TRUE);

torque.x = 0;
torque.y = 0;
torque.z = m_WheelPos * -0.5;
llApplyRotationalImpulse(torque, TRUE);
if (m_WheelPos != 0){
m_WheelPos =0;
UpdateStatus();
};

} //timer
}