Toaster Kitty, A crash scenariusz gry, jest przeznaczony dla tych, którzy chcą uzyskać znaczną nagrodę, potencjalnie ponad 50-krotność początkowego zakładu. Ustawiasz swoją początkową wypłatę i możesz dostosować ustawienia strat i minimalnego zysku. Stamtąd skrypt automatyzuje proces. Zostało wzięte z BC.Game forums, and has been refactored to make it work.
var config = {
mainTitle: { label: "*** Nubs27's Toaster Kitty ***", type: "title" },
payout: { label: "Exit Point Minimum", value: 88, type: "number" },
increase: { label: "Increase Payout", value: 0.05, type: "number" },
losses: { label: "Minimum Profit on Win", value: 0.01, type: "number" },
stopTitle: { label: "Stop When", type: "title" },
stop: { label: "Coins Lost >", value: 1, type: "number" },
wins: { label: "wins =", value: 1, type: "number" },
};
function main() {
var isPlaying = false;
var gamesPlayed = 0;
var currentGameID = 0;
var lastResult = "Not Played";
var lastCrash = 2;
var prevCashOut = lastCrash;
var baseBet = config.losses.value / config.payout.value;
var currentBet = baseBet;
var lastBet = currentBet;
var didBet = false;
var gameInfoLogged = false;
var scriptHistory = [];
var updateConsole = false;
var currentMultiplier = config.payout.value;
var lastMultiplier = config.payout.value - 0.05;
var coinLost = 0;
var wins = 0;
var losses = 0;
game.on("GAME_STARTING", function () {
// set base bet and show initial data log
if (gamesPlayed < 1) {
log.info(" Toaster Kitty");
log.info(" by Nubs27");
log.info(" ****************");
baseBet = config.losses.value / config.payout.value;
if (!Number.isInteger(config.wins.value)) {
log.info("***** Attention *****");
log.info("wins = " + config.wins.value + " is NOT valid");
log.info("Integers ONLY");
log.info(
"I could have the script auto round the number, but you like being funny too :)"
);
game.stop();
}
}
checkForStops();
// adjust current bet and multiplier
if (gamesPlayed < 2 || lastResult === "Won") {
currentBet = baseBet;
currentMultiplier = config.payout.value;
isPlaying = true;
if (gamesPlayed < 2) {
log.info(`Played < 2 games`);
}
if (lastResult === "Won") {
log.success(`Won!`);
}
log.info(`Current bet: ${currentBet}`);
log.info(`Current Multiplier: ${currentMultiplier}`);
}
// adjust current bet and multiplier
if (lastResult === "Lost") {
currentBet = (coinLost + config.losses.value) / (currentMultiplier - 1);
currentMultiplier = lastMultiplier + config.increase.value;
log.error(`Lost`);
log.info(`Current bet: ${currentBet}`);
log.info(`Current Multiplier: ${currentMultiplier}`);
}
// adjust current bet
if (currentBet < currency.minAmount) {
currentBet = currency.minAmount;
log.info(`Current Bet < Min Bet`);
log.info(`Current bet: ${currentBet}`);
}
});
function checkForStops() {
if (coinLost > config.stop.value) {
log.info("Maximum Coin Loss Reached. Script Stopped");
game.stop();
}
if (wins === config.wins.value) {
log.info("Congratulations");
log.info("wins goal reached. Script Stopped");
game.stop();
}
currentMultiplier = currentMultiplier * 100;
currentMultiplier = Math.round(currentMultiplier);
currentMultiplier = currentMultiplier / 100;
gamesPlayed++;
setTimeout(placeBet, 0);
}
function placeBet() {
if (!didBet) {
game.bet(currentBet, currentMultiplier);
isPlaying = true;
didBet = true;
log.info(" ***********");
}
gameInfoLogged = false;
}
game.on("GAME_ENDED", function () {
var lastGame = game.history[0];
var lastCrash = lastGame.crash / 100;
currentGameID = lastGame.gameId;
prevCashOut = lastCrash;
lastBet = currentBet;
lastMultiplier = currentMultiplier;
didBet = false;
if (!gameInfoLogged) {
logAllInfo();
}
});
function logAllInfo() {
if (scriptHistory.push(prevCashOut) > 999) {
scriptHistory.shift();
}
if (isPlaying === true && prevCashOut >= currentMultiplier) {
var wonAmount = lastBet * currentMultiplier - coinLost;
lastResult = "Won";
wins++;
losses = 0;
coinLost = config.losses.value;
log.info("[Game Won] " + wonAmount + " " + currencyName);
} else if (isPlaying && prevCashOut < currentMultiplier) {
lastResult = "Lost";
losses++;
coinLost = coinLost + lastBet;
}
currentGameID = currentGameID.toString();
if (currentGameID.endsWith("0")) {
updateConsole = true;
}
if (updateConsole) {
log.info(
"Amount Lost in search of this Kitty " +
(coinLost - config.losses.value) +
" " +
currency.currencyName
);
updateConsole = false;
}
gameInfoLogged = true;
}
}
Spróbujmy to przeanalizować i spróbować zmaksymalizować zysk.
Konfiguracja wstępna
- Minimalny punkt wyjścia (wypłata): 88x (To jest Twój docelowy mnożnik. Twoim celem jest wypłata przed tym mnożnikiem.)
- Zwiększ wypłatę: 0,05 (Za każdym razem, gdy przegrasz, zwiększasz docelowy mnożnik o tę kwotę.)
- Minimalny zysk przy wygranej: 0,01 $ (Chcesz zapewnić minimalny zysk w wysokości 0,01 $ za każdą wygraną.)
- Zagubione monety >: 1 (Zatrzymaj, jeśli łączna liczba utraconych monet przekracza 1 USD.)
- Wygrywa =: 1 (Zatrzymaj po 1 zwycięstwie.)
Biorąc pod uwagę tę konfigurację, przejdźmy do prawdziwego przykładu, stosując strategię po stracie, jak sugeruje scenariusz.
Krok 1: Oblicz zakład początkowy
Dla uproszczenia zaokrąglimy to do 0,00011 USD w naszym przykładzie.
Krok 2: Zacznij grać
Zaczynasz od zakładu o wartości 0,00011 $, którego celem jest uzyskanie mnożnika 88x.
Krok 3: Dostosuj się po stracie
Skrypt oblicza nowy zakład po przegranej, aby zapewnić pokrycie strat plus minimalny zysk. Obliczenia po stracie uwzględniają całkowitą liczbę straconych monet i nowy docelowy mnożnik.
Jeśli ostatnim wynikiem była przegrana, skrypt do dostosowania zakładu użyje poniższej formuły:
New Bet = (Coin Lost+Minimum Profit) / (Current Multiplier−1)Przeanalizujmy, jak te korekty wyglądają w liczbach rzeczywistych, biorąc pod uwagę początkową stratę. Zakładając, że dotychczas przegrana moneta wynosi 0,00011 $ (kwota pierwszego zakładu) i dostosowujemy nasz docelowy mnożnik do 88,05x ze względu na wzrost po stracie.
Krok 4: Obliczanie nowego zakładu po pierwszej przegranej
Zakładając, że całkowita stracona moneta to nadal tylko początkowy zakład (0,00011 USD) i chcesz nie tylko odzyskać tę kwotę, ale także zapewnić minimalny zysk przy następnej wygranej, przy zwiększonym mnożniku wynoszącym obecnie 88,05:
New Bet = (0.00011+0.01) / (88.05−1) Obliczmy nowy zakład:
New Bet = 0.01011 / 87.05 ≈ 0.0001161Zatem Twój następny zakład powinien wynosić około 0,00012 USD (zaokrąglając dla uproszczenia), mając na celu mnożnik wynoszący 88,05x.
Krok 5: Kontynuacja strategii
- Zwycięski: Jeśli następna gra wygra na poziomie lub powyżej docelowego mnożnika, zresetuj swój zakład do pierwotnego zakładu podstawowego (0,00011 $) i docelowego mnożnika (88x).
- Dalsze straty: Jeśli ponownie przegrasz, powtórz proces obliczeń ze zaktualizowanymi sumami straconych monet i ponownie dostosuj docelowy mnożnik o 0,05.
Dokładna logika
Strategia ta polega na zwiększeniu zakładu po przegranej na tyle, aby pokryć przegraną kwotę plus minimalny zysk, za każdym razem nieznacznie dostosowując docelowy mnożnik w górę, aby dążyć do nieco wyższych zwrotów. Tworzy to równowagę między odrabianiem strat a osiąganiem stałych, choć niewielkich zysków.
Pomimo ukierunkowania zakładu na duży mnożnik, strategia przedstawiona w scenariuszu ma na celu umiarkowany zysk.
Optymalizuj zysk
Aby zoptymalizować konfigurację pod kątem zrównoważonej strategii, której celem jest lepsza trwałość i rozsądna szansa na osiągnięcie większych mnożników, pamiętając jednocześnie o zarządzaniu ryzykiem, dostosujmy konfigurację:
var config = {
mainTitle: { label: "*** Nubs27's Toaster Kitty ***", type: "title" },
payout: { label: "Exit Point Minimum", value: 2.5, type: "number" }, // Adjusted for more achievable targets
increase: { label: "Increase Payout", value: 0.02, type: "number" }, // Slight increase after each loss for gradual recovery
losses: { label: "Minimum Profit on Win", value: 0.01, type: "number" }, // Keeping the minimum profit target realistic
stopTitle: { label: "Stop When", type: "title" },
stop: { label: "Coins Lost >", value: 0.5, type: "number" }, // Adjusted to a more cautious stop loss value
wins: { label: "wins =", value: 3, type: "number" }, // Setting a win target for taking profits and pausing
};Wyjaśnienie korekt
- Minimalny punkt wyjścia (wypłata): Obniżono do
2.5xz88x. Cel ten jest bardziej osiągalny, pozwala na częstsze zwycięstwa, co jest kluczowe w przypadku strategii polegającej na odrabianiu strat i gromadzeniu zysków w czasie. - Zwiększ wypłatę: Dostosowany do
0.02x, w dół od0.05x. Ten mniejszy przyrost po każdej stracie pozwala na bardziej stopniowe podejście do zwiększania docelowego mnożnika. Pomaga w skuteczniejszym zarządzaniu bankrollem, nie zwiększając zbyt szybko wymaganego celu wygranej po porażce. - Minimalny zysk przy wygranej: Pozostaje o godz
$0.01, utrzymując cel, jakim jest zapewnienie minimalnego zysku przy każdej wygranej. Dzięki temu strategia ma na celu osiągnięcie stałych, przyrostowych zysków. - Stracone monety (Stop Loss): Ustawić
0.5(zakładając, że jest to rozsądna część bankrolla gracza w oparciu o jego całkowite środki). Jest to bardziej konserwatywne ustawienie stop-loss, które pomaga zarządzać ryzykiem, zapobiegając dużym stratom. - Wygrane (realizacja zysków): Wzrosła do
3 winsprzed zatrzymaniem lub zatrzymaniem. Daje to jasną strategię realizacji zysków, pozwalającą na gromadzenie zysków i ponowną ocenę strategii.
Koncentrując się na najgorszym scenariuszu, w którym każda gra kończy się przegraną, aż do osiągnięcia całkowitego limitu strat wynoszącego 0,5, możesz potencjalnie rozegrać do 64 gier, zanim osiągniesz warunek zatrzymania. W obliczeniach tych zakłada się, że po każdej przegranej zakład jest nieznacznie zwiększany, aby pokryć poprzednie straty i zapewnić minimalny zysk, zgodnie z logiką strategii, ale bez wyraźnego przeliczania zakładu na podstawie wyniku każdej gry.
Dlatego rzeczywiście zaleca się dostosowanie początkowej konfiguracji w celu optymalizacji wyników. Obecna konfiguracja, choć zapewnia prostą strategię, wskazuje na wysokie ryzyko dotyczące możliwej ilości gry przed osiągnięciem stop-loss, przy stosunkowo niewielkiej maksymalnej wygranej na grę. Skuteczniejsze równoważenie potencjału zwycięstw i porażek może prowadzić do bardziej zrównoważonej strategii, potencjalnie zwiększając zarówno przyjemność, jak i rentowność gry.





















