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

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

  • Страница 1 из 9
  • 1
  • 2
  • 3
  • 8
  • 9
  • »
Форум » SourceMod >> CS:Source >> CSGO » Уроки SourceMod (SourcePawn) Скриптинга » Команды/Функции, связанные с игроком (Список, примеры)
Команды/Функции, связанные с игроком
_wS_ Дата: Воскресенье, 28.08.2011, 20:44:21 | Сообщение # 1
Thanks
Если функция связана с игроком, то почти всегда требуется указать его индекс. Индекс игрока может быть от 1 до MaxClients (MaxClients равен количеству слотов на вашем сервере). Вы часто можете встретить константу MAXPLAYERS, она содержит максимальное количество слотов, которое может быть. MAXPLAYERS используют, т.к. во время компиляции плагина неизвестно сколько слотов на сервере, а MaxClients становится актуальным только после запуска сервера. Если компилируете плагин для себя и заранее точно знаете количество слотов, то можете изменить MAXPLAYERS на любое значение в clients.inc и сэкономить немного памяти.

Код
new i;
while (++i <= MaxClients) {
    if (IsClientInGame(i)) {
        PrintToChatAll("Найден игрок \"%N\", его индекс = %d.", i, i);
    }
}

В некоторых (не всех, используйте wiki) событиях есть переменная userid:

Код
public OnPluginStart() {
    HookEvent("player_spawn", player_spawn, EventHookMode_Post);
}

public player_spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    // Получаем индекс родившегося игрока
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
}


IsClientInGame(client) - true/false, в игре ли игрок
IsPlayerAlive(client) - true/false, жив или нет
GetClientName(client, String:name[], maxlen); - получить имя игрока

Код
decl String:name[MAX_NAME_LENGTH];
GetClientName(client, name, sizeof(name));
PrintToChatAll("nick = %s", name);

// Или можно проще:
PrintToChatAll("nick = %N", client);


GetClientIP(client, String:ip[], maxlen, bool:убрать порт=true) - получить IP игрока
GetClientAuthString(client, String:auth[], maxlen); - SteamID
GetClientUserId(client) - получить userid игрока
GetClientHealth(client) - здоровье
GetClientModel(client, String:model[], maxlen); - модель
GetClientWeapon(client, String:weapon[], maxlen); - имя оружия, которое в руках
GetClientAbsOrigin(client, Float:vec[3]); - координаты игрока (под ногами)

Код
decl Float:pos[3];
GetClientAbsOrigin(client, pos);
PrintToChatAll("x = %f, y = %f, z = %f", pos[0], pos[1], pos[2]);


GetClientAbsAngles(client, Float:ang[3]); - углы
GetClientArmor(client) - бронь
GetClientDeaths(client) - количество смертей
GetClientFrags(client) - фрагов
KickClient(client, "сообщение", any:...); - кикнуть игрока
ChangeClientTeam(client, team) - сменить команду (если жив, убьет)
 
_wS_ Дата: Понедельник, 09.01.2012, 01:49:31 | Сообщение # 2
Thanks
CS_RespawnPlayer(client) - оживить игрока
CS_SwitchTeam(client, team) - сменить команду, не убивая (1 = spec, 2 = t, 3 = ct)
GetClientTeam(client) - узнать команду игрока

Страна игрока (вернет true, если была получена)
GeoipCountry(const String:ip[], String:name[], maxlength)

PrintToChat(client, const String:format[], any:...) - отправить игроку сообщение
PrintToChatAll(const String:format[], any:...) - отправить всем

Можно использовать цвета:

Код
\x01 - default
\x03 - lightgreen/red/blue/grey (grey, если игрок в spec)
\x04 - green
\x05 - darkgreen


Например:

Код
PrintToChatAll("\x01\x04Да \x05что ж \x03такое")


Если хотите использовать несколько цветов сразу, то в самое начало надо добавить \x01

Вернёт true, если игрок ненастоящий, например, бот:
IsFakeClient(client)

PrintCenterText(client, const String:format[], any:...); - сообщение для игрока в центре экрана
PrintCenterTextAll(const String:format[], any:...); - для всех
PrintHintText(client, const String:format[], any:...); - внизу экрана для 1 игрока
PrintHintTextToAll(const String:format[], any:...); - для всех

GetClientCount(bool:inGameOnly=true); - сколько всего игроков на сервере. Если сделаете GetClientCount(false), то будут учитываться и подключающиеся игроки (которые еще не зашли)

GetClientMins(client, Float:vec[3]);
GetClientMaxs(client, Float:vec[3]);

ClientCommand(client, const String:fmt[], any:...); - выполнить RCON команды на клиенте
GetClientOfUserId(userid); - получить индекс клиента по userid

Заставить игрока выбросить оружие
CS_DropWeapon(client, weaponIndex, bool:toss, bool:blockhook = false);

Если bool:toss = true, то оружие будет выброшено вперед со скоростью (иначе под ноги).
Если bool:blockhook = true, то событие 'CS_OnCSWeaponDrop' не будет вызвано.
 
Naykon Дата: Понедельник, 02.04.2012, 18:19:33 | Сообщение # 3
Сообщений: 439
Репутация: -4 [ +/- ]
Какая команда для:
1) Возродить клиента
2) Убить клиента
3) Забанить клиента
4) Маяк
5) Заморозить
6) Мут (чат\голос)
7) Гравитация
8) полет (сквозь стены)
9) Опьянить
10) Ослепить
11) Обезаружить
12) Безсмертие
13) Дать оружие
14) Невидимость
15) Скорость
16) Бесконечные патроны
 
_wS_ Дата: Вторник, 03.04.2012, 01:03:28 | Сообщение # 4
Thanks
ForcePlayerSuicide(client); - убить игрока

Бан по IP адресу:

Код
ServerCommand("addip <минут/0=навсегда> <ipaddress>");
// или
BanClient(client, <минут/0=навсегда>, BANFLAG_IP, "причина", "кик-сообщение");


По SteamID:

Код
ServerCommand("banid <минут/0=навсегда> <userid или steamid> [kick]");
// или
BanClient(client, <минут/0=навсегда>, BANFLAG_AUTHID, "причина", "кик-сообщение");


Если видите какой-то параметр между такими скобками -> [], то это значит что он не обязателен. Например, [kick]. Если добавите kick в конец, то игрока кикнет после бана, если нет - не кикнет.

Код
ServerCommand("removeip <ip>"); - разбан ip адреса
ServerCommand("removeid <steamid>"); - стима


SetEntityMoveType(client, <тип движения>);

Код
MOVETYPE_NONE - заморозить
MOVETYPE_ISOMETRIC - для игроков
MOVETYPE_WALK - движение по земле (для игроков)
MOVETYPE_STEP - gravity, special edge handling -- monsters use this
MOVETYPE_FLY - полет, джет пак (jet pack)
MOVETYPE_FLYGRAVITY - flies through the air + is affected by gravity
MOVETYPE_VPHYSICS - uses VPHYSICS for simulation (используется, например, для мяча)
MOVETYPE_PUSH - no clip to world, push and crush
MOVETYPE_NOCLIP - ноклип, можно летать по карте сквозь все объекты
MOVETYPE_LADDER - Used by players only when going onto a ladder
MOVETYPE_OBSERVER - Observer movement, depends on player's observer mode
MOVETYPE_CUSTOM - Allows the entity to describe its own physics

// Например:
SetEntityMoveType(client, MOVETYPE_NOCLIP);


Например, если хотите узнать заморожен игрок или нет:

Код
if (GetEntityMoveType(client) == MOVETYPE_NONE)
{
     // заморожен
}


// 0 - бессмертие, 2 - стандарт
SetEntProp(client, Prop_Data, "m_takedamage", 0);

Чтобы сделать игрока невидимым, нужно просто установить яркость (alpha) в 0 [или больше, если нужно чтобы он был невидим частично]. SetEntityRenderColor(client, r, g, b, a);

Код
SetEntityRenderMode(client, RENDER_TRANSCOLOR);
SetEntityRenderColor(client, 255, 255, 255, 50);


Дать оружие. Вернет true, если дали, false, если нет
GivePlayerItem(client, "weapon_awp");

Удалить оружие. Возвращает true/false
RemovePlayerItem(client, );

Узнать индекс оружия игрока по номеру слота. Вернет -1, если оружия нет.
GetPlayerWeaponSlot(client, <номер>);

Цитата
0 - автомат
1 - пистолет
2 - нож
3 - граната
4 - бомба c4


Установить скорость (1.0 = стандарт):
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", 3.7);
 
Naykon Дата: Вторник, 03.04.2012, 13:40:04 | Сообщение # 5
Сообщений: 439
Репутация: -4 [ +/- ]
Мут пожалуйста еще =) отдельно для чата и для голоса =)
 
Scarface_slv Дата: Понедельник, 09.04.2012, 06:14:03 | Сообщение # 6
Сообщений: 737
Репутация: 61 [ +/- ]
SetClientListeningFlags(client, VOICE_MUTED) эт мут вроде как
 
Naykon Дата: Пятница, 20.04.2012, 10:19:39 | Сообщение # 7
Сообщений: 439
Репутация: -4 [ +/- ]
А где можно глянуть весь список ФЛАГОВ типа VOICE_MUTED ??
 
_wS_ Дата: Пятница, 20.04.2012, 14:35:08 | Сообщение # 8
Thanks
Quote (Naykon)
А где можно глянуть весь список ФЛАГОВ типа VOICE_MUTED ??

Всё в том же API, тебе 1000 раз давали ссылку. Или в addons\sourcemod\scripting\include\sdktools_voice.inc
 
Naykon Дата: Воскресенье, 24.06.2012, 19:38:32 | Сообщение # 9
Сообщений: 439
Репутация: -4 [ +/- ]
Какой командой ослепить игрока??
 
_wS_ Дата: Воскресенье, 24.06.2012, 19:47:38 | Сообщение # 10
Thanks
SetEntProp - m_flFlashDuration (время) и m_flFlashMaxAlpha (сила ослепления)
 
Naykon Дата: Воскресенье, 07.10.2012, 23:41:26 | Сообщение # 11
Сообщений: 439
Репутация: -4 [ +/- ]
Ну или - ServerCommand("sm_blind @ct 5000"); =) спс

Добавлено (11.09.2012, 00:09:01)
---------------------------------------------
Высоту прыжка пожалуйста

Добавлено (07.10.2012, 23:41:26)
---------------------------------------------
Как можно "потрясти" экран игрока??

 
volk1994 Дата: Суббота, 17.11.2012, 12:04:39 | Сообщение # 12
Сообщений: 9
Репутация: 0 [ +/- ]
Я плоха ещо разбираюсь в скриптинге можете подсказать как добавить модель игроку контролу
пример
String:model[PLATFORM_MAX_PATH] = "models/player/t_phoenix.mdl";
и в какую командную строку вписать ?
 
Scarface_slv Дата: Суббота, 17.11.2012, 12:33:27 | Сообщение # 13
Сообщений: 737
Репутация: 61 [ +/- ]
Всем КТ. Т-скин) Наверно так:


Сообщение отредактировал Scarface_slv - Суббота, 17.11.2012, 12:36:06
 
volk1994 Дата: Суббота, 17.11.2012, 17:57:39 | Сообщение # 14
Сообщений: 9
Репутация: 0 [ +/- ]
Scarface_slv,
Всё работает но скин всегда появляется ! klas а можно сделать при команде !w чтоб появлялся тока у одного контрола

Добавлено (17.11.2012, 17:57:39)
---------------------------------------------
_wS_,
Поставь скин зам контрола в jail_control_test_v2_0
офигенный плагин будет klas

 
_wS_ Дата: Суббота, 17.11.2012, 18:07:24 | Сообщение # 15
Thanks
Quote (volk1994)
_wS_, Поставь скин зам контрола в jail_control

Ок, в след версию добавлю. Все предложения прошу делать в этой теме.
 
Форум » SourceMod >> CS:Source >> CSGO » Уроки SourceMod (SourcePawn) Скриптинга » Команды/Функции, связанные с игроком (Список, примеры)
  • Страница 1 из 9
  • 1
  • 2
  • 3
  • 8
  • 9
  • »
Поиск: