GetClientUserId и GetClientOfUserId
|
|
Collesss
|
Дата: Суббота, 22.08.2015, 12:41:04 | Сообщение # 1 |
|
Сообщений: 29
Репутация: 0 [ +/- ]
|
|
чем отличается GetClientUserId от GetClientOfUserId
|
|
| |
BarD
|
Дата: Суббота, 22.08.2015, 13:35:48 | Сообщение # 2 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
GetClientUserId получает userid из индекса энтити (если это игрок), а GetClientOfUserId получает индекс игрока из userid.
|
|
| |
Collesss
|
Дата: Суббота, 22.08.2015, 15:14:43 | Сообщение # 3 |
|
Сообщений: 29
Репутация: 0 [ +/- ]
|
|
BarD, ну наверно понял ,а не подскажешь как получить индекс игрока через ник?
Сообщение отредактировал Collesss - Суббота, 22.08.2015, 15:14:52 |
|
| |
BarD
|
Дата: Суббота, 22.08.2015, 18:17:55 | Сообщение # 4 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Код new String:Name[70], target = -1;
for (new i=1;i<=MaxClients;i++) { if (IsClientInGame(i)) { GetClientName(i, Name, 70); if (StrEqual(Name, "Нужный ник")) { target = i; break; } } }
"Нужный ник" - это ник игрока, который нужен. После цикла в переменной target будет лежать индекс игрока с ником "Нужный ник".
Как это работает: 1) Цикл пробегает по всем игрокам на сервере 2) Берется ник проверяемого игрока и сравнивается с искомым. 3) Если совпадает, то индекс этого игрока заносится в переменную target, и цикл прекращается. Если не совпадает, то цикл продолжается.
Если игрока с ником "Нужный ник" нет на сервере, то в переменную запишется -1.
|
|
| |
Sallcom
|
Дата: Суббота, 22.08.2015, 21:07:12 | Сообщение # 5 |
|
Сообщений: 205
Репутация: 31 [ +/- ]
|
|
Проще вот так: Код stock GetClientIndex(String:sName[]){ decl String:sBuffer[32]; for(new i = 1; i <= MaxClients; i++) if(IsClientInGame(i) && GetClientName(i, sBuffer, 32) && StrEqual(sName, sBuffer)) return i; return -1; }
А потом просто в нужном месте получать индекс через GetClientIndex("Нужный ник")
P.S. BarD, все время вижу, что люди выделяют лишнюю память под переменную. Ник не может быть больше 30 латинский символов, поэтому 32 хватит.
Сообщение отредактировал Sallcom - Суббота, 22.08.2015, 23:22:39 |
|
| |
Collesss
|
Дата: Суббота, 22.08.2015, 22:07:00 | Сообщение # 6 |
|
Сообщений: 29
Репутация: 0 [ +/- ]
|
|
Sallcom, тоесть встроенной функции по поиску игрока через ник нету только через цикл?
|
|
| |
Sallcom
|
Дата: Суббота, 22.08.2015, 23:24:14 | Сообщение # 7 |
|
Сообщений: 205
Репутация: 31 [ +/- ]
|
|
Стандартной функции вроде бы нет, но я тебе написал ее. Просто вставь ее как блок и используй.
Сообщение отредактировал Sallcom - Воскресенье, 23.08.2015, 15:12:45 |
|
| |
Collesss
|
Дата: Воскресенье, 23.08.2015, 10:24:34 | Сообщение # 8 |
|
Сообщений: 29
Репутация: 0 [ +/- ]
|
|
Sallcom, а что делает FindTarget ?
|
|
| |
Scarface_slv
|
Дата: Воскресенье, 23.08.2015, 12:06:10 | Сообщение # 9 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
Collesss, находит игрока по нику, возращает -1 если не найден. Но нужно загрузить LoadTranslations("common.phrases"); в OnPluginStart() new target = FindTarget(client, "Ник игрока");
|
|
| |
Collesss
|
Дата: Воскресенье, 23.08.2015, 12:10:34 | Сообщение # 10 |
|
Сообщений: 29
Репутация: 0 [ +/- ]
|
|
Scarface_slv, а в FindTarget вместо client что вписывать надо
|
|
| |
Scarface_slv
|
Дата: Воскресенье, 23.08.2015, 12:12:30 | Сообщение # 11 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
Ну индекс игрока которому напишет, что "Игрок с таким именнем не найден" например Ее используют обычно когда регистрируют команду какую то RegConsole, RegAdmin. Она может найти индекс через ник игрока и через юзерид #%d. Типо sm_ammo <name/#id> "ammo"
Сообщение отредактировал Scarface_slv - Воскресенье, 23.08.2015, 12:23:07 |
|
| |
Collesss
|
Дата: Воскресенье, 23.08.2015, 15:08:01 | Сообщение # 12 |
|
Сообщений: 29
Репутация: 0 [ +/- ]
|
|
Scarface_slv, спасибо ну тогда я прям здесь следующий вопрос задам . 1)допустим я хочу зарегистрировать какую нибудь команду которая будет доступна только тем клиентам у которых допустим есть один из этих флагов z,o,b,p как лучше всего это сделать ? 2) как проверку на наличие определённого флага у клиента? 3)int SetEntProp(int entity, PropType type, const char[] prop, any value, int size, int element) где можно список всех значений const char[] prop.4)Как выводить текстуру на экран всем и одному игроку и как убрать её потом.5)Как поменять скин у клиента(ов) 5) Можно ли поставить скин на оружие .если ответишь буду очень благодарен.
Сообщение отредактировал Collesss - Воскресенье, 23.08.2015, 15:42:24 |
|
| |
BarD
|
Дата: Воскресенье, 23.08.2015, 15:46:23 | Сообщение # 13 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Цитата Collesss ( ) 1)допустим я хочу зарегистрировать какую нибудь команду которая будет доступна только тем клиентам у которых допустим есть один из этих флагов z,o,b,p как лучше всего это сделать ? Код RegAdminCmd("command", Callback, ADMFLAG_ROOT); Вот список флагов: Цитата #define ADMFLAG_RESERVATION /* Admin_Reservation (a)*/ #define ADMFLAG_GENERIC /* Admin_Generic (b) */ #define ADMFLAG_KICK /* Admin_Kick ©*/ #define ADMFLAG_BAN /* Admin_Ban (d)*/ #define ADMFLAG_UNBAN /* Admin_Unban (e)*/ #define ADMFLAG_SLAY /* Admin_Slay (f)*/ #define ADMFLAG_CHANGEMAP/* Admin_Changemap (g)*/ #define ADMFLAG_CONVARS /* Admin_Convars (h)*/ #define ADMFLAG_CONFIG/* Admin_Config (i)*/ #define ADMFLAG_CHAT/* Admin_Chat (j)*/ #define ADMFLAG_VOTE /* Admin_Vote (k)*/ #define ADMFLAG_PASSWORD /*Admin_Password (l)*/ #define ADMFLAG_RCON /*Admin_RCON (m)*/ #define ADMFLAG_CHEATS /*Admin_Cheats (n)*/ #define ADMFLAG_ROOT /* Admin_Root (z)*/ #define ADMFLAG_CUSTOM1 /* Admin_Custom1 (o)*/ #define ADMFLAG_CUSTOM2 /* Admin_Custom2 (p)*/ #define ADMFLAG_CUSTOM3 /* Admin_Custom3 (q)*/ #define ADMFLAG_CUSTOM4 /* Admin_Custom4 ®*/ #define ADMFLAG_CUSTOM5 /* Admin_Custom5 (s)*/ #define ADMFLAG_CUSTOM6 /* Admin_Custom6 (t)*/
|
|
| |
Sallcom
|
Дата: Воскресенье, 23.08.2015, 15:54:29 | Сообщение # 14 |
|
Сообщений: 205
Репутация: 31 [ +/- ]
|
|
Цитата Collesss ( ) 2) как проверку на наличие определённого флага у клиента? Код stock bool:HasAdminFlags(client, flags=ADMFLAG_GENERIC){ new AdminId:adminId = GetUserAdmin(client); return adminId == INVALID_ADMIN_ID ? false : bool:(GetAdminFlags(adminId, Access_Effective) & flags); }
А потом HasAdminFlags(client, флаг) Если true, то флаг есть.
Цитата Collesss ( ) 3)int SetEntProp(int entity, PropType type, const char[] prop, any value, int size, int element) где можно список всех значений const char[] prop. http://world-source.ru/datamaps.txt
Цитата Collesss ( ) 4)Как выводить текстуру на экран всем и одному игроку и как убрать её потом. Код stock SetScreenOverlay(client, String:sValue[]){ decl iFlags; iFlags = GetCommandFlags("r_screenoverlay") & (~FCVAR_CHEAT); SetCommandFlags("r_screenoverlay", iFlags); ClientCommand(client, "r_screenoverlay %s", sValue); }
stock SetScreenOverlayToAll(String:sValue[]){ for(new i = 1; i <= MaxClients; i++) if(IsClientInGame(i)) SetScreenOverlay(i, sValue); }
SetScreenOverlay(индекс_игрока, "путь к текстуре"); SetScreenOverlayToAll("путь к текстуре");
Чтобы отключить оверлей, нужно в пути написать off
Цитата Collesss ( ) 5)Как поменять скин у клиента(ов) Код SetEntityModel(индекс_игрока, "путь к .mdl файлу");
Сообщение отредактировал Sallcom - Воскресенье, 23.08.2015, 16:07:28 |
|
| |
BarD
|
Дата: Воскресенье, 23.08.2015, 16:11:00 | Сообщение # 15 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Цитата Collesss ( ) 5) Можно ли поставить скин на оружие .если ответишь буду очень благодарен. SetEntityModel(client, "путь к модели");
Только в OnMapStart нужно прекэшнуть сам файл модели: Код PrecacheModel("путь к файлу .mdl", true); И сделать загрузку ВСЕХ файлов модели, если она нестандартная (нет в игре):
Код AddFileToDownloadsTable("путь к файлу"); Так же нужно работать и со звуками (загрузка + прекэш).
Цитата Collesss ( ) 5) Можно ли поставить скин на оружие В ксс есть плагин Weapon Models (или что-то в этом роде). Он ставит именно сам скин. А для csgo есть Weapon Paints. Он позволяет ставить любую раскраску на оружие (даже если такой не существует, как, например "Glock | Красная линия")
Сообщение отредактировал BarD - Воскресенье, 23.08.2015, 16:11:11 |
|
| |