Example #1
0
 public function action_index()
 {
     $this->needUser();
     $this->ut = new \Kofradia\Game\Utpressing($this->user->player);
     \ess::$b->page->add_title("Utpressing");
     \kf_menu::$data['utpressing'] = true;
     // kontroller fengsel, bomberom og energi
     $this->user->player->fengsel_require_no();
     $this->user->player->bomberom_require_no();
     $this->user->player->energy_require(\Kofradia\Game\Utpressing::ENERGY * 1.3);
     // legg til 30 % for krav
     // kontroller anti-bot
     $this->antibot = \antibot::get("utpressing", static::ANTIBOT_SPAN);
     $this->antibot->check_required();
     // skjema
     $this->form = \Kofradia\Form::getByDomain("utpressing", $this->user);
     // sett opp hvilke ranker som kan angripes
     $this->rank_min = max(1, $this->user->player->rank['number'] - 1);
     $this->rank_max = min($this->rank_min + 3, count(\game::$ranks['items']));
     if ($this->rank_max - $this->rank_min < 3) {
         $this->rank_min = max(1, $this->rank_max - 3);
     }
     // sørg for at man har 4 alternativer uavhengig av rank
     // utføre utpressing?
     if (isset($_POST['utpressing'])) {
         $ret = $this->utpress();
         if (!$ret) {
             return \redirect::handle();
         }
         return $ret;
     }
     return $this->showForm();
 }
Example #2
0
 /**
  * Construct
  */
 public function __construct()
 {
     access::no_guest();
     ess::$b->page->add_title("Anti-bot sjekk");
     // hvilken side vi skal sendes til
     $this->redirect_url = getval("ret");
     if (!$this->redirect_url) {
         $this->redirect_url = ess::$s['relative_path'] . "/";
     }
     // sjekk etter anti-bot
     $name = getval("name");
     $this->antibot = antibot::get($name);
     if (!$this->antibot->data) {
         ess::$b->page->add_message("Anti-bot oppføringen er ikke opprettet.", "error");
         $this->redirect();
     }
     // kuler?
     if ($name == "kuler") {
         // gjennomfør pre-check
         if (!$this->antibot->kuler_precheck()) {
             $this->redirect();
         }
         // sett lave ventetider
         $this->update_delay = 2;
         $this->retry_delay = 2;
     }
     redirect::store("sjekk?name=" . urlencode($this->antibot->name) . '&ret=' . urlencode($this->redirect_url));
     // sjekk om anti-boten ikke krever sjekk
     if (!$this->antibot->is_check_required()) {
         $this->redirect();
     }
     // sjekk for ventetid
     $this->check_wait();
     // hent bildene
     $this->load_images();
     $this->form = \Kofradia\Form::getByDomain("anti-bot", login::$user);
     // utføre sjekk?
     if (isset($_POST['valider']) && isset($this->images) && !$this->wait) {
         $this->check();
     }
     // nye bilder?
     if (isset($_POST['new'])) {
         $this->new_imgs();
     }
     // vis anti-boten
     $this->show();
 }
Example #3
0
 /**
  * Construct
  */
 public function __construct()
 {
     kf_menu::$data['lotto'] = true;
     login::$user->player->fengsel_require_no();
     login::$user->player->bomberom_require_no();
     login::$user->player->energy_require(self::ENERGY * 1.3);
     // legg til 30 % på kravet
     ess::$b->page->add_title("Lotto");
     $this->form = \Kofradia\Form::getByDomain("lotto", login::$user);
     $this->antibot = antibot::get("lotto", 21);
     $this->antibot->check_required();
     // sjekk for aktiv runde, ventetid osv
     $this->check_active();
     // ber vi om å kjøpe lodd?
     if (isset($_POST['lodd'])) {
         $this->lodd_kjop();
     }
     $this->show_page();
     ess::$b->page->load();
 }
Example #4
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>';
    }
Example #5
0
    /**
     * Behandle forespørsel
     */
    protected function handle_page()
    {
        $this->krim->up->fengsel_require_no();
        $this->krim->up->bomberom_require_no();
        $this->krim->up->energy_require(kriminalitet::ENERGY_KRIM * 1.3);
        // legg til 30 % på kravet
        // sett opp skjema
        $this->form = \Kofradia\Form::getByDomain("kriminalitet", login::$user);
        // sett opp antibot og sjekk om den skal utføres nå
        $this->antibot = antibot::get("kriminalitet", 12);
        $this->antibot->check_required();
        ess::$b->page->add_title("Kriminalitet");
        // hent informasjon om forrige forsøk
        $this->krim->get_last_info();
        // hent inn alternativene
        $this->krim->options_load();
        // utføre handling?
        if (isset($_POST['theid'])) {
            $this->utfor();
        }
        echo '
<div class="bg1_c medium">
	<h1 class="bg1">Kriminalitet<span class="left2"></span><span class="right2"></span></h1>
	<p class="h_right"><a href="' . ess::$s['rpath'] . '/node/3">Hjelp</a></p>
	<div class="bg1" style="padding-bottom: 1em">
		<p>Her kan du gjøre enkle forbrytelser. Type forbrytelse er forskjellig fra bydel til bydel. Sannsynligheten justerer seg etter resultatet av forrige forsøk.</p>';
        // siste utført?
        if ($this->krim->last) {
            echo '
		<p>Du utførte kriminalitet sist den ' . ess::$b->date->get($this->krim->last['last'])->format(date::FORMAT_SEC) . ' på ' . game::$bydeler[$this->krim->last['b_id']]['name'] . '.</p>';
        }
        echo '
		<boxes />';
        // er det noe ventetid?
        if ($this->krim->wait) {
            echo '
		<p>Du må vente ' . game::counter($this->krim->wait, true) . ' før du kan utføre kriminalitet på nytt.</p>';
        }
        // har vi ingen alternativer?
        if (count($this->krim->options) == 0) {
            echo '
		<p>Det er ingen alternativer å utføre i denne bydelen. Prøv en annen bydel.</p>';
        } else {
            ess::$b->page->add_css('
.krim_boks {
	clear: both;
	position: relative;
	padding: 0 0 0 85px;
	border: 1px solid #232323;
	background-color: #222222;
	margin: 0.7em 0 0;
	background-repeat: no-repeat;
	background-position: 0;
	height: 75px;
}
.krim_boks p, .krim_boks h4 { margin: 0; padding: 0; position: absolute }
.krim_boks p { color: #CCCCCC }
.krim_boks.krim_color {
	background-color: #262626;
}
.krim_boks.krim_last {
	background-color: #2D1E1E;
}
.krim_boks .krim_img {
	float: left;
	margin-right: 5px;
}
.krim_boks h4 {
	top: 8px;
}
.krim_strength {
	bottom: 23px;
}
.krim_rank {
	bottom: 23px;
	right: 8px;
}
.krim_info {
	bottom: 8px;
}
.krim_wait {
	right: 8px;
	bottom: 8px;
}
.krim_cash {
	right: 8px;
	top: 8px;
	font-weight: bold;
}');
            if ($this->krim->wait) {
                ess::$b->page->add_js_domready('
	$$("div.krim_boks input").setStyle("display", "none");');
            } else {
                ess::$b->page->add_js_domready('
	$$("div.krim_boks").each(function(elm)
	{
		elm.setStyle("cursor", "pointer");
		elm.addEvents({
			"mouseover": function()
			{
				this.setStyle("background-color", "#181818");
			},
			"mouseout": function()
			{
				this.setStyle("background-color", "");
			},
			"click": function()
			{
				$("theid")
					.set("value", this.get("rel"))
					.form.submit();
			}
		});
		elm.set("title", "Klikk for å utføre");
		elm.getElement("input").setStyle("display", "none");
	});');
            }
            echo '
		<form action="" method="post">
			' . $this->form->getHTMLInput() . '
			<input type="hidden" name="theid" value="" id="theid" />';
            $i = 0;
            $show_id = ess::session_get("krim_last_id");
            foreach ($this->krim->options as $row) {
                $rank = game::format_num($row['points']);
                echo '
			<div class="krim_boks' . (++$i % 2 == 0 ? ' krim_color' : '') . ($show_id == $row['id'] ? ' krim_last' : '') . '" style="background-image: url(' . STATIC_LINK . '/krim/' . (empty($row['img']) ? 'none.png' : $row['img']) . ')" rel="' . $row['id'] . '">
				<h4>
					<input type="submit" name="id' . $row['id'] . '" value="Utfør" />
					' . htmlspecialchars($row['name']) . '
				</h4>
				<p class="krim_strength">' . game::format_num(round($row['prob'] * 100, 1), 1) . ' % sannsynlighet</p>
				<p class="krim_rank">Poeng: ' . $rank . '</p>
				<p class="krim_info">' . game::format_number($row['success']) . ' av ' . game::format_number($row['count']) . ' vellykkede forsøk (' . ($row['count'] == 0 ? '0' : game::format_number($row['success'] / $row['count'] * 100, 1)) . ' %)</p>
				<p class="krim_wait">Ventetid: ' . $row['wait_time'] . ' sek.</p>
				<p class="krim_cash">' . game::format_cash($row['cash_min']) . ' til ' . game::format_cash($row['cash_max']) . '</p>
			</div>';
            }
            echo '
		</form>';
        }
        echo '
	</div>
</div>';
    }
Example #6
0
    /**
     * Overføre penger
     */
    protected function overfor()
    {
        $mottaker = postval("mottaker");
        $amount = game::intval(postval("amount"));
        // kontroller at vi har nok penger
        $result = \Kofradia\DB::get()->query("SELECT {$amount} <= up_bank FROM users_players WHERE up_id = " . $this->up->id);
        $amount_ok = $result->fetchColumn(0) == 1;
        // sjekk beløpet
        if ($amount <= 0) {
            ess::$b->page->add_message("Ugyldig beløp.", "error");
            return;
        }
        if ($amount < 50) {
            ess::$b->page->add_message("Du må sende minimum 50 kr.", "error");
            return;
        }
        if (!$amount_ok) {
            ess::$b->page->add_message("Du har ikke så mye penger i banken.", "error");
            return;
        }
        // har vi ikke tilgang (NoStatUser)
        if (access::is_nostat() && !access::has("admin")) {
            ess::$b->page->add_message("Du er NoStatUser og kan ikke sende penger!", "error");
            return;
        }
        // sjekk session
        if (postval("sid") != login::$info['ses_id']) {
            ess::$b->page->add_message("Startet du ikke overføringen selv? :o", "error");
            return;
        }
        // sjekk mottaker
        $result = \Kofradia\DB::get()->query("SELECT up_id, up_u_id, up_name, up_access_level, up_bank_ff_id FROM users_players WHERE up_name = " . \Kofradia\DB::quote($mottaker) . " ORDER BY up_access_level = 0, up_last_online DESC LIMIT 1");
        $player = $result->fetch();
        // ingen gyldig mottaker?
        if (!$player) {
            ess::$b->page->add_message("Fant ikke mottakeren.", "error");
            return;
        }
        // seg selv?
        if ($player['up_id'] == $this->up->id) {
            ess::$b->page->add_message("Du kan ikke sende til deg selv.", "error");
            return;
        }
        // død mottaker?
        if ($player['up_access_level'] == 0) {
            ess::$b->page->add_message('<user id="' . $player['up_id'] . '" /> er død. Hvem skal motta pengene?!');
            return;
        }
        $result = \Kofradia\DB::get()->query("SELECT uc_info FROM users_contacts WHERE uc_u_id = {$player['up_u_id']} AND uc_contact_up_id = " . $this->up->id . " AND uc_type = 2");
        $blokkert = $result->rowCount() > 0;
        $blokkert_info = $blokkert ? $result->fetchColumn(0) : false;
        // sjekk bankkontoen til mottaker
        $bank = page_banken_bank::get($player['up_bank_ff_id']);
        // ingen bankkonto?
        if (!$bank) {
            ess::$b->page->add_message("Mottakeren har ingen bankkonto du kan sende til.", "error");
            return;
        }
        // blokkert?
        if ($blokkert && !access::has("crewet")) {
            // blokkert
            $reason = game::bb_to_html($blokkert_info);
            $reason = empty($reason) ? '' : ' Begrunnelse: ' . $reason;
            ess::$b->page->add_message("Denne spilleren har blokkert deg, og du kan derfor ikke sende personen penger.{$reason}", "error");
            return;
        }
        $note = mb_substr(postval("note"), 0, 100);
        // hoppe over overføringstapet?
        $skip_bog = false;
        if (isset($_POST['skip_bog']) && access::is_nostat()) {
            $skip_bog = true;
            $this->bank->overforingstap = 0;
            $bank->overforingstap = 0;
        }
        // regn ut hvor mye penger som skal bli til overs etc
        $result = \Kofradia\DB::get()->query("SELECT ROUND({$amount} * {$this->bank->overforingstap}), ROUND({$amount} * {$bank->overforingstap}), ROUND({$amount} * {$this->bank->overforingstap}) + ROUND({$amount} * {$bank->overforingstap}), {$amount} - ROUND({$amount} * {$this->bank->overforingstap}) - ROUND({$amount} * {$bank->overforingstap}), {$amount} - ROUND({$amount} * {$this->bank->overforingstap})");
        $info = $result->fetch(\PDO::FETCH_NUM);
        // 0 -> tap sender
        // 1 -> tap mottaker
        // 2 -> tap totalt
        // 3 -> til overs (det som mottakeren får)
        // 4 -> mellombeløp (utgangsbeløpet - tap sender)
        // kontrollere at overføringen ikke blir utført flere ganger
        $form = \Kofradia\Form::getByDomain("banken_" . $player['up_id'], login::$user);
        // bekreftet?
        if (isset($_POST['confirm']) && isset($_POST['ovt_s']) && isset($_POST['ovt_m']) && $form->validateHashOrAlert()) {
            // kontroller overføringstapene (slik at det ikke har skjedd noen endringer)
            $ovt_s = postval("ovt_s");
            $ovt_m = postval("ovt_m");
            if ($ovt_s != $this->bank->overforingstap || $ovt_m != $bank->overforingstap) {
                // det har endret seg
                login::data_set("banken_ovt_endret", true);
            } else {
                // start transaksjon
                \Kofradia\DB::get()->beginTransaction();
                // send pengene
                $a = \Kofradia\DB::get()->exec("UPDATE users_players AS s, users_players AS m SET s.up_bank = s.up_bank - {$amount}, m.up_bank = m.up_bank + {$info[3]} WHERE s.up_id = " . $this->up->id . " AND m.up_id = {$player['up_id']} AND s.up_bank >= {$amount}");
                // mislykket?
                if ($a == 0) {
                    ess::$b->page->add_message("Noe gikk galt under overføringen.", "error");
                    \Kofradia\DB::get()->commit();
                } else {
                    // lagre overføringslogg
                    \Kofradia\DB::get()->exec("INSERT INTO bank_log SET bl_sender_up_id = " . $this->up->id . ", bl_receiver_up_id = {$player['up_id']}, amount = {$info[4]}, time = " . time());
                    // oppdater senderen
                    \Kofradia\DB::get()->exec("UPDATE users_players SET up_bank_sent = up_bank_sent + {$info[4]}, up_bank_profit = up_bank_profit - {$info[4]}, up_bank_num_sent = up_bank_num_sent + 1, up_bank_charge = up_bank_charge + {$info[0]} WHERE up_id = " . $this->up->id);
                    // oppdater mottakeren
                    \Kofradia\DB::get()->exec("UPDATE users_players SET up_bank_received = up_bank_received + {$info[4]}, up_bank_profit = up_bank_profit + {$info[4]}, up_bank_num_received = up_bank_num_received + 1, up_bank_charge = up_bank_charge + {$info[1]} WHERE up_id = {$player['up_id']}");
                    // spillelogg (med melding)
                    $player2 = new player($player['up_id']);
                    $player2->add_log("bankoverforing", $info[4] . ":" . $note, $this->up->id);
                    // legg til transaksjonsrader
                    if ($info[0] > 0) {
                        \Kofradia\DB::get()->exec("INSERT INTO ff_bank_transactions SET ffbt_ff_id = {$this->bank->id}, ffbt_time = " . time() . ", ffbt_amount = {$amount}, ffbt_profit = {$info[0]}");
                    }
                    if ($info[1] > 0) {
                        \Kofradia\DB::get()->exec("INSERT INTO ff_bank_transactions SET ffbt_ff_id = {$bank->id}, ffbt_time = " . time() . ", ffbt_amount = {$amount}, ffbt_profit = {$info[1]}");
                    }
                    // IRC logg
                    putlog("LOG", "%c9%uBANKOVERFØRING:%u%c (%u" . $this->up->data['up_name'] . "%u) sendte (%u" . game::format_cash($amount) . "%u (%u{$info[3]}%u)) til (%u{$player['up_name']}%u) (TAP: " . game::format_cash($info[2]) . ") " . (!empty($note) ? 'Melding: (' . $note . ')' : 'Ingen melding.'));
                    ess::$b->page->add_message('Du overførte <b>' . game::format_cash($info[4]) . '</b> til <user id="' . $player['up_id'] . '" />.' . ($info[0] > 0 ? ' Banken din tok <b>' . game::format_cash($info[0]) . '</b> i overføringsgebyr.' : ''));
                    \Kofradia\DB::get()->commit();
                    // trigger
                    $this->up->update_money(-$amount, false, false, null);
                    $player2->update_money($info[3], false, false, null);
                    redirect::handle();
                }
            }
        }
        ess::$b->page->add_css('.dl_bank dd { text-align: right }');
        // vis godkjenn form
        echo '
<h1>Banken - overføring</h1>
<form action="" method="post">
	<input type="hidden" name="mottaker" value="' . htmlspecialchars($mottaker) . '" />
	<input type="hidden" name="amount" value="' . $amount . '" />
	<input type="hidden" name="note" value="' . htmlspecialchars($note) . '" />
	<input type="hidden" name="ovt_s" value="' . $this->bank->overforingstap . '" />
	<input type="hidden" name="ovt_m" value="' . $bank->overforingstap . '" />
	' . $form->getHTMLInput();
        // hoppe over overføringstapet?
        if ($skip_bog) {
            echo '
	<input type="hidden" name="skip_bog" />';
        }
        echo '
	<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
	<div style="width: 200px; padding-left: 100px; float: left">
		<div class="section">
			<h2>Avsender</h2>
			<dl class="dl_30">
				<dt>Kontoeier</dt>
				<dd>' . game::profile_link() . '</dd>
				
				<dt>Bankfirma</dt>
				<dd><a href="ff/?ff_id=' . $this->bank->id . '">' . htmlspecialchars($this->bank->data['ff_name']) . '</a></dd>
				
				<dt><abbr title="Overføringstap">Overf.tap</abbr></dt>
				<dd>' . $this->bank->overforingstap * 100 . ' %</dd>
				
				<dt>Plassering</dt>
				<dd>' . (!isset(game::$bydeler[$this->bank->data['br_b_id']]) ? '<span style="color: #777777">Ukjent</span>' : htmlspecialchars(game::$bydeler[$this->bank->data['br_b_id']]['name'])) . '</dd>
			</dl>
		</div>
	</div>
	<div style="width: 200px; padding-left: 20px; float: left">
		<div class="section">
			<h2>Mottaker</h2>
			<dl class="dl_30">
				<dt>Kontoeier</dt>
				<dd><user id="' . $player['up_id'] . '" /></dd>
				
				<dt>Bankfirma</dt>
				<dd><a href="ff/?ff_id=' . $bank->id . '">' . htmlspecialchars($bank->data['ff_name']) . '</a></dd>
				
				<dt><abbr title="Overføringstap">Overf.tap</abbr></dt>
				<dd>' . $bank->overforingstap * 100 . ' %</dd>
				
				<dt>Plassering</dt>
				<dd>' . (!isset(game::$bydeler[$bank->data['br_b_id']]) ? '<span style="color: #777777">Ukjent</span>' : htmlspecialchars(game::$bydeler[$bank->data['br_b_id']]['name'])) . '</dd>
			</dl>
		</div>
	</div>
	<div class="clear" style="width: 420px; margin-left: 100px">
		<div class="section">
			<h2>Overføringsinformasjon</h2>
			<dl class="dl_40 dl_bank">
				<dt>Overføringsbeløp</dt>
				<dd>' . game::format_cash($amount) . '</dd>';
        // hopper over overføringstapet?
        if ($skip_bog) {
            echo '
				
				<dt>Hopper over overføringstapet</dt>
				<dd>NoStat</dd>';
        }
        echo '
				
				<dt>Overføringstap for avsender</dt>
				<dd>' . game::format_cash($info[0]) . '</dd>
				
				<dt>Overføringstap for mottaker</dt>
				<dd>' . game::format_cash($info[1]) . '</dd>
				
				<dt>Mottaker får</dt>
				<dd>' . game::format_cash($info[3]) . '</dd>
				
				<dt>Melding</dt>
				<dd>' . (empty($note) ? 'Ingen melding.' : game::bb_to_html($note)) . '</dd>
			</dl>
			<h4>
				' . show_sbutton("Utfør overføring", 'name="confirm"') . '
				' . show_sbutton("Avbryt/endre", 'name="abort"') . '
			</h4>
		</div>
	</div>
</form>';
        ess::$b->page->load();
    }
Example #7
0
    /**
     * Kaste ut en spiller
     */
    protected function kick_handle()
    {
        // valider sid
        validate_sid();
        // kan vi ikke kaste ut noen spillere nå?
        if (login::$user->player->fengsel_check() || login::$user->player->bomberom_check() || login::$user->player->data['up_b_id'] != $this->ff->data['br_b_id'] || !$this->kick_hour_ok) {
            redirect::handle();
        }
        // mangler spillervalg?
        if (!isset($_POST['player'])) {
            ess::$b->page->add_message("Du må velge en spiller du vil kaste ut.", "error");
            redirect::handle();
        }
        // er ikke spilleren i bomberommet?
        $up_id = (int) $_POST['player'];
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT u_email, up_id, up_name, up_access_level, up_brom_expire\n\t\t\tFROM users_players JOIN users ON up_u_id = u_id\n\t\t\tWHERE up_id = {$up_id} AND up_brom_ff_id = {$this->ff->id} AND up_brom_expire > " . time() . " AND up_access_level != 0");
        $cost = $this->fam ? self::KICK_PLAYER_COST_FAMILIE : self::KICK_PLAYER_COST;
        $up = $result->fetch();
        if (!$up) {
            ess::$b->page->add_message("Fant ikke spilleren.", "error");
            redirect::handle();
        }
        // sett opp skjema
        $form = \Kofradia\Form::getByDomain("other", login::$user);
        // har vi bekreftet ønsket om å kaste ut en spiller?
        if (isset($_POST['confirm']) && $form->validateHashOrAlert(null, "Kast ut spiller fra bomberom")) {
            \Kofradia\DB::get()->beginTransaction();
            // forsøk å trekk fra pengene
            if (!$this->ff->bank(ff::BANK_BETALING, $cost, "Kaste ut spilleren [user id={$up['up_id']}] fra bomberommet")) {
                ess::$b->page->add_message("Det er ikke nok penger i " . ($this->fam ? "broderskapbanken" : "firmabanken") . ".", "error");
                \Kofradia\DB::get()->commit();
            } else {
                // finn en tilfeldig bydel å plassere spilleren
                $result = \Kofradia\DB::get()->query("SELECT id, name FROM bydeler WHERE active != 0 ORDER BY RAND() LIMIT 1");
                $b_id = $result->fetchColumn(0);
                // forsøk å trekk ut spilleren fra bomberommet
                $a = \Kofradia\DB::get()->exec("\n\t\t\t\t\tUPDATE users_players\n\t\t\t\t\tSET up_brom_expire = 0, up_b_id = {$b_id}\n\t\t\t\t\tWHERE up_id = {$up['up_id']} AND up_brom_ff_id = {$this->ff->id} AND up_brom_expire = {$up['up_brom_expire']} AND up_access_level != 0");
                // feilet?
                if ($a == 0) {
                    // avbryt transaksjon
                    \Kofradia\DB::get()->rollback();
                    ess::$b->page->add_message("Kunne ikke kaste ut spilleren fra bomberommet.", "error");
                } else {
                    // legg til hendelse hos spilleren
                    player::add_log_static("bomberom_kicked", login::$user->player->id . ":" . urlencode($this->ff->data['ff_name']) . ":{$up['up_brom_expire']}", $this->ff->id, $up['up_id']);
                    // send e-post til spilleren
                    $email = new email();
                    $email->text = 'Hei,

Din spiller ble kastet ut fra bomberommet av ' . ($this->fam ? 'broderskapet' : 'firmaet') . ' som styrer bomberommet.

--
www.kofradia.no';
                    $email->send($up['u_email'], "Kastet ut av bomberom");
                    // firmalogg
                    $this->ff->add_log("bomberom_kick", login::$user->player->id . ":{$up['up_id']}:{$up['up_brom_expire']}");
                    // logg
                    putlog("DF", "BOMBEROM: {$up['up_name']} ble kastet ut av bomberommet {$this->ff->data['ff_name']} av " . login::$user->player->data['up_name'] . " " . ess::$s['spath'] . "/min_side?up_id={$up['up_id']}");
                    ess::$b->page->add_message('Du kastet ut <user id="' . $up['up_id'] . '" /> fra bomberommet. ' . ($this->fam ? 'Broderskapet' : 'Firmaet') . ' betalte et gebyr på ' . game::format_cash($cost) . '.');
                    \Kofradia\DB::get()->commit();
                    redirect::handle();
                }
            }
        }
        ess::$b->page->add_title("Kaste ut spiller");
        // vis informasjon
        echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Kaste ut spiller fra bomberommet<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<p>Du er i ferd med å kaste ut ' . game::profile_link($up['up_id'], $up['up_name'], $up['up_access_level']) . ' fra bomberommet.</p>
		<p>Spilleren skal i utgangspunktet sitte i bomberommet til ' . ess::$b->date->get($up['up_brom_expire'])->format(date::FORMAT_SEC) . ' (' . game::counter($up['up_brom_expire'] - time()) . ' gjenstår).</p>
		<p>For å kaste ut spilleren må det betales en avgift på <b>' . game::format_cash($cost) . '</b> som betales fra ' . ($this->fam ? 'broderskapkontoen' : 'firmakontoen') . '.</p>';
        // har vi ikke nok penger i firmakontoen?
        if ($this->ff->data['ff_bank'] < $cost) {
            echo '
		<p>' . ($this->fam ? 'Broderskapet' : 'Firmaet') . ' har for øyeblikket kun ' . game::format_cash($this->ff->data['ff_bank']) . ' på konto, noe som ikke er nok. ' . ($this->ff->access(1) ? '<a href="' . ess::$s['relative_path'] . '/ff/banken?ff_id=' . $this->ff->id . '">Sett inn penger på ' . ($this->fam ? 'broderskapkontoen' : 'firmakontoen') . '</a>' : '<a href="' . ess::$s['relative_path'] . '/ff/panel?ff_id=' . $this->ff->id . '">Donér til ' . ($this->fam ? 'broderskapet' : 'firmaet') . '</a>') . ' først for å kunne kaste ut spilleren.</p>
		<p class="c"><a href="bomberom?ff_id=' . $this->ff->id . '">Tilbake</a></p>';
        } else {
            echo '
		<p>' . ($this->fam ? 'Broderskapet' : 'Firmaet') . ' har for øyeblikket ' . game::format_cash($this->ff->data['ff_bank']) . ' på konto.</p>
		<form action="" method="post">
			' . $form->getHTMLInput() . '
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<input type="hidden" name="player" value="' . $up['up_id'] . '" />
			<input type="hidden" name="kick" />
			<p class="c">' . show_sbutton("Bekreft, kast ut spilleren", 'name="confirm"') . ' <a href="bomberom?ff_id=' . $this->ff->id . '">Avbryt</a></p>
		</form>';
        }
        echo '
	</div>
</div>';
        $this->ff->load_page();
    }
Example #8
0
    /**
     * Behandle forespørsel
     */
    protected function page_handle()
    {
        $access = $this->ff->access(1);
        $this->form = \Kofradia\Form::getByDomain("firma", login::$user);
        ess::$b->page->add_title("Bankkontroll");
        // hent antall klienter
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT COUNT(up_id)\n\t\t\tFROM users_players\n\t\t\tWHERE up_access_level != 0 AND up_access_level < " . ess::$g['access_noplay'] . " AND up_bank_ff_id = {$this->ff->id}");
        $num_klienter = $result->fetchColumn(0);
        // finn ut nåværende status
        $status = $this->ff->params->get("bank_overforing_tap_change", 0);
        $status_text = $status == 0 ? 'Ingen endring' : ($status > 0 ? 'Øke ' . game::format_number($status * 100, 2) . ' %' : 'Synke ' . game::format_number(abs($status) * 100, 2) . ' %');
        // finn "tilgjengelige" overføringer
        $expire_ffbt = time() - 3600;
        $result = \Kofradia\DB::get()->query("SELECT COUNT(ffbt_id), SUM(ffbt_amount), SUM(ffbt_profit) FROM ff_bank_transactions WHERE ffbt_ff_id = {$this->ff->id} AND ffbt_up_id = 0 AND ffbt_time >= {$expire_ffbt}");
        $info = $result->fetch(\PDO::FETCH_NUM);
        // nåværende overføringsgebyr
        $overforing_tap = $this->ff->params->get("bank_overforing_tap", 0);
        // forandre fortjeneste?
        if (isset($_POST['fortjenestep_2']) && isset($_POST['fortjenestep_0']) && $access) {
            // kontroller verdier
            $fortjenestep_2 = intval($_POST['fortjenestep_2']);
            $fortjenestep_0 = intval($_POST['fortjenestep_0']);
            //$this->ff->params_lock();
            $this->ff->params->lock();
            $i = 0;
            // medeier
            if ($fortjenestep_2 > 40 || $fortjenestep_2 < 5) {
                ess::$b->page->add_message("Fortjenesten for {$this->ff->type['priority'][2]} kan ikke være under 5 % eller over 40  %.", "error");
                $i++;
            } elseif ($fortjenestep_2 != $this->ff->params->get("fortjenestep_2", 0.25) * 100) {
                $this->ff->params->update("fortjenestep_2", $fortjenestep_2 / 100);
                ess::$b->page->add_message("Fortjenesten for " . $this->ff->type['priority'][2] . " er nå på " . $fortjenestep_2 . " %.");
                $i++;
            }
            // øvrige ansatte
            if ($fortjenestep_0 > 40 || $fortjenestep_0 < 5) {
                ess::$b->page->add_message("Fortjenesten for øvrige ansatte kan ikke være under 5 % eller over 40 %.", "error");
                $i++;
            } elseif ($fortjenestep_0 != $this->ff->params->get("fortjenestep_0", 0.1) * 100) {
                $this->ff->params->update("fortjenestep_0", $fortjenestep_0 / 100);
                ess::$b->page->add_message("Fortjenesten for øvrige ansatte er nå på " . $fortjenestep_0 . " %.");
                $i++;
            }
            // ingen som ble endret?
            if ($i == 0) {
                ess::$b->page->add_message("Ingen endringer ble utført.");
            }
            //$this->ff->params_save();
            $this->ff->params->commit();
            redirect::handle();
        }
        // hente gebyr?
        if (isset($_POST['hent_gebyr']) && $this->form->validateHashOrAlert()) {
            // ingen gebyr å hente?
            if ($info[0] == 0) {
                ess::$b->page->add_message("Det er ingen gebyr å hente.", "error");
                redirect::handle();
            }
            // sjekk at det har gått lang nok tid siden forrige gang
            // FIXME: denne er ikke i bruk (bank_gebyr_siste blir aldri satt)
            $expire = $this->ff->uinfo->params->get("bank_gebyr_siste", 0) + 900;
            if ($expire > time()) {
                ess::$b->page->add_message("Du må vente " . ess::$b->date->get($expire)->format(date::FORMAT_SEC) . " før du kan hente nye gebyr.", "error");
                redirect::handle();
            }
            \Kofradia\DB::get()->beginTransaction();
            // oppdater gebyrene til vår bruker
            \Kofradia\DB::get()->exec("UPDATE ff_bank_transactions SET ffbt_up_id = " . login::$user->player->id . " WHERE ffbt_ff_id = {$this->ff->id} AND ffbt_up_id = 0 AND ffbt_time >= {$expire_ffbt}");
            // finn ut hvor mange prosent vi skal få og firmaet skal få
            $p_player = $access ? 0.5 : ($this->ff->access(2) ? $this->ff->params->get("fortjenestep_2", 0.25) : $this->ff->params->get("fortjenestep_0", 0.1));
            $p_firma = max(0, 0.5 - $p_player);
            // hent ut informasjon om hvor mye vi fikk
            $result = \Kofradia\DB::get()->query("\n\t\t\t\tSELECT COUNT(ffbt_id), SUM(ffbt_amount), SUM(ffbt_profit)*{$p_player}, SUM(ffbt_profit)*{$p_firma}\n\t\t\t\tFROM ff_bank_transactions\n\t\t\t\tWHERE ffbt_ff_id = {$this->ff->id} AND ffbt_up_id = " . login::$user->player->id . " AND ffbt_status = 0");
            $info = $result->fetch(\PDO::FETCH_NUM);
            // 0 => antall, 1 => overført, 2 => profit bruker, 3 => profit firma
            // sett pengene til riktige steder
            \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE users_players, ff, ff_bank_transactions, ff_members, (\n\t\t\t\t\t\tSELECT SUM(ffbt_profit) AS ffbt_profit_sum\n\t\t\t\t\t\tFROM ff_bank_transactions\n\t\t\t\t\t\tWHERE ffbt_ff_id = {$this->ff->id} AND ffbt_up_id = " . login::$user->player->id . " AND ffbt_status = 0\n\t\t\t\t\t) AS ref\n\t\t\t\tSET up_cash = up_cash + ffbt_profit_sum*{$p_player}, ff_bank = ff_bank + ffbt_profit_sum*{$p_firma}, ffbt_status = 1, ffm_earnings = ffm_earnings + ffbt_profit_sum*{$p_player}, ffm_earnings_ff = ffm_earnings_ff + ffbt_profit_sum*{$p_firma}\n\t\t\t\tWHERE ffbt_ff_id = {$this->ff->id} AND ffbt_up_id = " . login::$user->player->id . " AND ffbt_status = 0 AND up_id = ffbt_up_id AND ff_id = ffbt_ff_id AND ffm_ff_id = ff_id AND ffm_up_id = up_id");
            // oppdater stats
            $this->ff->stats_update("money_in", $info[3]);
            // TODO: Slette ffbt oppføringene
            \Kofradia\DB::get()->commit();
            // ingen ble oppdatert?
            if ($info[0] == 0) {
                ess::$b->page->add_message("Det er ingen gebyr å hente.", "error");
            } else {
                ess::$b->page->add_message("Du hentet {$info[0]} gebyr og fikk totalt " . game::format_cash($info[2]) . ". " . game::format_cash($info[1]) . " var blitt overført. Firmaet fikk " . game::format_cash($info[3]) . ".");
            }
            redirect::handle();
        }
        // finn ut hvor lang tid det er til neste endring
        $date = ess::$b->date->get();
        $next_update = 3600 - $date->format("i") * 60 - $date->format("s");
        // endre overføringsgebyr
        if (isset($_POST['eog_value']) && $access) {
            // sjekk at verdien er en av de vi kan velge?
            $step = floatval($_POST['eog_value']);
            if (!in_array($step, ff::$type_bank['eog_steps'])) {
                ess::$b->page->add_message("Verdien du valgte var ikke gyldig.", "error");
                redirect::handle("bank?ff_id={$this->ff->id}");
            }
            $this->ff->params->lock();
            $overforing_tap = $this->ff->params->get("bank_overforing_tap", 0);
            // øke?
            if ($step > 0) {
                // allerede på topp?
                if ($overforing_tap >= ff::$type_bank['bank_overforing_gebyr_max']) {
                    ess::$b->page->add_message("Overføringsgebyret kan ikke økes mer.", "error");
                    $this->ff->params->commit();
                    redirect::handle("bank?ff_id={$this->ff->id}");
                }
                // overstiger maks?
                if ($step + $overforing_tap > ff::$type_bank['bank_overforing_gebyr_max']) {
                    $step = ff::$type_bank['bank_overforing_gebyr_max'] - $overforing_tap;
                }
            } elseif ($step < 0) {
                // allerede på bunn?
                if ($overforing_tap <= ff::$type_bank['bank_overforing_gebyr_min']) {
                    ess::$b->page->add_message("Overføringsgebyret kan ikke senkes mer.", "error");
                    $this->ff->params->commit();
                    redirect::handle("bank?ff_id={$this->ff->id}");
                }
                // overstiger min?
                if ($step + $overforing_tap < ff::$type_bank['bank_overforing_gebyr_min']) {
                    $step = ff::$type_bank['bank_overforing_gebyr_min'] - $overforing_tap;
                }
            }
            // lagre
            $this->ff->params->update("bank_overforing_tap_change", $step, true);
            if ($step == 0) {
                ess::$b->page->add_message("Overføringsgebyret vil ikke lengre bli endret.");
            } else {
                $status = $step > 0 ? 'økt med ' . game::format_number($step * 100, 2) . ' %' : 'senket med ' . game::format_number(abs($step) * 100, 2) . ' %';
                ess::$b->page->add_message('Overføringsgebyret vil bli ' . $status . ' til ' . game::format_number(($overforing_tap + $step) * 100, 2) . ' % om ' . game::counter($next_update) . '.');
            }
            redirect::handle("bank?ff_id={$this->ff->id}");
        }
        echo '
<!--<h1>Bankkontroll</h1>-->
<div class="section" style="width: 250px; margin-left: auto; margin-right: auto">
	<h2>Bankinformasjon</h2>' . ($access ? '
	<p class="h_right eog_off"><a href="../js" onclick="handleClass(\'.eog_on\', \'.eog_off\', event, this.parentNode.parentNode)">Endre overføringsgebyr</a></p>
	<p class="h_right eog_on hide"><a href="../js" onclick="handleClass(\'.eog_off\', \'.eog_on\', event, this.parentNode.parentNode)">Avbryt endringer</a></p>' : '') . '
	<dl class="dd_right' . ($access ? ' eog_off' : '') . '">
		<dt>Overføringsgebyr</dt>
		<dd>' . game::format_number($overforing_tap * 100, 2) . ' %</dd>
		<dt>Neste endring</dt>
		<dd>' . $status_text . '</dd>
		<dt>Tid før neste endring</dt>
		<dd>' . game::counter($next_update) . '</dd>
		<dt>Antall klienter</dt>
		<dd>' . game::format_number($num_klienter) . '</dd>
	</dl>';
        if ($access) {
            echo '
	<form action="" method="post" class="eog_on hide">
		<dl class="dd_right">
			<dt>Nåværende overføringsgebyr</dt>
			<dd>' . game::format_number($overforing_tap * 100, 2) . ' %</dd>
			<dt>Nåværende status</dt>
			<dd>' . $status_text . '</dd>
			<dt>Ny handling</dt>
			<dd>
				<select name="eog_value">';
            $active = in_array($status, ff::$type_bank['eog_steps']) ? $status : 0;
            foreach (ff::$type_bank['eog_steps'] as $step) {
                $status = $step == 0 ? 'Ingen endring' : ($step > 0 ? 'Øke ' . game::format_number($step * 100, 2) . ' %' : 'Senke ' . game::format_number(abs($step) * 100, 2) . ' %');
                echo '
					<option value="' . $step . '"' . ($step == $active ? ' selected="selected"' : '') . '>' . $status . '</option>';
            }
            echo '
				</select>
			</dd>
		</dl>
		<p class="c">
			<input type="submit" class="button" value="Lagre endringer" />
			<a href="../js" class="button" onclick="handleClass(\'.eog_off\', \'.eog_on\', event, this.parentNode.parentNode.parentNode)">Avbryt endringer</a>
		</p>
		<div class="hr"></div>
		<p>Overføringsgebyret blir endret hver hele time og handlingen fortsetter til du endrer den eller du når en av grensene.</p>
		<dl class="dd_right">
			<dt>Minimumsverdi</dt>
			<dd>' . game::format_number(ff::$type_bank['bank_overforing_gebyr_min'] * 100, 2) . ' %</dd>
			<dt>Maksimumsverdi</dt>
			<dd>' . game::format_number(ff::$type_bank['bank_overforing_gebyr_max'] * 100, 2) . ' %</dd>
		</dl>
	</form>';
        }
        echo '
</div>
<div class="section" style="width: 250px; margin-left: auto; margin-right: auto">
	<h2>Overføringsgebyr</h2>
	<p class="h_right">
		<a href="../js" onclick="abortEvent(event);hideClass(\'bankinfo0\');showClass(\'bankinfo1\')" class="bankinfo0">Vis informasjon</a>
		<a href="../js" onclick="abortEvent(event);hideClass(\'bankinfo1\');showClass(\'bankinfo0\')" class="bankinfo1 hide">Skjul informasjon</a>
	</p>
	<dl class="dd_right">
		<dt>Uhentede gebyr</dt>
		<dd>' . game::format_number($info[0]) . '</dd>

		<dt>&nbsp;</dt>
		<dd>' . game::format_cash($info[2]) . '</dd>

		<dt>&nbsp;</dt>
		<dd>(' . game::format_cash($info[1]) . ')</dd>
	</dl>
	<div class="bankinfo1 hide j">
		<div class="hr"></div>
		<p>
			For at banken skal motta overføringsgebyrene må disse hentes inn før det har gått 60 minutter etter at overføringen har skjedd.
		</p>
		<p>
			Den som henter inn gebyrene mottar en viss prosent av gebyrets beløp:
		</p>
		<ul>
			<li>' . ucfirst($this->ff->type['priority'][1]) . ': 50 %</li>
			<li>' . ucfirst($this->ff->type['priority'][2]) . ': ' . intval($this->ff->params->get("fortjenestep_2", 0.25) * 100) . ' % (' . intval(50 - $this->ff->params->get("fortjenestep_2", 0.25) * 100) . ' % til firmaet)</li>
			<li>Øvrige ansatte: ' . intval($this->ff->params->get("fortjenestep_0", 0.1) * 100) . ' % (' . intval(50 - $this->ff->params->get("fortjenestep_0", 0.1) * 100) . ' % til firmaet)</li></li>
		</ul>
		<p>
			Når du har hentet inn nåværende gebyr må du vente 15 minutter til neste gang du kan hente inn gebyr.
		</p>
	</div>' . ($info[0] > 0 ? '
	<form action="" method="post">
		' . $this->form->getHTMLInput() . '
		<h4>' . show_sbutton("Hent gebyr", 'name="hent_gebyr"') . '</h4>
	</form>' : '') . '
</div>';
        // endre fortjeneste
        if ($access) {
            echo '
<div class="section w250 center">
	<h2>Endre fortjeneste</h2>
	<p>Som eier kan du bestemme hvor mange prosent de som henter ut gebyrene skal få. Du må velge mellom 5 % og 40 %. Firmaet får det som er igjen av totalt 50 %.</p>
	<form action="" method="post">
		<dl class="dd_right dl_2x">
			<dt>' . ucfirst($this->ff->type['priority'][2]) . '</dt>
			<dd><input name="fortjenestep_2" type="text" value="' . intval($this->ff->params->get("fortjenestep_2", 0.25) * 100) . '" class="styled w30 r" /> %</dd>

			<dt>Øvrige ansatte</dt>
			<dd><input name="fortjenestep_0" type="text" value="' . intval($this->ff->params->get("fortjenestep_0", 0.1) * 100) . '" class="styled w30 r" /> %</dd>
		</dl>
		<h4>' . show_sbutton("Lagre endringer") . '</h4>
	</form>
</div>';
        }
    }
Example #9
0
    /**
     * Sykehus
     */
    public function __construct(player $up = null, ff $ff)
    {
        parent::__construct($up);
        $this->ff = $ff;
        $show = $this->up && $this->ff->active;
        if ($show) {
            // i fengsel eller bomberom?
            if ($this->up->fengsel_require_no(false) || $this->up->bomberom_require_no(false)) {
                return;
            }
            // sett opp skjema
            $this->form = \Kofradia\Form::getByDomain("sykehus", login::$user);
            // utføre et alternativ?
            if (isset($_POST['sykehus'])) {
                $this->action();
            }
            // utføre sykebil
            if (isset($_POST['sykebil']) && $this->sykebil()) {
                return;
            }
        }
        // vis alternativene
        echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Sykehus<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<boxes />
		<p>Sykehus gir deg muligheten til å øke din energi slik at helsen din går mye fortere opp enn hva den ville gjort utenom. Energien kan ved hjelp av sykehus gå over 100 %.</p>';
        // ventetid?
        $wait = $this->calc_wait();
        if ($wait > 0) {
            echo '
		<p>Du må vente ' . game::counter($wait, true) . ' før du kan benytte deg av sykehus på nytt.</p>';
        } elseif ($show && $this->up->data['up_b_id'] != $this->ff->data['br_b_id']) {
            echo '
		<p>Du må befinne deg i samme bydel som sykehuset for å kunne benytte deg av det.</p>';
            // har vi lite nok energi til å ta sykebil?
            if ($this->up->get_energy_percent() < self::ENERGY_SYKEBIL_REQ) {
                echo '
		<div style="background-color: #533; padding: 1px 10px">
			<p>Du har svært lite energi. Hvis du føler du står i fare for å dø og ikke har nok energi for å reise via bydeler, kan du få en sykebil til å hente deg.</p>
			<p>Når du blir hentet av en sykebil, vil du bli fraktet til bydelen sykehuset befinner seg i uten å miste noe helse eller energi. Du vil deretter kunne utføre alternativene for å få energi.</p>
			<p>Ved å benytte seg av dette alternativet <b>må du ofre 25 % av din totale rank</b>.</p>
			<form action="" method="post">
				<p class="c">' . show_sbutton("Be om sykebil", 'name="sykebil"') . '</p>
			</form>
		</div>';
            }
        } elseif ($show) {
            // vis alternativene
            echo '
		<form action="" method="post">
			' . $this->form->getHTMLInput() . '
			<table class="table center">
				<thead>
					<tr>
						<th>Alternativ</th>
						<th>Pris</th>
					</tr>
				</thead>
				<tbody>';
            $i = 0;
            $last_id = ess::session_get("sykehus_last_id");
            foreach (self::$options as $id => $row) {
                echo '
					<tr class="box_handle' . (++$i % 2 == 0 ? ' color' : '') . '">
						<td><input type="radio" name="id" value="' . $id . '"' . ($last_id == $id ? ' checked="checked"' : '') . ' />' . htmlspecialchars($row['name']) . '</td>
						<td class="r">' . game::format_cash($row['price']) . '</td>
					</tr>';
            }
            echo '
				</tbody>
			</table>
			<p class="c">' . show_sbutton("Utfør handling", 'name="sykehus"') . '</p>
		</form>';
        }
        echo '
		<p class="c"><a href="' . ess::$s['relative_path'] . '/node/57">Mer informasjon om sykehus</a></p>
	</div>
</div>';
    }
Example #10
0
    /**
     * Vis oversikt over garasjen
     */
    protected function garasje_show()
    {
        ess::$b->page->add_title("Garasje");
        // kjøpe garasje?
        if (isset($this->parts[1]) && $this->parts[1] == "kjop") {
            redirect::store("/gta/garasje/kjop", redirect::ROOT);
            return $this->garasje_kjop_show();
        }
        // avslutte garasje?
        if (isset($this->parts[1]) && $this->parts[1] == "avslutt") {
            redirect::store("/gta/garasje/avslutt", redirect::ROOT);
            return $this->garasje_avslutt_show();
        }
        // endre garasje?
        if (isset($this->parts[1]) && $this->parts[1] == "endre") {
            redirect::store("/gta/garasje/endre", redirect::ROOT);
            return $this->garasje_endre_show();
        }
        // vise detaljer over garasje?
        if (isset($this->parts[1]) && $this->parts[1] == "detaljer") {
            redirect::store("/gta/garasje/detaljer", redirect::ROOT);
            return $this->garasje_details_show();
        }
        // betale leie?
        if (isset($this->parts[1]) && $this->parts[1] == "betale") {
            redirect::store("/gta/garasje/betale", redirect::ROOT);
            return $this->garasje_betale_show();
        }
        // skjema
        $this->form = \Kofradia\Form::getByDomain("gta_garasje", login::$user);
        // anti-bot
        $this->antibot = antibot::get("biltyveri", 10);
        $this->antibot->check_required(ess::$s['rpath'] . '/gta');
        // flytte biler?
        if (isset($_POST['flytt'])) {
            return $this->garasje_flytt_show();
        }
        // selge biler?
        if (isset($_POST['selg'])) {
            $this->garasje_selg_handle();
        }
        // hent informasjon om garasjen
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT ugg_time, ugg_time_next_rent, ugg_cost_total, ugg_places, ff_id, ff_name\n\t\t\tFROM users_garage\n\t\t\t\tLEFT JOIN ff ON ff_id = ugg_ff_id\n\t\t\tWHERE ugg_up_id = {$this->gta->up->id} AND ugg_b_id = {$this->gta->up->data['up_b_id']}");
        $garasje = $result->fetch();
        // kan vi betale nå?
        $can_pay = $garasje && gta::can_pay($garasje['ugg_time_next_rent']);
        echo '
<div class="col2_w" style="margin: 50px 50px 0">
	<div class="col_w left" style="width: 50%">
		<div class="col">
			<div class="bg1_c center" style="width: 85%">
				<h1 class="bg1">Garasje på ' . htmlspecialchars($this->gta->up->bydel['name']) . '<span class="left2"></span><span class="right2"></span></h1>
				<div class="bg1">' . (!$garasje ? '
					<p class="c">Du har ingen garasje i denne bydelen.</p>
					<p class="c"><a href="&rpath;/gta/garasje/kjop">Lei ny garasje</a></p>' : '
					<dl class="dd_right">
						<dt>Utleiefirma</dt>
						<dd><a href="&rpath;/ff/?ff_id=' . $garasje['ff_id'] . '">' . htmlspecialchars($garasje['ff_name']) . '</a></dd>
						<dt>Kapasitet</dt>
						<dd>' . game::format_num($garasje['ugg_places']) . '</dd>
						<dt>Neste betalingsfrist</dt>
						<dd>' . ess::$b->date->get($garasje['ugg_time_next_rent'])->format() . ($can_pay ? '<br /><a href="&rpath;/gta/garasje/betale">Betal leie før fristen</a>' : '') . '</dd>
					</dl>
					<p class="c"><a href="&rpath;/gta/garasje/detaljer">Vis flere detaljer</a></p>
					<p>Leie for neste periode må betales innen betalingsfristen' . ($can_pay ? '' : ' og blir mulig 3 dager før fristen') . '.</p>') . '
				</div>
			</div>
		</div>
	</div>
	<div class="col_w right" style="width: 50%">
		<div class="col">
			<p class="c" style="margin-top: 0"><img src="&staticlink;/gta/garasje.jpg" alt="Garasje" style="border: 3px solid #1F1F1F" /></p>
		</div>
	</div>
</div>';
        if ($garasje) {
            // hent bilene i garasjen
            $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 15);
            $result = $pagei->query("\n\t\t\t\tSELECT s.id, s.gtaid, s.time, s.time_last_move, s.b_id_org, s.b_id, g.brand, g.model, g.img_mini, g.value, s.damage\n\t\t\t\tFROM users_gta AS s LEFT JOIN gta AS g ON s.gtaid = g.id\n\t\t\t\tWHERE ug_up_id = {$this->gta->up->id} AND s.b_id = {$this->gta->up->data['up_b_id']}\n\t\t\t\tORDER BY s.time DESC");
            echo '
<div class="bg1_c xmedium">
	<h1 class="bg1">Biler i garasjen<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">';
            // har vi ingen biler?
            if ($result->rowCount() == 0) {
                echo '
		<p>Det er ingen biler plassert i denne garasjen. Bilene du stjeler vil bli plassert i garasjen i bydelen du oppholder deg.</p>';
            } else {
                echo '
		<form action="" method="post">
			' . $this->form->getHTMLInput() . '
			<table class="table tablemt center">
				<thead>
					<tr>
						<th><a href="#" class="box_handle_toggle" rel="bil[]">Merk alle</a></th>
						<th>Merke/Modell</th>
						<th>Dato anskaffet</th>
						<th>Skade</th>
						<th>Verdi</th>
					</tr>
				</thead>
				<tbody>';
                $i = 0;
                while ($row = $result->fetch()) {
                    echo '
					<tr class="box_handle' . (++$i % 2 == 0 ? ' color' : '') . '">
						<td><input type="checkbox" id="bil_' . $row['id'] . '" name="bil[]" value="' . $row['id'] . '" />' . (empty($row['img_mini']) ? '&nbsp;' : '<img src="' . $row['img_mini'] . '" alt="Bilde" />') . '</td>
						<td>' . htmlspecialchars($row['brand']) . '<br /><b>' . htmlspecialchars($row['model']) . '</b></td>
						<td>' . ess::$b->date->get($row['time'])->format() . '</td>
						<td align="right">' . $row['damage'] . ' %</td>
						<td align="right">' . game::format_cash($row['value'] * ((100 - $row['damage']) / 100)) . '</td>
					</tr>';
                }
                echo '
				</tbody>
			</table>' . ($pagei->pages > 1 ? '
			<p class="c">' . $pagei->pagenumbers() . '</p>' : '') . '
			<p class="c">
				' . show_sbutton("Selg biler", 'name="selg"') . '
				' . show_sbutton("Flytt biler", 'name="flytt"') . '
			</p>
		</form>';
            }
            echo '
	</div>
</div>';
        }
    }