akvorok.ego
Участник
- Сообщения
- 314
- Реакции
- 186
- Автор ресурса
- #21
@parusstar, исправлено
ксго? отличные обновы от валв.Проблема в следующем.
Можно посмотреть только профиль одного игрока.При нажатии на второго в MOTD остается профиль первого игрока.Закрыть/Открыть меню ситуацию не меняют.Раньше все работало нормально.
CS:Source)ксго? отличные обновы от валв.
Я не знаю в чем дело, попробуйте скомпилить на разных версиях smCS:Source)
Версия: 1.1.6
(Версия: 1.1.6) - При нажатии на Steam игрока в меню плагина откроется motd окно с ссылкой на профиль и SteamID3.
Игра какая?После обновления перестал показывать кто со стима кто нет
CS:Source все как no-steam, в логах пусто.Игра какая?
Любая и ГОУ и соурИгра какая?
Версия: 2.0.0
(Версия: 2.0.0) - Плагин переведен на SteamWorks.
- Добавлена проверка VAC блокировки у игрока. (Если у игрока есть VAC бан, то отобразится в меню)
Если ты о том что вместо профиля в мотд появляется ссылка, то это сделано специально из-за того что в мотд не открываются другие ссылки после первой.Profile MOTD not working... [CS:S - V4014252]
Steam Community :: Screenshot
#pragma semicolon 1
#include <sourcemod>
#include <SteamWorks>
#include <socket>
public Plugin:myinfo =
{
name = "Check Steam Player",
author = "KOROVKA", // Plugin by KOROVKA
description = "Checks the status of the game client (Steam/No-Steam)",
version = "2.0.0",
url = ""
};
new String:SteamID[MAXPLAYERS+1][20], bool:ClientSteam[MAXPLAYERS+1], bool:bVAC[MAXPLAYERS+1], bool:bSocketConnectFail[MAXPLAYERS+1];
public OnPluginStart() RegConsoleCmd("steam", Cmd_CheckSteamPlayer);
public OnClientPostAdminCheck(client)
{
if(!IsFakeClient(client))
{
GetClientAuthId(client, AuthId_SteamID64, SteamID[client], 20);
ClientSteam[client] = false;
bVAC[client] = false;
bSocketConnectFail[client] = false;
Get_SteamWorks(client);
}
}
Get_SteamWorks(client)
{
decl String:sURL[70];
FormatEx(sURL, 70, "https://steamcommunity.com/profiles/%s?xml=1", SteamID[client]);
new Handle:hRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, sURL);
SteamWorks_SetHTTPCallbacks(hRequest, OnSteamWorksHTTPComplete);
SteamWorks_SetHTTPRequestContextValue(hRequest, client);
SteamWorks_SendHTTPRequest(hRequest);
}
public OnSteamWorksHTTPComplete(Handle:hRequest, bool:bFailure, bool:bRequestSuccessful, EHTTPStatusCode:eStatusCode, any:client)
{
if (bRequestSuccessful && eStatusCode == k_EHTTPStatusCode200OK) SteamWorks_GetHTTPResponseBodyCallback(hRequest, SteamWorksHTTPBodyCallback, client);
else bSocketConnectFail[client] = true;
CloseHandle(hRequest);
}
public SteamWorksHTTPBodyCallback(const String:sData[], any:client)
{
if(StrContains(sData, "<profile>", false) != -1)
{
ClientSteam[client] = true;
if(StrContains(sData, "<vacBanned>0</vacBanned>", false) == -1)
bVAC[client] = true;
}
}
public Action:Cmd_CheckSteamPlayer(client, args)
{
if(client > 0) ShowMenu(client);
return Plugin_Handled;
}
ShowMenu(client, pos = 0)
{
new Handle:menu = CreateMenu(MenuHandler_PlayersList);
new ClientsSteam, ClientsNoSteam;
decl String:buffer[100], String:info[10];
for (new i = 1; i <= MaxClients; i++)
{
if(IsClientInGame(i) && !IsFakeClient(i))
{
FormatEx(buffer, 100, "%N [%s]%s", i, ClientSteam[i] ? "Steam":bSocketConnectFail[i] ? "Unknown":"No-Steam", !bVAC[client] ? "":" - Имеет VAC");
if(bSocketConnectFail[i] == false)
{
if(ClientSteam[i])
{
IntToString(GetClientUserId(i), info, 10);
AddMenuItem(menu, info, buffer);
ClientsSteam++;
}
else
{
AddMenuItem(menu, "", buffer, ITEMDRAW_DISABLED);
ClientsNoSteam++;
}
}
else AddMenuItem(menu, "", buffer, ITEMDRAW_DISABLED);
}
}
SetMenuTitle(menu, "[%i - Steam | %i - No-Steam] Статус клиентов игры:", ClientsSteam, ClientsNoSteam);
DisplayMenuAtItem(menu, client, pos, MENU_TIME_FOREVER);
}
public MenuHandler_PlayersList(Handle:menu, MenuAction:action, param1, param2)
{
switch(action)
{
case MenuAction_Select:
{
decl String:info[10];
GetMenuItem(menu, param2, info, 10);
new target;
if((target = GetClientOfUserId(StringToInt(info))) != 0)
{
decl String:ProfileUrl[60], String:NameMotd[120];
FormatEx(ProfileUrl, 60, "http://steamcommunity.com/profiles/%s", SteamID[target]);
FormatEx(NameMotd, 120, "Профиль игрока %N в steam:", target);
ShowMOTDPanel(param1, NameMotd, ProfileUrl, MOTDPANEL_TYPE_URL);
}
else PrintToChat(param1, "\x04[Check Steam Player] \x01Игрок вышел!");
ShowMenu(param1, GetMenuSelectionPosition());
}
case MenuAction_End: CloseHandle(menu);
}
}
The first profile will always opened.I fixed 2.0.0 MOTD version with your 1.1.5. Tested and working, but i didn't checked about vac players.
Скачай SteamWorksSteamWorks установлен