Скрипты связанный с оружием

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,336
C-подобный:
new iEntity = GetPlayerWeaponSlot(iClient, 0); // берем оружие из первого слота
if ( iEntity != -1 ) // если оно есть
{
	decl String:szClassName[64]; // для названия класса оружия
	GetEntityClassname(iEntity, szClassName, sizeof(szClassName) - 1); // берем название
	PrintToChat(iClient, "weapon in primary slot: %s", szClassName); // выводим на экран
			
	AcceptEntityInput(iEntity, "kill"); // уничтожаем оружие
}
iEntity = GetPlayerWeaponSlot(iClient, 1); // аналогично для второго слота (пистолеты)
if ( iEntity != -1 )
{
	decl String:szClassName[64];
	GetEntityClassname(iEntity, szClassName, sizeof(szClassName) - 1);
	PrintToChat(iClient, "weapon in secondary slot: %s", szClassName);
			
	AcceptEntityInput(iEntity, "kill");
}
Название оружия будет видa weapon_название_оружия, например, weapon_usp.
При таком коде будет удалено оружие, чтобы автоматически переключится на другое (т.к. после этого кода в руках у игрока ничего не будет или будет визуальный баг), то нужно заставить игрока сменить оружие, лучше всего для этого подходит:
C-подобный:
ClientCommand(iClient, "lastinv");

Для подсчета числа гранат я использую следующий код:
1) объявить глобальную переменную для оффсета
C-подобный:
new g_iAmmoOffset;
2) OnPluginStart()
C-подобный:
g_iAmmoOffset = FindSendPropInfo("CCSPlayer", "m_iAmmo");
3) Получить количество HE гранат:
C-подобный:
GetEntData(iClient, g_iAmmoOffset + 44);
Количество flash гранат:
C-подобный:
GetEntData(iClient, g_iAmmoOffset + 48);
Количество smoke гранат:
C-подобный:
GetEntData(iClient, g_iAmmoOffset + 52);

Ну а удалять их так же - циклом:
C-подобный:
while ((iEntity = GetPlayerWeaponSlot(iClient, 3)) != -1)
{
	AcceptEntityInput(iEntity, "kill");
}
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
PHP:
#include <sourcemod>
#include <sdktools>

public OnPluginStart()
{
	RegConsoleCmd("test", CallBack);
}

public Action:CallBack(client, args)
{
	if (client > 0)
	{
		if (IsPlayerAlive(client))
		{
			decl weapon, count, String:className[50];
			for (new i = 0; i < 5; i++)
			{
				if ((weapon = GetPlayerWeaponSlot(client, i)) > 0)
				{
					GetEntityClassname(weapon, className, sizeof(className));
					PrintToChat(client, "%d. Обнаружено: %s", ++count, className);
					AcceptEntityInput(weapon, "Kill");
				}
			}
		}
	}

	return Plugin_Handled;
}
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,336
The End Is Near..., если у человека больше двух гранат, то твой код удалит лишь одну.
 
Сверху Снизу