AlmazON
Не путать с самим yand3xmail
- Сообщения
- 5,099
- Реакции
- 2,756
Поставить прозрачную модель ножа. :biggrin:как бы он у него есть, но его не видно
Поставить прозрачную модель ножа. :biggrin:как бы он у него есть, но его не видно
Можно и такПоставить прозрачную модель ножа. :biggrin:
Ну почему, можно: SetEntityRenderColor(entityWeaponKnife, 255, 255, 255, 0); - невидимый нож... если выбросить. :biggrin: Но на клиенте и так, и сяк прорисовывается. Оффтоппросто скрыть нож нельзя ?
ОффтопНу почему, можно: SetEntityRenderColor(entityWeaponKnife, 255, 255, 255, 0); - невидимый нож, если выбросить) Но на клиенте и так, и сяк прорисовывается. ОффтопЛежит - невидим, а берёшь в руки - всё обычно.
Нужно подумать и сообразить)ОффтопПошел гуглить, может че нагуглю
--- Добавлено позже ---
@Кирилл Спиридонов, сможешь сделать невидимую модель в CS:GO?
public OnClientPostAdminCheck(client)
{
SDKHook(client, SDKHook_WeaponSwitch, WeaponHook);
SDKHook(client, SDKHook_WeaponEquip, WeaponHook);
}
public Action:WeaponHook(client, weapon)
{
if(client > 0 && client <= MaxClients && IsClientConnected(client) && IsClientInGame(client) && IsPlayerAlive(client))
{
CreateTimer(0.1, ChangeModelIndex, client, TIMER_FLAG_NO_MAPCHANGE);
}
return Plugin_Continue;
}
public Action:ChangeModelIndex(Handle:Timer, any:client)
{
if(!(client > 0 && client <= MaxClients && IsClientConnected(client) && IsClientInGame(client) && IsPlayerAlive(client)))
return Plugin_Stop;
new weapon = GetEntPropEnt(client, Prop_Data, "m_hActiveWeapon");
if(weapon <= 0 || !IsValidEdict(weapon))
return Plugin_Stop;
decl String:classname[32];
GetEdictClassname(weapon, classname, sizeof(classname));
if(StrEqual(classname, "weapon_knife", false))
{
new iWorldModel = GetEntPropEnt(weapon, Prop_Send, "m_hWeaponWorldModel");
if(IsValidEdict(iWorldModel))
{
if(GetEntProp(iWorldModel, Prop_Send, "m_nModelIndex") != 0)
{
SetEntProp(iWorldModel, Prop_Send, "m_nModelIndex", 0);
}
}
}
return Plugin_Stop;
}
1) Из-за таймера проверка повторяется.хм
if(client > 0 && client <= MaxClients && IsClientConnected(client) && IsClientInGame(client) && IsPlayerAlive(client))
if(!(client > 0 && client <= MaxClients && IsClientConnected(client) && IsClientInGame(client) && IsPlayerAlive(client)))
return Plugin_Stop;
и weapon <= 0 || !IsValidEdict(weapon) - вторая проверка не исключает первую?
а первая проверка не исключает вторую?
if(IsValidEdict(iWorldModel))
{
if(iWorldModel != 0)
Краш игры во время смены оружия?ну когда игрок меняет оружие, он точно > 0, в игре и жив, а в таймере передают userid (это исключает применение функций на вновь зашедшем игроке), хотя спорно, может ли за 0.1 секунды смениться игрок
Можно тупо удалять модель, AcceptEntityInput "kill".ОффтопМожно сделать так, но с некоторой вероятностью некоторые клиенты будут вылетать при загадочных обстоятельствах. (ибо индекс = 0)PHP:public OnClientPostAdminCheck(client) { SDKHook(client, SDKHook_WeaponSwitch, WeaponHook); SDKHook(client, SDKHook_WeaponEquip, WeaponHook); } public Action:WeaponHook(client, weapon) { if(client > 0 && client <= MaxClients && IsClientConnected(client) && IsClientInGame(client) && IsPlayerAlive(client)) { CreateTimer(0.1, ChangeModelIndex, client, TIMER_FLAG_NO_MAPCHANGE); } return Plugin_Continue; } public Action:ChangeModelIndex(Handle:Timer, any:client) { if(!(client > 0 && client <= MaxClients && IsClientConnected(client) && IsClientInGame(client) && IsPlayerAlive(client))) return Plugin_Stop; new weapon = GetEntPropEnt(client, Prop_Data, "m_hActiveWeapon"); if(weapon <= 0 || !IsValidEdict(weapon)) return Plugin_Stop; decl String:classname[32]; GetEdictClassname(weapon, classname, sizeof(classname)); if(StrEqual(classname, "weapon_knife", false)) { new iWorldModel = GetEntPropEnt(weapon, Prop_Send, "m_hWeaponWorldModel"); if(IsValidEdict(iWorldModel)) { if(GetEntProp(iWorldModel, Prop_Send, "m_nModelIndex") != 0) { SetEntProp(iWorldModel, Prop_Send, "m_nModelIndex", 0); } } } return Plugin_Stop; }
в CS:S подругому, m_hWeaponWorldModel лишь в CS:GO есть, и вроде б в InsurgencyВ CS:S что-то не работает, видно нож.
Я так понял там просто SetEntityRenderColor(weapon, 255, 255, 255, 0), или SetEntityRenderMode(weapon, RENDER_NONE)в CS:S подругому, m_hWeaponWorldModel лишь в CS:GO есть, и вроде б в Insurgency
Это если удалить само оружие, а если просто модель, то в руках ничего не будет, но руки будут на местах и бить сможет. И + это лишь на CS:GO и InsurgencyТак ударить не сможешь и игрок будет ходит с "руками по швам".
Ну всё, на CS:S не сделаете. :biggrin:m_hWeaponWorldModel лишь в CS:GO есть
Нет, я уже писал об этом.Оффтоптам просто
Невнимательно прочёл.само оружие, а если просто модель
#include <sdkhooks>
#include <sdktools>
public OnClientPostAdminCheck(client)
{
SDKHook(client, SDKHook_WeaponSwitchPost, WeaponHook);
SDKHook(client, SDKHook_WeaponEquipPost, WeaponHook);
}
public WeaponHook(client, weapon)
{
decl String:classname[13];
GetEdictClassname(weapon, classname, sizeof(classname));
if(strcmp(classname, "weapon_knife", false) == 0)
{
new model = MaxClients + 1;
while((model = FindEntityByClassname(model, "predicted_viewmodel")) != -1)
{
if(GetEntPropEnt(model, Prop_Send, "m_hOwner") == client && GetEntPropEnt(model, Prop_Send, "m_hWeapon") == weapon)
{
SetEntProp(model, Prop_Send, "m_nModelIndex", 0);
break;
}
}
}
}
Поиграюсь завтра с этим в CS:GO...Ну всё, на CS:S не сделаете. :biggrin:Нет, я уже писал об этом.ОффтопНевнимательно прочёл.
В общем, в CS:S делается так:Правда, мельком пробегает анимация.PHP:#include <sdkhooks> #include <sdktools> public OnClientPostAdminCheck(client) { SDKHook(client, SDKHook_WeaponSwitchPost, WeaponHook); SDKHook(client, SDKHook_WeaponEquipPost, WeaponHook); } public WeaponHook(client, weapon) { decl String:classname[13]; GetEdictClassname(weapon, classname, sizeof(classname)); if(strcmp(classname, "weapon_knife", false) == 0) { new model = MaxClients + 1; while((model = FindEntityByClassname(model, "predicted_viewmodel")) != -1) { if(GetEntPropEnt(model, Prop_Send, "m_hOwner") == client && GetEntPropEnt(model, Prop_Send, "m_hWeapon") == weapon) { SetEntProp(model, Prop_Send, "m_nModelIndex", 0); break; } } } }