ITJA Aviator Bahis Sistemi (Geliştirileblilir)

  • Konuyu açan Konuyu açan ITJA
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 0
  • Gösterim Gösterim 131

ITJA

Yasaklanmış Üye
Cezalı
Mesaj
73
Beğeni
37
Puan
676
Ticaret Puanı
0
istersen yang.ep.won vs vs. kafananıza göre entegre edersiniz

CMD GENERAL:

ACMD komut başlangıclarına ekle
C++:
Genişlet Daralt Kopyala
std::deque<float> g_AviatorMultipliers;
std::deque<std::string> g_AviatorWinners;

ACMD(do_aviator_info)
{
    ch->ChatPacket(CHAT_TYPE_INFO, "Last Multipliers:");
    for (auto it = g_AviatorMultipliers.rbegin(); it != g_AviatorMultipliers.rend(); ++it)
        ch->ChatPacket(CHAT_TYPE_INFO, "  %.2fx", *it);

    ch->ChatPacket(CHAT_TYPE_INFO, "Top recent winners:");
    for (auto it = g_AviatorWinners.rbegin(); it != g_AviatorWinners.rend(); ++it)
        ch->ChatPacket(CHAT_TYPE_INFO, "  %s", it->c_str());
}

EVENTINFO(aviator_event_info)
{
    LPCHARACTER ch;
    aviator_event_info() : ch(NULL) {}
};

EVENTFUNC(aviator_event)
{
    aviator_event_info* info = dynamic_cast<aviator_event_info*>(event->info);
    if (!info || !info->ch) return 0;

    LPCHARACTER ch = info->ch;
    auto it = g_AviatorMap.find(ch->GetVID());
    if (it == g_AviatorMap.end()) return 0;

    SAviatorData& data = it->second;
    if (!data.isPlaying) return 0;

    data.multiplier += 0.05f;
    ch->ChatPacket(CHAT_TYPE_INFO, "Çarpan: %.2fx", data.multiplier);

    if (number(1, 1000) <= 30) {
        ch->ChatPacket(CHAT_TYPE_INFO, "?? Uçak %.2fx çarpanda patladı!", data.multiplier);
        data.isPlaying = false;
        g_AviatorMap.erase(it);
        return 0;
    }

    return PASSES_PER_SEC(1);
}

ACMD(do_aviator)
{
    char arg[256];
    one_argument(argument, arg, sizeof(arg));
    int bet = atoi(arg);
    if (bet <= 0) {
        ch->ChatPacket(CHAT_TYPE_INFO, "Kullanım: /aviator [bahis]");
        return;
    }

    if (g_AviatorMap.find(ch->GetVID()) != g_AviatorMap.end()) {
        ch->ChatPacket(CHAT_TYPE_INFO, "Zaten oynuyorsun.");
        return;
    }

    if (ch->GetGold() < bet) {
        ch->ChatPacket(CHAT_TYPE_INFO, "Yeterli yang yok.");
        return;
    }

    SAviatorData data;
    data.bet = bet;
    data.multiplier = 1.0f;
    data.isPlaying = true;

    aviator_event_info* info = AllocEventInfo<aviator_event_info>();
    info->ch = ch;

    data.event = event_create(aviator_event, info, PASSES_PER_SEC(1));
    g_AviatorMap[ch->GetVID()] = data;

    ch->PointChange(POINT_GOLD, -bet);
    ch->ChatPacket(CHAT_TYPE_INFO, "?? Aviator başladı! Bahis: %d Yang", bet);
}

ACMD(do_bozdur)
{
    auto it = g_AviatorMap.find(ch->GetVID());
    if (it == g_AviatorMap.end()) {
        ch->ChatPacket(CHAT_TYPE_INFO, "Aktif oyunun yok.");
        return;
    }

    SAviatorData& data = it->second;
    if (!data.isPlaying) {
        ch->ChatPacket(CHAT_TYPE_INFO, "Oyun zaten bitmiş.");
        g_AviatorMap.erase(it);
        return;
    }

    int kazanc = (int)(data.bet * data.multiplier);
    ch->PointChange(POINT_GOLD, kazanc);
    ch->ChatPacket(CHAT_TYPE_INFO, "? %.2fx çarpanda bozdurdun. Kazanç: %d Yang", data.multiplier, kazanc);

    data.isPlaying = false;
    event_cancel(&data.event);
    g_AviatorMap.erase(it);
}

cmd.cpp

C++:
Genişlet Daralt Kopyala
ACMD(do_aviator);
ACMD(do_bozdur);
ACMD(do_aviator_info);

cmd.cpp

C++:
Genişlet Daralt Kopyala
    { "aviator",        do_aviator,        0,            POS_DEAD,    GM_PLAYER    },
    { "bozdur",        do_bozdur,        0,            POS_DEAD,    GM_PLAYER    },
    { "aviator_info",        do_aviator_info,        0,            POS_DEAD,    GM_PLAYER    },

PY

aviator.py:
Genişlet Daralt Kopyala
import ui
import net

class AviatorPanel(ui.BoardWithTitleBar):
    def __init__(self):
        ui.BoardWithTitleBar.__init__(self)
        self.SetSize(380, 250)
        self.SetCenterPosition()
        self.AddFlag("movable")
        self.AddFlag("float")
        self.SetTitleName("Aviator Game")

        self.inputLabel = ui.TextLine()
        self.inputLabel.SetParent(self)
        self.inputLabel.SetPosition(160, 40)
        self.inputLabel.SetText("Bet Amount")
        self.inputLabel.Show()

        self.input = ui.EditLine()
        self.input.SetParent(self)
        self.input.SetPosition(130, 60)
        self.input.SetSize(120, 20)
        self.input.SetMax(7)
        self.input.SetText("1000")
        self.input.SetFocus()
        self.input.Show()

        self.startButton = ui.Button()
        self.startButton.SetParent(self)
        self.startButton.SetPosition(80, 100)
        self.startButton.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub")
        self.startButton.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub")
        self.startButton.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub")
        self.startButton.SetText("START")
        self.startButton.SetEvent(self.OnStart)
        self.startButton.Show()

        self.cashOutButton = ui.Button()
        self.cashOutButton.SetParent(self)
        self.cashOutButton.SetPosition(200, 100)
        self.cashOutButton.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub")
        self.cashOutButton.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub")
        self.cashOutButton.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub")
        self.cashOutButton.SetText("CASH OUT")
        self.cashOutButton.SetEvent(self.OnCashOut)
        self.cashOutButton.Show()

        # Multipliers list
        self.multiTitle = ui.TextLine()
        self.multiTitle.SetParent(self)
        self.multiTitle.SetPosition(40, 150)
        self.multiTitle.SetText("Multipliers")
        self.multiTitle.Show()

        self.multiLines = []
        for i in range(5):
            line = ui.TextLine()
            line.SetParent(self)
            line.SetPosition(40, 170 + i * 15)
            line.SetText("-")
            line.Show()
            self.multiLines.append(line)

        # Winners list
        self.winnerTitle = ui.TextLine()
        self.winnerTitle.SetParent(self)
        self.winnerTitle.SetPosition(210, 150)
        self.winnerTitle.SetText("Winners")
        self.winnerTitle.Show()

        self.winnerLines = []
        for i in range(5):
            line = ui.TextLine()
            line.SetParent(self)
            line.SetPosition(210, 170 + i * 15)
            line.SetText("-")
            line.Show()
            self.winnerLines.append(line)

        # Bilgi çekmek için komutu tetikle
        net.SendChatPacket("/aviator_info")

    def OnStart(self):
        bet = self.input.GetText()
        if bet.isdigit():
            net.SendChatPacket("/aviator " + bet)
            self.input.SetText("")

    def OnCashOut(self):
        net.SendChatPacket("/bozdur")

    def UpdateHistory(self, multiplierList, winnerList):
        for i in range(5):
            self.multiLines[i].SetText(multiplierList[i] if i < len(multiplierList) else "-")
            self.winnerLines[i].SetText(winnerList[i] if i < len(winnerList) else "-")

dlg = None
def Open():
    global dlg
    if dlg:
        dlg.Show()
    else:
        dlg = AviatorPanel()
        dlg.Show()

def UpdatePanelInfo(multis, winners):
    if dlg and dlg.IsShow():
        dlg.UpdateHistory(multis, winners)

game.py Dosyasını Aç
Python:
Genişlet Daralt Kopyala
import aviator

onPressKeyDict taraflarına ekle

Python:
Genişlet Daralt Kopyala
        onPressKeyDict[app.DIK_F10] = lambda: aviator.Open()

interfaceModule.py

Python:
Genişlet Daralt Kopyala
import aviator

2. class Interface içinde, def __init__(self): fonksiyonunu bul

Python:
Genişlet Daralt Kopyala
self.aviatorButton = ui.Button()
self.aviatorButton.SetParent(self)
self.aviatorButton.SetPosition(600, 340)  # ekran pozisyonu, istersen değiştir
self.aviatorButton.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub")
self.aviatorButton.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub")
self.aviatorButton.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub")
self.aviatorButton.SetText("AVIATOR")
self.aviatorButton.SetEvent(aviator.Open)
self.aviatorButton.Show()




[KANIT]
 
Son düzenleme:
Geri
Üst