Grey83
не пишу плагины с весны 2022
- Сообщения
- 8,521
- Реакции
- 4,980
will_rock, наверное серверу вот это нужно: CSWeaponID · cstrike · SourceMod Scripting API Reference
можешь объяснить, что я могу с этим сделать)? Или просто дать готовое решенияwill_rock, наверное серверу вот это нужно: CSWeaponID · cstrike · SourceMod Scripting API Reference
Всем привет, подскажите пожалуйста пример :
1. Подсчет игроков на сервере (%игроков)
2. Начало раунда и текст в чат :
plugin : На сервере %игроков, некоторые функции недоступны.
С меня "мне нравиться" (если конечно пример будет рабочим...) :)
int GetConnectedPlayersCount() {
int count;
for(int i = 1; i <= MaxClients; i++) if(IsClientConnected(i) && IsClientInGame(i)) count++;
return count;
}
#include <sdktools>
public void OnPluginStart() {
HookEvent("round_start", RoundStart, EventHookMode_PostNoCopy);
}
public Action RoundStart(Event event, const char[] name, bool dontbroadcast) {
PrintToChatAll("Количество подключенных игроков %i", GetConnectedPlayersCount());
}
int GetConnectedPlayersCount() {
int count;
for(int i = 1; i <= MaxClients; i++) if(IsClientConnected(i) && IsClientInGame(i)) count++;
return count;
}
А как сделать, чтобы source tv не считало за игрока ?1.
C++:int GetConnectedPlayersCount() { int count; for(int i = 1; i <= MaxClients; i++) if(IsClientConnected(i) && IsClientInGame(i)) count++; return count; }
2.
C++:#include <sdktools> public void OnPluginStart() { HookEvent("round_start", RoundStart, EventHookMode_PostNoCopy); } public Action RoundStart(Event event, const char[] name, bool dontbroadcast) { PrintToChatAll("Количество подключенных игроков %i", GetConnectedPlayersCount()); } int GetConnectedPlayersCount() { int count; for(int i = 1; i <= MaxClients; i++) if(IsClientConnected(i) && IsClientInGame(i)) count++; return count; }
1.
C++:int GetConnectedPlayersCount() { int count; for(int i = 1; i <= MaxClients; i++) if(IsClientConnected(i) && IsClientInGame(i)) count++; return count; }
2.
C++:#include <sdktools> public void OnPluginStart() { HookEvent("round_start", RoundStart, EventHookMode_PostNoCopy); } public Action RoundStart(Event event, const char[] name, bool dontbroadcast) { PrintToChatAll("Количество подключенных игроков %i", GetConnectedPlayersCount()); } int GetConnectedPlayersCount() { int count; for(int i = 1; i <= MaxClients; i++) if(IsClientConnected(i) && IsClientInGame(i)) count++; return count; }
if (GetConnectedPlayersCoun >= 10)
{
PrintToChatAll : "на сервере 10 либо больше игроков, все функции доступны";
}
else (GetConnectedPlayersCoun < 10)
{
PrintToChatAll : "на сервере меньше 10 игроков, некоторые функции ограничены";
}
Добавить условие !IsClientSourceTV(i).А как сделать, чтобы source tv не считало за игрока ?
А как сделать типа того (это не код а пример, типа 10 либо равно 10 то текст1 если меньше 10 то текст2) :
public Action RoundStart(Event event, const char[] name, bool dontbroadcast) {
if(GetConnectedPlayersCount() >= 10) PrintToChatAll("на сервере 10 либо больше игроков, все функции доступны");
else PrintToChatAll("на сервере меньше 10 игроков, некоторые функции ограничены");
}
Может кто помочь с плагином?
Нужна функция "Поменять игроков местами в командах" - то бишь выбрать 2 игрока из разных команд и одновременно поменять их местами
Есть плагин аля teamswitch , но там сначала одного игрока перекидываешь, затем тоже самое проделываешь для другого.
Задумка:
В админке есть пункт "Поменять местами игроков", в нем сначала игроки одной команды (например Т), выбираешь игрока которого хочешь переместить за КТ, затем открывается список другой команды (КТ), выбираешь игрока которого хочешь переместить за Т,
После выбора двух игроков появляется пункт "Когда переместить" и режимы "Сразу" ,"В конце раунда", "После смерти обоих"
Желаемая структура меню:
Игра CS:S Steam, SM 1.9C-подобный:-Админ меню: -Управление игроками: Поменять местами: - Команта Т (выбор игрока): Terrorist_nick_1 Terrorist_nick_2 Terrorist_nick_3 Terrorist_nick_4 И т.д. - Команда КТ (выбор игрока): CT_nick_1 CT_nick_2 CT_nick_3 CT_nick_4 - Когда переместить: Сразу В конце раунда После смерти обоих
mp_equipment_reset_rounds 1Добрый день кто может в плагине Ограничение оружия сделать что бы при меньше 6 игроков при спавне удалялось оружие
мне не надо что бы каждыйmp_equipment_reset_rounds 1
Каждый раунд будет удаляться оружие
Попробуй, но я такой себе кодермне не надо что бы каждый
Смотри вы не так понял и я не так обяснил мне нужно типо разрешается запрещено оружие чел купил запреть сделали когда меньше игроков стало и у чела авп остался пока его не убют оно не пропадетПопробуй, но я такой себе кодер
Можно поставить знаки препинания. А то нифига не понял...Смотри вы не так понял и я не так обяснил мне нужно типо разрешается запрещено оружие чел купил запреть сделали когда меньше игроков стало и у чела авп остался пока его не убют оно не пропадет
#pragma semicolon 1
#include <sourcemod>
public Plugin myinfo = {
name = "[ANY] Give Admin Flag",
author = "Sgt. Gremulock",
description = "Gives players that join an admin flag.",
version = "1.0",
url = "sourcemod.net"
};
public void OnPluginStart()
{
CreateConVar("sm_giveadminflag_version", "1.0", "Plugin's version.", FCVAR_NOTIFY);
for (int i = 1; i <= MaxClients; i++)
{
if (IsValidClient(i))
{
OnClientPostAdminCheck(i);
}
}
}
public void OnClientPostAdminCheck(int client)
{
if (!CheckCommandAccess(client, "sm_admin", ADMFLAG_CUSTOM1, false))
{
AdminId Client_Admin = GetUserAdmin(client);
Client_Admin.SetFlag(Admin_Custom1, true);
}
}
bool IsValidClient(int client)
{
if (client <= 0 || client > MaxClients || !IsClientConnected(client))
{
return false;
}
return IsClientInGame(client);
}
Ребята! Появилась необходимость выдавать всем игрокам при входе ADMFLAG_CUSTOM1, нашел на АМ такой вариант, но не пашет зараза...
Кто может подсобить, я не кодер)
C-подобный:#pragma semicolon 1 #include <sourcemod> public Plugin myinfo = { name = "[ANY] Give Admin Flag", author = "Sgt. Gremulock", description = "Gives players that join an admin flag.", version = "1.0", url = "sourcemod.net" }; public void OnPluginStart() { CreateConVar("sm_giveadminflag_version", "1.0", "Plugin's version.", FCVAR_NOTIFY); for (int i = 1; i <= MaxClients; i++) { if (IsValidClient(i)) { OnClientPostAdminCheck(i); } } } public void OnClientPostAdminCheck(int client) { if (!CheckCommandAccess(client, "sm_admin", ADMFLAG_CUSTOM1, false)) { AdminId Client_Admin = GetUserAdmin(client); Client_Admin.SetFlag(Admin_Custom1, true); } } bool IsValidClient(int client) { if (client <= 0 || client > MaxClients || !IsClientConnected(client)) { return false; } return IsClientInGame(client); }
#include <sdktools>
public void OnClientPostAdminCheck(int client) {
AdminId adminid = GetUserAdmin(client);
if(adminid == INVALID_ADMIN_ID) {
adminid = CreateAdmin("");
SetUserAdmin(client, adminid, true);
adminid.SetFlag(Admin_Custom1, true);
}
}
Премного благодарен!C++:#include <sdktools> public void OnClientPostAdminCheck(int client) { AdminId adminid = GetUserAdmin(client); if(adminid == INVALID_ADMIN_ID) { adminid = CreateAdmin(""); SetUserAdmin(client, adminid, true); adminid.SetFlag(Admin_Custom1, true); } }