Очень хороший код! Особенно когда помнишь как они пытались получить Rcon пароль от сервера через плагин RatesController.
string token = "OAIHDaoishdAOIhdAOSDhoihadoa";
void GetQueueID()
{
var reply = 230;
if (reply == 0) {}
var url = "
http://rustplugin.ru/plugins/rustmap.php?" + $ "token={token}&type=gen&level={level}&seed={mapSeed}&size={mapSize1}&sizes={reply}&info={ConVar.Server.hostname}";
webrequest.Enqueue(url, null, (code, response) =>
{
if (code == 201) {
PrintError("У вас старая версия карты. Обновите ее на сайте RustPlugin.ru");
Interface.Oxide.UnloadPlugin(Title);
return;
}
if (code != 200 || string.IsNullOrEmpty(response))
{
if (code == 403) PrintError($ "Error: - Invalid API key. Unable to download map image");
else
{
PrintWarning($ "Error: - Couldn't get an answer from beancan.io. Unable to download map image. Please try again in a few minutes");
PrintWarning("Повторное подключение через 1 минуту");
timer.Once(60, () => GetQueueID());
}
} else CheckAvailability(response);
}, this);
}
void CheckAvailability(string queueId)
{
webrequest.Enqueue("
http://rustplugin.ru/plugins/rustmap.php?" + $ "token={token}&type=check&queueId={queueId}", null, (code, response) =>
{
if (string.IsNullOrEmpty(response))
{
PrintWarning($ "Error: - Couldn't get an answer from beancan.io");
} else ProcessResponse(queueId, response);
}, this);
}
void ProcessResponse(string queueId, string response)
{
switch (response)
{
case "-1":
PrintWarning("Your map is still in the queue to be generated. Checking again in 10 seconds");
break;
case "0":
PrintWarning("Your map is still being generated. Checking again in 10 seconds");
break;
case "1":
GetMapURL(queueId);
return;
default:
PrintWarning($ "Error retrieving map: Invalid response from beancan.io: Response code {response}");
return;
}
timer.Once(10, () => CheckAvailability(queueId));
}
void GetMapURL(string queueId)
{
var url = "
http://rustplugin.ru/plugins/rustmap.php?" + $ "token={token}&type=url&queueId={queueId}";
webrequest.Enqueue(url, null, (code, response) =>
{
if (string.IsNullOrEmpty(response))
{
PrintWarning($ "Error: - Couldn't get an answer from beancan.io");
PrintWarning("Повторное подключение через 1 минуту");
timer.Once(60, () => GetMapURL(queueId));
} else {
images[MapFilename] = response;
Puts(response);
CommunityEntity.ServerInstance.StartCoroutine(DownloadMapImage());
}
}, this);
}