Someone
Участник
- Сообщения
- 1,933
- Реакции
- 1,653
Я не совсем понимаю, что именно тебе нужно из того примера.Вот ты попробуй найти тот пример что я скинул
Я не совсем понимаю, что именно тебе нужно из того примера.Вот ты попробуй найти тот пример что я скинул
m_bSpotted - 4Я не совсем понимаю, что именно тебе нужно из того примера.
Это prop_physics?@Черная вдова,
Я Дрона делал для cs-go. Перенес все модели, звуки, текстуры и т.д. Модели пришлось перекомпилировать, переделывать физбоксы, хотбоксы. Сам референс вроде нормально встал.
Я даже видео на своем канале выкладывал, как он там летает.
А здесь кому то делал бабочек плагин
Не понравился мне движек, своими тупыми коллизиями. Тяжел в запуске.
Моя общая оценка этому движку - г.....но полное. Но это моё, личное, мнение.
А для чего эта скорость нужна тебе? Ты хочешь определить остановку? Я так понимаю, ты им управляешь с клавиатуры?Скорость не постоянна потому что проп скребется об пол и стукается об стенки
Ну и что ? Это нетпроп, который у целой кучи энтити есть.m_bSpotted - 4
[CSGO] Как скрыть игрока с радара
Я же сказал что это машинаА для чего эта скорость нужна тебе? Ты хочешь определить остановку? Я так понимаю, ты им управляешь с клавиатуры?
prop_physics_override
Сделай видос, что бы было понятно чего ты хочешь.
да да покажи мнеНу и что ? Это нетпроп, который у целой кучи энтити есть.
VTable DumperПокажи как
"Games"
{
"tf"
{
"Offsets"
{
"CTFPlayer::GetSmoothedVelocity"
{
"windows" "139"
"linux" "140"
}
}
}
}
#include <sourcemod>
#pragma semicolon 1
#pragma newdecls required
Handle g_fnGetSmoothedVelocity;
public APLRes AskPluginLoad2(Handle hMySelf, bool bLate, char[] szError, int iErrMax) {
if(GetEngineVersion() != Engine_TF2) {
strcopy(szError, iErrMax, "This plugin only works for Team Fortress 2");
return APLRes_Failure;
}
return APLRes_Success;
}
public void OnPluginStart() {
// Load SDK configuration.
Handle hConf = LoadGameConfigFile("TF2_GetSmoothedVelocity");
if (!hConf) {
__FuckMe(0);
}
// Initialize SDK function (GetSmoothedVelocity).
StartPrepSDKCall(SDKCall_Player);
if (!PrepSDKCall_SetFromConf(hConf, SDKConf_Virtual, "CTFPlayer::GetSmoothedVelocity") || !PrepSDKCall_SetReturnInfo(SDKType_Vector, SDKPass_Plain)) {
CloseHandle(hConf);
__FuckMe(1);
}
// Get function pointer.
g_fnGetSmoothedVelocity = EndPrepSDKCall();
CloseHandle(hConf);
if (!g_fnGetSmoothedVelocity) {
__FuckMe(1);
}
}
void __FuckMe(int iReason) {
char szReason[128];
switch (iReason) {
case 0: strcopy(szReason, sizeof(szReason), "Can't load gamedata file TF2_GetSmoothedVelocity.");
case 1: strcopy(szReason, sizeof(szReason), "Can't create SDKCall function for CTFPlayer::GetSmoothedVelocity. Gamedata is incorrect.");
}
SetFailState("Can't finish initializing: %s", szReason);
}
void UTIL_GetSmoothedVelocity(int iClient, float[3] flResult) {
return SDKCall(g_fnGetSmoothedVelocity, iClient, flResult);
}
/**
* usage:
* float[3] flSmoothedVelocity;
* UTIL_GetSmoothedVelocity(iClient, flSmoothedVelocity);
*/
CS:GO не работаетVTable Dumper
Выбираешь свою игру. Если её нет - придётся вручную доставать оффсет. Можно попробовать дропнуть so-файл нужной игры.
Находишь GetSmoothedVelocity у нужной энтити. На примере TF2, и энтити CTFPlayer:
Посмотреть вложение 38336
Теперь составляем геймдату:
C-подобный:"Games" { "tf" { "Offsets" { "CTFPlayer::GetSmoothedVelocity" { "windows" "139" "linux" "140" } } } }
Теперь надо посмотреть сигнатуру функции. Тут либо применяем иду, либо смотрим в исходники движка.
Т.к. есть исходники конкретно этой функции, и у TF2 она явно без изменений, составляем код для подготовки SDKCall (за основу взят один из недавних плагинов для TF2):
C-подобный:#include <sourcemod> #pragma semicolon 1 #pragma newdecls required Handle g_fnGetSmoothedVelocity; public APLRes AskPluginLoad2(Handle hMySelf, bool bLate, char[] szError, int iErrMax) { if(GetEngineVersion() != Engine_TF2) { strcopy(szError, iErrMax, "This plugin only works for Team Fortress 2"); return APLRes_Failure; } return APLRes_Success; } public void OnPluginStart() { // Load SDK configuration. Handle hConf = LoadGameConfigFile("TF2_GetSmoothedVelocity"); if (!hConf) { __FuckMe(0); } // Initialize SDK function (GetSmoothedVelocity). StartPrepSDKCall(SDKCall_Player); if (!PrepSDKCall_SetFromConf(hConf, SDKConf_Virtual, "CTFPlayer::GetSmoothedVelocity") || !PrepSDKCall_SetReturnInfo(SDKType_Vector, SDKPass_Plain)) { CloseHandle(hConf); __FuckMe(1); } // Get function pointer. g_fnGetSmoothedVelocity = EndPrepSDKCall(); CloseHandle(hConf); if (!g_fnGetSmoothedVelocity) { __FuckMe(1); } } void __FuckMe(int iReason) { char szReason[128]; switch (iReason) { case 0: strcopy(szReason, sizeof(szReason), "Can't load gamedata file TF2_GetSmoothedVelocity."); case 1: strcopy(szReason, sizeof(szReason), "Can't create SDKCall function for CTFPlayer::GetSmoothedVelocity. Gamedata is incorrect."); } SetFailState("Can't finish initializing: %s", szReason); } void UTIL_GetSmoothedVelocity(int iClient, float[3] flResult) { return SDKCall(g_fnGetSmoothedVelocity, iClient, flResult); } /** * usage: * float[3] flSmoothedVelocity; * UTIL_GetSmoothedVelocity(iClient, flSmoothedVelocity); */
используешь позицию геймдаты который уже есть в sourcemod@Крузяра,
Гайд по созданию своего чита.
Замудренно как. Для какой цели все это? Есть целесообразность? Бред да и только.
Обновят движек и всё по-слетает.
В каком месте это чит?Гайд по созданию своего чита.
Человек спросил - я ответил.Замудренно как. Для какой цели все это?
Через вызовы к SDK можно сделать намного больше, чем без них.Есть целесообразность?
От одной геймдаты, составленной в 2015 году, у меня работало два сервера вплоть до середины в 2018 (потом мне просто надоело это всё). Все в TF2. Движок с тех пор обновлялся, апгрейдился, как и сама игра. А файлы оставались неизменны.Обновят движек и всё по-слетает.
Оффсета нет или что? Уточняйте.CS:GO не работает
AlliedModders - View Single Post - A vtable dumper that even you can use!Оффсета нет или что? Уточняйте.
Вы сейчас похожи на "серверодержателей", которые пишут о проблемах, но не могут сразу назвать игру, перечень плагинов и многое другое. И из них, конечно, приходится вытягивать всё насильно, что раздражает.
Покажи как
#include <sourcemod>
#include <sdktools>
Handle g_fnGetVelocity = INVALID_HANDLE;
public void OnPluginStart()
{
Handle hConfig = LoadGameConfigFile("sdktools.games/engine.csgo");
if(hConfig == INVALID_HANDLE)
SetFailState("Load Config Fail");
StartPrepSDKCall(SDKCall_Entity);
if (PrepSDKCall_SetFromConf(hConfig, SDKConf_Virtual, "GetVelocity"))
{
PrepSDKCall_AddParameter(SDKType_Vector, SDKPass_Plain, 0, VENCODE_FLAG_COPYBACK);
PrepSDKCall_AddParameter(SDKType_Vector, SDKPass_Plain, 0, VENCODE_FLAG_COPYBACK);
g_fnGetVelocity = EndPrepSDKCall();
}
CloseHandle(hConfig);
if (g_fnGetVelocity == INVALID_HANDLE)
SetFailState("PrepSDKCall Fail");
}
void GetVelocity(int ent, float[3] vel)
{
float amp[3];
SDKCall(g_fnGetVelocity, ent, vel, amp);
}
virtual void GetVelocity(Vector *vVelocity, AngularImpulse *vAngVelocity = NULL);А точно так 2 раза надо ?
Ты читать будешь какие нибудь мои ответы? Я уже писал что вектор этот и еше один всегда по нулям, зачем ты еше раз пишешь@Крузяра,
Мне некогда посты набивать. Вообще некогда на форумах сидеть, завис здесь только из-за своего вопроса, а здесь смотрю - тема интересная. По моему направлению.
Непонятно упрямство Вдовы, не может объяснить, каким образом он управляет этой машиной. Для управления он ведь по любому задает скорость. Как то задает повороты.
Я предполагаю его следующие вопросы:
1. машина уперлась во что-то твердое (отсутствует движение). Если управление с клавиатуры - этот пункт просто не нужен.
2. нужно вывести показания текущей скорости на, к примеру, спидометр, это для визуального эффекта.
3. что-то другое. Это самое интересное, возможно что-то для себя интересное узнаю.
4. упустил еще одно - карта с готовой машиной, двигающейся по пач-трэкам, такое "существо из мира". Но "существом из мира" возможности управлять из sourcepawna нет точно. Этот пункт отпадает.
Заданная скорость, в виде вектора, никак не будет изменяться из-за внешнего воздействия(мира), поэтому все что ты ему советуешь, я думаю, просто бесполезно.
А вот получаемая скорость по мат. формуле будет изменяться, это точно.
И не пойму, почему для изменения скорости нельзя воспользоваться этим GetEntPropVector(ent, Prop_Data, "m_vecVelocity", Speed); 100% работоспособно.
Это не есть скорость в её понимании, это вектор!
Много непонятного, все какое-то мутное.
Сам вопрос был, как получить скорость. Вот я и не могу понять, для чего нужно получение скорости, тем более в виде вектора.
Насчет читов, кто знает - тот поймет, хотя, в принципе, они и так это знают получше нашего.
И кстати, выдели этот гайд-урок в отдельную тему. Пригодиться может многим.
Как вариант, для скорости машины он берёт за основу скорость игрока. Но это чисто вариант.Вот я и не могу понять, для чего нужно получение скорости, тем более в виде вектора.
Сначала его доработать надо. Дописать варианты, например, в случае с CS:GO, когда автоматически оффсеты не вытащить никак, и только ручками в бинаре покопаться.И кстати, выдели этот гайд-урок в отдельную тему. Пригодиться может многим.