Existance' Donald
Участник
- Сообщения
- 27
- Реакции
- 7
Игра CS:GO
SOURCEMOD: 1.7.2-dev+5202
Имеется плагин на выдачу (хилки) на джаил сервере.
До обновлений последних оон работал великолепно, но сейчас он пишет при установке:
При этом хилка устанавливается в различных местах на карте (не куда смотрю) + не работает (вылазит только моделька и висит).
Вот после установки лог:
prop_physics in solid list (not solid) (0, 0098) models/items/healthkit.mdl
Вот сам плагин:
Я так понимаю, что проблема в SetEntProp(entity, Prop_Send, "m_MoveCollide", 0);
Помогите разобраться пожалуйста.
SOURCEMOD: 1.7.2-dev+5202
Имеется плагин на выдачу (хилки) на джаил сервере.
До обновлений последних оон работал великолепно, но сейчас он пишет при установке:
C-подобный:
L 06/30/2015 - 00:02:32: [SM] Native "SetEntProp" reported: Property "m_MoveCollide" not found (entity 792/prop_physics)
L 06/30/2015 - 00:02:32: [SM] Displaying call stack trace for plugin "hl.smx":
L 06/30/2015 - 00:02:32: [SM] [0] Line 159, C:\Users\QuadXeon\Desktop\scripting\hl.sp::CreateMedKit()
L 06/30/2015 - 00:02:32: [SM] [1] Line 112, C:\Users\QuadXeon\Desktop\scripting\hl.sp::CmdThrowMedKit()
При этом хилка устанавливается в различных местах на карте (не куда смотрю) + не работает (вылазит только моделька и висит).
Вот после установки лог:
prop_physics in solid list (not solid) (0, 0098) models/items/healthkit.mdl
Вот сам плагин:
C-подобный:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#define VERSION "1.0"
#define TEAM_T 2
#define TEAM_CT 3
#define HEALTHKIT_SOUND "items/medshot4.wav"
#define HEALTHKIT_MODEL "models/items/healthkit.mdl"
//Cvars
new Handle:g_hMedKitCount = INVALID_HANDLE;
new Handle:g_hMedKitLifeTime = INVALID_HANDLE;
new Handle:g_hMedKitRegenTime = INVALID_HANDLE;
//Client variables
new g_iMedKitCount[MAXPLAYERS+1];
//Timers
new Handle:g_hMedKitTimer[2048];
new Handle:g_hClientRegenKits[MAXPLAYERS+1];
//Offset
new g_iCollision = -1;
new g_iSolidFlags = -1;
public Plugin:myinfo = {
name = "Jail HL",
author = "XeonQuad",
description = "Medkits For JailBreak (by XeonQuad)",
version = VERSION,
url = "http://existance.pw/"
};
public OnPluginStart()
{
g_hMedKitCount = CreateConVar("sm_jailmedkit_count", "2", "Максимальное количетсво аптечек на руках у CT");
g_hMedKitLifeTime = CreateConVar("sm_jailmedkit_lifetime", "15", "Время \"жизни\" аптечек");
g_hMedKitRegenTime = CreateConVar("sm_jailmedkit_regentime", "10", "Время регенерации аптечек");
RegConsoleCmd("hl", CmdThrowMedKit);
HookEvent("player_spawn", EventPlayerSpawn);
if((g_iCollision = FindSendPropOffs("CBaseEntity", "m_Collision")) == -1)
LogError("Could not find offset for CBaseEntity::m_Collision");
if((g_iSolidFlags = FindSendPropOffs("CBaseEntity", "m_usSolidFlags")) == -1)
LogError("Could not find offset for CBaseEntity::m_usSolidFlags");
AutoExecConfig(true, "jailmedkit");
}
public OnClientPutInServer(client)
{
if (g_hClientRegenKits[client] != INVALID_HANDLE)
CloseHandle(g_hClientRegenKits[client]);
g_hClientRegenKits[client] = CreateTimer(GetConVarFloat(g_hMedKitRegenTime), TimerRegen, client, TIMER_REPEAT);
}
public OnClientDisconnect(client)
{
if (g_hClientRegenKits[client] != INVALID_HANDLE)
CloseHandle(g_hClientRegenKits[client]);
g_hClientRegenKits[client] = INVALID_HANDLE;
}
public OnMapStart()
{
PrecacheModel(HEALTHKIT_MODEL, true);
PrecacheSound(HEALTHKIT_SOUND, true);
}
public Action:OnTouch(medkit, entity)
{
if (entity < 1 || entity > MaxClients || !IsClientInGame(entity) || !IsPlayerAlive(entity) || GetEntProp(medkit, Prop_Send, "m_PredictableID") == entity || GetClientHealth(entity) == 100) {
return;
}
SetEntityHealth(entity, GetEntProp(entity, Prop_Send, "m_iMaxHealth"));
new Float:origin[3];
EmitSoundToAll(HEALTHKIT_SOUND, entity, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 1.0, SNDPITCH_NORMAL, -1, origin, NULL_VECTOR, true, 0.0);
AcceptEntityInput(medkit, "Kill");
if (g_hMedKitTimer[medkit] != INVALID_HANDLE)
CloseHandle(g_hMedKitTimer[medkit]);
g_hMedKitTimer[medkit] = INVALID_HANDLE;
}
public Action:CmdThrowMedKit(client, args)
{
if (GetClientTeam(client) != TEAM_CT) {
PrintToChat(client, "\x03[EX] \x01Данную команду могут использовать только CT");
return Plugin_Handled;
}
if (!IsPlayerAlive(client)) {
PrintToChat(client, "\x03[EX] \x01Вы мертвы");
return Plugin_Handled;
}
if (!g_iMedKitCount[client]) {
PrintToChat(client, "\x03[EX] \x01У Вас нет доступных аптечек");
return Plugin_Handled;
}
CreateMedKit(client);
g_iMedKitCount[client]--;
return Plugin_Handled;
}
public Action:EventPlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
g_iMedKitCount[client] = GetConVarInt(g_hMedKitCount);
//Advert
if (GetClientTeam(client) == 3)
PrintToChat(client, "\x03[EX] \x01Вы можете кинуть аптечку командой !hl");
}
public Action:TimerRegen(Handle:timer, any:client)
{
if (IsClientInGame(client) && g_iMedKitCount[client] < GetConVarInt(g_hMedKitCount))
g_iMedKitCount[client]++;
return Plugin_Continue;
}
public Action:TimerDissolve(Handle:timer, any:entity)
{
if (IsValidEntity(entity))
{
decl String:dname[16];
Format(dname, sizeof(dname), "dis_%d", entity);
DispatchKeyValue(entity, "targetname", dname);
new diss = CreateEntityByName("env_entity_dissolver");
DispatchKeyValue(diss, "dissolvetype", "3");
DispatchKeyValue(diss, "target", dname);
AcceptEntityInput(diss, "Dissolve");
AcceptEntityInput(diss, "kill");
}
g_hMedKitTimer[entity] = INVALID_HANDLE;
}
stock CreateMedKit(client)
{
new entity = CreateEntityByName("prop_physics");
new Float:vecPos[3], Float:vecVel[3], Float:clAngles[3], Float:fwd[3];
GetClientEyePosition(client, vecPos);
SetEntityModel(entity, HEALTHKIT_MODEL);
SetEntProp(entity, Prop_Send, "m_CollisionGroup", 4);
SetEntProp(entity, Prop_Send, "m_MoveCollide", 0);
SetSolidFlags(entity, 152);
SetEntProp(entity, Prop_Send, "m_PredictableID", client);
SetEntityMoveType(entity, MOVETYPE_VPHYSICS);
GetClientAbsAngles(client, clAngles);
GetAngleVectors(clAngles, fwd, NULL_VECTOR, NULL_VECTOR);
NormalizeVector(fwd, vecVel);
ScaleVector(vecVel, 150.0);
TeleportEntity(entity, vecPos, NULL_VECTOR, NULL_VECTOR);
DispatchSpawn(entity);
TeleportEntity(entity, NULL_VECTOR, NULL_VECTOR, vecVel);
SDKHook(entity, SDKHook_StartTouchPost, OnTouch);
g_hMedKitTimer[entity] = CreateTimer(GetConVarFloat(g_hMedKitLifeTime), TimerDissolve, entity);
}
SetSolidFlags(iEntity, iFlags)
{
if(g_iCollision == -1 || g_iSolidFlags == -1) return;
SetEntData(iEntity, g_iCollision + g_iSolidFlags, iFlags, 2, true);
}
Я так понимаю, что проблема в SetEntProp(entity, Prop_Send, "m_MoveCollide", 0);
Помогите разобраться пожалуйста.