本文整理汇总了C++中CheckClientID函数的典型用法代码示例。如果您正苦于以下问题:C++ CheckClientID函数的具体用法?C++ CheckClientID怎么用?C++ CheckClientID使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CheckClientID函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: ConCopy
void CGameContext::ConCopy(IConsole::IResult *pResult, void *pUserData)
{
CGameContext *pSelf = (CGameContext *) pUserData;
const int ClientID = pResult->m_ClientID;
const int ToCopy = pResult->GetVictim();
if(!CheckClientID(ClientID))
return;
pSelf->m_aInputCopy[ClientID] = (CheckClientID(ToCopy) && ClientID != ToCopy) ? ToCopy : -1;
}
开发者ID:ftk,项目名称:XXLDDRace,代码行数:11,代码来源:ddracechat.cpp
示例2: ConTimeout
void CGameContext::ConTimeout(IConsole::IResult *pResult, void *pUserData)
{
CGameContext *pSelf = (CGameContext *) pUserData;
if (!CheckClientID(pResult->m_ClientID))
return;
CPlayer *pPlayer = pSelf->m_apPlayers[pResult->m_ClientID];
if (!pPlayer)
return;
for(int i = 0; i < pSelf->Server()->MaxClients(); i++)
{
if (i == pResult->m_ClientID) continue;
if (!pSelf->m_apPlayers[i]) continue;
if (str_comp(pSelf->m_apPlayers[i]->m_TimeoutCode, pResult->GetString(0))) continue;
if (((CServer *)pSelf->Server())->m_NetServer.SetTimedOut(i, pResult->m_ClientID))
{
((CServer *)pSelf->Server())->DelClientCallback(pResult->m_ClientID, "Timeout Protection used", ((CServer *)pSelf->Server()));
((CServer *)pSelf->Server())->m_aClients[i].m_Authed = CServer::AUTHED_NO;
if (pSelf->m_apPlayers[i]->GetCharacter())
((CGameContext *)(((CServer *)pSelf->Server())->GameServer()))->SendTuningParams(i, pSelf->m_apPlayers[i]->GetCharacter()->m_TuneZone);
return;
}
}
((CServer *)pSelf->Server())->m_NetServer.SetTimeoutProtected(pResult->m_ClientID);
str_copy(pPlayer->m_TimeoutCode, pResult->GetString(0), sizeof(pPlayer->m_TimeoutCode));
}
开发者ID:SoMeRelaX,项目名称:ddnet,代码行数:28,代码来源:ddracechat.cpp
示例3: CheckRights
bool CheckRights(int ClientID, int Victim, CGameContext *GameContext)
{
if(!CheckClientID(ClientID)) return false;
if(!CheckClientID(Victim)) return false;
if (ClientID == Victim)
return true;
if (!GameContext->m_apPlayers[ClientID] || !GameContext->m_apPlayers[Victim])
return false;
if(GameContext->m_apPlayers[ClientID]->m_Authed <= GameContext->m_apPlayers[Victim]->m_Authed)
return false;
return true;
}
开发者ID:BigCrazyChris,项目名称:XXLDDRace,代码行数:16,代码来源:ddracecommands.cpp
示例4: defined
void CGameContext::ConTop5(IConsole::IResult *pResult, void *pUserData)
{
CGameContext *pSelf = (CGameContext *) pUserData;
if (!CheckClientID(pResult->m_ClientID))
return;
#if defined(CONF_SQL)
if(pSelf->m_apPlayers[pResult->m_ClientID] && g_Config.m_SvUseSQL)
if(pSelf->m_apPlayers[pResult->m_ClientID]->m_LastSQLQuery + pSelf->Server()->TickSpeed() >= pSelf->Server()->Tick())
return;
#endif
if (g_Config.m_SvHideScore)
{
pSelf->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "top5",
"Showing the top 5 is not allowed on this server.");
return;
}
if (pResult->NumArguments() > 0 && pResult->GetInteger(0) > 0)
pSelf->Score()->ShowTop5(pResult, pResult->m_ClientID, pUserData,
pResult->GetInteger(0));
else
pSelf->Score()->ShowTop5(pResult, pResult->m_ClientID, pUserData);
#if defined(CONF_SQL)
if(pSelf->m_apPlayers[pResult->m_ClientID] && g_Config.m_SvUseSQL)
pSelf->m_apPlayers[pResult->m_ClientID]->m_LastSQLQuery = pSelf->Server()->Tick();
#endif
}
开发者ID:SoMeRelaX,项目名称:ddnet,代码行数:30,代码来源:ddracechat.cpp
示例5: ConEyeEmote
void CGameContext::ConEyeEmote(IConsole::IResult *pResult, void *pUserData)
{
CGameContext *pSelf = (CGameContext *) pUserData;
if (g_Config.m_SvEmotionalTees == -1)
{
pSelf->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "emote",
"Server admin disabled emotes.");
return;
}
if (!CheckClientID(pResult->m_ClientID))
return;
CPlayer *pPlayer = pSelf->m_apPlayers[pResult->m_ClientID];
if (!pPlayer)
return;
if (pResult->NumArguments() == 0)
{
pSelf->Console()->Print(
IConsole::OUTPUT_LEVEL_STANDARD,
"emote",
"Emote commands are: /emote surprise /emote blink /emote close /emote angry /emote happy /emote pain");
pSelf->Console()->Print(
IConsole::OUTPUT_LEVEL_STANDARD,
"emote",
"Example: /emote surprise 10 for 10 seconds or /emote surprise (default 1 second)");
}
else
{
if(pPlayer->m_LastEyeEmote + g_Config.m_SvEyeEmoteChangeDelay * pSelf->Server()->TickSpeed() >= pSelf->Server()->Tick())
return;
if (!str_comp(pResult->GetString(0), "angry"))
pPlayer->m_DefEmote = EMOTE_ANGRY;
else if (!str_comp(pResult->GetString(0), "blink"))
pPlayer->m_DefEmote = EMOTE_BLINK;
else if (!str_comp(pResult->GetString(0), "close"))
pPlayer->m_DefEmote = EMOTE_BLINK;
else if (!str_comp(pResult->GetString(0), "happy"))
pPlayer->m_DefEmote = EMOTE_HAPPY;
else if (!str_comp(pResult->GetString(0), "pain"))
pPlayer->m_DefEmote = EMOTE_PAIN;
else if (!str_comp(pResult->GetString(0), "surprise"))
pPlayer->m_DefEmote = EMOTE_SURPRISE;
else if (!str_comp(pResult->GetString(0), "normal"))
pPlayer->m_DefEmote = EMOTE_NORMAL;
else
pSelf->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD,
"emote", "Unknown emote... Say /emote");
int Duration = 1;
if (pResult->NumArguments() > 1)
Duration = pResult->GetInteger(1);
pPlayer->m_DefEmoteReset = pSelf->Server()->Tick()
+ Duration * pSelf->Server()->TickSpeed();
pPlayer->m_LastEyeEmote = pSelf->Server()->Tick();
}
}
开发者ID:SoMeRelaX,项目名称:ddnet,代码行数:60,代码来源:ddracechat.cpp
示例6: ConRank
void CGameContext::ConRank(IConsole::IResult *pResult, void *pUserData)
{
CGameContext *pSelf = (CGameContext *) pUserData;
if (!CheckClientID(pResult->m_ClientID))
return;
CPlayer *pPlayer = pSelf->m_apPlayers[pResult->m_ClientID];
if (!pPlayer)
return;
#if defined(CONF_SQL)
if(g_Config.m_SvUseSQL)
if(pPlayer->m_LastSQLQuery + pSelf->Server()->TickSpeed() >= pSelf->Server()->Tick())
return;
#endif
if (pResult->NumArguments() > 0)
if (!g_Config.m_SvHideScore)
pSelf->Score()->ShowRank(pResult->m_ClientID, pResult->GetString(0),
true);
else
pSelf->Console()->Print(
IConsole::OUTPUT_LEVEL_STANDARD,
"rank",
"Showing the rank of other players is not allowed on this server.");
else
pSelf->Score()->ShowRank(pResult->m_ClientID,
pSelf->Server()->ClientName(pResult->m_ClientID));
#if defined(CONF_SQL)
if(g_Config.m_SvUseSQL)
pPlayer->m_LastSQLQuery = pSelf->Server()->Tick();
#endif
}
开发者ID:SoMeRelaX,项目名称:ddnet,代码行数:34,代码来源:ddracechat.cpp
示例7: ConShowOthers
void CGameContext::ConShowOthers(IConsole::IResult *pResult, void *pUserData)
{
CGameContext *pSelf = (CGameContext *) pUserData;
if (!CheckClientID(pResult->m_ClientID))
return;
CPlayer *pPlayer = pSelf->m_apPlayers[pResult->m_ClientID];
if (!pPlayer)
return;
if (g_Config.m_SvShowOthers)
{
if (pPlayer->m_IsUsingDDRaceClient)
{
if (pResult->NumArguments())
pPlayer->m_ShowOthers = pResult->GetInteger(0);
else
pPlayer->m_ShowOthers = !pPlayer->m_ShowOthers;
}
else
pSelf->Console()->Print(
IConsole::OUTPUT_LEVEL_STANDARD,
"showotherschat",
"Showing players from other teams is only available with DDRace Client, http://DDRace.info");
}
else
pSelf->Console()->Print(
IConsole::OUTPUT_LEVEL_STANDARD,
"showotherschat",
"Showing players from other teams is disabled by the server admin");
}
开发者ID:ftk,项目名称:XXLDDRace,代码行数:30,代码来源:ddracechat.cpp
示例8: ConLoad
void CGameContext::ConLoad(IConsole::IResult *pResult, void *pUserData)
{
CGameContext *pSelf = (CGameContext *) pUserData;
if (!CheckClientID(pResult->m_ClientID))
return;
CPlayer *pPlayer = pSelf->m_apPlayers[pResult->m_ClientID];
if (!pPlayer)
return;
#if defined(CONF_SQL)
if(!g_Config.m_SvSaveGames)
{
pSelf->SendChatTarget(pResult->m_ClientID, "Save-function is disabled on this server");
return;
}
if(g_Config.m_SvUseSQL)
if(pPlayer->m_LastSQLQuery + pSelf->Server()->TickSpeed() >= pSelf->Server()->Tick())
return;
#endif
if (pResult->NumArguments() > 0)
pSelf->Score()->LoadTeam(pResult->GetString(0), pResult->m_ClientID);
else
return;
#if defined(CONF_SQL)
if(g_Config.m_SvUseSQL)
pPlayer->m_LastSQLQuery = pSelf->Server()->Tick();
#endif
}
开发者ID:SoMeRelaX,项目名称:ddnet,代码行数:32,代码来源:ddracechat.cpp
示例9: ConMapInfo
void CGameContext::ConMapInfo(IConsole::IResult *pResult, void *pUserData)
{
CGameContext *pSelf = (CGameContext *) pUserData;
if (!CheckClientID(pResult->m_ClientID))
return;
CPlayer *pPlayer = pSelf->m_apPlayers[pResult->m_ClientID];
if (!pPlayer)
return;
#if defined(CONF_SQL)
if(g_Config.m_SvUseSQL)
if(pPlayer->m_LastSQLQuery + pSelf->Server()->TickSpeed() >= pSelf->Server()->Tick())
return;
#endif
if (pResult->NumArguments() > 0)
pSelf->Score()->MapInfo(pResult->m_ClientID, pResult->GetString(0));
else
pSelf->Score()->MapInfo(pResult->m_ClientID, g_Config.m_SvMap);
#if defined(CONF_SQL)
if(g_Config.m_SvUseSQL)
pPlayer->m_LastSQLQuery = pSelf->Server()->Tick();
#endif
}
开发者ID:SoMeRelaX,项目名称:ddnet,代码行数:26,代码来源:ddracechat.cpp
示例10: ConLogin
void CGameContext::ConLogin(IConsole::IResult *pResult, void *pUserData)
{
if(!CheckClientID(pResult->m_ClientID)) return;
CGameContext *pSelf = (CGameContext *)pUserData;
pSelf->MemberList->Login(pResult->m_ClientID, pResult->GetString(0), pSelf);
}
开发者ID:ftk,项目名称:XXLDDRace,代码行数:7,代码来源:ddracechat.cpp
示例11: ConSayTimeAll
void CGameContext::ConSayTimeAll(IConsole::IResult *pResult, void *pUserData)
{
CGameContext *pSelf = (CGameContext *) pUserData;
if (!CheckClientID(pResult->m_ClientID))
return;
CPlayer *pPlayer = pSelf->m_apPlayers[pResult->m_ClientID];
if (!pPlayer)
return;
CCharacter* pChr = pPlayer->GetCharacter();
if (!pChr)
return;
if(pChr->m_DDRaceState != DDRACE_STARTED)
return;
char aBuftime[64];
int IntTime = (int) ((float) (pSelf->Server()->Tick() - pChr->m_StartTime)
/ ((float) pSelf->Server()->TickSpeed()));
str_format(aBuftime, sizeof(aBuftime),
"%s\'s current race time is %s%d:%s%d",
pSelf->Server()->ClientName(pResult->m_ClientID),
((IntTime / 60) > 9) ? "" : "0", IntTime / 60,
((IntTime % 60) > 9) ? "" : "0", IntTime % 60);
pSelf->SendChat(-1, CGameContext::CHAT_ALL, aBuftime, pResult->m_ClientID);
}
开发者ID:SoMeRelaX,项目名称:ddnet,代码行数:25,代码来源:ddracechat.cpp
示例12: ConRocket
void CGameContext::ConRocket(IConsole::IResult *pResult, void *pUserData)
{
CGameContext *pSelf = (CGameContext *)pUserData;
if (!CheckClientID(pResult->m_ClientID))
return;
int Victim = pResult->GetVictim();
CPlayer *pPlayer = pSelf->m_apPlayers[Victim];
if(!pPlayer)
return;
pSelf->ModifyWeapons(pResult, pUserData, WEAPON_GRENADE, false);
char aBuf[128];
if (!pPlayer->m_IsRocket)
{
pPlayer->m_IsRocket = true;
str_format(aBuf, sizeof(aBuf), "You got Rocket by %s.", pSelf->Server()->ClientName(pResult->m_ClientID));
pSelf->SendChatTarget(Victim, aBuf);
}
else
{
pPlayer->m_IsRocket = false;
str_format(aBuf, sizeof(aBuf), "%s removed your Rocket.", pSelf->Server()->ClientName(pResult->m_ClientID));
pSelf->SendChatTarget(Victim, aBuf);
}
}
开发者ID:SoMeRelaX,项目名称:ddnet,代码行数:28,代码来源:ddracecommands.cpp
示例13: ConTogglePause
void CGameContext::ConTogglePause(IConsole::IResult *pResult, void *pUserData)
{
CGameContext *pSelf = (CGameContext *)pUserData;
if(!CheckClientID(pResult->m_ClientID)) return;
char aBuf[128];
CPlayer *pPlayer = pSelf->m_apPlayers[pResult->m_ClientID];
if(!pPlayer)
return;
if (pPlayer->GetCharacter() == 0)
{
pSelf->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "pause",
"You can't pause while you are dead/a spectator.");
return;
}
if(pPlayer->m_Paused == CPlayer::PAUSED_FORCE)
{
str_format(aBuf, sizeof(aBuf), "You are force-paused. %ds left.", pPlayer->m_ForcePauseTime/pSelf->Server()->TickSpeed());
pSelf->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "pause", aBuf);
return;
}
pPlayer->m_Paused = (pPlayer->m_Paused == CPlayer::PAUSED_SPEC) ? CPlayer::PAUSED_NONE : CPlayer::PAUSED_SPEC;
}
开发者ID:SoMeRelaX,项目名称:ddnet,代码行数:26,代码来源:ddracechat.cpp
示例14: ConTest
void CGameContext::ConTest(IConsole::IResult *pResult, void *pUserData)
{
if(!CheckClientID(pResult->m_ClientID)) return;
int Victim = pResult->m_ClientID;
CGameContext *pSelf = (CGameContext *)pUserData;
const char *message = pResult->GetString(0);
char aBuf[256];
str_format(aBuf, sizeof(aBuf), "ClientID:%i|First arg:%s", pResult->m_ClientID, message);
pSelf->SendChatTarget(Victim, aBuf);
//
// CGameContext *pSelf = (CGameContext *)pUserData;
// CCharacter* pChr = pSelf->m_apPlayers[pResult->ClientID]->GetCharacter();
// if(!pChr)
// return;
// str_format(aBuf, sizeof(aBuf), "md5:%s" , md5(message));
//pChr->m_is_bloody = 1;
//~ pSelf->m_apPlayers[ClientID]->m_Score = (Score()->PlayerData(ClientID)->m_BestTime)?Score()->PlayerData(ClientID)->m_BestTime:0;
//~ pSelf->m_apPlayers[ClientID]->m_Score = 123;
//~ char aBuf[256];
//~ str_format(aBuf, sizeof(aBuf), "%s: %s" ,pSelf->Server()->ClientName(ClientID),message);
//~ str_format(aBuf, sizeof(aBuf), "Teeinfo:%i" , pSelf->m_apPlayers[ClientID]->m_TeeInfos.m_ColorBody);
//~ pResult->Print(IConsole::OUTPUT_LEVEL_STANDARD, "info", aBuf);
//~ pSelf->SendChatTarget(Victim, aBuf);
}
开发者ID:BigCrazyChris,项目名称:XXLDDRace,代码行数:31,代码来源:ddracecommands.cpp
示例15: ConSetEyeEmote
void CGameContext::ConSetEyeEmote(IConsole::IResult *pResult,
void *pUserData)
{
CGameContext *pSelf = (CGameContext *) pUserData;
if (!CheckClientID(pResult->m_ClientID))
return;
CPlayer *pPlayer = pSelf->m_apPlayers[pResult->m_ClientID];
if (!pPlayer)
return;
if(pResult->NumArguments() == 0) {
pSelf->Console()->Print(
IConsole::OUTPUT_LEVEL_STANDARD,
"emote",
(pPlayer->m_EyeEmote) ?
"You can now use the preset eye emotes." :
"You don't have any eye emotes, remember to bind some. (until you die)");
return;
}
else if(str_comp_nocase(pResult->GetString(0), "on") == 0)
pPlayer->m_EyeEmote = true;
else if(str_comp_nocase(pResult->GetString(0), "off") == 0)
pPlayer->m_EyeEmote = false;
else if(str_comp_nocase(pResult->GetString(0), "toggle") == 0)
pPlayer->m_EyeEmote = !pPlayer->m_EyeEmote;
pSelf->Console()->Print(
IConsole::OUTPUT_LEVEL_STANDARD,
"emote",
(pPlayer->m_EyeEmote) ?
"You can now use the preset eye emotes." :
"You don't have any eye emotes, remember to bind some. (until you die)");
}
开发者ID:SoMeRelaX,项目名称:ddnet,代码行数:32,代码来源:ddracechat.cpp
示例16: ConGoUp
void CGameContext::ConGoUp(IConsole::IResult *pResult, void *pUserData)
{
CGameContext *pSelf = (CGameContext *) pUserData;
if (!CheckClientID(pResult->m_ClientID))
return;
pSelf->MoveCharacter(pResult->m_ClientID, 0, -1);
}
开发者ID:BigCrazyChris,项目名称:XXLDDRace,代码行数:7,代码来源:ddracecommands.cpp
示例17: ModifyWeapons
void CGameContext::ModifyWeapons(IConsole::IResult *pResult, void *pUserData,
int Weapon, bool Remove)
{
CGameContext *pSelf = (CGameContext *) pUserData;
if (!CheckClientID(pResult->m_ClientID))
return;
int ClientID = pResult->m_ClientID;
if (clamp(Weapon, -1, NUM_WEAPONS - 1) != Weapon)
{
pSelf->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "info",
"invalid weapon id");
return;
}
CCharacter* pChr = GetPlayerChar(ClientID);
if (!pChr)
return;
if (Weapon == -1)
{
if (Remove
&& (pChr->GetActiveWeapon() == WEAPON_SHOTGUN
|| pChr->GetActiveWeapon() == WEAPON_GRENADE
|| pChr->GetActiveWeapon() == WEAPON_RIFLE))
pChr->SetActiveWeapon(WEAPON_GUN);
if (Remove)
{
pChr->SetWeaponGot(WEAPON_SHOTGUN, false);
pChr->SetWeaponGot(WEAPON_GRENADE, false);
pChr->SetWeaponGot(WEAPON_RIFLE, false);
}
else
pChr->GiveAllWeapons();
}
else if (Weapon != WEAPON_NINJA)
{
if (Remove && pChr->GetActiveWeapon() == Weapon)
pChr->SetActiveWeapon(WEAPON_GUN);
if (Remove)
pChr->SetWeaponGot(Weapon, false);
else
pChr->GiveWeapon(Weapon, -1);
}
else
{
if (Remove)
{
pSelf->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "info",
"you can't remove ninja");
return;
}
pChr->GiveNinja();
}
pChr->m_DDRaceState = DDRACE_CHEAT;
}
开发者ID:andi103,项目名称:rDDRace,代码行数:59,代码来源:ddracecommands.cpp
示例18: ConMoveRaw
void CGameContext::ConMoveRaw(IConsole::IResult *pResult, void *pUserData)
{
CGameContext *pSelf = (CGameContext *) pUserData;
if (!CheckClientID(pResult->m_ClientID))
return;
pSelf->MoveCharacter(pResult->m_ClientID, pResult->GetInteger(0),
pResult->GetInteger(1), true);
}
开发者ID:BigCrazyChris,项目名称:XXLDDRace,代码行数:8,代码来源:ddracecommands.cpp
示例19: ConUnDeep
void CGameContext::ConUnDeep(IConsole::IResult *pResult, void *pUserData)
{
CGameContext *pSelf = (CGameContext *) pUserData;
if (!CheckClientID(pResult->m_ClientID))
return;
CCharacter* pChr = pSelf->GetPlayerChar(pResult->m_ClientID);
if (pChr)
pChr->m_DeepFreeze = false;
}
开发者ID:hamidkag,项目名称:TBlock,代码行数:9,代码来源:ddracecommands.cpp
示例20: ConSave
void CGameContext::ConSave(IConsole::IResult *pResult, void *pUserData)
{
CGameContext *pSelf = (CGameContext *) pUserData;
if (!CheckClientID(pResult->m_ClientID))
return;
CPlayer *pPlayer = pSelf->m_apPlayers[pResult->m_ClientID];
if (!pPlayer)
return;
#if defined(CONF_SQL)
if(!g_Config.m_SvSaveGames)
{
pSelf->SendChatTarget(pResult->m_ClientID, "Save-function is disabled on this server");
return;
}
if(g_Config.m_SvUseSQL)
if(pPlayer->m_LastSQLQuery + pSelf->Server()->TickSpeed() >= pSelf->Server()->Tick())
return;
int Team = ((CGameControllerDDRace*) pSelf->m_pController)->m_Teams.m_Core.Team(pResult->m_ClientID);
const char* pCode = pResult->GetString(0);
char aCountry[5];
if(str_length(pCode) > 3 && pCode[0] >= 'A' && pCode[0] <= 'Z' && pCode[1] >= 'A'
&& pCode[1] <= 'Z' && pCode[2] >= 'A' && pCode[2] <= 'Z')
{
if(pCode[3] == ' ')
{
str_copy(aCountry, pCode, 4);
pCode = pCode + 4;
}
else if(str_length(pCode) > 4 && pCode[4] == ' ')
{
str_copy(aCountry, pCode, 5);
pCode = pCode + 5;
}
else
{
str_copy(aCountry, g_Config.m_SvSqlServerName, sizeof(aCountry));
}
}
else
{
str_copy(aCountry, g_Config.m_SvSqlServerName, sizeof(aCountry));
}
pSelf->Score()->SaveTeam(Team, pCode, pResult->m_ClientID, aCountry);
if(g_Config.m_SvUseSQL)
pPlayer->m_LastSQLQuery = pSelf->Server()->Tick();
#endif
}
开发者ID:SoMeRelaX,项目名称:ddnet,代码行数:54,代码来源:ddracechat.cpp
注:本文中的CheckClientID函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论