Exemplo n.º 1
0
    /**
     * Våpentrening
     */
    protected function page_training_show()
    {
        // sett opp og test for anti-bot
        $this->training_antibot = new antibot(login::$user->id, "training", 7);
        if (MAIN_SERVER) {
            $this->training_antibot->check_required();
        }
        // sett opp skjema
        $this->training_form = \Kofradia\Form::getByDomain("training", login::$user);
        // ventetid?
        $wait = max(0, login::$user->player->data['up_weapon_training_next'] - time());
        // skal vi trene våpenet?
        if (isset($_POST['wt']) && $this->training_form->validateHashOrAlert(null, "Våpentrening")) {
            // kan vi ikke trene nå?
            if ($wait > 0) {
                redirect::handle();
            }
            // finnes ikke valget?
            $id = (int) postval("training_id");
            if (!isset(self::$trainings[$id])) {
                ess::$b->page->add_message("Du må velge et alternativ.", "error");
                redirect::handle();
            }
            $opt = self::$trainings[$id];
            // lagre valget for neste gang
            ess::session_put("training_id", $id);
            // har ikke nok cash?
            if ($opt['price'] > login::$user->player->data['up_cash']) {
                ess::$b->page->add_message("Du har ikke nok penger til å utføre våpentreningen.");
                redirect::handle();
            }
            $f = self::TRAINING_MAX * $opt['percent'];
            $next_old = login::$user->player->data['up_weapon_training_next'] ? ' = ' . login::$user->player->data['up_weapon_training_next'] : ' IS NULL';
            // utfør våpentrening
            $a = \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE users_players\n\t\t\t\tSET up_weapon_training = up_weapon_training + (1 - up_weapon_training) * {$f}, up_weapon_training_next = " . (time() + $opt['wait']) . ", up_cash = up_cash - {$opt['price']}\n\t\t\t\tWHERE up_id = " . login::$user->player->id . " AND up_cash >= {$opt['price']} AND up_weapon_training_next{$next_old}");
            // ikke oppdatert?
            if ($a == 0) {
                ess::$b->page->add_message("Kunne ikke utføre våpentrening.", "error");
            } else {
                $this->training_antibot->increase_counter();
                ess::$b->page->add_message("Du trente opp våpenet ditt og våpentreningen økte med " . game::format_num((1 - login::$user->player->data['up_weapon_training']) * $f * 100, 2) . " %.");
            }
            redirect::handle();
        }
        $training = login::$user->player->data['up_weapon_training'] * 100;
        echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Våpentrening<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">';
        if ($wait > 0) {
            echo '
		<p class="c">Du må vente ' . game::counter($wait, true) . ' før du kan trene våpenet på nytt.</p>';
        } else {
            // vis alternativene
            echo '
		<form action="" method="post">
			' . $this->training_form->getHTMLInput() . '
			<table class="table tablemt center">
				<thead>
					<tr>
						<th>Pris</th>
						<th>Ventetid</th>
					</tr>
				</thead>
				<tbody>';
            $i = 0;
            $match = ess::session_get("training_id") ?: 0;
            foreach (self::$trainings as $id => $row) {
                echo '
					<tr class="box_handle' . (++$i % 2 == 0 ? ' color' : '') . '">
						<td class="r"><input type="radio" name="training_id"' . ($match == $id ? ' checked="checked"' : '') . ' value="' . $id . '" />' . game::format_cash($row['price']) . '</td>
						<td class="r">' . game::timespan($row['wait']) . '</td>
					</tr>';
            }
            echo '
				</tbody>
			</table>
			<p class="c">' . show_sbutton("Utfør", 'name="wt"') . '</p>
		</form>';
        }
        echo '
		<div class="progressbar p' . ($training < 28 ? ' levelcrit' : ($training < 35 ? ' levelwarn' : '')) . '">
			<div class="progress" style="width: ' . round(min(100, $training)) . '%">
				<p>Våpentrening: ' . ($training == 100 ? '100' : game::format_num($training, 2)) . ' %</p>
			</div>
		</div>
		<p>Du har en <b>' . htmlspecialchars(login::$user->player->weapon->data['name']) . '</b> med <b>' . game::format_num(login::$user->player->data['up_weapon_bullets']) . '</b> ' . fword('kule', 'kuler', login::$user->player->data['up_weapon_bullets']) . '.</p>
		<p>Våpentreningen din synker jevnlig i løpet av dagen, og du er nødt til å trene for å holde oppe våpentreningen din. Hvis våpentreningen din faller under 25 %, risikerer du å miste våpenet ditt.</p>
		<p>Bedre våpentrening fører til:</p>
		<ul class="spacer">
			<li>Du forbedrer treffsikkerheten din</li>
			<li>Du øker skuddtakten samtidig som treffsikkerheten forblir den samme</li>
		</ul>
	</div>
</div>';
    }
Exemplo n.º 2
0
 /**
  * Kontroller inndata og utfør utpressing
  */
 public function utpress()
 {
     // wait time?
     if (($wait = $this->ut->getWait()) > 0) {
         \ess::$b->page->add_message("Du må vente " . \game::counter($wait, true) . " før du kan utføre en ny utpressing.", "error");
         return;
     }
     // validate form
     $form_info = '';
     if ($this->ut->up->data['up_utpressing_last']) {
         $form_info = sprintf("Siste=%s;", \game::timespan($this->ut->up->data['up_utpressing_last'], \game::TIME_ABS | \game::TIME_SHORT | \game::TIME_NOBOLD));
     } else {
         $form_info = "First;";
     }
     if ($wait) {
         $form_info .= sprintf("%%c11Ventetid=%s%%c", \game::timespan($wait, \game::TIME_SHORT | \game::TIME_NOBOLD));
     } else {
         $form_info .= "%c9No-wait%c";
     }
     if (!$this->form->validateHashOrAlert(postval('hash'), $form_info)) {
         return;
     }
     // mangler alternativ?
     $option = $this->ut->getOption(postval("opt"));
     if (!$option) {
         \ess::$b->page->add_message("Du må velge et alternativ.", "error");
         return;
     }
     // lagre valg for neste gang
     \ess::session_put("utpressing_opt_key", postval("opt"));
     // forsøk utpressing
     $result = $this->ut->utpress($option);
     if ($msg = $result->getMessage()) {
         \ess::$b->page->add_message($msg);
     }
     // oppdater anti-bot
     $this->antibot->increase_counter();
 }
Exemplo n.º 3
0
            return $default;
        }
        return $_SESSION[$__server['session_prefix'] . $name];
    }
    /**
     * Lagre verdi i session
     */
    public static function session_put($name, $value)
    {
        global $__server;
        sess_start();
        $_SESSION[$__server['session_prefix'] . $name] = $value;
    }
}
global $__server, $_game;
ess::$b = new essentials();
ess::$s =& $__server;
ess::$g =& $_game;
class essentials
{
    public $time_start = 0;
    public $db_debug = false;
    public $data = array();
    /** For å holde tidsoversikt i scriptet */
    public $time_debug = array();
    /**
     * Profiler
     *
     * @var \Kofradia\Utils\Profiler
     */
    public $profiler;
Exemplo n.º 4
0
 /**
  * Utfør kriminalitet
  */
 protected function utfor()
 {
     // form sjekking
     if (!$this->form->validateHashOrAlert(null, ($this->krim->last ? "Siste=" . game::timespan($this->krim->last['last'], game::TIME_ABS | game::TIME_SHORT | game::TIME_NOBOLD) . ";" : "First;") . ($this->krim->wait ? "%c11Ventetid=" . game::timespan($this->krim->wait, game::TIME_SHORT | game::TIME_NOBOLD) . "%c" : "%c9No-wait%c"))) {
         return;
     }
     // kontroller at vi ikke har noe ventetid
     if ($this->krim->wait) {
         redirect::handle();
     }
     // finn id
     $id = intval(postval("theid"));
     if (!$id) {
         $found = false;
         foreach ($_POST as $name => $val) {
             $matches = false;
             if (preg_match("/^id([1-9]+|[1-9][0-9]+)\$/Du", $name, $matches)) {
                 $id = $matches[1];
             }
         }
     }
     // har ikke oppføringen?
     if (!isset($this->krim->options[$id])) {
         ess::$b->page->add_message("Ugyldig valg.", "error");
         redirect::handle();
     }
     // lagre valget
     ess::session_put("krim_last_id", $id);
     // utfør kriminalitet
     $result = $this->krim->utfor($id);
     $fengsel_msg = $result['wanted_change'] > 0 ? ' Wanted nivået økte med ' . game::format_number($result['wanted_change'] / 10, 1) . ' %.' : '';
     $msg = $result['success'] ? $this->krim->get_random_message($id, true, $result['cash'], $result['rank']) : $this->krim->get_random_message($id, false);
     ess::$b->page->add_message($msg . $fengsel_msg);
     // oppdater anti-bot
     $this->antibot->increase_counter();
     // oppdater siden
     redirect::handle();
 }
Exemplo n.º 5
0
 /**
  * Utfør en handling
  */
 protected function action()
 {
     // kontroller skjema
     if (!$this->form->validateHashOrAlert(null, "Sykehus")) {
         return;
     }
     // mangler vi alternativ?
     if (!isset($_POST['id']) || !isset(self::$options[$_POST['id']])) {
         ess::$b->page->add_message("Du må velge et alternativ.", "error");
         redirect::handle();
     }
     $opt = self::$options[$_POST['id']];
     ess::session_put("sykehus_last_id", (int) $_POST['id']);
     // i feil bydel?
     if ($this->up->data['up_b_id'] != $this->ff->data['br_b_id']) {
         redirect::handle();
     }
     // må vi vente?
     $wait = $this->calc_wait();
     if ($wait > 0) {
         redirect::handle();
     }
     // trekk fra pengene og øk energien
     $a = \Kofradia\DB::get()->exec("\n\t\t\tUPDATE users_players\n\t\t\tSET up_cash = up_cash - {$opt['price']}, up_energy = up_energy + (" . self::ENERGY_MAX . " - up_energy / up_energy_max) * {$opt['increase']} * up_energy_max * GREATEST(0.2, LEAST(1, up_energy / up_energy_max)), up_sykehus_time = " . time() . "\n\t\t\tWHERE up_id = " . $this->up->id . " AND up_cash >= {$opt['price']}");
     // ble ikke oppdatert?
     if ($a == 0) {
         ess::$b->page->add_message("Du har ikke nok penger til å utføre dette alternativet.", "error");
         redirect::handle();
     }
     putlog("LOG", "SYKEHUS: " . $this->up->data['up_name'] . " utførte alternativet {$opt['name']}. Hadde " . round($this->up->get_energy_percent(), 4) . " % energi før handlingen. " . $this->up->generate_minside_url());
     ess::$b->page->add_message("Du utførte alternativet &laquo;" . htmlspecialchars($opt['name']) . "&raquo;.");
     redirect::handle();
 }