Всем привет! Как насчёт выиграть парочку миллиардов в слоты?

Жалко конечно, что пару миллиардов фантиков, но тоже весело!

Так как мы супер-пупер автоматизаторы, нам кликать по кнопочкам не интересно, мы сделаем все на запросах, чтобы уровень проходить не за 5-10 минут, а меньше чем за минуту

Играть мы будим в приложение ВК казино на фантики
Приложение: https://vk.com/mir_slotov
Группа ВК: https://vk.com/slotworld
Чтобы шайтан коробка завилась, нужно получить sid приложения!
К сожалению, чтобы получить sid на запросах, пришлось бы убить кучу времени, а оно того не стоило. Поэтому его мы быстренько получим через DevTools.
Для этого делаем 3 простых действия:
1) Заходим в приложение. Важно, если заходите в первый раз в игру соберите монеты по подсказкам, которые дает игра!
2) Открываем DevTools (ctrl+shift+i) => Вкладка Network и обновляем страницу с игрой
3) Фильтруем выдачу по index и ищем 3 строчку.
В ней переходим во вкладку Responce и забираем нужный нам sid
Заходим во входные настройки шаблона и закидываем туда Sid. Все шаблон готов к фарму фантиков

Коротко по Входным настройкам:
Sid - обязательно, чтобы все заработало.
Биг вин!!! Х от - указываем кокой Х выигрыша подсвечивать в логе.
Например выигрыш от Х 1000 будет выведен в лог Зеленым и шаблон сделает паузу 5 секунд.
Количество Квестов - Указываем сколько уровней хотим пройти, шаблон будет ходит по циклу, пока не пройдет нужное количество уровней.
А чтобы фантики точно не закончились, я для вас нашел баг на 10 уровне.Сколько нужно денег - указываем сколько нужно нафармить денег с помощью бага.
Поставь сразу лайк за Баг

С помощью него можно фармить сколько угодно денег, но есть одно но, так как уровень маленький, ставки тоже, бабосики фармятся долго.
Советую нафармить 10 000 000 000.
А если серьезно шаблон относительно полезный, однако реализация интересная, поэтому советую разобрать подход.
Все самое интересное лежит в Общем Коде!
А для тех кому лень скачать шаблон, выкладываю код сюда, за это тоже можно лайкосик влепить

В работе задействованы 3 класса, 2 вспомогательных, 1 рабочий.
C#:
public class SlotData
{
public string Id { get; set; }
public string Slot { get; set; }
public string Level { get; set; }
public string Quest { get; set; }
}
C#:
public class SpinData
{
public int Bet { get; set; }
public int Xbet { get; set; }
public long Money { get; set; }
public long Reward { get; set; }
public bool IsFreeSpins { get; set; }
public bool IsFinished { get; set; }
public string Goal { get; set; }
public string Progress { get; set; }
}
C#:
public class Slots
{
public string Error { get; private set; }
private SlotData SlotData { get; set; }
private SpinData SpinData { get; set; }
private SlotData[] ArrSlotData { get; set; }
private string DataLevel { get; set; }
private string Token { get; set; }
private string Bet { get; set; }
private int _spinId;
private string _sid;
public Slots(string sid)
{
_sid = sid;
_spinId = new Random().Next(1000, 2000);
SpinData = new SpinData();
}
/// <summary>
/// Получаем Уровень.
/// </summary>
/// <returns></returns>
public bool GetLevel()
{
string time = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ");
var url = "https://sandmanslots-api.candygrill.com/api/v1_0_0/call/index?sid=" + _sid;
var content = "{\"time\":\"" + time + "\",\"commands\":[" +
"{\"id\":1,\"cmd\":\"eventSocial.get\",\"data\":{\"social_net\":\"vkig\"},\"time\":\"" + time + "\"}," +
"{\"id\":3,\"cmd\":\"systemCommands.gameLoading.start\",\"data\":" +
"{\"deviceId\":\"vkig:\",\"deviceModel\":\"cocos\",\"graphicsDeviceName\":\"\",\"graphicsDeviceVendor\":\"WebKit\"," +
"\"graphicsDeviceVersion\":\"\",\"operatingSystem\":\"\",\"platform\":\"vkig_WEB\",\"unityVersion\":\"2.1.0\"," +
"\"graphicsMemorySize\":0,\"graphicsShaderLevel\":0,\"maxTextureSize\":16384,\"npotSupport\":false,\"processorCount\":0," +
"\"processorType\":\"cocos\",\"supportedRenderTargetCount\":0,\"supports3DTextures\":false,\"systemMemorySize\":8192," +
"\"api_version\":1},\"time\":\"" + time + "\"}," +
"{\"id\":5,\"cmd\":\"user.profile\",\"data\":{},\"time\":\"" + time + "\"}," +
"{\"id\":6,\"cmd\":\"user.getOptions\",\"data\":{},\"time\":\"" + time + "\"}," +
"{\"id\":7,\"cmd\":\"x_slots.fortuneWheel.configuration\",\"data\":{},\"time\":\"" + time + "\"}," +
"{\"id\":8,\"cmd\":\"moneybox.configuration\",\"data\":{},\"time\":\"" + time + "\"}," +
"{\"id\":9,\"cmd\":\"eventGatcha.configuration\",\"data\":{\"systemRequest\":false},\"time\":\"" + time + "\"}," +
"{\"id\":10,\"cmd\":\"cashBack.config\",\"data\":{},\"time\":\"" + time + "\"}," +
"{\"id\":11,\"cmd\":\"eventOpenSlot.configuration\",\"data\":{\"systemRequest\":false},\"time\":\"" + time + "\"}," +
"{\"id\":12,\"cmd\":\"vipSubscription.configuration\",\"data\":{},\"time\":\"" + time + "\"}," +
"{\"id\":13,\"cmd\":\"news.update\",\"data\":{},\"time\":\"" + time + "\"}," +
"{\"id\":14,\"cmd\":\"event.configuration\",\"data\":{\"systemRequest\":false},\"time\":\"" + time + "\"}," +
"{\"id\":15,\"cmd\":\"eventSale.configuration\",\"data\":{\"systemRequest\":false},\"time\":\"" + time + "\"}," +
"{\"id\":16,\"cmd\":\"adminBonus.configuration\",\"data\":{},\"time\":\"" + time + "\"}," +
"{\"id\":17,\"cmd\":\"eventScratch.config\",\"data\":{\"systemRequest\":false},\"time\":\"" + time + "\"}," +
"{\"id\":18,\"cmd\":\"x_slots.dailyMission.configuration\",\"data\":{\"systemRequest\":false},\"time\":\"" + time + "\"}," +
"{\"id\":19,\"cmd\":\"x_slots.map\",\"data\":{},\"time\":\"" + time + "\"}]}";
string[] headers = {
"accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"accept-encoding: gzip, deflate",
"cache-control: max-age=0",
"sec-fetch-dest: document",
"sec-fetch-mode: navigate",
"sec-fetch-site: same-origin",
"sec-fetch-user: ?1",
"upgrade-insecure-requests: 1",
};
var result = Post(url, content, headers);
var status = JObject.Parse(result)["commands"][0].SelectToken("status").ToString();
if (status == "ok")
{
DataLevel = result;
return true;
}
else
{
Error = result;
return false;
}
}
/// <summary>
/// Парсим данные уровня(Id, Slot, Quest).
/// </summary>
public void ParseLevel()
{
var arrSlots = JObject.Parse(DataLevel)["commands"][16]["data"]["quests"].ToArray();
var countSlots = arrSlots.Length;
ArrSlotData = new SlotData[countSlots];
for (int i = 0; i < countSlots; i++)
{
ArrSlotData[i] = new SlotData();
ArrSlotData[i].Level = JObject.Parse(DataLevel)["commands"][2]["data"].SelectToken("level").ToString();
ArrSlotData[i].Id = arrSlots[i].SelectToken("id").ToString();
ArrSlotData[i].Slot = arrSlots[i].SelectToken("slot").ToString();
ArrSlotData[i].Quest = arrSlots[i].SelectToken("type").ToString();
}
}
/// <summary>
/// Выбираем самый легикий слот для игры.
/// </summary>
/// <returns></returns>
public SlotData SelectSlot()
{
var quests = new[] {
"make_n_spins_for_free",
"make_n_spins_on_max_bet",
"make_n_spins",
"get_icon_n_times",
"win_n_coins_in_freespins",
"win_n_coins_in_bonus_game",
"win_n_coins_in_freespin_game",
"win_n_coins",
"break_n_chains"
};
var ignorSlots = new[] {
"Jungle",
"Gangsters",
"Indiana",
"BookOfRa"
};
for (int i = 0; i < quests.Length; i++)
{
for (int s = 0; s < ArrSlotData.Length; s++)
{
if (ignorSlots.Contains(ArrSlotData[s].Slot))
{
continue;
}
if (quests[i] == ArrSlotData[s].Quest)
{
SlotData = ArrSlotData[s];
return ArrSlotData[s];
}
}
}
return null;
}
/// <summary>
/// Получаем токен Слота.
/// </summary>
/// <param name="slotData"></param>
/// <returns></returns>
public bool GetTokenAndBetSlot()
{
var time = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ");
var url = "https://sandmanslots-api.candygrill.com/api/v1_0_0/call/index?sid=" + _sid;
var content = "{\"time\":\"" + time + "\",\"commands\":[" +
"{\"id\":38,\"cmd\":\"systemCommands.trackWindowAction\",\"data\":{\"window\":\"PromosWindow\",\"action\":\"open\"},\"time\":\"" + time + "\"}," +
"{\"id\":39,\"cmd\":\"systemCommands.trackWindowAction\",\"data\":{\"window\":\"PromosWindow\",\"action\":\"close\"},\"time\":\"" + time + "\"}," +
"{\"id\":40,\"cmd\":\"systemCommands.trackWindowAction\",\"data\":{\"window\":\"XMissionChooseWindow\",\"action\":\"open\"},\"time\":\"" + time + "\"}," +
"{\"id\":41,\"cmd\":\"systemCommands.trackWindowAction\",\"data\":{\"window\":\"XMissionChooseWindow\",\"action\":\"close\"},\"time\":\"" + time + "\"}," +
"{\"id\":42,\"cmd\":\"x_slots.configuration\",\"data\":{\"slot\":\"" + SlotData.Slot + "\",\"quest_id\":" + SlotData.Id + "},\"time\":\"" + time + "\"}]}";
var headers = new[] {
"Connection: keep-alive",
"Content-Type: application/json",
"Accept: */*",
"Origin: https://sandmanslots-api.candygrill.com",
"Sec-Fetch-Site: same-origin",
"Sec-Fetch-Mode: cors",
"Sec-Fetch-Dest: empty",
"Referer: https://sandmanslots-api.candygrill.com/unity-assets/ig-vk-release-app/current/indexVk.html?&hash=",
"Accept-Encoding: gzip, deflate, br",
"Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",
};
var result = Post(url, content, headers);
var status = JObject.Parse(result)["commands"][0].SelectToken("status").ToString();
if (status == "ok")
{
var json = JObject.Parse(result)["commands"][4]["data"];
Token = json.SelectToken("token").ToString();
var arrBet = json["configuration"].SelectToken("availableBets").ToArray();
if (SlotData.Quest == "make_n_spins_for_free" || SlotData.Quest == "make_n_spins_on_max_bet")
{
Bet = arrBet[arrBet.Length-1].ToString();
}
else if (SlotData.Quest == "win_n_coins_in_bonus_game" || SlotData.Quest == "win_n_coins_in_freespin_game" || SlotData.Quest == "win_n_coins")
{
if (arrBet.Length > 3)
{
Bet = arrBet[arrBet.Length - 3].ToString();
}
}
else Bet = arrBet[0].ToString();
return true;
}
else
{
Error = result;
return false;
}
}
/// <summary>
/// Делаем спин.
/// </summary>
/// <returns></returns>
public SpinData Spin()
{
_spinId++;
var time = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ");
var url = "https://sandmanslots-api.candygrill.com/api/v1_0_0/call/index?sid=" + _sid;
var content = "{\"time\":\"" + time + "\",\"commands\":[" +
"{\"id\":" + _spinId + ",\"cmd\":\"x_slots.spin\",\"data\":" +
"{\"quest_id\":" + SlotData.Id + ",\"slot\":\"" + SlotData.Slot + "\",\"bet\":" + Bet + ",\"token\":\"" + Token + "\"}," +
"\"time\":\"" + time + "\"}]}";
var headers = new[] {
"Accept: */*",
"Origin: https://sandmanslots-api.candygrill.com",
"Sec-Fetch-Site: same-origin",
"Sec-Fetch-Mode: cors",
"Sec-Fetch-Dest: empty",
"Referer: https://sandmanslots-api.candygrill.com/unity-assets/ig-vk-release-app/current/indexVk.html?&hash=",
"Accept-Encoding: gzip, deflate, br",
"Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",
};
var result = Post(url, content, headers);
var status = JObject.Parse(result)["commands"][0].SelectToken("status").ToString();
if (status == "ok")
{
var json = JObject.Parse(result)["commands"][0]["data"];
SpinData.IsFreeSpins = json.SelectToken("isFreeSpinResult").Value<bool>();
SpinData.IsFinished = json["questProgress"].SelectToken("finished").Value<bool>();
SpinData.Reward = json.SelectToken("totalReward").Value<long>();
SpinData.Money = json["user"].SelectToken("money").Value<long>();
SpinData.Goal = json["questProgress"].SelectToken("goal").ToString();
SpinData.Progress = json["questProgress"]["progress"][0].SelectToken("").ToString();
SpinData.Bet = int.Parse(Bet);
SpinData.Xbet = (int)SpinData.Reward / SpinData.Bet;
return SpinData;
}
else
{
Error = result;
return null;
}
}
/// <summary>
/// Фармим баланс через Баг 10-го уровня.
/// </summary>
/// <param name="countMoney"></param>
/// <returns></returns>
public long FarmMoney()
{
Bet = "20000";
Spin();
return SpinData.Money;
}
/// <summary>
/// Установить ставку вручную.
/// </summary>
/// <param name="bet"></param>
public void SetBet(string bet)
{
Bet = bet;
}
//Get запрос
private string Get(string url, string[] headers = null)
{
return Request(HttpMethod.GET, url, "", headers);
}
//Post запрос
private string Post(string url, string content, string[] headers = null)
{
return Request(HttpMethod.POST, url, content, headers);
}
//Http запрос
private string Request(HttpMethod method, string url, string content, string[] headers = null)
{
return ZennoPoster.HTTP.Request(
method: method,
url: url,
content: content,
AdditionalHeaders: headers,
respType: ResponceType.BodyOnly
);
}
}
Можете подписаться на мой ТГ канал: https://t.me/streamzp
Канал был заброшен, но возможно запущу стрим по разбору данного шаблона, подпишитесь, чтобы не пропустить.
Вложения
-
16,8 КБ Просмотры: 41
Для запуска проектов требуется программа ZennoPoster.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...
Для того чтобы запустить шаблон, откройте программу ZennoPoster. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.
Последнее редактирование модератором: