fantezie192
Участник
- Сообщения
- 3
- Реакции
- 2
NopeWere there any plugin errors?
NopeWere there any plugin errors?
Может кто написать простой плагин? Если раунд завершился, то бомбу поставить нельзя будет. Заранее спасибо.
#include <cstrike>
#include <sdktools>
public Action CS_OnTerminateRound(float& delay, CSRoundEndReason& reason)
{
for(int i = 1; i <= MaxClients; i++)
{
if(IsClientInGame(i) && !IsFakeClient(i))
{
int item = GetPlayerWeaponSlot(i, CS_SLOT_C4);
if(IsValidEdict(item) && item != -1)
{
RemovePlayerItem(i, item);
AcceptEntityInput(item, "kill");
break;
}
}
}
return Plugin_Continue;
}
C-подобный:public Action CS_OnTerminateRound(float& delay, CSRoundEndReason& reason) { for(int i = 1; i <= MaxClients; i++) { if(IsClientInGame(i) && !IsFakeClient(i)) { int item = GetPlayerWeaponSlot(client, CS_SLOT_C4); if(IsValidEdict(item)) { RemovePlayerItem(client, item); AcceptEntityInput(item, "kill"); } } } }
обновил//SourceMod Batch Compiler
// by the SourceMod Dev Team
//// bomd_block_roundend.sp
//
// C:\Users\Desktop\compiled\sm 1.10\addons\sourcemod\scripting\bomd_block_roundend.sp(1) : error 139: could not find type "CSRoundEndReason"
// C:\Users\Desktop\compiled\sm 1.10\addons\sourcemod\scripting\bomd_block_roundend.sp(7) : error 017: undefined symbol "GetPlayerWeaponSlot"
// C:\Users\Desktop\compiled\sm 1.10\addons\sourcemod\scripting\bomd_block_roundend.sp(8) : error 017: undefined symbol "RemovePlayerItem"
// C:\Users\Desktop\compiled\sm 1.10\addons\sourcemod\scripting\bomd_block_roundend.sp(9) : error 017: undefined symbol "AcceptEntityInput"
//
// 4 Errors.
//
// Compilation Time: 0,16 sec
// ----------------------------------------
Press enter to exit ...
Разве такое вообще возможно сделать?Если раунд завершился, то бомбу поставить нельзя будет
break добавь, что ли (много ли серверов, где игрокам позволено носить больше одной бомбы на команду?)обновил
если индекс не равенIsValidEdict(item)
-1
, то энтити всегда валидна, насколько я понимаюНа пабликах где музыка по 10-15 сек в конце раунда играет))Обычно даже времени на это не хватит.
Видимо кому-то принципиально)Щас бы блокировать бомбу,из за каких то пару очков)
конец раунда 10 сек. за это время можно успеть поставить бомбу, если игрок рядом с плентом.Разве такое вообще возможно сделать?
Обычно даже времени на это не хватит
Да нет, просто стоят 2 плагина которые выводят оверлей, один в конце раунда, а другой при установки бомбы, это нужно было чтобы не было конфликта у оверлеев.Щас бы блокировать бомбу,из за каких то пару очков)
int hPlayerResource = -1;
public void OnMapStart()
{
hPlayerResource = -1;
}
stock int GetCarrier()
{
return hPlayerResource != -1 || (hPlayerResource = FindEntityByClassname(hPlayerResource, "cs_player_manager")) != -1
? GetEntProp(hPlayerResource, Prop_Send, "m_iPlayerC4") : -1;
}
Как вариант подкинуть в копилку функций@Palonez, кстати, определить у какого игрока бомба можно вот так:C-подобный:int hPlayerResource = -1; public void OnMapStart() { hPlayerResource = -1; } stock int GetCarrier() { return hPlayerResource != -1 || (hPlayerResource = FindEntityByClassname(hPlayerResource, "cs_player_manager")) != -1 ? GetEntProp(hPlayerResource, Prop_Send, "m_iPlayerC4") : -1; }
#pragma newdecls required
#pragma semicolon 1
#include <cstrike>
#include <premium_core>
#define ClAN_TAG "ClanTag"
bool bLate;
public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max)
{
bLate = late;
return APLRes_Success;
}
public void OnPluginStart()
{
if(bLate) Premium_AddFeature(ClAN_TAG);
HookEvent("player_team", Event_CheckTag, EventHookMode_PostNoCopy);
HookEvent("player_spawn", Event_CheckTag, EventHookMode_PostNoCopy);
HookEvent("round_start", Event_CheckTag, EventHookMode_PostNoCopy);
}
public void Premium_OnPremiumLoaded()
{
Premium_AddFeature(ClAN_TAG);
}
public void OnClientPutInServer(int client)
{
SetupTag(client);
}
void Event_CheckTag(Event event, char[] name, bool dontBroadcast)
{
CreateTimer(0.1, DelayCheck, _, TIMER_FLAG_NO_MAPCHANGE);
}
Action DelayCheck(Handle timer)
{
for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i)) SetupTag(i);
return Plugin_Continue;
}
void SetupTag(int client)
{
if(IsFakeClient(client)) return;
if(Premium_IsFeatureUse(client, ClAN_TAG))
{
CS_SetClientClanTag(client, "PREMIUM");
}
}
public Action CountTime(Handle hTimer)
{
for (int i = 1; i <= MaxClients; i++)
{
if (IsClientInGame(i) && !IsFakeClient(i) && GetClientTeam(i) > 1)
{
if (g_iTime[i]++ > iBonusTime)
{
char sBuff[48], sCM[256], sOld[256];
GetStringTime(iBonusTime, sBuff, sizeof sBuff);
if (++g_iDays[i] > 0 && !g_iGived[g_iDays[i]][i])
{
g_iGived[g_iDays[i]][i] = 1;
if (g_iDays[i] >= 30)
{
g_iDays[i] = 0;
}
if (g_iGived[g_iDays[i]-1][i] > 0 && g_iGived[g_iDays[i]-1][i] == 1)
{
for (int t; t < 30; t++)
{
g_iGived[t][i] = 0;
}
g_iDays[i] = 0;
}
}
g_iTime[i] = 0;
}
}
}
}
не может он на скобку указыватьЕррор лог указывает на ошибку в выделенной строке
if (g_iGived[g_iDays-1] > 0 && g_iGived[g_iDays-1] == 1)
L 07/30/2023 - 16:41:54: [SM] Exception reported: Array index out-of-bounds (index -1, limit 31)не может он на скобку указывать
давай сюда полное сообщение об ошибке
Не я автор плагина, попал в руки исходник от 3 лицКакой смысл проверять что число больше 0, а затем что оно равно 1?
Как я понял идет проверка на то выдан ли предметКакой смысл проверять что число больше 0, а затем что оно равно 1?