我正在为我的 Crysis Wars 服务器修改创建一个功能,该功能可以准确获取玩家所在的国家/地区。此信息用于为玩家定制服务器修改的前端(例如,如果玩家是德国人,则显示德语)。
我有这段代码,它应该可以正常工作,但没有(如果你想修复缩进,请编辑这篇文章):
int GetFileForCountry(const char *ip)
{
if (!ip)
{
CryLogAlways("[ThunderBolt 7] Internal Error: No IP was defined.");
return false;
}
char myUrl[255];
CryLogAlways("1");
sprintf(myUrl,"http://www.geoplugin.net/json.gp?ip=%s", (const char*)ip);
CryLogAlways("2");
CryLog("[ThunderBolt 7] Downloading file from source: %s", myUrl);
CryLogAlways("3");
const char *ch = gEnv->pConsole->GetCVar("sys_root")->GetString();
CryLogAlways("4");
const char *fLo = ("%sMods/Infinity/System/temp.txt",ch);
CryLogAlways("5");
std::wstring line;
std::cout<<myUrl;
CryLogAlways("6");
getline(std::wcin,line);
HRESULT hr;
CryLogAlways("7");
hr = URLDownloadToFile(NULL,(LPCSTR)line.c_str(),_T(fLo),0,NULL);
CryLogAlways("8");
return fLo;
}
该软件一直在崩溃(多个 CryLogAlways 背后的原因),我发现它在CryLog("[ThunderBolt 7] Downloading file from source: %s", myUrl);
. 我不确定myUrl
这是错误的声明,还是只是CryLogAlways
. 我和我的一个 C++ '专家' 的伙伴谈过,他不知道哪里出了问题。
我还搜索了各种解决方案(对此代码进行了超过 5 次完整的替换),但没有一个有效。我以前用过这段代码,它工作得很好。
这不是那么紧急,但如果你能向我指出问题,请做:)。