Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 2
  • 1
  • 2
  • »
Блок
Tokami Дата: Суббота, 15.02.2014, 18:38:35 | Сообщение # 1
Сообщений: 238
Репутация: 19 [ +/- ]
Данная хилка может заблочить игрока как сделать что она не могла блочить))?
Код

#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 = "JailMedKit",  
   author = "s1dex",  
   description = "CT can throw medkits",  
   version = VERSION,  
   url = "http://adminexe.ru/showthread.php?t=773"  
};  

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_Data, "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[Аптечка] \x01Данную команду могут использовать только CT");  
    return Plugin_Handled;  
   }  
     
   if (!IsPlayerAlive(client)) {  
    PrintToChat(client, "\x03[Аптечка] \x01Вы мертвы");  
    return Plugin_Handled;  
   }  
     
   if (!g_iMedKitCount[client]) {  
    PrintToChat(client, "\x03[Аптечка] \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[Аптечка] \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_Data, "m_CollisionGroup", 4);  
   SetEntProp(entity, Prop_Data, "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);  
}  
 
BarD Дата: Суббота, 15.02.2014, 19:12:16 | Сообщение # 2
Сообщений: 943
Репутация: 137 [ +/- ]
Вместо prop_physics используй prop_ragdoll. Он не блочит, нежели prop_physics.
 
Tokami Дата: Суббота, 15.02.2014, 19:25:16 | Сообщение # 3
Сообщений: 238
Репутация: 19 [ +/- ]
Не помогло просто сервер вырубило!!!Есть еще варианты??))
 
Vor4uN Дата: Суббота, 15.02.2014, 20:19:35 | Сообщение # 4
Сообщений: 49
Репутация: 3 [ +/- ]
SetEntProp(entity, Prop_Data, "m_CollisionGroup", 0); по экперементируй с колизией пропа


Сообщение отредактировал Vor4uN - Суббота, 15.02.2014, 20:22:29
 
Tokami Дата: Суббота, 15.02.2014, 20:36:47 | Сообщение # 5
Сообщений: 238
Репутация: 19 [ +/- ]
SetEntProp(entity, Prop_Data, "m_CollisionGroup", 0); сделал не блочит но теперь и не лечит)))
 
Vor4uN Дата: Суббота, 15.02.2014, 23:07:02 | Сообщение # 6
Сообщений: 49
Репутация: 3 [ +/- ]
SetEntProp(entity, Prop_Data, "m_CollisionGroup", 2); пробуй ил -1 или 6
 
Tokami Дата: Воскресенье, 16.02.2014, 00:36:34 | Сообщение # 7
Сообщений: 238
Репутация: 19 [ +/- ]
6 пробывал 2 пробывал -1 щяс попробуем) и -1 тоже нет(((

Добавлено (16.02.2014, 00:36:34)
---------------------------------------------
imode & 32 ? SetEntProp(entity, Prop_Send, "m_CollisionGroup", 4):0; попытался так не помогло(((



Сообщение отредактировал Tokami - Воскресенье, 16.02.2014, 00:04:21
 
Vor4uN Дата: Воскресенье, 16.02.2014, 08:31:40 | Сообщение # 8
Сообщений: 49
Репутация: 3 [ +/- ]
Скинь sp сюда посмотрю сам попробую, есть идейка одна
 
Tokami Дата: Воскресенье, 16.02.2014, 15:13:45 | Сообщение # 9
Сообщений: 238
Репутация: 19 [ +/- ]
Можешь взять код верху а то у меня приватная аптечка не хотел бы ее выкладывать сюда))
 
Vor4uN Дата: Понедельник, 17.02.2014, 11:18:22 | Сообщение # 10
Сообщений: 49
Репутация: 3 [ +/- ]
Цитата Tokami ()
у меня приватная аптечка не хотел бы ее выкладывать сюда

Ну тогда извини , делай сам.
 
Tokami Дата: Пятница, 21.02.2014, 15:23:20 | Сообщение # 11
Сообщений: 238
Репутация: 19 [ +/- ]
Vor4uN, я же выложил sp считай верху просто это надо в текстовый реадактор перенести и скольпилить!
А файл я не могу прикрепить почему((

Добавлено (21.02.2014, 15:23:20)
---------------------------------------------
Ребят так чего не кто не в курсе как сделать а то хилка блочит и это бесит:D

 
ThRunningMan Дата: Пятница, 21.02.2014, 22:18:50 | Сообщение # 12
Сообщений: 140
Репутация: 12 [ +/- ]
попрообуй
CreateEntityByName("prop_physics_override")
SetEntProp(entity, Prop_Data, "m_CollisionGroup", 11);
SetEntProp(entity, Prop_Send, "m_nSolidType", 6);

Добавлено (21.02.2014, 22:18:50)
---------------------------------------------
Если не получится, то попробуй, игонорируя мои верхние изменения, внести изменения в свой код в виде
SetEntProp(entity, Prop_Data, "m_CollisionGroup", 17);

 
sssw Дата: Суббота, 22.02.2014, 01:54:06 | Сообщение # 13
Сообщений: 123
Репутация: 14 [ +/- ]
...


Сообщение отредактировал sssw - Суббота, 22.02.2014, 21:48:14
 
Tokami Дата: Суббота, 22.02.2014, 02:37:24 | Сообщение # 14
Сообщений: 238
Репутация: 19 [ +/- ]
Нет не помогло :(

Добавлено (22.02.2014, 02:37:24)
---------------------------------------------
Она не блочит но и не хилит(((

 
nailllain Дата: Суббота, 22.02.2014, 10:15:40 | Сообщение # 15
Сообщений: 14
Репутация: 2 [ +/- ]
Сделай вместо касания, проверку на дистанцию от человека к аптечке. Как показано в это теме: "http://world-source.ru/forum/100-2385-1" - #2 пост.
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: