Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[DL/Tut] Hero Zero Prywatny serwer (flash_129 & flash_123) na ruffle.rs


LujekV2

Rekomendowane odpowiedzi

  • Odpowiedzi 61
  • Dodano
  • Ostatniej odpowiedzi

Top użytkownicy w tym temacie

Top użytkownicy w tym temacie

Opublikowano (edytowane)

Widzę że od nowszej wersji ruffle (którą można zaktualizować updaterem patrz w opis) działa wysyłanie wiadomości enterem

6llanTm.png

Edytowane przez LujekV2

dupa

  • 5 miesięcy temu...
Opublikowano

Towarzysze działają, ale chyba na nowszej wersji ruffle. Po aktualizacji zaczęły mi działać i nie crashują. Mega spoko wrzuta, mam nadzieje ze niedlugo cos ruszy z ruffle zeby sie dalo normalnie pograc 🙂 Polecam autora, mega pomocny

Opublikowano
W dniu 26.04.2024 o 20:05, polack90pol napisał:

Towarzysze działają, ale chyba na nowszej wersji ruffle. Po aktualizacji zaczęły mi działać i nie crashują. Mega spoko wrzuta, mam nadzieje ze niedlugo cos ruszy z ruffle zeby sie dalo normalnie pograc 🙂 Polecam autora, mega pomocny

Dzięki i też mam taką nadzieję z ruffle, chciałbym sobie odpalić serwer do swojej ulubionej gierki we flashu tinyisland 😅

dupa

  • 3 tygodnie później...
Opublikowano (edytowane)

Wszystko śmiga, tylko po każdej walce w zadaniach nadzwyczajnych wyskakuje błąd: Załaduj ponownie. Proszę o pomoc. link: https://vgame.serv00.net/hz

Pozdrawiam

 

@Edit:

Dzieje się tak tylko po wygranej walce po wciśnięciu OK

Edytowane przez Custom225
Opublikowano
13 godzin temu, Custom225 napisał:

Wszystko śmiga, tylko po każdej walce w zadaniach nadzwyczajnych wyskakuje błąd: Załaduj ponownie. Proszę o pomoc. link: https://vgame.serv00.net/hz

Pozdrawiam

 

@Edit:

Dzieje się tak tylko po wygranej walce po wciśnięciu OK

w server/request/claimDungeonQuestRewards.req.php zmień if($dungeon_status != 4) { na if($dungeon->status != 4) {

dupa

Opublikowano
7 godzin temu, LujekV2 napisał:

w server/request/claimDungeonQuestRewards.req.php zmień if($dungeon_status != 4) { na if($dungeon->status != 4) {

Ponownie problem rozwiązany. Bardzo dziękuję.

Pozdrawiam

  • 1 miesiąc temu...
Opublikowano

1. Pisze Ci, że problem z załadowaniem WYMAGANEGO komponentu .wasm (prawdopodobnie silnika)

2. Zobacz konsolę, zakładkę Internet. Tam będziesz widział co Ci się nie ładuje po odświeżeniu strony.

Opublikowano (edytowane)

Wcześniej działało jak trzeba, problem występuje po stronie przeglądarki microsoft edge, na operze wszystko śmiga. 

 

@Edit: Usunąłem dane przeglądania i wszystko śmiga.

Problem rozwiązany.

Pozdrawiam

Edytowane przez Custom225
  • 9 miesięcy temu...
Opublikowano
W dniu 9.04.2025 o 13:06, taakoso napisał:

@LujekV2 da rade zaaktualizowac te linki? niestety juz nie dzialaja

no masz, spadło z rowerka, nie wiem czy jeszcze to gdzieś mam, poszukam później jak nie zapomnę

dupa

  • 3 tygodnie później...
Opublikowano (edytowane)

Próbuje naprawiać te pliki, kryjówke już prawie że naprawiłem, tzn da sie już zbierać zeronit i klej i da sie zbudować inne pomieszczenia, jeszcze sporo tego ale kiedyś podrzuce tutaj jak skończe

Edytowane przez polack90pol
Opublikowano (edytowane)
W dniu 15.05.2025 o 01:40, polack90pol napisał:

Próbuje naprawiać te pliki, kryjówke już prawie że naprawiłem, tzn da sie już zbierać zeronit i klej i da sie zbudować inne pomieszczenia, jeszcze sporo tego ale kiedyś podrzuce tutaj jak skończe

Też z nudów bawię się kryjówkami, jak zrobię chociaż połowę rzeczy to też wrzucę update

Spoiler

w9mguCv.png

Edit 17.05.2025 [02:56]

Spoiler

Na stan obecny mam:
- Odblokowywanie kryjówki (unlockHideout)
- Budowanie (buildHideoutRoom, checkHideoutRoomActivityFinished)
- Rozbudowanie (upgradeHideoutRoom, checkHideoutRoomActivityFinished)
- Magazynowanie (storeHideoutRoom, checkHideoutRoomActivityFinished)
- Umieszczanie (placeHideoutRoom, checkHideoutRoomActivityFinished)
- Odblokowywanie placów budowy (unlockHideoutRoomSlot, instantFinishHideoutSlotUnlock, checkUnlockHideoutRoomSlotFinished)
- Obliczanie/Zbieranie monet, zeronitu i kleju - bez przekraczania limitów $player->hideout->max_resource_stone|glue, z odliczaniem zbiorów w kopalni zeronitu i fabryce superkleju (checkHideoutRoomActivityFinished)
- Produkcje o-botów (startHideoutRoomProduction, checkHideoutRoomActivityFinished)
- Pomijanie akcji za oponki (instantFinishHideoutRoomActivity)

 

Edit 17.05.2025 [04:06]

Z innych rzeczy zrobiłem odblokowywanie zadań nadzwyczajnych po zdjęciach z questów

Spoiler

tNHhspn.png

 

Edytowane przez LujekV2

dupa

Opublikowano

[Update v1.01]
1. Dodano nowe akcje związane z kryjówkami
- Magazynowanie
- Umieszczanie zmagazynowanych pomieszczeń
- Odblokowywanie placów budowy
- Zbieranie zasobów/monet z uwzględnieniem limitów centrali kryjówki
- Produkcje atak-o-botów, obronnych-o-botów
- Ulepszanie pozycji obronnych
2. Zamiast domyślnie odblokowanych misji nadzwyczajnych są one stopniowo odblokowywane przy pomocy zdjęć zdobywanych z questów od x poziomu

 

Demo: https://hzprivate.vip/
Pliki: https://hzprivate.vip/hz129_update1.zip

 

Zaktualizowany automatyczny instalator:

Spoiler

<?php
set_time_limit(300);
ini_set('memory_limit', '-1');


$error = '';
$success = '';

if(file_exists('lock')) {
    die('you can use setup file one time');
}

if (isset($_POST['submit'])) {
    if (!($pdo = checkMySQLConnection($_POST['hostname'], $_POST['username'], $_POST['password'], $_POST['database']))) {
        $error = 'Failed to connect to the MySQL database. Please check your credentials.';
    } else {
        $downloadResult = downloadZIP();
        if (!$downloadResult['status']) {
            $error = $downloadResult['message'];
        } else {
            $extractResult = extractZIP();
            if (!$extractResult['status']) {
                $error = $extractResult['message'];
            } else {
                $x = importDatabase($pdo);
                if(!$x) {
                    $error = 'Can\'t upload SQL file to DB';
                } else {
                    editConfigFile($_POST['hostname'], $_POST['username'], $_POST['password'], $_POST['database'], $_POST['defaultLocale'], $_POST['serverName'], $_POST['domain']);
                    
                    $success = 'Installation completed successfully! (do not remove lock file!)';
                    file_put_contents('lock', 'do not remove it!');
                }
            }
        }
    }
}

function checkMySQLConnection($hostname, $username, $password, $database) {
    try {
        $pdo = new PDO("mysql:host=$hostname;dbname=$database;charset=utf8", $username, $password);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        return $pdo;
    } catch (PDOException $e) {
        return false;
    }
}

function downloadZIP() {
    $remoteFile = 'https://hzprivate.vip/hz129_update1.zip';
    $localFile = 'hz129_update1.zip';
    $bufferSize = 4096;

    try {
        $input = fopen($remoteFile, 'rb');
        if ($input === false) {
            throw new Exception('Failed to open remote file for reading.');
        }

        $output = fopen($localFile, 'wb');
        if ($output === false) {
            fclose($input);
            throw new Exception('Failed to open local file for writing.');
        }

        while (!feof($input)) {
            $chunk = fread($input, $bufferSize);
            fwrite($output, $chunk);
        }

        fclose($input);
        fclose($output);

        return ['status' => true, 'message' => 'File downloaded successfully'];

    } catch (Exception $e) {
        return ['status' => false, 'message' => 'An error occurred: ' . $e->getMessage()];
    }
}

function extractZIP() {
    try {
        $zip = new ZipArchive;
        $res = $zip->open('hz129_update1.zip');
        
        if ($res === TRUE) {
            $zip->extractTo(dirname(__FILE__) . '/');
            $zip->close();
            return ['status' => true, 'message' => 'Files extracted successfully'];
        } else {
            throw new Exception('Failed to extract ZIP file');
        }

    } catch (Exception $e) {
        return ['status' => false, 'message' => 'An error occurred: ' . $e->getMessage()];
    }
}

function editConfigFile($hostname, $username, $password, $database, $defaultLocale, $serverName, $domain) {
    define('IN_ENGINE', true);
    $x = include_once('server/config.php');

    $x['database']['hostname'] = $hostname;
    $x['database']['username'] = $username;
    $x['database']['password'] = $password;
    $x['database']['database'] = $database;
    $x['site']['default_locale'] = $defaultLocale;
    $x['site']['server_domain'] = $domain;
    $x['site']['title'] = $serverName;
    $x['site']['server_name'] = $serverName;

    $jsonString = json_encode($x, JSON_PRETTY_PRINT);
    $jsonString = str_replace(['{', '}', '":', '\/'], ['[', ']', '"=>', '/'], $jsonString);
    
    $config = "<?php".PHP_EOL;
    $config .= "if(!defined('IN_ENGINE')) exit(http_response_code(404));".PHP_EOL;
    $config .= "return ".$jsonString.PHP_EOL;
    $config .= "?>";
    
    file_put_contents('server/config.php', $config);
}

function importDatabase($pdo) {
    try {
        $result = $pdo->query("SHOW TABLES");
        $tables = $result->fetchAll(PDO::FETCH_COLUMN);
        
        $pdo->beginTransaction();

        foreach ($tables as $table) {
            $pdo->exec("DROP TABLE IF EXISTS `$table`");
        }
        
        $sql = file_get_contents('DATABASE.sql');
        $pdo->exec($sql);
        
        $pdo->commit();

        return true;
    } catch (PDOException $e) {
        $pdo->rollBack();
        return false;
    }
}
?>

<!DOCTYPE html>
<html>
<head>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
</head>
<style>
    body {
        font-family: Arial, sans-serif;
        margin: 50px;
    }
    input[type="text"], input[type="password"], select {
        padding: 10px;
        width: 100%;
        margin-bottom: 10px;
        border: 1px solid #ddd;
    }
    input[type="submit"] {
        padding: 10px 15px;
        background-color: #007BFF;
        border: none;
        color: white;
        cursor: pointer;
    }
    input[type="submit"]:hover {
        background-color: #0056b3;
    }
    .message {
        padding: 10px;
        border: 1px solid #ddd;
        margin-bottom: 20px;
    }
    .error {
        background-color: #f8d7da;
        border-color: #f5c6cb;
        color: #721c24;
    }
    .success {
        background-color: #d4edda;
        border-color: #c3e6cb;
        color: #155724;
    }
</style>

<div class="container mt-5">
    <?php
    if (!empty($error)) {
        echo '<div class="alert alert-danger">' . $error . '</div>';
    }
    if (!empty($success)) {
        echo '<div class="alert alert-success">' . $success . '</div>';
    }
    ?>
    <form method="POST" action="">
        <div class="form-group">
            <label for="hostname">Hostname:</label>
            <input type="text" class="form-control" id="hostname" name="hostname" required autocomplete="off">
        </div>
        <div class="form-group">
            <label for="username">Username:</label>
            <input type="text" class="form-control" id="username" name="username" required autocomplete="off">
        </div>
        <div class="form-group">
            <label for="password">Password:</label>
            <input type="password" class="form-control" id="password" name="password" autocomplete="off">
        </div>
        <div class="form-group">
            <label for="database">Database:</label>
            <input type="text" class="form-control" id="database" name="database" required autocomplete="off">
        </div>
        <div class="form-group">
            <label for="serverName">Server Name:</label>
            <input type="text" class="form-control" id="serverName" name="serverName" required autocomplete="off">
        </div>
        <div class="form-group">
            <label for="domain">Domain:</label>
            <input type="text" class="form-control" id="domain" name="domain" value="<?=$_SERVER['HTTP_HOST']?>" required autocomplete="off">
        </div>
        <div class="form-group">
            <label for="defaultLocale">Default game language:</label>
            <select class="form-control" id="defaultLocale" name="defaultLocale" required>
                <option disabled selected>Choose one</option>
                <option value="en_GB">English</option>
                <option value="cs_CZ">Čeština</option>
                <option value="de_DE">Deutsch</option>
                <option value="el_GR">Ελληνικά</option>
                <option value="es_ES">Español</option>
                <option value="fr_FR">Français</option>
                <option value="it_IT">Italiano</option>
                <option value="lt_LT">Lietuvių</option>
                <option value="pl_PL">Polski</option>
                <option value="pt_BR">Português (Brasil)</option>
                <option value="ro_RO">Română</option>
                <option value="ru_RU">Русский</option>
                <option value="tr_TR">Türkçe</option>
            </select>
        </div>
        <div class="form-group">
            <input type="submit" class="btn btn-primary" name="submit" value="Install">
        </div>
    </form>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>

dupa

Opublikowano
9 godzin temu, Reveres napisał:

Oj trochę ich będziesz miał 😜 powodzenia

Tragedii nie ma połowa z tego co zrób misję z identyfikatorem quest_stage<x>_fight|time<x> xD

1prhOqf.png

dupa

Opublikowano
3 godziny temu, Prawy__ napisał:

 

Ukryta treść

  • Zostaw reakcje pod postem "Lubię to" aby odkryć zawartość.

 


I to wszystko trafi na tą stronę jak się domyślam?

 

dokładnie tak się stanie 😉

[Update v1.02]

Dodano większość bohaterskich czynów

Spoiler

Skończone kategorie bohaterskich czynów: [202 / 221] 91.4%
Brakujące [22]: missles_fired, account_confirmed , first_guild_artifact_won
guild_artifacts_won, first_worldboss_attack_completed, worldboss_attacks_completed
first_worldboss_event_won, first_guild_dungeon_fought, guild_dungeons_fought
guild_dungeons_won, tournament_attended, tournament_top10_reached, tournament_top3_reached
first_surprise_box_opened, surprise_box_opened, herobook_first_objetive_finished
herobook_objectives_finished, first_quest_resource_request_accepted, quest_resource_request_accepted
hideout_hideout_points_reached, hideout_units_produced, hideout_build_generator

 

Demo: https://hzprivate.vip/
Pliki: https://hzprivate.vip/hz129_update2.zip

 

Zaktualizowany automatyczny instalator:

Spoiler

 

<?php
set_time_limit(300);
ini_set('memory_limit', '-1');


$error = '';
$success = '';

if(file_exists('lock')) {
    die('you can use setup file one time');
}

if (isset($_POST['submit'])) {
    if (!($pdo = checkMySQLConnection($_POST['hostname'], $_POST['username'], $_POST['password'], $_POST['database']))) {
        $error = 'Failed to connect to the MySQL database. Please check your credentials.';
    } else {
        $downloadResult = downloadZIP();
        if (!$downloadResult['status']) {
            $error = $downloadResult['message'];
        } else {
            $extractResult = extractZIP();
            if (!$extractResult['status']) {
                $error = $extractResult['message'];
            } else {
                $x = importDatabase($pdo);
                if(!$x) {
                    $error = 'Can\'t upload SQL file to DB';
                } else {
                    editConfigFile($_POST['hostname'], $_POST['username'], $_POST['password'], $_POST['database'], $_POST['defaultLocale'], $_POST['serverName'], $_POST['domain']);
                    
                    $success = 'Installation completed successfully! (do not remove lock file!)';
                    file_put_contents('lock', 'do not remove it!');
                }
            }
        }
    }
}

function checkMySQLConnection($hostname, $username, $password, $database) {
    try {
        $pdo = new PDO("mysql:host=$hostname;dbname=$database;charset=utf8", $username, $password);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        return $pdo;
    } catch (PDOException $e) {
        return false;
    }
}

function downloadZIP() {
    $remoteFile = 'https://hzprivate.vip/hz129_update2.zip';
    $localFile = 'hz129_update2.zip';
    $bufferSize = 4096;

    try {
        $input = fopen($remoteFile, 'rb');
        if ($input === false) {
            throw new Exception('Failed to open remote file for reading.');
        }

        $output = fopen($localFile, 'wb');
        if ($output === false) {
            fclose($input);
            throw new Exception('Failed to open local file for writing.');
        }

        while (!feof($input)) {
            $chunk = fread($input, $bufferSize);
            fwrite($output, $chunk);
        }

        fclose($input);
        fclose($output);

        return ['status' => true, 'message' => 'File downloaded successfully'];

    } catch (Exception $e) {
        return ['status' => false, 'message' => 'An error occurred: ' . $e->getMessage()];
    }
}

function extractZIP() {
    try {
        $zip = new ZipArchive;
        $res = $zip->open('hz129_update2.zip');
        
        if ($res === TRUE) {
            $zip->extractTo(dirname(__FILE__) . '/');
            $zip->close();
            return ['status' => true, 'message' => 'Files extracted successfully'];
        } else {
            throw new Exception('Failed to extract ZIP file');
        }

    } catch (Exception $e) {
        return ['status' => false, 'message' => 'An error occurred: ' . $e->getMessage()];
    }
}

function editConfigFile($hostname, $username, $password, $database, $defaultLocale, $serverName, $domain) {
    define('IN_ENGINE', true);
    $x = include_once('server/config.php');

    $x['database']['hostname'] = $hostname;
    $x['database']['username'] = $username;
    $x['database']['password'] = $password;
    $x['database']['database'] = $database;
    $x['site']['default_locale'] = $defaultLocale;
    $x['site']['server_domain'] = $domain;
    $x['site']['title'] = $serverName;
    $x['site']['server_name'] = $serverName;

    $jsonString = json_encode($x, JSON_PRETTY_PRINT);
    $jsonString = str_replace(['{', '}', '":', '\/'], ['[', ']', '"=>', '/'], $jsonString);
    
    $config = "<?php".PHP_EOL;
    $config .= "if(!defined('IN_ENGINE')) exit(http_response_code(404));".PHP_EOL;
    $config .= "return ".$jsonString.PHP_EOL;
    $config .= "?>";
    
    file_put_contents('server/config.php', $config);
}

function importDatabase($pdo) {
        $result = $pdo->query("SHOW TABLES");
        $tables = $result->fetchAll(PDO::FETCH_COLUMN);
        
        foreach ($tables as $table) {
            $pdo->exec("DROP TABLE IF EXISTS `$table`");
        }
        
        $sql = file_get_contents('DATABASE.sql');
        $pdo->exec($sql);

        return true;
}
?>

<!DOCTYPE html>
<html>
<head>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
</head>
<style>
    body {
        font-family: Arial, sans-serif;
        margin: 50px;
    }
    input[type="text"], input[type="password"], select {
        padding: 10px;
        width: 100%;
        margin-bottom: 10px;
        border: 1px solid #ddd;
    }
    input[type="submit"] {
        padding: 10px 15px;
        background-color: #007BFF;
        border: none;
        color: white;
        cursor: pointer;
    }
    input[type="submit"]:hover {
        background-color: #0056b3;
    }
    .message {
        padding: 10px;
        border: 1px solid #ddd;
        margin-bottom: 20px;
    }
    .error {
        background-color: #f8d7da;
        border-color: #f5c6cb;
        color: #721c24;
    }
    .success {
        background-color: #d4edda;
        border-color: #c3e6cb;
        color: #155724;
    }
</style>

<div class="container mt-5">
    <?php
    if (!empty($error)) {
        echo '<div class="alert alert-danger">' . $error . '</div>';
    }
    if (!empty($success)) {
        echo '<div class="alert alert-success">' . $success . '</div>';
    }
    ?>
    <form method="POST" action="">
        <div class="form-group">
            <label for="hostname">Hostname:</label>
            <input type="text" class="form-control" id="hostname" name="hostname" required autocomplete="off">
        </div>
        <div class="form-group">
            <label for="username">Username:</label>
            <input type="text" class="form-control" id="username" name="username" required autocomplete="off">
        </div>
        <div class="form-group">
            <label for="password">Password:</label>
            <input type="password" class="form-control" id="password" name="password" autocomplete="off">
        </div>
        <div class="form-group">
            <label for="database">Database:</label>
            <input type="text" class="form-control" id="database" name="database" required autocomplete="off">
        </div>
        <div class="form-group">
            <label for="serverName">Server Name:</label>
            <input type="text" class="form-control" id="serverName" name="serverName" required autocomplete="off">
        </div>
        <div class="form-group">
            <label for="domain">Domain:</label>
            <input type="text" class="form-control" id="domain" name="domain" value="<?=$_SERVER['HTTP_HOST']?>" required autocomplete="off">
        </div>
        <div class="form-group">
            <label for="defaultLocale">Default game language:</label>
            <select class="form-control" id="defaultLocale" name="defaultLocale" required>
                <option disabled selected>Choose one</option>
                <option value="en_GB">English</option>
                <option value="cs_CZ">Čeština</option>
                <option value="de_DE">Deutsch</option>
                <option value="el_GR">Ελληνικά</option>
                <option value="es_ES">Español</option>
                <option value="fr_FR">Français</option>
                <option value="it_IT">Italiano</option>
                <option value="lt_LT">Lietuvių</option>
                <option value="pl_PL">Polski</option>
                <option value="pt_BR">Português (Brasil)</option>
                <option value="ro_RO">Română</option>
                <option value="ru_RU">Русский</option>
                <option value="tr_TR">Türkçe</option>
            </select>
        </div>
        <div class="form-group">
            <input type="submit" class="btn btn-primary" name="submit" value="Install">
        </div>
    </form>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>

 

 

dupa

Opublikowano
11 godzin temu, Reveres napisał:

Super, fajnie, że się podjąłeś kontynuacji 😄

Słyszałeś o projekcie RankWar? Gośc pisze cały kod od zera w języku GO na najnowszej wersji gry

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...