стал легче
SetEntityGravity(entity, Float:amount);
Хорошо, а как мне это присвоить именно к тому мячу к которому нужно?Не?PHP:SetEntityGravity(entity, Float:amount);
Как я пойму что это нужный мне предмет?
ОффтопКак я пойму что это нужный мне предмет?
#include <sdktools>
public OnPluginStart() RegConsoleCmd("sm_lowgravity", SetLowGravity, "Установить объекту на прицеле низкую гравитацию.");
public Action:SetLowGravity(client, args)
{
if (client)
{
decl entity;
if ((entity = GetClientAimTarget(client, false)) != -1)
{
SetEntityGravity(entity, 0.7);
PrintToChat(client, "\x01Объекту \x03%i \x01установлена уменьшенная гравитация.", entity);
}
}
return Plugin_Handled;
}
public OnGameFrame()
{
static String:classname[32], entity;
for (new i = 1; i <= MaxClients; ++i)
{
if (IsClientInGame(i) && (entity = GetClientAimTarget(i, false)) != -1)
{
GetEdictClassname(entity, classname, sizeof(classname));
PrintHintText(i, "Вы смотрите на\nEntity index: %i classname: %s", entity, classname);
}
}
}
//public OnConfigsExecuted() ServerCommand("sv_hudhint_sound 0");
Не работает. В начале видео так как я хочу чтобы было, а дальше как на самом делеОффтопОффтопДа прибудет с тобой сила скриптинга! :biggrin:Там же, выше, есть мой инструмент контроля entity - если делать нечего, можешь даже просто удалять все подозрительные объекты. Когда мяч исчезнет - ты его нашёл. ОффтопЛучше ещё пробовать "твёрдость" мяча после удаления объекта, например, ножом. Некоторые объекты всё же сохраняют свой визуальный образ, когда их уже нет.
ОффтопP.S. Да, решил помучить. :biggrin: Может от таких манипуляций наберётся чего, уяснит для себя новое.
Для "лентяев":
PHP:#include <sdktools> public OnPluginStart() RegConsoleCmd("sm_lowgravity", SetLowGravity, "Установить объекту на прицеле низкую гравитацию."); public Action:SetLowGravity(client, args) { if (client) { decl entity; if ((entity = GetClientAimTarget(client, false)) != -1) { SetEntityGravity(entity, 0.7); PrintToChat(client, "\x01Объекту \x03%i \x01установлена уменьшенная гравитация.", entity); } } return Plugin_Handled; } public OnGameFrame() { static String:classname[32], entity; for (new i = 1; i <= MaxClients; ++i) { if (IsClientInGame(i) && (entity = GetClientAimTarget(i, false)) != -1) { GetEdictClassname(entity, classname, sizeof(classname)); PrintHintText(i, "Вы смотрите на\nEntity index: %i classname: %s", entity, classname); } } } //public OnConfigsExecuted() ServerCommand("sv_hudhint_sound 0");
Ясное дело. Такая установка работает далеко не для всего и вся. Это лишь пример, как узнать необходимые данные и произвести над ним мгновенное действие. Само же действие нужно "подбирать" в func_physbox - Valve Developer Community, в частности, смотри Physics Override Parameters.Не работает
func_physbox.@Kruzi, classname мяча какой?
Кстати, на игроках гравитация уменьшаетсяЯсное дело. Такая установка работает далеко не для всего и вся. Это лишь пример, как узнать необходимые данные и произвести над ним мгновенное действие. Само же действие нужно "подбирать" в func_physbox - Valve Developer Community, в частности, смотри Physics Override Parameters.
Дело ясное, это для них обычная функция.на игроках гравитация уменьшается
int ball_entity = FindEntityByClassname(-1, "func_physbox");
if (ball_entity != 0)
{
SetEntityGravity(ball_entity, 0.7);
}
#pragma semicolon 1
#include <sdkhooks>
#pragma newdecls required
#if SOURCEMOD_V_MAJOR >= 1 && (SOURCEMOD_V_MINOR >= 8 || SOURCEMOD_V_MINOR >= 7 && SOURCEMOD_V_RELEASE >= 2)
public void OnEntityCreated(int entity, const char[] classname)
#else
public int OnEntityCreated(int entity, const char[] classname)
#endif
{
if (IsValidEdict(entity) && IsValidEntity(entity))
{
if (StrEqual(classname, "func_physbox"))
{
SDKHook(entity, SDKHook_OnTakeDamage, OnEntityTakeDamage);
}
}
}
public Action OnEntityTakeDamage(int client, int &attacker, int &inflictor, float &damage, int &damagetype)
{
if (IsValidEdict(client) && IsValidEntity(client))
{
SetEntityGravity(client, 0.7);
}
return Plugin_Continue;
}
Оба варианта не помогли. Первый делал так:--- Добавлено позже ---C-подобный:int ball_entity = FindEntityByClassname(-1, "func_physbox"); if (ball_entity != 0) { SetEntityGravity(ball_entity, 0.7); }
Еще как вариант.
C-подобный:#pragma semicolon 1 #include <sdkhooks> #pragma newdecls required #if SOURCEMOD_V_MAJOR >= 1 && (SOURCEMOD_V_MINOR >= 8 || SOURCEMOD_V_MINOR >= 7 && SOURCEMOD_V_RELEASE >= 2) public void OnEntityCreated(int entity, const char[] classname) #else public int OnEntityCreated(int entity, const char[] classname) #endif { if (IsValidEdict(entity) && IsValidEntity(entity)) { if (StrEqual(classname, "func_physbox")) { SDKHook(entity, SDKHook_OnTakeDamage, OnEntityTakeDamage); } } } public Action OnEntityTakeDamage(int client, int &attacker, int &inflictor, float &damage, int &damagetype) { if (IsValidEdict(client) && IsValidEntity(client)) { SetEntityGravity(client, 0.7); } return Plugin_Continue; }
#include <sdktools>
public OnPluginStart() RegConsoleCmd("sm_lg", SetLowGravity, "Установить объекту на прицеле низкую гравитацию.");
public Action:SetLowGravity(client, args)
{
if (client)
{
int ball_entity = FindEntityByClassname(-1, "func_physbox");
if ((ball_entity = GetClientAimTarget(client, false)) != -1)
{
if (ball_entity != 0)
{
SetEntityGravity(ball_entity, 0.01);
}
PrintToChat(client, "\x01Объекту \x03%i \x01установлена уменьшенная гравитация.", ball_entity);
}
}
return Plugin_Handled;
}
public OnGameFrame()
{
static String:classname[32], entity;
for (new i = 1; i <= MaxClients; ++i)
{
if (IsClientInGame(i) && (entity = GetClientAimTarget(i, false)) != -1)
{
GetEdictClassname(entity, classname, sizeof(classname));
PrintHintText(i, "Вы смотрите на\nEntity index: %i classname: %s", entity, classname);
}
}
}
А не пробовал просто с переменными поиграться?не помогли
phys_pushscale 900
phys_timescale 1
sv_turbophysics 0
Пробовал - без результатовА не пробовал просто с переменными поиграться?C-подобный:phys_pushscale 900 phys_timescale 1 sv_turbophysics 0