|
Форум Программирование C++/C Программирование [mod_sa] CarShot aka CarDrive |
[mod_sa] CarShot aka CarDrive |
Offline
Всем привет, и это урок по добавлению в sobeit CarShot aka CarDrive
В samp.cpp Код: if (cheat_state->_generic.cardrive == 1) { struct actor_info *self = actor_info_get(-1, ACTOR_ALIVE); struct vehicle_info *info = vehicle_info_get( -1, 0 ); if (info != NULL) { self->fCurrentRotation = -pGame->GetCamera()->GetCameraRotation(); self->fTargetRotation = self->fCurrentRotation; info->base.matrix[4] = sinf(-self->fCurrentRotation); info->base.matrix[5] = cosf(-self->fCurrentRotation); if (KEY_DOWN('W')) ///W для езды вперед { info->speed[0] = sinf(-self->fCurrentRotation) * 0.8; ///0.8 скорость info->speed[1] = cosf(-self->fCurrentRotation) * 0.8; } if (KEY_DOWN('S'))///S для езды назад { info->speed[0] = sinf(-self->fCurrentRotation) * -0.5; info->speed[1] = cosf(-self->fCurrentRotation) * -0.5; } if (KEY_DOWN(0x20))//Space для взлета { info->speed[2] += 0.05; } if (KEY_DOWN(0xA2))///LCtrl для приземления { info->speed[2] -= 0.05; } if (KEY_DOWN(0xA0))//LShift для торможения { info->speed[0] = 0.0; info->speed[1] = 0.0; } } } В cheat_generic.cpp Код: void cheat_handle_cardrive() { traceLastFunc( "cheat_handle_cardrive()" ); if (cheat_state->_generic.cardrive == 1) { return; } } В cheat.h ко всем generic Код: int cardrive; Теперь в cheat_vehicle.cpp Находим Код: void cheat_handle_vehicle_unflip ( struct vehicle_info *info, float time_diff ) Удаляем весь это-т void и ставим место него вот это-т код Код: void cheat_handle_vehicle_unflip ( struct vehicle_info *info, float time_diff ) { traceLastFunc( "cheat_handle_vehicle_unflip()" ); if ( KEY_DOWN(set.key_unflip) || cheat_state->_generic.cardrive == 1 && cheat_state->state == CHEAT_STATE_VEHICLE ) { struct vehicle_info *info = vehicle_info_get( VEHICLE_SELF, NULL ); struct actor_info *self = actor_info_get(ACTOR_SELF, ACTOR_ALIVE); self->fCurrentRotation = -pGame->GetCamera()->GetCameraRotation(); self->fTargetRotation = self->fCurrentRotation; traceLastFunc( "cheat_handle_vehicle_unflip()" ); float fTimeStep = *(float *)0xB7CB5C; CVehicle *cveh = getSelfCVehicle(); CVector cvehGrav; CMatrix cvehMatrix; cveh->GetGravity( &cvehGrav ); cveh->GetMatrix( &cvehMatrix ); CVector rotationAxis = cheat_vehicle_getPositionUnder( cveh ); cvehGrav.Normalize(); rotationAxis.Normalize(); float theta = acos( rotationAxis.DotProduct(&cvehGrav) ); if ( !near_zero(theta) ) { rotationAxis.CrossProduct( &cvehGrav ); rotationAxis.Normalize(); rotationAxis.ZeroNearZero(); cvehMatrix = cvehMatrix.Rotate( &rotationAxis, -theta ); } theta = M_PI / ( 75.0f / fTimeStep ); CVector slowTurnAxis = cvehMatrix.vUp; slowTurnAxis.Normalize(); slowTurnAxis.ZeroNearZero(); cvehMatrix = cvehMatrix.Rotate( &cvehMatrix.vUp, theta ); cveh->SetMatrix( &cvehMatrix ); CVector vZero ( 0.0f, 0.0f, 0.0f ); cveh->SetTurnSpeed( &vZero ); info->base.matrix[4] = sinf(-self->fCurrentRotation); info->base.matrix[5] = cosf(-self->fCurrentRotation); } } Теперь в new_menu.cpp Код: TwAddVarRW(twBar_SPNewCheats, "Car Drive", TW_TYPE_BOOLCPP, &cheat_state->_generic.cardrive, " label='Car Drive' group='WithCar' "); |
| |||
| |||