C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using Oxide.Core;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using UnityEngine;
namespace Oxide.Plugins {
[Info("Promocode", "anfunny", "2.0")]
public class Promocode : RustPlugin {
public class PSettings {
[JsonProperty("Промокод, который нужно ввести")]
public string Promocode;
[JsonProperty("Сколько игрок получит рублей за данный промокод?")]
public int EMSKHWTHQKYOSLIODQDWYDHXKULDYCHNOQTGZHUTSSGGC;
}
private ConfigData AXRSLTFHPBEUZMKQJNDLZBSBPWVKDGWBUWTNMFROHGASC;
public class ConfigData {
[JsonProperty("Настройка промокодов")]
public List<PSettings> HHICISDQOYFQDPXUDJEDZDTWEDWODTBAYKONBBXDX = new List<PSettings>();
[JsonProperty("Номер магазина!")]
public string IUIWCBRNCRNYEEOLYFWONUXFRSAJTCLAFVUYOHBUX = "";
[JsonProperty("Секретный ключ")]
public string QJMAGJYQCSHJRNWDEJAHUAFNTIJQXQDBRWEOSRMRKDZTSW = "";
public static ConfigData EGDEHFAGXAYYHXMWQLRWQPMNIERFFWIPMZCAACTY() {
ConfigData GBLCRTPWPDYGXZISMOGRUIIKNXJXRAMVWECOLNLHB = new ConfigData();
GBLCRTPWPDYGXZISMOGRUIIKNXJXRAMVWECOLNLHB.IUIWCBRNCRNYEEOLYFWONUXFRSAJTCLAFVUYOHBUX = "";
GBLCRTPWPDYGXZISMOGRUIIKNXJXRAMVWECOLNLHB.QJMAGJYQCSHJRNWDEJAHUAFNTIJQXQDBRWEOSRMRKDZTSW = "";
GBLCRTPWPDYGXZISMOGRUIIKNXJXRAMVWECOLNLHB.HHICISDQOYFQDPXUDJEDZDTWEDWODTBAYKONBBXDX = new List<PSettings>() {
new PSettings() {
Promocode = "y1", EMSKHWTHQKYOSLIODQDWYDHXKULDYCHNOQTGZHUTSSGGC = 10,
}
, new PSettings() {
Promocode = "y2", EMSKHWTHQKYOSLIODQDWYDHXKULDYCHNOQTGZHUTSSGGC = 20,
}
, new PSettings() {
Promocode = "y3", EMSKHWTHQKYOSLIODQDWYDHXKULDYCHNOQTGZHUTSSGGC = 30,
}
}
;
return GBLCRTPWPDYGXZISMOGRUIIKNXJXRAMVWECOLNLHB;
}
}
protected override void LoadConfig() {
base.LoadConfig();
try {
AXRSLTFHPBEUZMKQJNDLZBSBPWVKDGWBUWTNMFROHGASC = Config.ReadObject<ConfigData>();
}
catch {
LoadDefaultConfig();
}
NextTick(SaveConfig);
}
protected override void LoadDefaultConfig() => AXRSLTFHPBEUZMKQJNDLZBSBPWVKDGWBUWTNMFROHGASC = ConfigData.EGDEHFAGXAYYHXMWQLRWQPMNIERFFWIPMZCAACTY();
protected override void SaveConfig() => Config.WriteObject(AXRSLTFHPBEUZMKQJNDLZBSBPWVKDGWBUWTNMFROHGASC);
public class PlayerPromo {
[JsonProperty("Введеный промокод")]
public string OKUKORBKNELEKYTBPUKSFPRDKTWUHYDZQUUYPDIS;
[JsonProperty("Во сколько он ввел промокод")]
public string GMHJRTEVKYQXIUZTRAVUHDPBMOPEULLMRXYCJTSZRYWAMCHZ;
}
public class PlayerPromoSettings {
public List<PlayerPromo> EYDMXNDXGXDEAAYNEFLWWKXHVCIGOPJHPJQNIZUJUECVPVR = new List<PlayerPromo>();
}
public Dictionary<ulong, PlayerPromoSettings> XNIXVDXUAVQUFXIRNVORJLFELCBRHBSALKIBGMLMLWMMJZEXW = new Dictionary<ulong, PlayerPromoSettings>();
void OnServerInitialized() {
try {
XNIXVDXUAVQUFXIRNVORJLFELCBRHBSALKIBGMLMLWMMJZEXW = Interface.GetMod().DataFileSystem.ReadObject<Dictionary<ulong, PlayerPromoSettings>>(Name);
}
catch {
XNIXVDXUAVQUFXIRNVORJLFELCBRHBSALKIBGMLMLWMMJZEXW = new Dictionary<ulong, PlayerPromoSettings>();
}
CRKFLPFTLOVZGOSWMFZGRELJDGDYZQUEPQDCAXSKQEPD();
}
[PluginReference]
private Plugin ImageLibrary;
void PromoMenu(BasePlayer QRKEFSEALNLDSWCQSBOZCDQGDYDZBHEHBMJJRPOHK, string QRZNTYLYKTKIBMBEBHPFZDJEBGNSYCMHPJMYGQEENCXKWTL, string[] HNOGSFTNHVLNLSAHGCTRADXKCKRWGZHHUQKLOGOJPZQLERTU) {
CuiHelper.DestroyUi(QRKEFSEALNLDSWCQSBOZCDQGDYDZBHEHBMJJRPOHK, "MainPromo");
var ITHZOMIEMTCFMYDQJUPHKBKBFNZSUMYEVVTYTMWWTCAS = new CuiElementContainer();
ITHZOMIEMTCFMYDQJUPHKBKBFNZSUMYEVVTYTMWWTCAS.Add(new CuiElement {
Parent = "ProfileMenu_UI", Name = "MainPromo", Components = {
new CuiRawImageComponent {
Png = (string)ImageLibrary?.Call("GetImage", "ImageButton"), Color = "1 1 1 1"
}
, new CuiRectTransformComponent {
AnchorMin = "1 0", AnchorMax = "1 0", OffsetMin = "-330 60", OffsetMax = "-120 130"
}
,
}
}
);
ITHZOMIEMTCFMYDQJUPHKBKBFNZSUMYEVVTYTMWWTCAS.Add(new CuiButton {
RectTransform = {
AnchorMin = "0.112 0.255", AnchorMax = "0.889 0.506"
}
, Button = {
FadeIn = 0f, Color = "0 0 0 0", Command = $"",
}
, Text = {
Text = "", Align = TextAnchor.MiddleCenter, Font = "robotocondensed-regular.ttf", Color = "0.4745098 0.4862745 0.5607843 1", FontSize = 11
}
}
, "MainPromo", "MainPromo" + ".Transfer2");
ITHZOMIEMTCFMYDQJUPHKBKBFNZSUMYEVVTYTMWWTCAS.Add(new CuiElement {
Parent = "MainPromo" + $".Transfer2", Name = "Input", Components = {
new CuiInputFieldComponent {
FontSize = 10, Command = $"UI_HandlerPromo", Text = lang.GetMessage("PROMO", this, QRKEFSEALNLDSWCQSBOZCDQGDYDZBHEHBMJJRPOHK.UserIDString), Align = TextAnchor.MiddleCenter, CharsLimit = 100, IsPassword = false, NeedsKeyboard = true
}
, new CuiRectTransformComponent {
AnchorMin = "0 0", AnchorMax = "1 1"
}
}
}
);
ITHZOMIEMTCFMYDQJUPHKBKBFNZSUMYEVVTYTMWWTCAS.Add(new CuiLabel {
RectTransform = {
AnchorMin = "0 1", AnchorMax = "0.7 1", OffsetMax = "0 10"
}
, Text = {
Text = lang.GetMessage("PROMO_HAVE", this, QRKEFSEALNLDSWCQSBOZCDQGDYDZBHEHBMJJRPOHK.UserIDString), FontSize = 8, Align = TextAnchor.UpperLeft, Font = "robotocondensed-regular.ttf", Color = "0.4745098 0.4862745 0.5607843 1"
}
}
, "Input");
ITHZOMIEMTCFMYDQJUPHKBKBFNZSUMYEVVTYTMWWTCAS.Add(new CuiButton {
RectTransform = {
AnchorMin = "0.11 0.066", AnchorMax = "0.88 0.22"
}
, Button = {
FadeIn = 0f, Color = "0 0 0 0", Command = $"",
}
, Text = {
Text = lang.GetMessage("PROMO_ENTER", this, QRKEFSEALNLDSWCQSBOZCDQGDYDZBHEHBMJJRPOHK.UserIDString), Align = TextAnchor.MiddleCenter, Font = "robotocondensed-regular.ttf", Color = "0.4745098 0.4862745 0.5607843 1", FontSize = 8
}
}
, "MainPromo");
CuiHelper.AddUi(QRKEFSEALNLDSWCQSBOZCDQGDYDZBHEHBMJJRPOHK, ITHZOMIEMTCFMYDQJUPHKBKBFNZSUMYEVVTYTMWWTCAS);
}
[ConsoleCommand("UI_HandlerPromo")]
void GKGQKBKRQYSVQQIQBSOGQPISBHSZJDFNSHFKHBJYUHOIK(ConsoleSystem.Arg HNOGSFTNHVLNLSAHGCTRADXKCKRWGZHHUQKLOGOJPZQLERTU) {
BasePlayer QRKEFSEALNLDSWCQSBOZCDQGDYDZBHEHBMJJRPOHK = HNOGSFTNHVLNLSAHGCTRADXKCKRWGZHHUQKLOGOJPZQLERTU.Player();
try {
string promo = HNOGSFTNHVLNLSAHGCTRADXKCKRWGZHHUQKLOGOJPZQLERTU.Args[0];
var FJNJSPJHOBGJFTANPJAVXKQEEXXYTNHARRZDLJCWOWG = AXRSLTFHPBEUZMKQJNDLZBSBPWVKDGWBUWTNMFROHGASC.HHICISDQOYFQDPXUDJEDZDTWEDWODTBAYKONBBXDX.Where(p => p.Promocode == promo).FirstOrDefault();
if (FJNJSPJHOBGJFTANPJAVXKQEEXXYTNHARRZDLJCWOWG != null) {
if (XNIXVDXUAVQUFXIRNVORJLFELCBRHBSALKIBGMLMLWMMJZEXW[QRKEFSEALNLDSWCQSBOZCDQGDYDZBHEHBMJJRPOHK.userID].EYDMXNDXGXDEAAYNEFLWWKXHVCIGOPJHPJQNIZUJUECVPVR.Any(p => p.OKUKORBKNELEKYTBPUKSFPRDKTWUHYDZQUUYPDIS.ToLower() == promo.ToLower())) {
QRKEFSEALNLDSWCQSBOZCDQGDYDZBHEHBMJJRPOHK.ChatMessage(lang.GetMessage("PROMO_ALREADY", this, QRKEFSEALNLDSWCQSBOZCDQGDYDZBHEHBMJJRPOHK.UserIDString));
return;
}
XNIXVDXUAVQUFXIRNVORJLFELCBRHBSALKIBGMLMLWMMJZEXW[QRKEFSEALNLDSWCQSBOZCDQGDYDZBHEHBMJJRPOHK.userID].EYDMXNDXGXDEAAYNEFLWWKXHVCIGOPJHPJQNIZUJUECVPVR.Add(new PlayerPromo {
OKUKORBKNELEKYTBPUKSFPRDKTWUHYDZQUUYPDIS = promo, GMHJRTEVKYQXIUZTRAVUHDPBMOPEULLMRXYCJTSZRYWAMCHZ = DateTime.Now.ToString("g")
}
);
QRKEFSEALNLDSWCQSBOZCDQGDYDZBHEHBMJJRPOHK.ChatMessage(string.Format(lang.GetMessage("PROMO_SUCCESSFUL", this, QRKEFSEALNLDSWCQSBOZCDQGDYDZBHEHBMJJRPOHK.UserIDString), FJNJSPJHOBGJFTANPJAVXKQEEXXYTNHARRZDLJCWOWG.EMSKHWTHQKYOSLIODQDWYDHXKULDYCHNOQTGZHUTSSGGC));
PMSBMKJIXQCNPCJKHMSFCILXIAIQLJBAHVRGGIRVEK(QRKEFSEALNLDSWCQSBOZCDQGDYDZBHEHBMJJRPOHK.userID, FJNJSPJHOBGJFTANPJAVXKQEEXXYTNHARRZDLJCWOWG.EMSKHWTHQKYOSLIODQDWYDHXKULDYCHNOQTGZHUTSSGGC);
}
else {
QRKEFSEALNLDSWCQSBOZCDQGDYDZBHEHBMJJRPOHK.ChatMessage(lang.GetMessage("PROMO_NOT_FOUND", this, QRKEFSEALNLDSWCQSBOZCDQGDYDZBHEHBMJJRPOHK.UserIDString));
}
}
catch {
}
}
void PMSBMKJIXQCNPCJKHMSFCILXIAIQLJBAHVRGGIRVEK(ulong userId, int PDTATWEPEEIOWGINESVIOTAOJCAMLFLQWURWNHBU) {
OIUMGPJZBPFDHAVSMBSWOPBFUKCEZVXBSYXOOOCBBKA(new Dictionary<string, string>() {
{
"action", "moneys"
}
, {
"type", "plus"
}
, {
"steam_id", userId.ToString()
}
, {
"amount", PDTATWEPEEIOWGINESVIOTAOJCAMLFLQWURWNHBU.ToString()
}
}
);
}
void OIUMGPJZBPFDHAVSMBSWOPBFUKCEZVXBSYXOOOCBBKA(Dictionary<string, string> HNOGSFTNHVLNLSAHGCTRADXKCKRWGZHHUQKLOGOJPZQLERTU) {
string MPOSVJETAWMVSIFVSKOBTGRNUXBGHDGBDWSPIECKJOAVFEK = $"http://gamestores.ru/api?shop_id={AXRSLTFHPBEUZMKQJNDLZBSBPWVKDGWBUWTNMFROHGASC.IUIWCBRNCRNYEEOLYFWONUXFRSAJTCLAFVUYOHBUX}&secret={AXRSLTFHPBEUZMKQJNDLZBSBPWVKDGWBUWTNMFROHGASC.QJMAGJYQCSHJRNWDEJAHUAFNTIJQXQDBRWEOSRMRKDZTSW}" + $"{string.Join("", HNOGSFTNHVLNLSAHGCTRADXKCKRWGZHHUQKLOGOJPZQLERTU.Select(arg => $"& {
arg.Key
}
= {
arg.Value
}
").ToArray())}";
webrequest.EnqueueGet(MPOSVJETAWMVSIFVSKOBTGRNUXBGHDGBDWSPIECKJOAVFEK, (i, s) => {
if (i != 200) {
LogToFile("Promocode", $"Код ошибки: {i}, подробности:\n{s}", this);
}
else {
if (s.Contains("fail")) {
return;
}
}
}
, this);
}
void OnServerSave() {
Interface.Oxide.DataFileSystem.WriteObject(Name, XNIXVDXUAVQUFXIRNVORJLFELCBRHBSALKIBGMLMLWMMJZEXW);
}
void Unload() {
Interface.Oxide.DataFileSystem.WriteObject(Name, XNIXVDXUAVQUFXIRNVORJLFELCBRHBSALKIBGMLMLWMMJZEXW);
}
private void CRKFLPFTLOVZGOSWMFZGRELJDGDYZQUEPQDCAXSKQEPD() {
lang.RegisterMessages(new Dictionary<string, string> {
{
"PROMO", "Promo code"
}
, {
"PROMO_HAVE", "Do you have a promo code?"
}
, {
"PROMO_ENTER", "Write a promo code and press <b>ENTER</b>"
}
, {
"PROMO_ALREADY", "You have already entered this promo code!"
}
, {
"PROMO_SUCCESSFUL", "You have successfully entered a promo code and received {0} rubles to the store's balance!"
}
, {
"PROMO_NOT_FOUND", "Promo code not found, try again!"
}
}
, this);
lang.RegisterMessages(new Dictionary<string, string> {
{
"PROMO", "Промокод"
}
, {
"PROMO_HAVE", "Есть промокод?"
}
, {
"PROMO_ENTER", "Введи промокод и нажми <b>ENTER</b>"
}
, {
"PROMO_ALREADY", "Вы уже ввели данный промокод!"
}
, {
"PROMO_SUCCESSFUL", "Вы успешно ввели промокод и получили {0} руб.на баланс магазина!"
}
, {
"PROMO_NOT_FOUND", "Промокод не найден, попробуйте еще раз!"
}
}
, this, "ru");
}
}
}