3 registered members (VoroneTZ, monk12, Quad),
829
guests, and 4
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Re: punch hole in terrain
[Re: DAVIDMORETON]
#472173
04/14/18 09:17
04/14/18 09:17
|
Joined: Jun 2009
Posts: 2,210 Bavaria, Germany
Kartoffel
Expert
|
Expert
Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
|
take a look at your "{" "}" Edit: nevermind, didn't see that your wrote two different versions of your while loop (I assumed you used the exact code you posted)
Last edited by Kartoffel; 04/14/18 09:20.
POTATO-MAN saves the day! - Random
|
|
|
Re: punch hole in terrain
[Re: Dooley]
#472176
04/14/18 17:04
04/14/18 17:04
|
Joined: May 2005
Posts: 868 Chicago, IL
Dooley
User
|
User
Joined: May 2005
Posts: 868
Chicago, IL
|
Another option would be to move your entity directly, like this: var going_down = 0;
While(ent.z > -100) { going_down = 1; ent.z -= 5*time_step; wait(1); }
going_down = 0;
This would cause the entity to move down without checking any collision. If your player entity has a c_move function, it will be checking collision. You could effectively turn this off while it is going down through the terrain by surrounding your c_move with an "if" statement... if(going_down == 0) { c_move(ent,move_vec,abs_vec,GLIDE|ETC...) ; }
Last edited by Dooley; 04/14/18 17:11.
|
|
|
Re: punch hole in terrain
[Re: DAVIDMORETON]
#472230
04/17/18 13:56
04/17/18 13:56
|
Joined: Jan 2005
Posts: 282 devon UK
DAVIDMORETON
OP
Member
|
OP
Member
Joined: Jan 2005
Posts: 282
devon UK
|
PROBLEM SOLVED !! Terrain can be made PASSABLE - also INVISIBLE. The falling sphere is used just for 'something' to change and trigger the terrain action. This is the new code - it may help someone (I hope!);-
#include <acknex.h> #include <default.c> #include "t_player.h" //////////////////////////////
ENTITY* player="t_player";
ENTITY* terrain = "tester.hmp";
ENTITY* sphere = "ball.mdl";
function main() { level_load("xc1.WMB");
}
action down() //attached to sphere (drops to z-16 to make terrain passable and invisible) {
while(sphere.z>-16) { sphere=me; sphere.z -= 3*time_step; wait(1); } { wait(-2); //needed to stop 'judder' terrain=me; set(my,INVISIBLE); //needed to stop flash of light as //player drops through terrain set(terrain,PASSABLE); }}
Probably not very elegant, but it works. Got it by 'fiddling about' a lot - I felt it should work somehow. David
NEW - FOUND A BETTER WAY!
remove:-
wait(-2); and set(my,INVISIBLE); and set(terrain,PASSABLE);
then replace with:-
ptr_remove(me);
Much cleaner and it works - hope it helps David
PS. This is used for player who crosses terrain to tower in middle - enters tower - sets code and drops through to cave system below.
Last edited by DAVIDMORETON; 04/20/18 10:15.
|
|
|
|