|
Veteran Member
|
08-05-2010
, 10:59
Re: Changing Clients Speed Without using "m_flLaggedMovementValue"
|
#11
|
Quote:
Originally Posted by javalia
i made this code for my tactical gunmod`s maximum speed suit fucntion
lol this code is crap but it works lol
Code:
if(suitmode[client] == suitmode_speed){
if(((buttons & IN_FORWARD) || (buttons & IN_BACK) || (buttons & IN_MOVELEFT) || (buttons & IN_MOVERIGHT)) && !(buttons & IN_DUCK) && !(buttons & IN_SPEED) && (GetEntityFlags(client) & FL_ONGROUND)){
if(armorvalue >= SUIT_SPEED_ENERGY){
decl Float:playerspeed[3], Float:clienteyeangle[3], Float:anglevector[3];
GetEntPropVector(client, Prop_Data, "m_vecVelocity", playerspeed);
GetClientEyeAngles(client, clienteyeangle);
clienteyeangle[0] = 0.0;
//플레이어의 위와 아래로 가는 속도는 기존 속도에서 가져오고,
//플레이어가 갈 방향의 속도를 플레이어의 눈 각도로부터 만든 벡터에서 가져온다
//눌린 이동버튼의 조합을 통해서 이동할 방향을 구한다
//앞이나 뒤중 하나만이 눌려있거나 아무것도 눌려선 안된다
if(((buttons & IN_FORWARD) && !(buttons & IN_BACK)) || (!(buttons & IN_FORWARD) && (buttons & IN_BACK))|| (!(buttons & IN_FORWARD) && !(buttons & IN_BACK))){
//좌나 우중 하나 혹은 아무것도 눌려있어선 안된다
if(((buttons & IN_MOVELEFT) && !(buttons & IN_MOVERIGHT)) || (!(buttons & IN_MOVELEFT) && (buttons & IN_MOVERIGHT)) || (!(buttons & IN_MOVELEFT) && !(buttons & IN_MOVERIGHT))){
//앞으로 가기 버튼이 눌린 경우
if(buttons & IN_FORWARD){
//왼쪽이 눌린 경우
if(buttons & IN_MOVELEFT){
clienteyeangle[1] = clienteyeangle[1] + 45.0;
}else if(buttons & IN_MOVERIGHT){
//오른쪽이 눌린 경우
clienteyeangle[1] = clienteyeangle[1] - 45.0;
}
}else if(buttons & IN_BACK){
//방향을 뒤로
clienteyeangle[1] = clienteyeangle[1] + 180.0;
//왼쪽이 눌린 경우
if(buttons & IN_MOVELEFT){
clienteyeangle[1] = clienteyeangle[1] - 45.0;
}else if(buttons & IN_MOVERIGHT){
//오른쪽이 눌린 경우
clienteyeangle[1] = clienteyeangle[1] + 45.0;
}
}else{
//왼쪽이 눌린 경우
if(buttons & IN_MOVELEFT){
clienteyeangle[1] = clienteyeangle[1] + 90.0;
}else if(buttons & IN_MOVERIGHT){
//오른쪽이 눌린 경우
clienteyeangle[1] = clienteyeangle[1] - 90.0;
}
}
}
}
GetAngleVectors(clienteyeangle, anglevector, NULL_VECTOR, NULL_VECTOR);
NormalizeVector(anglevector, anglevector);
ScaleVector(anglevector, 40.0);
AddVectors(playerspeed, anglevector, playerspeed);
if(GetVectorLength(playerspeed) >= SUIT_SPEED_MAXSPEED){
NormalizeVector(playerspeed, playerspeed);
ScaleVector(playerspeed, SUIT_SPEED_MAXSPEED);
}
TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, playerspeed);
if(nextsuitactivetime[client] < nowtime){
nextsuitactivetime[client] = nowtime + SUIT_SPEED_DELAY;
SetEntProp(client, Prop_Data, "m_ArmorValue", armorvalue - SUIT_SPEED_ENERGY);
}
}else{
PrintToChat(client, "\x04%T", "suitenergydepleted", client);
nextsuitactivetime[client] = nowtime + SUIT_CHARGE_DELAY;
suitmode[client] = suitmode_charge;
cancelreservesuithelpsound(client);
playsuithelpsound(client, SOUNDSUITNOENERGY);
}
}
}
|
this is really bad coding and i wouldnt recomend using this anyhow. i want an actual player speed. i tryed m_flMaxspeed but i got a glitchy resuit ill try do it another way
__________________
Master(d)
|
|
|
|