Заказать Сервер Заказать Плагин Контакты Поиск

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

Страница 1 из 41234»
Форум » SourceMod - Counter Strike Source && CS GO » Уроки SourceMod (SourcePawn) Скриптинга » Команды/Функции, связанные с игроком (Список, примеры)
Команды/Функции, связанные с игроком
_wS_ Дата: Воскресенье, 28.08.2011, 20:44:21 | Сообщение # 1
В SourceMod'e в основном все команды, связанные с игроком, требуют его индекс, в отличие от Eventscripts (так как в ES все делается по userid). Есть несколько вариантов, как можно получить индекс игрока:

В самих событиях есть переменная userid, например:

Code
public OnPluginStart()
{
     HookEvent("player_spawn", player_spawn);
}

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

Или с помощью цикла:

Code
for (new i = 1; i <= MaxClients; i++)
{
     if (IsClientInGame(i)) PrintToChatAll("%N <index = %d>", i, i);
}


MaxClients или GetMaxClients() - это максимум слотов на вашем сервере.
Если слотов 7, то индекс игрока может быть от 1 до 7.

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

Code
decl String:name[MAX_NAME_LENGTH];
GetClientName(client, name, MAX_NAME_LENGTH);
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]); - координаты игрока (под ногами)

Code
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
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:...) - отправить всем

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

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


Например:

Code
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
Репутация: -5 [ +/- ]
Какая команда для:
1) Возродить клиента
2) Убить клиента
3) Забанить клиента
4) Маяк
5) Заморозить
6) Мут (чат\голос)
7) Гравитация
8) полет (сквозь стены)
9) Опьянить
10) Ослепить
11) Обезаружить
12) Безсмертие
13) Дать оружие
14) Невидимость
15) Скорость
16) Бесконечные патроны
 
_wS_ Дата: Вторник, 03.04.2012, 01:03:28 | Сообщение # 4
ForcePlayerSuicide(client); - убить игрока

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

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


По SteamID:

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


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

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


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

Code
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);


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

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


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

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

Code
SetEntityRenderMode(client, RENDER_TRANSCOLOR);
SetEntityRenderColor(client, 255, 255, 255, 50);


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

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

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

Quote
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
Репутация: -5 [ +/- ]
Мут пожалуйста еще =) отдельно для чата и для голоса =)
 
Scarface_slv Дата: Понедельник, 09.04.2012, 06:14:03 | Сообщение # 6
Сообщений: 749
Репутация: 61 [ +/- ]
SetClientListeningFlags(client, VOICE_MUTED) эт мут вроде как
 
Naykon Дата: Пятница, 20.04.2012, 10:19:39 | Сообщение # 7
Сообщений: 439
Репутация: -5 [ +/- ]
А где можно глянуть весь список ФЛАГОВ типа VOICE_MUTED ??
 
_wS_ Дата: Пятница, 20.04.2012, 14:35:08 | Сообщение # 8
Quote (Naykon)
А где можно глянуть весь список ФЛАГОВ типа VOICE_MUTED ??

Всё в том же API, тебе 1000 раз давали ссылку. Или в addons\sourcemod\scripting\include\sdktools_voice.inc
 
Naykon Дата: Воскресенье, 24.06.2012, 19:38:32 | Сообщение # 9
Сообщений: 439
Репутация: -5 [ +/- ]
Какой командой ослепить игрока??
 
_wS_ Дата: Воскресенье, 24.06.2012, 19:47:38 | Сообщение # 10
SetEntProp - m_flFlashDuration (время) и m_flFlashMaxAlpha (сила ослепления)
 
Naykon Дата: Воскресенье, 07.10.2012, 23:41:26 | Сообщение # 11
Сообщений: 439
Репутация: -5 [ +/- ]
Ну или - 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
Сообщений: 749
Репутация: 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
Quote (volk1994)
_wS_, Поставь скин зам контрола в jail_control

Ок, в след версию добавлю. Все предложения прошу делать в этой теме.
 
Форум » SourceMod - Counter Strike Source && CS GO » Уроки SourceMod (SourcePawn) Скриптинга » Команды/Функции, связанные с игроком (Список, примеры)
Страница 1 из 41234»
Поиск: