The Ragdoll worked good till I added (mystymoon).
Now it still works but there is no more gravity, I used for the grafity;
"ph_setgravity(vector(0, 0, -1500));"

"http://dl8.rapidshare.de/files/48696949/682793447/shot_0.jpg"

(Post me for more information)
And wenn the grafity works, everybody can copy it in his own projeckt, the die function is called "die_soldier()"

And I will post here the ragdollscript, when it`s ok?;
_______________________________________________________________

#define PRAGMA_PATH "scripts"
#define PRAGMA_PATH "models"
#define PRAGMA_PATH "textures"//for level (mystymood)

#include <acknex.h>
#include <default.c>
#include "level.c"// (mystymood)

#define PRAGMA_PATH "body_dummy";

STRING* level_str = "level.wmb";

VECTOR Hinge1, Hinge2;

var GroupID = 2;
var low_rot_dist = 5;

function die_soldier();

void updateBoneHinge(ENTITY* hingeEnt, STRING* bodyPart, ENTITY* actor) {
VECTOR temp_pos, temp_ang, temp_mov, temp_ang_1;

ENTITY* hingePointer = hingeEnt;
ENTITY* actorPointer = actor;
STRING* updatePart = bodyPart;

while(hingePointer) {

ent_bonereset(actorPointer, updatePart);

vec_for_bone(temp_pos, actorPointer, updatePart);
ang_for_bone(temp_ang, actorPointer, updatePart);

vec_set(temp_mov, hingePointer.x);
vec_sub(temp_mov, temp_pos);

temp_mov.x = actorPointer.scale_x; temp_mov.y = actorPointer.scale_y; temp_mov.z = actorPointer.scale_z;
temp_ang.x = 360-temp_ang.x; temp_ang.y = 360-temp_ang.y; temp_ang.z = 360-temp_ang.z;

vec_set(temp_ang_1, nullvector);
ang_add(temp_ang_1, vector(temp_ang.x,0,0));
ang_add(temp_ang_1, vector(0,temp_ang.y,0));
ang_add(temp_ang_1, vector(0,0,temp_ang.z));

ang_rotate(temp_ang_1, hingePointer.pan);
ent_bonerotate(you, updatePart, temp_ang_1);

wait(1);
}
}

void setLimit(VECTOR* vec1, VECTOR* vec2) {
vec_set(Hinge1, vec1);
vec_set(Hinge2, vec2);
}

void BodyPartInit(var mass, ENTITY* entityMe) {
set(entityMe, PASSABLE);

entityMe.pan = 180;

phent_settype(entityMe, PH_RIGID, PH_BOX);
phent_setmass(entityMe, mass, PH_BOX);

phent_setgroup(entityMe, GroupID);
phent_setfriction(entityMe, 40);
phent_setdamping(entityMe, 40, 40);
phent_setelasticity(entityMe, 10, 10);

reset(entityMe, PASSABLE);
}

void setHinge(ENTITY* constr_1, ENTITY* constr_2) {
var tempHinge;

tempHinge = phcon_add(PH_HINGE, constr_1, constr_2);
phcon_setparams1(tempHinge, constr_1.x, Hinge1, nullvector);
phcon_setparams2(tempHinge, Hinge2, nullvector, nullvector);
}

void setRagdollPart() {
set(my, INVISIBLE);
}

function die_soldier() {
ENTITY* Ent_1;
ENTITY* Ent_2;
ENTITY* Ent_3;

GroupID += 1;

var tempVertex;

you = ent_create("dummy.mdl.", nullvector, NULL);
set(you, PASSABLE);

Ent_1 = my;
setRagdollPart();
BodyPartInit(20, Ent_1);
setHinge(Ent_1, Ent_1);

vec_for_vertex(tempVertex, Ent_1, 23);
Ent_2 = ent_create("leg_up_left.mdl", tempVertex, setRagdollPart);
setLimit(vector(1,1,1), vector(-40,40,0));
BodyPartInit(5, Ent_2);
setHinge(Ent_2, Ent_1);
updateBoneHinge(Ent_2, "leg_up_left", you);

vec_for_vertex(tempVertex, Ent_2, 9);
Ent_3 = ent_create("leg_down_left.mdl", tempVertex, setRagdollPart);
setLimit(vector(0,1,0), vector(0,120,0));
BodyPartInit(20, Ent_3);
setHinge(Ent_3, Ent_2);
updateBoneHinge(Ent_3, "leg_down_left", you);

vec_for_vertex(tempVertex, Ent_1, 22);
Ent_2 = ent_create("leg_up_right.mdl", tempVertex, setRagdollPart);
setLimit(vector(1,1,1), vector(-40,40,0));
BodyPartInit(5, Ent_2);
setHinge(Ent_2, Ent_1);
updateBoneHinge(Ent_2, "leg_up_right", you);

vec_for_vertex(tempVertex, Ent_2, 9);
Ent_3 = ent_create("leg_down_right.mdl", tempVertex, setRagdollPart);
setLimit(vector(0,1,0), vector(0,120,0));
BodyPartInit(20, Ent_3);
setHinge(Ent_3, Ent_2);
updateBoneHinge(Ent_3, "leg_down_right", you);

vec_for_vertex(tempVertex, Ent_1, 21);
Ent_2 = ent_create("abs.mdl", tempVertex, setRagdollPart);
setLimit(vector(1,1,0), vector(-15,15,0));
BodyPartInit(20, Ent_2);
setHinge(Ent_2, Ent_1);
updateBoneHinge(Ent_2, "stomach", you);

vec_for_vertex(tempVertex, Ent_2, 17);
Ent_1 = ent_create("torso.mdl", tempVertex, setRagdollPart);
setLimit(vector(1,1,0), vector(-20,20,0));
BodyPartInit(55, Ent_1);
setHinge(Ent_1, Ent_2);
updateBoneHinge(Ent_1, "torso", you);

vec_for_vertex(tempVertex, Ent_1, 21);
Ent_2 = ent_create("arm_up_left.mdl", tempVertex, setRagdollPart);
setLimit(vector(1,1,1), vector(-70, 116,20));
BodyPartInit(5, Ent_2);
setHinge(Ent_2, Ent_1);
updateBoneHinge(Ent_2, "arm_up_left", you);

vec_for_vertex(tempVertex, Ent_2, 9);
Ent_3 = ent_create("arm_down_left.mdl", tempVertex, setRagdollPart);
setLimit(vector(1,1,0), vector(270,0,0));
BodyPartInit(20, Ent_3);
setHinge(Ent_3, Ent_2);
updateBoneHinge(Ent_3, "arm_down_left", you);

vec_for_vertex(tempVertex, Ent_1, 22);
Ent_2 = ent_create("arm_up_right.mdl", tempVertex, setRagdollPart);
setLimit(vector(1,1,1), vector(-70,116,20));
BodyPartInit(5, Ent_2);
setHinge(Ent_2, Ent_1);
updateBoneHinge(Ent_2, "arm_up_right", you);

vec_for_vertex(tempVertex, Ent_2, 9);
Ent_3 = ent_create("arm_down_right.mdl", tempVertex, setRagdollPart);
setLimit(vector(1,1,0), vector(270,0,0));
BodyPartInit(20, Ent_3);
setHinge(Ent_3, Ent_2);
updateBoneHinge(Ent_3, "arm_down_right", you);

vec_for_vertex(tempVertex, Ent_1, 23);
Ent_2 = ent_create("head.mdl", tempVertex, setRagdollPart);
setLimit(vector(1,1,0), vector(-45,45,0));
BodyPartInit(25, Ent_2);
setHinge(Ent_2, Ent_1);
updateBoneHinge(Ent_2, "head", you);

while(you) {
vec_set(you.x, my.x);
vec_set(you.pan, my.pan);

wait(1);
}
}

void main() {
vec_set(Hinge1, nullvector);
vec_set(Hinge2, nullvector);

video_screen = 1;
video_mode = 8;
fps_max = 100;
ph_iterations = 20;
time_smooth = 0.99;
clip_size = 0;
var max_entities = 5000;
terrain_chunk = 64;

wait(1);
level_load("test_level.wmb");
wait(3);
wait(-1);

ph_setgravity(vector(0, 0, -1500));
ph_setcorrections(9000, 0);
ph_setcollisions(1000, 2);
wait(1);
}

ENTITY* actor;

action ragdoll()
{
actor = me;
wait (1);
my.event = die_soldier();
}

Last edited by Blackchuck; 11/17/09 19:19.

I have know Gamestudio/A7 Commercial Edition 7.84