/** Send en bestemt artikkel på e-post */
    protected function send_email($row)
    {
        $this->email->text('Hei,

Siden du ikke lengre er med i avisfirmaet "' . $row['ff_name'] . '" har din artikkel blitt slettet fordi den ikke tilhørte noen utgivelse. I tilfelle du kanskje ønsker å beholde teksten fra artikkelen, sender vi den på e-post.

Avisfirma: ' . $row['ff_name'] . ' <' . ess::$s['path'] . '/ff/?ff_id=' . $row['ff_id'] . '>

Tittel: ' . $row['ffna_title'] . '
Opprettet: ' . ess::$b->date->get($row['ffna_created_time'])->format(date::FORMAT_SEC) . ($row['ffna_updated_time'] ? '
Sist oppdatert: ' . ess::$b->date->get($row['ffna_updated_time'])->format(date::FORMAT_SEC) : '') . ($row['ffna_published'] ? '
Publisert: ' . ess::$b->date->get($row['ffna_published_time'])->format(date::FORMAT_SEC) : '') . '
Pris: ' . game::format_cash($row['ffna_price']) . '

Innhold:

-- START --
' . $row['ffna_text'] . '
-- SLUTT --

--
Kofradia.no
Denne e-posten er sendt til ' . $row['u_email'] . ' som ' . ($row['up_access_level'] == 0 ? 'tidligere tilhørte' : 'tilhører') . ' ' . $row['up_name'] . '
' . ess::$s['path']);
        $this->email->format();
        mailer::add_emails($this->email, $row['u_email'], "Din tidligere artikkel: {$row['ffna_title']} - Kofradia", true);
        putlog("CREWCHAN", "AVISARTIKKEL SLETTET: E-post planlagt for utsendelse. %c4Mailer scriptet må kjøres!");
    }
Esempio n. 2
0
    /**
     * Diverse
     */
    protected static function page_diverse()
    {
        // hent totalt resultat i poker for siste 30 dager
        $date = ess::$b->date->get();
        $date->modify("-30 days");
        $date->setTime(0, 0, 0);
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT SUM(CONVERT(poker_prize - poker_cash, SIGNED) * IF((poker_winner = 1 AND poker_starter_up_id = up_id) OR (poker_winner = 2 AND poker_challenger_up_id = up_id), 1, -1)) sum_result\n\t\t\tFROM poker, users_players\n\t\t\tWHERE poker_time_start >= " . $date->format("U") . " AND up_u_id = " . page_min_side::$active_user->id . " AND (up_id = poker_starter_up_id OR up_id = poker_challenger_up_id) AND poker_state = 4");
        $poker_result = $result->fetchColumn(0);
        OFC::embed("stats_poker", "graphs/poker?up_id=" . page_min_side::$active_player->id, "100%", 250);
        OFC::embed("stats_poker_num", "graphs/pokernum?up_id=" . page_min_side::$active_player->id, "100%", 250);
        echo '
	<div class="bg1_c">
		<h1 class="bg1">Pokerbevegelse siste 30 dager<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<p class="c">Totalt resultat siste 30 dager: ' . game::format_cash($poker_result) . '</p>
			<p><span id="stats_poker"></span></p>
			<p><span id="stats_poker_num"></span></p>
		</div>
	</div>';
    }
Esempio n. 3
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>';
    }
Esempio n. 4
0
 /**
  * Behandle anti-bot for kuler
  */
 protected function kuler()
 {
     // utføre precheck?
     if (!$this->kuler_num) {
         if (!$this->kuler_precheck()) {
             return;
         }
     }
     $time = time();
     \Kofradia\DB::get()->beginTransaction();
     $price = $this->kuler_num * login::$user->player->weapon->data['bullet_price'];
     // trekk fra pengene og sjekk samtidig om vi faktisk hadde nok penger
     $affected = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$price} WHERE up_id = " . login::$user->player->id . " AND up_cash >= {$price}");
     if ($affected == 0) {
         ess::$b->page->add_message("Du har ikke nok penger på hånda. For å kjøpe {$this->kuler_num} " . fword("kule", "kuler", $this->kuler_num) . " må du ha " . game::format_cash($price) . " på hånda. Kulene ble gjort tilgjengelig for alle igjen.", "error");
         \Kofradia\DB::get()->exec("UPDATE bullets SET up_freeze_up_id = NULL, up_freeze_time = 0 WHERE up_freeze_up_id = " . login::$user->player->id);
         \Kofradia\DB::get()->commit();
         return;
     }
     // forsøk å skaff alle kulene
     $affected = \Kofradia\DB::get()->exec("\n\t\t\tDELETE FROM bullets\n\t\t\tWHERE bullet_freeze_up_id = " . login::$user->player->id . " AND bullet_freeze_time > {$time}\n\t\t\tORDER BY bullet_time\n\t\t\tLIMIT {$this->kuler_num}");
     // feil antall kuler anskaffet?
     if ($affected != $this->kuler_num) {
         // reverser transaksjon
         \Kofradia\DB::get()->rollback();
         // informer
         putlog("DF", "KJØPE KULER: " . login::$user->player->data['up_name'] . " var for treg med å utføre anti-bot for å kjøpe kuler");
         ess::$b->page->add_message("Du var for treg og kulene du ønsket å kjøpe var ikke lenger tilgjengelig.", "error");
         return;
     }
     // gi kulene til spilleren
     \Kofradia\DB::get()->exec("UPDATE users_players SET up_weapon_bullets = up_weapon_bullets + {$this->kuler_num} WHERE up_id = " . login::$user->player->id);
     \Kofradia\DB::get()->commit();
     // logg
     putlog("DF", "KJØPE KULER: " . login::$user->player->data['up_name'] . " kjøpte {$this->kuler_num} kuler for totalt " . game::format_cash($price));
     // informer
     ess::$b->page->add_message("Du kjøpte {$this->kuler_num} " . fword("kule", "kuler", $this->kuler_num) . " for " . game::format_cash($price) . ".");
 }
Esempio n. 5
0
					<th>Når</th>
					<th>Plassering</th>
					<th>Premie</th>
					<th>Vinnerlodd</th>
					<th>Solgte lodd</th>
					<th>Spillere</th>
				</tr>
			</thead>
			<tbody>';
    $i = 0;
    while ($row = $result->fetch()) {
        $end = ceil(($row['time'] - 900) / 1800) * 1800 + 900;
        echo '
				<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
					<td class="c">' . $_base->date->get($end)->format() . '<br /><span style="color: #888888">(' . $_base->date->get($row['time'])->format() . ')</a></td>
					<td class="r">' . ($row['type'] == 1 ? '<b>' . $row['type'] . '. plass</b>' : $row['type'] . '. plass') . '</td>
					<td class="r">' . game::format_cash($row['won']) . '</td>
					<td class="c">' . game::format_number($row['l_id']) . '</td>
					<td class="c">' . game::format_number($row['total_lodd']) . '</td>
					<td class="c">' . game::format_number($row['total_users']) . '</td>
				</tr>';
    }
    echo '
			</tbody>
		</table>
		<p class="c">' . $pagei->pagenumbers(game::address("lotto_vinn", $_GET, array("side")) . "#lotto_vinn", game::address("lotto_vinn", $_GET, array("side"), array("side" => "_pageid_")) . "#lotto_vinn") . '</p>';
}
echo '
	</div>
</div>';
$_base->page->load();
Esempio n. 6
0
    /**
     * Vis fengsel
     */
    protected function show()
    {
        // er vi i fengsel nå?
        if ($wait = $this->up->fengsel_wait()) {
            ess::$b->page->add_js_domready('$("fengsel_dusor").focus();');
            echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Du er i fengsel<span class="left"></span><span class="right"></span></h1>
	<p class="h_right"><a href="node/16">Hjelp</a></p>
	<div class="bg1">
		<p>Du befinner deg for øyeblikket i fengsel og slipper ut om ' . game::counter($wait, true) . '.</p>' . (!$this->up->is_nostat() ? '
		<form action="" method="post">
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<input type="hidden" name="expire" value="' . $this->up->data['up_fengsel_time'] . '" />
			<dl class="dd_right">
				<dt>Dusør for å bryte deg ut</dt>
				<dd><input type="text" class="styled w80" name="amount" id="fengsel_dusor" value="' . game::format_cash($this->up->data['up_fengsel_dusor']) . '" /></dd>
			</dl>
			<p class="c">' . show_sbutton($this->up->data['up_fengsel_dusor'] > 0 ? "Endre dusør" : "Sett dusør", 'name="dusor"') . '</p>
			<p class="c">Spilleren som bryter ut mottar kun ' . self::DUSOR_PROFIT * 100 . ' % av dusøren.</p>
		</form>' : '') . '
	</div>
</div>';
        }
        // sortering
        $sort = new sorts("sort");
        $sort->append("asc", "Spiller", "up_name");
        $sort->append("desc", "Spiller", "up_name DESC");
        $sort->append("asc", "Wanted nivå", "up_wanted_level, up_fengsel_time DESC");
        $sort->append("desc", "Wanted nivå", "up_wanted_level DESC, up_fengsel_time DESC");
        $sort->append("asc", "Tid igjen", "up_fengsel_time");
        $sort->append("desc", "Tid igjen", "up_fengsel_time DESC");
        $sort->set_active(requestval("sort"), 5);
        // hent folk i fengsel
        $sort_info = $sort->active();
        $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 15);
        $result = $pagei->query("\n\t\t\tSELECT up_id, up_name, up_access_level, up_fengsel_time, up_fengsel_num, up_fengsel_dusor, ROUND(up_fengsel_dusor * " . self::DUSOR_PROFIT . ") up_fengsel_dusor_get, up_wanted_level\n\t\t\tFROM users_players\n\t\t\tWHERE up_fengsel_time > " . time() . " AND up_access_level != 0\n\t\t\tORDER BY {$sort_info['params']}");
        $num = $result->rowCount();
        echo '
<div class="bg1_c ' . ($num == 0 ? 'xsmall' : 'xlarge') . '">
	<h1 class="bg1">Fengsel<span class="left"></span><span class="right"></span></h1>
	<p class="h_right"><a href="node/16">Hjelp</a></p>
	<div class="bg1">
		<form action="" method="post">
			<p class="c dark">Ditt wanted nivå er på ' . game::format_number($this->up->data['up_wanted_level'] / 10, 1) . ' %.</p>';
        if ($num == 0) {
            echo '
			<p class="c dark">Ingen er i fengselet for øyeblikket.</p>
			<p class="c"><a href="' . htmlspecialchars(game::address("fengsel", $_GET)) . '" class="button">Oppdater</a></p>';
        } else {
            echo '
			<table class="table center" width="100%">
				<thead>
					<tr>
						<th>Spiller ' . $sort->show_link(0, 1) . '</th>
						<th>Wanted<br />nivå ' . $sort->show_link(2, 3) . '</th>
						<th>Utbrytning<br />sannsynlighet</th>
						<th>Ca. poeng</th>
						<th>Dusør</th>
						<th>Tid igjen ' . $sort->show_link(4, 5) . '</th>
					</tr>
				</thead>
				<tbody>';
            $i = 0;
            while ($row = $result->fetch()) {
                $prefix = "";
                $attr = new attr("class");
                if (++$i % 2 == 0) {
                    $attr->add("color");
                }
                if (!$this->up->fengsel_check()) {
                    $attr->add("box_handle");
                    $prefix = '<input type="radio" name="up_id" value="' . $row['up_id'] . '_' . $row['up_fengsel_time'] . '_' . $row['up_fengsel_dusor'] . '" /> ';
                }
                $time = $row['up_fengsel_time'] - time();
                $prob = self::calc_prob($time, $row['up_wanted_level'] / 10);
                $points = self::calc_points($prob);
                echo '
					<tr' . $attr->build() . '>
						<td>' . $prefix . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</td>
						<td class="c">' . game::format_number($row['up_wanted_level'] / 10, 1) . ' %</td>
						<td class="c">' . game::format_number($prob, 1) . ' %</td>
						<td class="c">' . game::format_num($points) . '</td>
						<td class="r nowrap">' . game::format_cash($row['up_fengsel_dusor_get']) . '</td>
						<td class="r">' . game::counter($time) . '</td>
					</tr>';
            }
            echo '
				</tbody>
			</table>
			<p class="c">' . (($wait = $this->up->fengsel_wait()) == 0 ? '
				' . show_sbutton("Bryt ut", 'name="brytut"') : '
				Du er i fengsel og slipper ut om ' . game::counter($wait, true) . '.
			</p>
			<p class="c">') . '
				<a href="' . htmlspecialchars(game::address("fengsel", $_GET)) . '" class="button">Oppdater</a>
			</p>';
            // flere sider?
            if ($pagei->pages > 1) {
                echo '
			<div class="hr"></div>
			<p class="c">
				' . $pagei->pagenumbers() . '
			</p>';
            }
        }
        echo '
		</form>
	</div>
</div>';
        // testing
        if (!MAIN_SERVER || access::is_nostat() && access::has("mod")) {
            echo '
<div class="bg1_c xxsmall bg1_padding">
	<h1 class="bg1">' . (MAIN_SERVER ? 'No-stat' : 'Testing') . '<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">
		<form action="" method="post">' . ($this->up->fengsel_check() ? '
			<p class="c">' . show_sbutton("Gå ut av fengsel", 'name="remove"') . '</p>' : '
			<dl class="dd_right dl_2x">
				<dt>Tid</dt>
				<dd><input type="text" name="time" value="' . htmlspecialchars(postval("time", 20)) . '" class="styled w40" /> sekunder</dd>
			</dl>
			<p class="c">' . show_sbutton("Gå inn i fensgel") . '</p>') . '
		</form>
	</div>
</div>';
        }
    }
Esempio n. 7
0
    /**
     * Vis side med kart
     */
    public function show_full_page()
    {
        global $__server;
        // hent familierangering
        $ff_list = ff::get_fam_points_rank();
        // deaktiver høyre side
        //define("DISABLE_RIGHT_COL", true);
        ess::$b->page->add_css('
#default_main { overflow: visible }');
        ess::$b->page->add_js_domready('
	sm_scripts.load_hm();
	window.HM.addEvent("f-changed", function(data) {
		//$$(".bydeler_filter a").removeClass("active");
		$$(".bydeler_ressurs").setStyle("display", "none");
		$$(".bydeler_ressurs_"+data).setStyle("display", "block");
		//$("f_"+data).addClass("active");
	});
	window.HM.addEvent("f-removed", function() {
		//$$(".bydeler_filter a").removeClass("active");
		//$("f_").addClass("active");
		$$(".bydeler_ressurs").setStyle("display", "block");
	});
	window.HM.addEvent("b-added", function() {
		//$$(".bydeler_alt a").removeClass("active");
		//$("v_b").addClass("active");
		$$(".bydeler_br").setStyle("display", "none");
		$$(".bydeler_steder").setStyle("display", "block");
	});
	window.HM.addEvent("b-removed", function() {
		//$$(".bydeler_alt a").removeClass("active");
		//$("v_").addClass("active");
		$$(".bydeler_br").setStyle("display", "block");
		$$(".bydeler_steder").setStyle("display", "none");
	});
	
	$$(".bydeler_steder").setStyle("display", "none");
	$$(".bydeler_alt a").addEvent("click", function(e)
	{
		window.HM.remove("f");
		window.HM.set("b", "");
		e.stop();
	});
	
	$$(".bydeler_filter a").addEvent("click", function(e)
	{
		window.HM.remove("b");
		if (this.get("id") == "f_") window.HM.remove("f");
		else window.HM.set("f", this.get("id").substring(2));
		e.stop();
	});
	
	window.HM.recheck();
');
        // sett opp alle FF og sorter dem i y-retning
        $data = array();
        $pos_x = array();
        $pos_y = array();
        foreach ($this->bydeler as $id => $bydel) {
            if ($id == 0) {
                continue;
            }
            foreach ($bydel['ff'] as $row) {
                $pos_x[] = $row['br_pos_x'];
                $pos_y[] = $row['br_pos_y'];
                $type = ff::$types[$row['ff_type']];
                // familie
                if ($row['ff_type'] == 1) {
                    $eier = count($row['eier']) == 0 ? 'Ingen leder av broderskapet' : 'Styres av ' . self::list_players($row['eier']);
                    $class = "bydeler_ressurs_familie";
                    // antall poeng
                    if (isset($ff_list[$row['ff_id']]) && $ff_list[$row['ff_id']]->data['ff_is_crew'] == 0) {
                        $eier .= '<br />' . game::format_num($ff_list[$row['ff_id']]->data['ff_points_sum']) . ' poeng';
                    }
                } else {
                    if ($type['type'] == "bomberom") {
                        $eier = count($row['eier']) == 0 ? 'Ingen styrer bomberommet' : 'Styres av ' . self::list_players($row['eier']);
                    } else {
                        $eier = count($row['eier']) == 0 ? 'Ingen eier av firmaet' : 'Eies av ' . self::list_players($row['eier']);
                    }
                    $class = "bydeler_ressurs_firma bydeler_ressurs_{$type['type']}firma";
                }
                $data[] = '
		<a href="' . $__server['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '" class="bydeler_ressurs ' . $class . '" style="left: ' . $row['br_pos_x'] . '%; top: ' . $row['br_pos_y'] . '%">
			<img class="bydeler_ressurs_t" src="' . htmlspecialchars($type['bydeler_graphic']) . '" alt="' . htmlspecialchars($type['bydeler_alt_pre']) . htmlspecialchars($row['ff_name']) . '" />
			<span class="bydeler_ressurs_tekst">
				' . htmlspecialchars($row['ff_name']) . '<span class="bydeler_owner"><br />
				' . $eier . '</span>
			</span>
			<img class="bydeler_ressurs_graphic" src="' . htmlspecialchars(ff::get_logo_path_static($row['ff_id'], $row['ff_logo_path'])) . '" alt="" />
		</a>';
            }
        }
        array_multisort($pos_y, $pos_x, $data);
        $bydeler_0 = $this->bydeler[0];
        unset($this->bydeler[0]);
        // sorter bydelene i y-retning
        $bydeler_x = array();
        $bydeler_y = array();
        foreach ($this->bydeler as $id => $bydel) {
            $bydeler_x[] = $bydel['bydel_x'];
            $bydeler_y[] = $bydel['bydel_y'];
        }
        array_multisort($bydeler_x, $bydeler_y, $this->bydeler);
        // invitasjoner til FF
        if (count($this->ff_invites) > 0) {
            echo '
<div class="bg1_c small">
	<h1 class="bg1">Invitasjoner<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">';
            foreach ($this->ff_invites as $row) {
                $type = ff::$types[$row['ff_type']];
                echo '
		<p>Du er invitert til ' . $type['refobj'] . ' <a href="' . $__server['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '">' . htmlspecialchars($row['ff_name']) . '</a> som ' . $type['priority'][$row['ffm_priority']] . ' (' . ess::$b->date->get($row['ffm_date_join'])->format(date::FORMAT_NOTIME) . ') - <a href="' . $__server['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '">Godta/avslå</a></p>';
            }
            echo '
	</div>
</div>';
        }
        if (count($this->fff) > 0) {
            echo '
<div class="bg1_c medium bydeler_br bydeler_ressurs bydeler_ressurs_familie">
	<h1 class="bg1">Konkurranse om å danne broderskap<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<table class="table center tablem">
			<thead>
				<tr>
					<th>Avsluttes</th>
					<th>Gjenstår</th>
					<th>Antall broderskap</th>
					<th>Gjenstående broderskap</th>
					<th>&nbsp;</th>
				</tr>
			</thead>
			<tbody class="r">';
            $i = 0;
            $free = 0;
            foreach ($this->fff as $row) {
                if ($row['ff_count'] < ff::MAX_FFF_FF_COUNT) {
                    $free += ff::MAX_FFF_FF_COUNT - $row['ff_count'];
                }
                echo '
				<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
					<td>' . ess::$b->date->get($row['fff_time_expire'])->format(date::FORMAT_SEC) . '</td>
					<td>' . game::timespan(max(time(), $row['fff_time_expire']), game::TIME_ABS) . '</td>
					<td>' . $row['ff_count'] . '</td>
					<td>' . $row['ff_count_active'] . '</td>
					<td><a href="' . $__server['relative_path'] . '/ff/?fff_id=' . $row['fff_id'] . '">Vis &raquo;</a></td>
				</tr>';
            }
            $create_link = login::$logged_in ? $this->up->rank['number'] < ff::$types[1]['priority_rank'][1] ? ' - Du har ikke høy nok rank til å opprette et broderskap' : ' - Du har høy nok rank - <a href="' . $__server['relative_path'] . '/ff/?create">Opprett broderskap &raquo;</a>' : '';
            echo '
			</tbody>
		</table>' . ($free > 0 ? '
		<p class="c" style="margin-top: 0">Det er ' . $free . ' ' . fword("ledig konkurranseplass", "ledige konkurranseplasser", $free) . $create_link . '</p>' : '
		<p class="c" style="margin-top: 0">Ingen ledige konkurranseplasser.</p>') . '
	</div>
</div>';
        }
        // topp rangerte familier
        if (count($ff_list) > 0) {
            echo '
<div class="bg1_c xxsmall bydeler_br bydeler_ressurs bydeler_ressurs_familie">
	<h1 class="bg1">Topp rangerte broderskap<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">
		<dl class="dd_right">';
            $i = 0;
            foreach ($ff_list as $ff) {
                $title = "For rank til medlemmer: " . $ff->data['ff_points_up'] . " - For firma til medlemmer: " . $ff->data['ff_points_ff'] . " - For drap: " . $ff->data['ff_points_kill'];
                echo '
			<dt><a href="' . ess::$s['rpath'] . '/ff/?ff_id=' . $ff->id . '">' . htmlspecialchars($ff->data['ff_name']) . '</a></dt>
			<dd title="' . $title . '">' . game::format_num($ff->data['ff_points_sum']) . ' poeng</dd>';
                // vis kun 3 beste familiene
                if (++$i == 3) {
                    break;
                }
            }
            echo '
		</dl>
		<p class="c"><a href="' . ess::$s['rpath'] . '/node/19">Poenginformasjon</a></p>
	</div>
</div>';
        }
        kf_menu::$data['bydeler_menu'] = true;
        echo '
<h1 class="bydeler">Bydeler</h1>
<div class="bydeler">
	<div class="bydeler_kart bydeler_br">
		<img src="' . STATIC_LINK . '/themes/kofradia/drammen_stor.gif" class="bydeler_bg" />
		' . implode('', $data) . '
	</div>';
        // har vi noen FF som ikke er plassert?
        if ($bydeler_0['active']) {
            echo '
	<div class="bydeler_uplassert bydeler_br">';
            foreach ($bydeler_0['ff'] as $row) {
                $type = ff::$types[$row['ff_type']];
                // familie
                if ($row['ff_type'] == 1) {
                    $eier = count($row['eier']) == 0 ? 'Ingen leder av broderskapet' : 'Styres av ' . self::list_players($row['eier']);
                    $class = "bydeler_ressurs_familie";
                } else {
                    if ($type['type'] == "bomberom") {
                        $eier = count($row['eier']) == 0 ? 'Ingen styrer bomberommet' : 'Styres av ' . self::list_players($row['eier']);
                    } else {
                        $eier = count($row['eier']) == 0 ? 'Ingen eier av firmaet' : 'Eies av ' . self::list_players($row['eier']);
                    }
                    $class = "bydeler_ressurs_firma bydeler_ressurs_{$type['type']}firma";
                }
                echo '
		<div class="bydeler_uplassert_boks">
			<a href="' . $__server['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '" class="bydeler_ressurs ' . $class . '">
				<img class="bydeler_ressurs_graphic" src="' . htmlspecialchars(ff::get_logo_path_static($row['ff_id'], $row['ff_logo_path'])) . '" alt="" />
				<span class="bydeler_ressurs_tekst">
					' . htmlspecialchars($row['ff_name']) . '<span class="bydeler_owner"><br />
					' . $eier . '</span>
				</span>
				<img class="bydeler_ressurs_t" src="' . htmlspecialchars($type['bydeler_graphic']) . '" alt="' . htmlspecialchars($type['bydeler_alt_pre']) . htmlspecialchars($row['ff_name']) . '" />
			</a>
		</div>';
            }
            echo '
	</div>';
        }
        echo '
	<div class="bydeler_kart bydeler_steder">
		<img src="' . STATIC_LINK . '/themes/kofradia/drammen_stor.gif" class="bydeler_bg" />';
        foreach ($this->bydeler as $bydel) {
            if ($bydel['active'] == 0) {
                continue;
            }
            if ($this->up) {
                $distance = self::calc_travel_distance($this->up->bydel, $bydel);
                $taxi_price = round($distance * self::TAXI_PRICE_KM);
                $taxi_points = round($distance * self::TAXI_POINTS_KM * $this->up->rank['number']);
            }
            echo '
		<div class="map_unit' . ($this->up && $this->up->bydel['id'] == $bydel['id'] ? ' map_active' : '') . '" style="left: ' . $bydel['bydel_x'] . '%; top: ' . $bydel['bydel_y'] . '%" id="map_link_' . $bydel['id'] . '">
			<div class="map_title">
				<p class="map_link"><b><b><b>' . htmlspecialchars($bydel['name']) . '</b></b></b></p>
				<div class="bydeler_sted">
					<div class="bydeler_sted_info">
						<dl class="dd_right">
							<dt>Spillere</dt>
							<dd>' . game::format_number($bydel['num_players']) . '</dd>
							<dt>Penger i omløp</dt>
							<dd>' . game::format_cash($bydel['sum_money']) . '</dd>
						</dl>';
            if (!$this->up) {
            } elseif ($this->up->bydel['id'] == $bydel['id']) {
                echo '
						<p>Du befinner deg i denne bydelen.</p>';
            } elseif ($this->up->fengsel_check()) {
                echo '
						<p>Du er i fengsel og kan ikke reise.</p>';
            } elseif ($this->up->bomberom_check()) {
                echo '
						<p>Du er i bomberom og kan ikke reise.</p>';
            } else {
                echo '
						<div class="bydeler_reise c">
							<form action="bydeler" method="post">
								<input type="hidden" name="reise" value="' . htmlspecialchars($bydel['name']) . '" />';
                // taxi
                if (!$this->up->energy_check(self::TAXI_ENERGY * 1.3)) {
                    echo '
								<p>Du har ikke nok energi til å ta taxi hit.</p>';
                } elseif ($this->up->data['up_points'] < $taxi_points * 2) {
                    echo '
								<p>Du har ikke høy nok rank til å ta taxi hit.</p>';
                } else {
                    echo '
								<p>' . show_sbutton("Ta taxi (" . game::format_cash($taxi_price) . ", " . game::format_number(round($taxi_points)) . " poeng)", 'name="taxi"') . '</p>';
                }
                // gta
                if ($this->gta_count == 0) {
                    echo '
								<p>Du har ingen biler i bydelen du oppholder deg i for å reise med.</p>';
                } elseif (!$this->gta_garage[$bydel['id']]['garage']) {
                    echo '
								<p>Det er ingen garasje i denne bydelen.</p>';
                } elseif ($this->gta_garage[$bydel['id']]['garage_free'] == 0) {
                    echo '
								<p>Det er ingen ledige plasser i garasjen i denne bydelen.</p>';
                } else {
                    echo '
								<p>' . show_sbutton("Kjør egen bil", 'name="gta"') . '</p>';
                }
                // teleportere
                if (access::is_nostat()) {
                    echo '
								<p>' . show_sbutton("Teleporter hit (nostat)", 'name="teleporter"') . '</p>';
                }
                echo '
							</form>
						</div>';
            }
            echo '
					</div>
				</div>
			</div>
		</div>';
        }
        echo '
	</div>';
        echo '
</div>';
        ess::$b->page->load();
    }
Esempio n. 8
0
 /**
  * Avslå salg
  */
 public function sell_reject()
 {
     global $_game;
     // hent status
     $status = $this->sell_status(true);
     if (!$status) {
         return false;
     }
     // sørg for at dette er brukeren som skulle selges til
     if (!$this->uinfo || $status['up_id'] != $this->uinfo->id) {
         $this->params->commit();
         throw new HSException("Kun brukeren som har mottatt salget kan behandle det.");
     }
     // fjern fra params
     $this->params->remove("sell");
     // legg til logg hos selgeren
     player::add_log_static("ff_diverse", '<user id="' . $status['up_id'] . '" /> avslo kjøpet av ' . $this->refstring . ' <a href="' . ess::$s['relative_path'] . '/ff/?ff_id=' . $this->id . '">' . htmlspecialchars($this->data['ff_name']) . '</a> for ' . game::format_cash($status['amount']) . '.', $this->id, $status['init_up_id']);
     // logg i FF: {TYPE=reject}:BOSS:UBOSS:FEE:AMOUNT
     $this->add_log("sell", "reject:{$status['init_up_id']}:{$status['up_id']}:{$status['fee']}:{$status['amount']}");
     // avslutt transaction
     $this->params->commit();
     return true;
 }
Esempio n. 9
0
 /**
  * Lagre logg over angrep
  */
 protected function attack_log($ret, $attack_type, $vitner_log, player $up)
 {
     // sett opp vitner
     $vitner = count($vitner_log) > 0 ? \Kofradia\DB::quote(serialize($vitner_log)) : 'NULL';
     // sett opp liste over FF
     $ff_defend = array();
     $list = $this->get_ff_list();
     foreach ($list as $row) {
         if ($row['ff_is_crew'] != 0) {
             continue;
         }
         $type = ff::$types[$row['ff_type']];
         $ff_defend[] = array($row['ff_type'], $row['ff_id'], $type['refobj'], $row['ff_name'], $row['ffm_priority'], $type['priority'][$row['ffm_priority']], $row['ffm_status']);
     }
     $ff_defend = count($ff_defend) > 0 ? \Kofradia\DB::quote(serialize($ff_defend)) : 'NULL';
     // sett opp liste over FF for angriper
     $ff_attack = array();
     $list = $up->get_ff_list();
     foreach ($list as $row) {
         if ($row['ff_is_crew'] != 0) {
             continue;
         }
         $type = ff::$types[$row['ff_type']];
         $ff_attack[] = array($row['ff_type'], $row['ff_id'], $type['refobj'], $row['ff_name'], $row['ffm_priority'], $type['priority'][$row['ffm_priority']], $row['ffm_status']);
     }
     $ff_attack = count($ff_attack) > 0 ? \Kofradia\DB::quote(serialize($ff_attack)) : 'NULL';
     // legg til i loggen
     $cash = isset($ret['penger']) ? $ret['penger'] : 0;
     if (isset($ret['penger_bank'])) {
         $cash = bcadd($cash, $ret['penger_bank']);
     }
     $hitlist = isset($ret['hitlist']) ? $ret['hitlist'] : 0;
     \Kofradia\DB::get()->exec("INSERT INTO drapforsok SET df_attack_up_id = {$up->id}, df_defend_up_id = {$this->id}, df_time = " . time() . ", df_b_id = " . $up->data['up_b_id'] . ", df_outcome = " . ($ret['drept'] ? 1 : 0) . ", df_rankpoints = {$ret['rankpoeng']}, df_type = {$attack_type}, df_cash = {$cash}, df_hitlist = {$hitlist}, df_vitner = {$vitner}, df_attack_ff_list = {$ff_attack}, df_defend_ff_list = {$ff_defend}, df_bullets = {$ret['bullets']}");
     if ($ret['drept']) {
         // logg
         if ($attack_type == self::ATTACK_TYPE_UTPRESSING) {
             putlog("DF", "%c4UTPRESSING DREPT%c: {$up->data['up_name']} ({$up->rank['name']}) presset {$this->data['up_name']} ({$this->rank['name']}). " . $this->generate_minside_url());
         } else {
             putlog("DF", "ANGREP %c4DREPT%c: {$up->data['up_name']} ({$up->rank['name']}) angrep%c3 {$this->data['up_name']}%c ({$this->rank['name']}) med " . $up->weapon->data['name'] . " (" . game::format_number($up->data['up_weapon_training'] * 100, 2) . " % våpentrening) med " . fwords("%d kule", "%d kuler", $ret['bullets']) . ". " . $this->generate_minside_url());
             putlog("DF", " - Angrepstyrke: " . game::format_number($ret['attack_skade'][0] * 100, 2) . ", beskyttelsestyrke: " . game::format_number($ret['attack_skade'][1] * 100, 2) . ", skadeprosent: " . game::format_number($ret['skadeprosent'] * 100, 2) . " % av " . weapon::MAX_ATTACK_HEALTH . " helsepoeng");
         }
         putlog("DF", " - Helse: Hadde " . game::format_number($this->get_health_percent(), 3) . " %");
         putlog("DF", " - Energi: Hadde " . game::format_number($this->get_energy_percent(), 3) . " %");
         if (!$this->protection->data) {
             putlog("DF", " - Hadde ingen beskyttelse");
         } else {
             putlog("DF", " - Beskyttelse: Hadde {$this->protection->data['name']} med " . game::format_number($this->data['up_protection_state'] * 100, 2) . " % styrke");
         }
         putlog("DF", " - Rankpoeng: {$up->data['up_name']} fikk " . game::format_number($ret['rankpoeng']) . " rankpoeng (" . game::format_rank($ret['rankpoeng'], "all") . " % rank) " . $up->generate_minside_url());
         if (count($ret['vitner']) == 0) {
             putlog("DF", " - Ingen vitner");
         } else {
             foreach ($ret['vitner'] as $vitne) {
                 putlog("DF", " - Vitne: {$vitne['up']->data['up_name']} (" . ($vitne['visible'] ? 'ble oppdaget' : 'ble IKKE oppdaget') . ') ' . $vitne['up']->generate_minside_url());
             }
         }
         putlog("DF", " - Penger fra hånda: " . game::format_cash($ret['penger']));
         if (isset($ret['penger_bank'])) {
             putlog("DF", " - Penger fra banken: " . game::format_cash($ret['penger_bank']));
         }
         putlog("DF", " - Penger fra hitlist: " . game::format_cash($ret['hitlist']));
         foreach ($ret['ffm'] as $ffm) {
             putlog("DF", " - Var " . $ffm->get_priority_name() . " i " . $ffm->ff->data['ff_name'] . " " . ess::$s['path'] . "/ff/?ff_id={$ffm->ff->id}");
         }
     } elseif ($attack_type == self::ATTACK_TYPE_KILL) {
         // logg
         putlog("DF", "ANGREP %c8SKADET%c: {$up->data['up_name']} ({$up->rank['name']}) angrep%c3 {$this->data['up_name']}%c ({$this->rank['name']}) med " . $up->weapon->data['name'] . " (" . game::format_number($up->data['up_weapon_training'] * 100, 2) . " % våpentrening) med " . fwords("%d kule", "%d kuler", $ret['bullets']) . ". " . $this->generate_minside_url());
         putlog("DF", " - Angrepstyrke: " . game::format_number($ret['attack_skade'][0] * 100, 2) . ", beskyttelsestyrke: " . game::format_number($ret['attack_skade'][1] * 100, 2) . ", skadeprosent: " . game::format_number($ret['skadeprosent'] * 100, 2) . " % av " . weapon::MAX_ATTACK_HEALTH . " helsepoeng");
         putlog("DF", " - Helse: Mistet " . game::format_number($ret['health_lost_p'] * 100, 3) . " % ({$ret['health_lost']}) og har nå%c4 " . game::format_number($ret['health_new_p'] * 100, 3) . " %");
         putlog("DF", " - Energi: Mistet " . game::format_number($ret['energy_lost_p'] * 100, 3) . " % ({$ret['energy_lost']}) og har nå%c12 " . game::format_number($ret['energy_new_p'] * 100, 3) . " %");
         if ($ret['protection_replaced']) {
             putlog("DF", " - Beskyttelsen ble erstattet med " . $this->protection->data['name']);
         } elseif ($ret['protection_lost_p'] == "") {
             putlog("DF", " - Hadde ingen beskyttelse");
         } else {
             putlog("DF", " - Beskyttelse: Mistet " . game::format_number($ret['protection_lost_p'] * 100, 3) . " % og har nå " . game::format_number($ret['protection_new_p'] * 100, 3) . " %");
         }
         putlog("DF", " - Rankpoeng: {$up->data['up_name']} fikk " . game::format_num($ret['rankpoeng']) . " rankpoeng (offeret mistet " . game::format_num($ret['rankpoeng_lost']) . ") " . $up->generate_minside_url());
         if (count($ret['vitner']) == 0) {
             putlog("DF", " - Ingen vitner");
         } else {
             foreach ($ret['vitner'] as $vitne) {
                 putlog("DF", " - Vitne: {$vitne['up']->data['up_name']} (" . ($vitne['visible'] ? 'ble oppdaget' : 'ble IKKE oppdaget') . ') ' . $vitne['up']->generate_minside_url());
             }
         }
         putlog("DF", " - Penger fra hånda: " . game::format_cash($ret['penger']));
         putlog("DF", " - Penger fra hitlist: " . game::format_cash($ret['hitlist']));
     }
 }
Esempio n. 10
0
 /**
  * Godta/avslå søknad
  * @param boolean $outcome - om søknaden blir innvilget eller ikke
  * @param integer $ds_id
  * @param string $reason
  */
 public static function decide($outcome, $ds_id, $reason)
 {
     global $_base, $__server;
     $ds_id = (int) $ds_id;
     // hent søknaden
     $soknad = self::get($ds_id);
     // fant ikke søknaden?
     if (!$soknad) {
         return false;
     }
     // er søknaden allerede behandlet?
     if ($soknad['ds_reply_decision'] != 0) {
         return false;
     }
     // typen
     $type = self::get_type($soknad['ds_type']);
     // har vi tilgang til søknaden?
     if (!access::has($type['access'])) {
         return false;
     }
     // sjekk for tom begrunnelse
     $have_reason = trim(game::format_data($reason)) != "";
     // sett opp params
     $params = unserialize($soknad['ds_params']);
     // sett opp søknadsinfo
     $info = self::get_info($type['name'], $soknad, $params);
     // info er ikke gyldig - søknaden er ikke gyldig
     if (!is_array($info)) {
         // slett søknaden
         self::delete($ds_id);
         return $info;
     }
     // avslå søknad
     if (!$outcome) {
         $msg = 'bb:' . $type['title'] . ': Din søknad ble avslått. (' . $info['bb'] . ') Begrunnelse: ' . ($have_reason ? $reason : 'Ingen begrunnelse gitt.');
         // spesielle handlinger
         switch ($type['name']) {
             case "ff_name":
                 // sett tilbakepengene på bankkontoen
                 if (isset($params['cost']) && $params['cost'] > 0) {
                     $msg .= ' Beløpet på ' . game::format_cash($params['cost']) . ' som ble innbetalt ved søknad er satt inn på kontoen igjen.';
                     ff::bank_static(ff::BANK_TILBAKEBETALING, $params['cost'], $soknad['ds_rel_id'], 'Navnsøknad avslått: ' . $params['name']);
                 }
                 break;
         }
     } else {
         $msg = 'bb:' . $type['title'] . ': Din søknad har blitt innvilget. (' . $info['bb'] . ') Begrunnelse: ' . ($have_reason ? $reason : 'Ingen begrunnelse gitt.');
         // spesielle handlinger
         switch ($type['name']) {
             case "ff_name":
                 $ff = ff::get_ff($soknad['ds_rel_id'], ff::LOAD_SCRIPT);
                 if ($ff) {
                     $ff->change_name($params['name'], $soknad['ds_up_id']);
                     // lagre gammelt navn på FF i søknaden
                     $params['name_old'] = $info['ff_name'];
                 }
                 break;
         }
     }
     // legg til logg hos spilleren
     player::add_log_static("soknader", $msg, 0, $soknad['ds_up_id']);
     // oppdater søknaden
     \Kofradia\DB::get()->exec("UPDATE div_soknader SET ds_params = " . \Kofradia\DB::quote(serialize($params)) . ", ds_reply_decision = " . ($outcome ? 1 : -1) . ", ds_reply_reason = " . \Kofradia\DB::quote($reason) . ", ds_reply_up_id = " . self::up_id() . ", ds_reply_time = " . time() . " WHERE ds_id = {$ds_id}");
     // oppdater cache
     tasks::set("soknader", \Kofradia\DB::get()->query("SELECT COUNT(ds_id) FROM div_soknader WHERE ds_reply_decision = 0")->fetchColumn(0));
     return $info;
 }
Esempio n. 11
0
 /**
  * Formatter tekst for premie (og gi ut hvis spesifisert)
  */
 protected function prize($give = false)
 {
     // mulige premier:
     // * cash
     // * points
     // * bullets
     $params = new params($this->a->data['ac_prize']);
     $text = array();
     // cash
     if ($cash = $params->get("cash")) {
         if ($give) {
             $this->up->update_money($cash);
         }
         $text[] = game::format_cash($cash);
     }
     // points
     if ($points = $params->get("points")) {
         if ($give) {
             $this->up->increase_rank($points);
         }
         $text[] = game::format_num($points) . " rankpoeng";
     }
     // kuler
     if ($bullets = $params->get("bullets")) {
         $bullets = (int) $bullets;
         // har vi plass til noen kuler?
         if ($this->up->weapon) {
             $kap = $this->up->weapon ? $this->up->weapon->data['bullets'] : 0;
             $free = $kap - $this->up->data['up_weapon_bullets'] - $this->up->data['up_weapon_bullets_auksjon'];
             $bullets = max(0, min($free, $bullets));
             if ($bullets > 0) {
                 if ($give) {
                     // gi kuler
                     \Kofradia\DB::get()->exec("UPDATE users_players SET up_weapon_bullets = up_weapon_bullets + {$bullets} WHERE up_id = {$this->up->id}");
                     $this->up->data['up_weapon_bullets'] += $bullets;
                 }
                 $text[] = fwords("%d kule", "%d kuler", $bullets);
             }
         }
     }
     return sentences_list($text);
 }
Esempio n. 12
0
    protected static function generate_page()
    {
        /*<div class="default_hidden" id="content"><a href="#top">Til toppen av siden</a></div>
        		<div class="default_hidden"><a href="#content">Til toppen av innholdet</a></div>*/
        $extra_classes = '';
        // vise juleheader?
        $d = ess::$b->date->get();
        if ($d->format("m") == 12) {
            $extra_classes .= ' juleheader';
        }
        echo '<!DOCTYPE html>
<html lang="no">
<head>
<title>' . ess::$b->page->generate_title() . '</title>' . ess::$b->page->generate_head() . '</head>
<body class="' . self::$class_browser . self::$class_crew . (self::$locked ? ' is_lock' : '') . $extra_classes . '" id="default_th">' . ess::$b->page->body_start . '
	<!--<div class="default_hidden print" id="top">
		<h1><a href="' . ess::$s['absolute_path'] . '">kofradia.no</a></h1>
		<p class="default_hidden"><a href="#content">Til innholdet</a></p>
	</div>-->
	<div id="default_header_wrap">
		<div id="default_header_img"></div>
		<div id="default_header">';
        $boxes = theme_helper::get_extended_access_boxes();
        if ($boxes) {
            echo '
			<div id="cboxes"' . (!access::has("mod") ? ' class="nocus"' : '') . '>';
            foreach ($boxes as $box) {
                echo '
				<p class="box"><a href="' . $box[0] . '">' . $box[1] . '</a></p>';
            }
            echo '
			</div>';
        }
        echo self::get_extended_access_login();
        echo self::get_extended_access_links();
        echo self::get_extended_access_search();
        echo '
			
			<p id="toplink"><a href="' . ess::$s['path'] . '/" title="Gå til forsiden"></a></p>
			<p id="fb_link"><a href="http://www.facebook.com/kofradia" target="_blank"><span>Du finner oss på Facebook</span></a></p>';
        //<p id="donate_link"><a href="'.ess::$s['relative_path'].'/donasjon" title="Doner &raquo;"><span>Donér &raquo;</span></a></p>';
        $blog_links = self::get_blog_links();
        if ($blog_links) {
            echo '
			<p id="blog_link">' . implode("<br />", $blog_links) . '</p>';
        }
        echo '
			<ul id="default_topmenu">
				<li><a href="' . ess::$s['relative_path'] . '/loggut?sid=' . login::$info['ses_id'] . '" onclick="return confirm(\'Er du sikker på at du vil logge ut?\\n\\nTips! Trykk Esc knappen tre ganger for å logge ut uten å måtte trykke på denne knappen!\')"><b>Logg ut</b></a></li>
				<li><a href="' . ess::$s['relative_path'] . '/innboks">Meldinger</a></li>';
        if (!self::$locked) {
            echo '
				<li><a href="' . ess::$s['relative_path'] . '/kontakter">Kontakter</a></li>
				<li><a href="' . ess::$s['relative_path'] . '/finn_spiller">Finn spiller</a></li>';
        }
        echo '
				<li><a href="' . ess::$s['relative_path'] . '/min_side?u&amp;a=set">Innstillinger</a></li>';
        if (!self::$locked) {
            echo '
				<li><a href="' . ess::$s['relative_path'] . '/irc/client/" target="_blank">Chat</a></li>';
        }
        echo '
			</ul>
			<div id="status_info"></div>
			<p id="default_profilbilde">
				<span id="default_profilbilde_wrap">
					<a href="' . ess::$s['relative_path'] . '/min_side?' . (!login::$user->player->active ? "up_id=" . login::$user->player->id . '&amp;' : '') . 'a=profil&amp;b=profilbilde" class="profile_image_edit"><img src="/static/icon/image.png" /> endre</a>
					<a href="' . ess::$s['relative_path'] . '/p/' . login::$user->player->data['up_name'] . '"><img src="' . htmlspecialchars(login::$user->player->get_profile_image()) . '" alt="Ditt profilbilde" class="profile_image" /></a>
				</span>
			</p>
			<p id="default_playername">' . game::profile_link() . '</p>' . self::get_oppdrag_status() . '
		</div>
		<div id="default_header_subline">
			<p id="server_klokka"><span>' . self::$date_now->format(date::FORMAT_WEEKDAY) . ' ' . self::$date_now->format(date::FORMAT_NOTIME) . ' - ' . self::$date_now->format("H:i:s") . '</span></p>
			<div id="pm_new">' . (self::$num_pm > 0 ? '<p class="notification_box"><a href="' . ess::$s['relative_path'] . '/innboks"><b>' . self::$num_pm . ' ' . fword("ny</b> melding", "nye</b> meldinger", self::$num_pm) . '</a></p>' : '') . '</div>
			<div id="log_new">' . (self::$num_log > 0 ? '<p class="notification_box"><a href="' . ess::$s['relative_path'] . '/min_side?log"><b>' . self::$num_log . ' ' . fword("ny</b> hendelse", "nye</b> hendelser", self::$num_log) . '</a></p>' : '') . '</div>';
        if (login::$user->data['u_log_crew_new'] > 0 && isset(login::$extended_access)) {
            echo '
			<p class="notification_box"><a href="' . ess::$s['relative_path'] . '/min_side?u&a=crewlog"><b>' . login::$user->data['u_log_crew_new'] . '</b> ' . fword("ny hendelse som crew", "nye hendelser som crew", login::$user->data['u_log_crew_new']) . '</a></p>';
        }
        if (!self::$locked) {
            echo '
			<div id="def_ui2">
				<p>' . login::$user->player->getRank()->getName() . '</p>
				<p><span class="farge">Sted: </span> <span id="status_bydel">' . game::$bydeler[login::$user->player->data['up_b_id']]['name'] . '</span></p>
				<p><span class="farge">Har ute</span> <span id="status_cash">' . game::format_cash(login::$user->player->data['up_cash']) . '</span></p>
				<p><span class="farge">Plassering: </span> nr. <span id="status_rankpos">' . login::$user->player->data['upr_rank_pos'] . '</span></p>
			</div>';
        }
        echo '
		</div>
	</div>
	<div id="default_left">';
        if (!login::$user->player->active) {
            echo '
		<div id="default_info_dead">
			<a href="' . ess::$s['relative_path'] . '/lock?f=player">' . (login::$user->player->data['up_deactivated_dead'] == 2 ? '
				<span>Din spiller blødde ihjel pga. lite energi.</span>' : (login::$user->player->data['up_deactivated_dead'] ? '
				<span>Din spiller har blitt drept.</span>' : '
				<span>Din spiller er deaktivert.</span>')) . '
				<span class="link">Ny spiller &raquo;</span>
			</a>
		</div>';
        }
        echo '
		<nav>' . kf_menu::build_menu() . '
		</nav>
	</div>';
        if (defined("DISABLE_RIGHT_COL")) {
            $content_right = '';
        } else {
            $content_right = ess::$b->page->generate_content_right();
            # self::$locked ..?
        }
        echo '
	<div id="default_main">';
        if ($content_right) {
            echo '
		<div id="default_right">' . $content_right . '</div>';
        }
        echo '
		<div id="default_content_wrap"' . (!$content_right ? ' class="noright"' : '') . '>' . self::get_status_bars() . '
			<section id="default_content">' . ess::$b->page->content . '</section>
		</div>
	</div>
	<div id="default_bottom_1">
		<p><a href="/">Kofradia</a> &copy; - Beskyttet av <a href="http://www.lovdata.no/all/nl-19610512-002.html" target="_blank">åndsverkloven</a> - Utviklet av <a href="http://www.henrist.net/" target="_blank">Henrik Steen</a></p>
		<p><a href="' . ess::$s['relative_path'] . '/betingelser">Betingelser for bruk</a> - Besøk <a href="irc://irc.quakenet.org/kofradia" target="_blank">#Kofradia</a> på QuakeNet<!-- <a href="' . ess::$s['relative_path'] . '/forum/topic?id=85">(Hjelp)</a>--> - <a href="' . ess::$s['relative_path'] . '/credits">Takk til</a></p>
	</div>
	<div id="default_bottom_2">';
        $profiler = \Kofradia\DB::getProfiler();
        echo '
		<p>Script: ' . round(microtime(true) - SCRIPT_START - $profiler->time, 4) . ' sek - Database: ' . round($profiler->time, 4) . ' sek (' . $profiler->num . ' spørring' . ($profiler->num == 1 ? '' : 'er') . ')<span id="js_time"></span></p>';
        $revision = self::get_revision_info();
        if ($revision) {
            echo '
		<p>Versjon <a href="https://github.com/hswno/kofradia/commit/' . $revision['commit'] . '" title="' . htmlspecialchars($revision['message']) . '">' . mb_substr($revision['commit'], 0, 8) . '</a> oppdatert ' . ess::$b->date->get($revision['date'])->format() . '. <a href="&rpath;/github">Logg</a></p>';
        } else {
            echo '
		<p>Versjonsinformasjon er utilgjengelig.</p>';
        }
        echo '
		<p>Tid og dato ved visning: <b>' . self::$date_now->format(date::FORMAT_SEC) . '</b>.</p>
	</div>' . ess::$b->page->body_end;
        // debug time
        /*$time = SCRIPT_START;
        		ess::$b->dt("end");
        		$dt = 'start';
        		foreach (ess::$b->time_debug as $row)
        		{
        			$dt .= ' -> '.round(($row[1]-$time)*1000, 2).' -> '.$row[0];
        			$time = $row[1];
        		}*/
        /*if (MAIN_SERVER)
        		{
        			$text = ess::$b->date->get()->format("Y-m-d\tH:i:s\t")."{$_SERVER['REMOTE_ADDR']}\t{$_SERVER['REQUEST_METHOD']}\t{$_SERVER['REQUEST_URI']}\t".login::$user->player->id."\t".login::$user->player->data['up_name']."\t".round(microtime(true)-SCRIPT_START-ess::$b->db->time, 4)."\t".round(ess::$b->db->time, 4)."\t".ess::$b->db->queries."\t".str_replace(" -> ", "\t", $dt)."\n"; 
        			@file_put_contents("/home/smafia/debugtime.log", $text, FILE_APPEND);
        		}*/
        /*echo '
        	<!-- '.$dt.' -->*/
        echo '
</body>
</html>';
    }
Esempio n. 13
0
 /**
  * Trekk tilbake dusør
  */
 protected function show_release()
 {
     if (!isset($_POST['hl_id'])) {
         ess::$b->page->add_message("Du må velge en dusør du har satt.", "error");
         redirect::handle("etterlyst");
     }
     $hl_id = (int) $_POST['hl_id'];
     // hent informasjon
     $result = \Kofradia\DB::get()->query("SELECT hl_up_id, hl_time, hl_amount, hl_amount_valid FROM hitlist WHERE hl_id = {$hl_id} AND hl_by_up_id = " . $this->up->id . " AND hl_amount_valid > 0");
     $hl = $result->fetch();
     if (!$hl) {
         ess::$b->page->add_message("Fant ikke oppføringen.", "error");
         redirect::handle("etterlyst");
     }
     \Kofradia\DB::get()->beginTransaction();
     // slett oppføringen
     $a = \Kofradia\DB::get()->exec("DELETE FROM hitlist WHERE hl_id = {$hl_id} AND hl_amount_valid = {$hl['hl_amount_valid']}");
     if ($a == 0) {
         ess::$b->page->add_message("Noen kom deg i forkjøpet og kjøpte ut hele eller deler av dusøren.", "error");
         \Kofradia\DB::get()->commit();
         redirect::handle("etterlyst");
     }
     // hvor mye penger skal vi få?
     $result = \Kofradia\DB::get()->query("SELECT ROUND({$hl['hl_amount_valid']}/2)");
     $amount = $result->fetchColumn(0);
     // gi penger
     \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash + {$amount} WHERE up_id = " . $this->up->id);
     \Kofradia\DB::get()->commit();
     putlog("LOG", "ETTERLYST: " . $this->up->data['up_name'] . " trakk tilbake dusør for UP_ID={$hl['hl_up_id']} på " . game::format_cash($hl['hl_amount_valid']) . '.');
     ess::$b->page->add_message('Du trakk tilbake dusøren på <user id="' . $hl['hl_up_id'] . '" /> som ble satt ' . ess::$b->date->get($hl['hl_time'])->format() . ' og som hadde igjen ' . game::format_cash($hl['hl_amount_valid']) . '. Du fikk tilbake ' . game::format_cash($amount) . '.');
     redirect::handle("etterlyst");
 }
Esempio n. 14
0
    public static function format_data($data, $type = "bb", $args = null)
    {
        global $_base;
        switch ($type) {
            case "bb":
            case "signature":
                // bb kode
                return game::bb_to_html($data);
                // bb-kode eller egendefinert tekst hvis bb-kode er tom
            // bb-kode eller egendefinert tekst hvis bb-kode er tom
            case "bb-opt":
                $bb = trim(game::bb_to_html($data));
                if ($bb == "") {
                    return $args;
                }
                return $bb;
            case "music_pre":
                return preg_replace('~\\[music\\](https?://.+?)\\[/music\\]~ieu', 'game::music_add(\'$1\')', $data);
            case "music_post":
                return game::music_replace($data);
            case "profile":
                $data = game::format_data($data, "music_pre");
                // sett opp ranken
                $rank = game::rank_info($args->data['up_points'], $args->data['upr_rank_pos'], $args->data['up_access_level']);
                // diverse bb koder
                $data = str_replace(array("[counter]", "[visits]", "[visitor]", "[rank]", "[bank]", "[cash]", "[money]", "[renter]", "[pm_ulest]", "[pengerank]"), array('<img src="&rpath;/counter?count=' . $args->data['up_profile_hits'] . '" alt="Antall visninger: ' . $args->data['up_profile_hits'] . '" />', $args->data['up_profile_hits'], game::profile_link(), $rank['orig'] ? $rank['orig'] : $rank['name'], game::format_cash($args->data['up_bank']), game::format_cash($args->data['up_cash']), game::format_cash($args->data['up_cash'] + $args->data['up_bank']), game::format_cash($args->data['up_interest_last']), game::format_number($args->user->data['u_inbox_new']), game::cash_name($args->data['up_cash'] + $args->data['up_bank'])), game::bb_to_html($data));
                // rankbar
                $type = false;
                $match_rank = preg_match("~\\[rank_(neste_tid|neste_dato|tid|dato)\\]~iu", $data);
                if (preg_match("~\\[rankbar( type=(1|2))?\\]~iu", $data, $type) || $match_rank) {
                    // høyeste rank?
                    if ($rank['need_points'] == 0) {
                        global $_game;
                        $prosent = $args->data['up_points'] / game::$ranks['items_number'][count(game::$ranks['items_number'])]['points'] * 100;
                        $rankbar_total = '
<div class="progressbar">
	<div class="progress"><p>' . game::format_num($prosent, 3) . ' %</p></div>
</div>';
                        $rankbar_total2 = '
<div class="progressbar" style="margin-top: 1em">
	<div class="progress"><p>' . game::format_num($prosent, 3) . ' %</p></div>
</div>';
                        $data = str_replace(array("[rankbar]", "[rankbar type=1]", "[rankbar type=2]", "[rank_tid]", "[rank_dato]", "[rank_neste_tid]", "[rank_neste_dato]"), array($rankbar_total . $rankbar_total2, $rankbar_total, $rankbar_total, "Oppnådd", "Oppnådd", "Oppnådd", "Oppnådd"), $data);
                    } else {
                        // i forhold til den høyeste ranken
                        global $_game;
                        // antall poeng for den høyeste ranken
                        $points_max = game::$ranks['items'];
                        end($points_max);
                        $points_max = current($points_max);
                        $points_max = $points_max['points'];
                        // hvor langt ifra er vi?
                        $percent_total = round($args->data['up_points'] / $points_max, 2) * 100;
                        #if ($percent_total > 100) $percent_total = 100;
                        if ($percent_total == 0) {
                            $percent_total = 0.01;
                        }
                        $rankbar_total = '
<div class="progressbar">
	<div class="progress" style="width: ' . floor($percent_total) . '%"><p>' . game::format_num($percent_total, 2) . ' % i forhold til høyeste rank.</p></div>
</div>';
                        // i forhold til neste rank
                        $points_rank = $args->data['up_points'] - $rank['points'];
                        $percent = round($points_rank / $rank['need_points'] * 100, 2);
                        #if ($percent  )
                        $rankbar_next = '
<div class="progressbar">
	<div class="progress" style="width: ' . floor($percent) . '%"><p>' . game::format_num($percent, 2) . ' % i forhold til neste rank</p></div>
</div>';
                        $rankbar_next2 = '
<div class="progressbar" style="margin-top: 1em">
	<div class="progress" style="width: ' . floor($percent) . '%"><p>' . game::format_num($percent, 2) . ' % i forhold til neste rank</p></div>
</div>';
                        // fiks bb kodene
                        $data = str_replace(array("[rankbar]", "[rankbar type=1]", "[rankbar type=2]"), array($rankbar_total . $rankbar_next2, $rankbar_total, $rankbar_next), $data);
                        // beregn antatt tid det tar å nå høyeste rank
                        if ($match_rank) {
                            // hent ut aktiviteten de siste X dagene
                            $expire = ess::$b->date->get();
                            $expire->modify("-21 days");
                            $expire = max($args->data['up_created_time'], $expire->format("U"));
                            // maks tid: siste 21 dager eller siden reg (om registrert innen 30 dager)
                            $result = \Kofradia\DB::get()->query("SELECT SUM(uhi_points) FROM users_hits WHERE uhi_up_id = {$args->id} AND uhi_secs_hour >= {$expire}");
                            $points = (int) $result->fetchColumn(0);
                            if ($points == 0) {
                                $data = str_replace(array("[rank_tid]", "[rank_dato]", "[rank_neste_tid]", "[rank_neste_dato]"), array("ukjent", "ukjent", "ukjent", "ukjent"), $data);
                            } else {
                                // antall sekunder poengene skal fordeles på
                                $time_elapsed = time() - $expire;
                                // beregn til neste rank og erstatt BB-kode
                                $need = $rank['points'] + $rank['need_points'] - $args->data['up_points'];
                                $time_left = $need / $points * $time_elapsed;
                                if ($time_left > 63072000) {
                                    $text_left = "over 2 år";
                                    $text_date = "om over 2 år";
                                } else {
                                    $text_left = game::timespan($time_left);
                                    $text_date = ess::$b->date->get($time_left + time())->format(date::FORMAT_NOTIME);
                                }
                                $data = str_replace(array("[rank_neste_tid]", "[rank_neste_dato]"), array($text_left, $text_date), $data);
                                // beregn til øverste rank og erstatt BB-kode
                                $need = $points_max - $args->data['up_points'];
                                $time_left = $need / $points * $time_elapsed;
                                if ($time_left > 63072000) {
                                    $text_left = "over 2 år";
                                    $text_date = "om over 2 år";
                                } else {
                                    $text_left = game::timespan($time_left);
                                    $text_date = ess::$b->date->get($time_left + time())->format(date::FORMAT_NOTIME);
                                }
                                $data = str_replace(array("[rank_tid]", "[rank_dato]"), array($text_left, $text_date), $data);
                            }
                        }
                    }
                }
                // kontaktliste?
                if (mb_strpos($data, "[kontakter]") !== false) {
                    // hent kontaktliste
                    $result = \Kofradia\DB::get()->query("SELECT uc_contact_up_id, up_name, up_access_level, up_last_online FROM users_contacts LEFT JOIN users_players ON uc_contact_up_id = up_id WHERE uc_u_id = {$args->data['up_u_id']} AND uc_type = 1 ORDER BY up_name");
                    $html = '
<table class="table l tablem">
	<thead>
		<tr>
			<th>Spiller</th>
			<th>Sist pålogget</th>
		</tr>
	</thead>
	<tbody>';
                    while ($row = $result->fetch()) {
                        $html .= '
		<tr>
			<td>' . game::profile_link($row['uc_contact_up_id'], $row['up_name'], $row['up_access_level']) . '</td>
			<td class="r">' . game::timespan($row['up_last_online'], game::TIME_ABS) . '</td>
		</tr>';
                    }
                    $html .= '
	</tbody>
</table>';
                    // sett inn som bb kode
                    $data = str_replace("[kontakter]", $html, $data);
                }
                // blokkeringliste?
                if (mb_strpos($data, "[blokkert]") !== false) {
                    // hent blokkeringliste
                    $result = \Kofradia\DB::get()->query("SELECT uc_contact_up_id, up_name, up_access_level, up_last_online FROM users_contacts LEFT JOIN users_players ON uc_contact_up_id = up_id WHERE uc_u_id = {$args->data['up_u_id']} AND uc_type = 2 ORDER BY up_name");
                    $html = '
<table class="table l tablem">
	<thead>
		<tr>
			<th>Spiller</th>
			<th>Sist pålogget</th>
		</tr>
	</thead>
	<tbody>';
                    while ($row = $result->fetch()) {
                        $html .= '
		<tr>
			<td>' . game::profile_link($row['uc_contact_up_id'], $row['up_name'], $row['up_access_level']) . '</td>
			<td class="r">' . game::timespan($row['up_last_online'], game::TIME_ABS) . '</td>
		</tr>';
                    }
                    $html .= '
	</thead>
</table>';
                    // sett inn som bb kode
                    $data = str_replace("[blokkert]", $html, $data);
                }
                return game::format_data($data, "music_post");
            default:
                // ukjent!
                throw new HSException("Ukjent type ({$type})");
        }
        return false;
    }
Esempio n. 15
0
function gevinster()
{
    global $gevinster;
    $stats = array();
    // hent total statistikk
    $result = \Kofradia\DB::get()->query("SELECT subname, count, count2 FROM stats WHERE area = 'poker' AND name = 'alt' AND stats_up_id = 0");
    while ($row = $result->fetch()) {
        $stats[$row['subname']]['total'] = $row['count'];
        $stats[$row['subname']]['total_cash'] = $row['count2'];
    }
    // hent bruker statistikk
    $result = \Kofradia\DB::get()->query("SELECT subname, count, count2 FROM stats WHERE area = 'poker' AND name = 'alt' AND stats_up_id = " . login::$user->player->id);
    while ($row = $result->fetch()) {
        $stats[$row['subname']]['count'] = $row['count'];
        $stats[$row['subname']]['cash'] = $row['count2'];
    }
    // skriv tabell
    $ret = '
<h1>Statistikk</h1>
<table class="table game" id="poker_info">
	<thead>
		<tr>
			<th>Navn</th>
			<th>Penger</th>
			<th>Stats</th>
		</tr>
	</thead>
	<tbody>';
    $i = 0;
    $totalt_cash_1 = 0;
    $totalt_cash_2 = 0;
    $totalt_stat_1 = 0;
    $totalt_stat_2 = 0;
    foreach ($gevinster as $gevinst) {
        if (isset($stats[$gevinst[0]])) {
            $totalt_stat_1 += $stats[$gevinst[0]]['count'];
            $totalt_stat_2 += $stats[$gevinst[0]]['total'];
            $stat = '<b>' . game::format_number($stats[$gevinst[0]]['count']) . '</b> (' . game::format_number($stats[$gevinst[0]]['total']) . ')';
            $cash_total = $stats[$gevinst[0]]['total_cash'];
            $cash = $stats[$gevinst[0]]['cash'];
        } else {
            $stat = '<b>0</b> (0)';
            $cash_total = 0;
            $cash = 0;
        }
        if ($gevinst[0] == 0) {
            $cash = $cash * -1;
            $cash_total = $cash_total * -1;
        }
        $totalt_cash_1 += $cash;
        $totalt_cash_2 += $cash_total;
        $cash = game::format_cash($cash) . ' (' . game::format_cash($cash_total) . ')';
        $ret .= '
		<tr' . (is_int(++$i / 2) ? ' class="color"' : '') . '>
			<td>' . htmlspecialchars(ucfirst($gevinst[1])) . '</td>
			<td align="right"><span style="color: #999">Innsats *</span> ' . game::format_number($gevinst[2], 2) . '</td>
			<td align="right" title="' . $cash . '">' . $stat . '</td>
		</tr>';
    }
    if (isset($stats[0])) {
        $stat = '<b>' . game::format_number($stats[0]['count']) . '</b> (' . game::format_number($stats[0]['total']) . ')';
        $cash_total = $stats[0]['total_cash'];
        $cash = $stats[0]['cash'];
    } else {
        $stats = '<b>0</b> (0)';
        $cash_total = 0;
        $cash = 0;
    }
    $cash = game::format_cash($cash) . ' (' . game::format_cash($cash_total) . ')';
    $stat = '<b>' . game::format_number($totalt_stat_1) . '</b> (' . game::format_number($totalt_stat_2) . ')';
    $cash = game::format_cash($totalt_cash_1) . ' (' . game::format_cash($totalt_cash_2) . ')';
    $ret .= '
		<tr class="spacer"><td colspan="3">&nbsp;</td></tr>
		<tr' . (is_int($i / 2) ? ' class="color"' : '') . '>
			<td><b>Totalt</b></td>
			<td>&nbsp;</td>
			<td align="right" title="' . $cash . '">' . $stat . '</td>
		</tr>
		<tr class="spacer"><td colspan="3">&nbsp;</td></tr>
		<tr' . (is_int(++$i / 2) ? ' class="color"' : '') . '>
			<td colspan="3"><b>Tips</b>: Hold musa over stats feltet for å se pengestats!</td>
		</tr>
	</tbody>
</table>';
    return $ret;
}
Esempio n. 16
0
	<up_id>' . $player['up_id'] . '</up_id>
	<url>' . htmlspecialchars($__server['relative_path'] . "/p/" . rawurlencode($player['up_name']) . "/" . $player['up_id']) . '</url>
	<up_name>' . htmlspecialchars($player['up_name']) . '</up_name>
	<up_name_display>' . htmlspecialchars(game::profile_link($player['up_id'], $player['up_name'], $player['up_access_level'])) . '</up_name_display>
	<status>' . htmlspecialchars($status) . '</status>
	<reg_time_abs>' . htmlspecialchars($_base->date->get($player['up_created_time'])->format(date::FORMAT_SEC)) . '</reg_time_abs>
	<reg_time_rel>' . htmlspecialchars(game::timespan($player['up_created_time'], game::TIME_ABS)) . '</reg_time_rel>
	<last_online_abs>' . htmlspecialchars($_base->date->get($player['up_last_online'])->format(date::FORMAT_SEC)) . '</last_online_abs>
	<last_online_rel>' . htmlspecialchars(game::timespan($player['up_last_online'], game::TIME_ABS)) . '</last_online_rel>
	<activated>' . htmlspecialchars($player['up_access_level'] == 0 ? 0 : 1) . '</activated>
	<profile_image>' . htmlspecialchars($profile_image) . '</profile_image>
	<rank_name>' . htmlspecialchars($rank['name'] . ($rank['orig'] ? ' (' . $rank['orig'] . ')' : '')) . '</rank_name>';
// moderator stæsj
if ($mod) {
    echo '
	<ip>' . $player['u_online_ip'] . '</ip>
	<email>' . htmlspecialchars($player['u_email']) . '</email>
	<hits>' . $player['up_hits'] . '</hits>
	<money>' . game::format_cash($player['money']) . '</money>';
}
echo '
	<contact>' . $is_contact . '</contact>
	<block>' . $is_block . '</block>
	<ff_list>';
foreach ($ff as $row) {
    echo '
		<ff id="' . $row['ff_id'] . '" name="' . htmlspecialchars($row['ff_name']) . '" pos="' . htmlspecialchars($row['posisjon']) . '" />';
}
echo '
	</ff_list>
</playerinfo>';
Esempio n. 17
0
    /**
     * Spillere tilhørende brukeren
     */
    protected static function page_up()
    {
        // hent spillerene tilhørende denne personen
        $pagei = new pagei(pagei::ACTIVE_GET, "side_up", pagei::PER_PAGE, 15);
        $result = $pagei->query("\n\t\t\tSELECT up_id, up_name, up_access_level, up_created_time, up_points, up_deactivated_time, up_hits, up_cash+up_bank money, upr_rank_pos\n\t\t\tFROM users_players\n\t\t\t\tLEFT JOIN users_players_rank ON upr_up_id = up_id\n\t\t\tWHERE up_u_id = " . page_min_side::$active_user->id . "\n\t\t\tORDER BY up_last_online DESC");
        echo '
		<div class="bg1_c">
			<h1 class="bg1">Spillere tilhørende brukeren<span class="left2"></span><span class="right2"></span></h1>
			<div class="bg1">
				<table class="table ' . ($pagei->pages == 1 ? 'tablem' : 'tablemt') . '" style="width: 100%">
					<thead>
						<tr>
							<th>Spiller</th>
							<th>Opprettet</th>
							<th>Rank</th>
							<th>Penger</th>
							<th>Visninger</th>
							<th>Status</th>
						</tr>
					</thead>
					<tbody>';
        while ($row = $result->fetch()) {
            $rank = game::rank_info($row['up_points'], $row['upr_rank_pos'], $row['up_access_level']);
            echo '
						<tr>
							<td>' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level'], true, 'min_side?up_id=' . $row['up_id']) . '</td>
							<td>' . ess::$b->date->get($row['up_created_time'])->format() . '</td>
							<td>' . $rank['name'] . ($rank['orig'] ? '<br />(' . $rank['orig'] . ')' : '') . '</td>
							<td class="r">' . game::format_cash($row['money']) . '</td>
							<td class="r">' . game::format_number($row['up_hits']) . '</td>
							<td>' . ($row['up_access_level'] == 0 ? 'Deaktivert:<br />' . ess::$b->date->get($row['up_deactivated_time'])->format() : 'Status: I live') . '</td>
						</tr>';
        }
        echo '
					</tbody>
				</table>' . ($pagei->pages > 1 ? '
				<p class="c">' . $pagei->pagenumbers() . '</p>' : '') . '
			</div>
		</div>';
    }
Esempio n. 18
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();
    }
Esempio n. 19
0
 /**
  * Hent ut en tilfeldig melding for en kriminalitet
  */
 public function get_random_message($id, $success, $cash = null, $points = null)
 {
     $id = (int) $id;
     $rank = $success ? game::format_rank($points, $this->up->rank) : null;
     // hent en tilfeldig melding
     $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT text\n\t\t\tFROM kriminalitet_text\n\t\t\tWHERE krimid = {$id} AND outcome = " . ($success ? 1 : 2) . "\n\t\t\tORDER BY RAND()\n\t\t\tLIMIT 1");
     // har melding?
     $row = $result->fetch();
     if ($row) {
         if ($success) {
             return str_replace(array("%cash", "%points", "%rank"), array(game::format_cash($cash), $points, $rank), $row['text']);
         }
         return $row['text'];
     } else {
         if ($success) {
             return "Vellykket! Du skaffet deg {$points} poeng og " . game::format_cash($cash) . ".";
         }
         return "Mislykket! Du klarte det ikke...";
     }
 }
Esempio n. 20
0
    /**
     * Lag tabellrad for et medlem
     * @param ff_member $member
     * @param int $i
     * @param string $class ekstra class på tr
     * @return string <tr>
     */
    protected function show_member_row(ff_member $member, $i, $class = null)
    {
        return '
		<tr class="box_handle' . ($i % 2 == 0 ? ' color' : '') . ($class ? ' ' . $class : '') . '">
			<td><input type="checkbox" name="up_id[]" value="' . $member->id . '"' . (!$this->ff->mod && ($member->id == login::$user->player->id || $member->data['ffm_priority'] == 1) ? ' disabled="disabled"' : '') . ' /> ' . game::profile_link($member->id, $member->data['up_name'], $member->data['up_access_level']) . '<br /><b>' . ucfirst($member->get_priority_name()) . '</b></td>
			<td class="r">' . ess::$b->date->get($member->data['ffm_date_join'])->format() . '</td>
			<td class="r">' . ess::$b->date->get($member->data['up_last_online'])->format() . '<br />' . game::timespan($member->data['up_last_online'], game::TIME_ABS) . '</td>
			<td class="r">' . game::format_cash($member->data['ffm_donate']) . '<br />' . game::format_cash($member->data['ffm_earnings_ff']) . '</td>
			<td class="r">' . game::format_cash($member->data['ffm_earnings']) . '</td>
		</tr>';
    }
Esempio n. 21
0
    /**
     * Vise publiserte utgivelser
     */
    protected function published()
    {
        ess::$b->page->add_title("Utgivelser");
        // hent publiserte utvivelser
        $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 10);
        $ffnp_q = login::$logged_in ? "ffnp_ffn_id = ffn_id AND ffnp_up_id = " . login::$user->player->id : "FALSE";
        $result = $pagei->query("SELECT ffn_id, ffn_published_time, ffn_cost, ffn_title, ffn_sold, ffn_description, ffnp_time FROM ff_newspapers LEFT JOIN ff_newspapers_payments ON {$ffnp_q} WHERE ffn_ff_id = {$this->ff->id} AND ffn_published != 0 ORDER BY ffn_published_time DESC");
        echo '
<p class="c">Utgivelser</p>';
        // ingen publiserte utgivelser?
        if ($result->rowCount() == 0) {
            echo '
<p class="c">Ingen utgivelser er publisert.</p>';
        } else {
            echo '
<p class="c">' . $pagei->total . ' utgivelse' . ($pagei->total == 1 ? '' : 'r') . ' er publisert:</p>';
            #$i = $pagei->total - ($pagei->per_page*($pagei->active-1));
            while ($row = $result->fetch()) {
                echo '
<div class="section center w200">
	<h2><a href="avis?ff_id=' . $this->ff->id . '&amp;ffn=' . $row['ffn_id'] . '">' . htmlspecialchars($row['ffn_title']) . '</a></h2>
	<dl class="dd_right">
		<dt>Publisert</dt>
		<dd>' . ess::$b->date->get($row['ffn_published_time'])->format() . '</dd>
		<dt>Solgte utgivelser</dt>
		<dd>' . game::format_number($row['ffn_sold']) . '</dd>
		<dt>Pris</dt>
		<dd>' . game::format_cash($row['ffn_cost']) . '</dd>
		<dt>Kjøpt?</dt>
		<dd>' . ($row['ffnp_time'] ? '<a href="avis?ff_id=' . $this->ff->id . '&amp;ffn=' . $row['ffn_id'] . '">Ja</a> (' . ess::$b->date->get($row['ffnp_time'])->format() . ')' : 'Nei [<a href="avis?ff_id=' . $this->ff->id . '&amp;ffn=' . $row['ffn_id'] . '">Kjøp</a>]') . (access::is_nostat() ? ' (nostat)' : '') . '</dd>
	</dl>
	<div class="p">' . $this->ff->format_description($row['ffn_description']) . '</div>
</div>';
                #$i--;
            }
            // flere sider?
            if ($pagei->pages > 1) {
                echo '
<p class="c">Navigasjon: ' . $pagei->pagenumbers() . '</p>';
            }
        }
    }
Esempio n. 22
0
        echo '
		<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
			<td rowspan="' . $count . '" valign="top"><a href="finn?ip=' . urlencode($row[0]['u_online_ip']) . '">' . htmlspecialchars($row[0]['u_online_ip']) . '</a><br />(' . $count . ' ' . fword("bruker", "brukere", $count) . ')</td>';
        $e = 0;
        foreach ($row as $player) {
            // ny rad?
            if (++$e > 1) {
                echo '
		</tr>
		<tr' . ($i % 2 == 0 ? ' class="color"' : '') . '>';
            }
            $birth = explode("-", $player['u_birth']);
            echo '
			<td>' . game::profile_link($player['up_id'], $player['up_name'], $player['up_access_level']) . '</td>
			<td><a href="finn?email=' . urlencode($player['u_email']) . '">' . htmlspecialchars($player['u_email']) . '</a></td>
			<td>' . $_base->date->get($player['up_created_time'])->format(date::FORMAT_SEC) . '</td>
			<td>' . $_base->date->get($player['up_last_online'])->format(date::FORMAT_SEC) . '</td>
			<td class="r">' . game::timespan($player['up_last_online'], game::TIME_ABS | game::TIME_SHORT | game::TIME_NOBOLD) . '</td>
			<td class="r">' . game::format_number($player['up_hits']) . '</td>
			<td class="r">' . game::format_number($player['up_points']) . '</td>
			<td class="r">' . game::format_cash($player['money']) . '</td>
			<td class="r">' . (empty($player['u_birth']) || $player['u_birth'] == "0000-00-00" ? 'Ikke registrert' : intval($birth[2]) . ". " . $_lang['months'][intval($birth[1])] . " " . $birth[0]) . '</td>';
        }
        echo '
		</tr>';
    }
    echo '
	</tbody>
</table>';
}
$_base->page->load();
Esempio n. 23
0
 /**
  * Generer beskrivelse for oppdraget
  * 
  * @param oppdrag id int $o_id
  * @return string
  */
 public function get_description($o_id)
 {
     // finn oppdraget
     if (!isset($this->oppdrag[$o_id])) {
         if ($this->oppdrag_loaded) {
             throw new HSException("Brukeren har ikke noe oppdrag med ID {$o_id}.");
         }
         $this->user_load_all();
         return $this->get_description($o_id);
     }
     $o =& $this->oppdrag[$o_id];
     $active = $o['uo_locked'] == 0;
     $params = $active ? $this->params[$o_id]['o_params'] : $this->params[$o_id]['o_unlock_params'];
     $prefix = (string) $active ? game::bb_to_html($o['o_description']) : game::bb_to_html($o['o_description_unlock']);
     // sjekk for tidsgrense
     if ($active) {
         $time_limit = $params->get("time_limit", oppdrag::DEFAULT_TIME_LIMIT_ACTIVE);
     } else {
         $time_limit = $params->get("time_limit", false);
     }
     // sett opp beskrivelse for premie
     $prize = new container($params->get("prize"));
     if (count($prize->items) == 0) {
         if ($active) {
             $suffix = '<p><b>Premie:</b> Ikke definert.</p>';
         } else {
             $suffix = '';
         }
     } else {
         $prizes = array();
         foreach ($prize->items as $item) {
             switch ($item[0]) {
                 case "cash":
                     $prizes[] = game::format_cash($item[1]);
                     break;
                 case "rank_points":
                     $points = (int) $item[1];
                     $prizes[] = game::format_num($points) . " poeng";
                     break;
                 case "bullets":
                     $prizes[] = fwords("%d kule", "%d kuler", (int) $item[1]) . ' (må ha våpen og ledig kapasitet)';
                     break;
             }
         }
         if (count($prizes) == 0) {
             $suffix = '<p><b>Premie:</b> Premie er feil satt opp.</p>';
         } else {
             $suffix = '<p><b>Premie:</b></p><ul><li>' . implode("</li><li>", $prizes) . '</li></ul>';
         }
     }
     // hva slags trigger
     switch ($params->get("name")) {
         case "rank_points":
             // oppnå poeng på gitt tid
             $target = $this->up->data['up_points'] + $params->get("points");
             return $prefix . '<p>Oppnå totalt ' . game::format_num($target) . ' poeng i løpet av ' . game::timespan($time_limit, game::TIME_FULL) . '. <span class="dark">Merk at <i>lotto</i> og <i>angrep</i> ikke teller med. Hvis du mottar poeng fra disse funksjonene vil poenggrensen øke med så mange poeng du mottar.</span></p>' . $suffix;
             break;
         case "kriminalitet_different":
             // hvor mange forskjellige må vi oppnå?
             $different = $params->get("count", 5);
             return $prefix . '<p>Utfør ' . $different . ' forskjellige kriminaliteter etter hverandre som blir vellykket' . ($active ? ' i løpet av ' . game::timespan($time_limit, game::TIME_FULL) : '') . '.</p>' . $suffix;
             break;
         case "poker_unique_people":
             // hvor mange man må vinne mot
             $user_count = $params->get("user_count", 10);
             return $prefix . '<p>Vinn ' . $user_count . ' ganger på rad i poker mot ' . $user_count . ' forskjellige personer' . ($time_limit ? ' innen ' . game::timespan($time_limit, game::TIME_FULL) : '') . '. Hvis du spiller flere ganger mot samme person, er det første gang som teller. (Taper du første gang, må du vinne ' . $user_count . ' nye ganger.)</p>' . $suffix;
             break;
         case "wanted_level":
             return $prefix . '<p>Oppnå wanted nivå på ' . game::format_num($params->get("wanted_level", 500) / 10, 1) . ' %' . ($time_limit ? ' innen ' . game::timespan($time_limit, game::TIME_FULL) : '') . '.</p>' . $suffix;
         case "fengsel_breakout":
             return $prefix . '<p>Bryt ut ' . $params->get("user_count", 3) . ' spillere fra fengsel på rad uten å komme i fengsel' . ($time_limit ? ' innen ' . game::timespan($time_limit, game::TIME_FULL) : '') . '.</p>' . $suffix;
     }
     return !empty($prefix) ? $prefix . $suffix : '<p>Fant ingen relevant beskrivelse for dette oppdraget på dette stadiet. Ingen triggere som må utføres?</p>' . $suffix;
 }
Esempio n. 24
0
    /**
     * Vis banken
     */
    protected function show()
    {
        ess::$b->page->add_js('
var user_bank = ' . js_encode(game::format_cash($this->up->data['up_bank'])) . ';
var user_cash = ' . js_encode(game::format_cash($this->up->data['up_cash'])) . ';');
        ess::$b->page->add_js_domready('
	$$(".bank_amount_set").each(function(elm)
	{
		var amount = elm.get("rel").substring(0, 4) == "bank" ? user_bank : user_cash;
		var e_id = elm.get("rel").substring(5);
		elm
			.appendText(" (")
			.grab(new Element("a", {"text":"alt"}).addEvent("click", function()
			{
				$(e_id).set("value", amount);
			}))
			.appendText(")");
	});');
        echo '
<div class="bg1_c small" style="width: 420px">
	<h1 class="bg1">
		Banken
		<span class="left"></span><span class="right"></span>
	</h1>
	<p class="h_left">
		<a href="' . ess::$s['rpath'] . '/node/31">Hjelp</a>
	</p>
	<p class="h_right">' . (!isset(login::$extended_access['authed']) ? '
		<a href="banken?logout">Logg ut av banken</a>' : '') . '
		<a href="banken?authc">Endre pass</a>
	</p>
	<div class="bg1" style="padding: 0 15px">
		<!-- bankkonto informasjon -->
		<div style="width: 50%; margin-left: -5px; float: left">
			<h2 class="bg1">Bankkonto informasjon<span class="left2"></span><span class="right2"></span></h2>
			<div class="bg1">
				<dl class="dd_right">
					<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>
					<dt>Balanse</dt>
					<dd>' . game::format_cash($this->up->data['up_bank']) . '</dd>
				</dl>
				<p class="c">
					<a href="javascript:void(0)" onclick="this.parentNode.style.display=\'none\'; document.getElementById(\'bank_stats\').style.display=\'block\'">Vis statistikk</a>
				</p>
				<div id="bank_stats" style="display: none">
					<dl class="dd_right">
						<dt>Sendt</dt>
						<dd>' . game::format_number($this->up->data['up_bank_num_sent']) . ' stk</dd>
						<dd>' . game::format_cash($this->up->data['up_bank_sent']) . '</dd>
					</dl>
					<dl class="dd_right">
						<dt>Mottatt</dt>
						<dd>' . game::format_number($this->up->data['up_bank_num_received']) . ' stk</dd>
						<dd>' . game::format_cash($this->up->data['up_bank_received']) . '</dd>
					</dl>
					<dl class="dd_right">
						<dt>Overskudd</dt>
						<dd>' . game::format_cash($this->up->data['up_bank_profit']) . '</dd>
					</dl>
					<dl class="dd_right">
						<dt><abbr title="Overføringstap">Overf.tap</abbr></dt>
						<dd>' . game::format_cash($this->up->data['up_bank_charge']) . '</dd>
					</dl>
					<dl class="dd_right">
						<dt>Renter</dt>
						<dd>' . game::format_number($this->up->data['up_interest_num']) . ' stk</dd>
						<dd>' . game::format_cash($this->up->data['up_interest_total']) . '</dd>
					</dl>
				</div>
				<form action="" method="post">
					<p class="c">' . show_sbutton("Bytt bank", 'name="switch"') . '</p>
				</form>
			</div>
		</div>
		
		<!-- send penger -->
		<div style="width: 50%; margin-right: -5px; float: right">
			<h2 class="bg1">Send penger<span class="left2"></span><span class="right2"></span></h2>
			<div class="bg1">
				<form action="" method="post">
					<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
					<input type="hidden" name="a" value="send" />
					<dl class="dd_right dl_2x">
						<dt>Mottaker</dt>
						<dd><input type="text" name="mottaker" value="' . htmlspecialchars(postval("mottaker")) . '" class="styled w100" /></dd>
		
						<dt>Kontakt?</dt>
						<dd>
							<select onchange="if(this.value==\'\')var name=prompt(\'Brukernavn?\');else var name=this.value;if(name)document.getElementsByName(\'mottaker\')[0].value=name;this.selectedIndex=0" style="width: 110px; overflow: hidden">
								<option>Velg kontakt</option>';
        foreach (login::$info['contacts'][1] as $row) {
            echo '
								<option value="' . htmlspecialchars($row['up_name']) . '">' . htmlspecialchars($row['up_name']) . '</option>';
        }
        echo '
								<option value="">Egendefinert..</option>
							</select>
						</dd>
		
						<dt class="bank_amount_set" rel="bank,transf_amount">Beløp</dt>
						<dd><input type="text" id="transf_amount" name="amount" class="styled w100" value="' . game::format_cash(postval("amount", 0)) . '" /></dd>
		
						<dt>Melding?</dt>
						<dd><input type="text" name="note" value="' . htmlspecialchars(postval("note")) . '" class="styled w100" maxlength="100" /></dd>';
        // hoppe over overføringsgebyret?
        if (access::is_nostat()) {
            echo '
						<dt>Uten gebyr?</dt>
						<dd><input type="checkbox" name="skip_bog"' . (isset($_POST['skip_bog']) ? ' checked="checked"' : '') . ' /></dd>';
        }
        echo '
					</dl>
					<p class="c">' . show_sbutton("Fortsett") . '</p>
				</form>
			</div>
		</div>
		<div class="clear"></div>
		
		<!-- sett inn penger -->
		<div style="width: 50%; margin-left: -5px; float: left">
			<h2 class="bg1">Sett inn penger<span class="left2"></span><span class="right2"></span></h2>
			<div class="bg1">
				<form action="" method="post">
					<dl class="dd_right">
						<dt class="bank_amount_set" rel="cash,bank_sett_inn">Beløp</dt>
						<dd><input type="text" name="sett_inn" id="bank_sett_inn" class="styled w100" value="0" /></dd>
					</dl>
					<p class="c">' . show_sbutton("Sett inn") . '</p>
				</form>
			</div>
		</div>
		
		<!-- ta ut penger -->
		<div style="width: 50%; margin-right: -5px; float: right">
			<h2 class="bg1">Ta ut penger<span class="left2"></span><span class="right2"></span></h2>
			<div class="bg1">
				<form action="" method="post">
					<dl class="dd_right">
						<dt class="bank_amount_set" rel="bank,bank_ta_ut">Beløp</dt>
						<dd><input type="text" name="ta_ut" id="bank_ta_ut" class="styled w100" value="0" /></dd>
					</dl>
					<p class="c">' . show_sbutton("Ta ut") . '</p>
				</form>
			</div>
		</div>
		<div class="clear"></div>
	</div>
</div>

<div class="bg1_c large" style="margin-top: 40px">
	<h1 class="bg1">Oversikt<span class="left"></span><span class="right"></span></h1>
	<div class="bg1" style="padding: 0 15px">
		<!-- sendte penger -->
		<div style="width: 50%; margin-left: -5px; float: left">
			<h2 class="bg1">Sendte penger<span class="left2"></span><span class="right2"></span></h2>
			<div class="bg1">';
        // sideinformasjon - hent sendte overføringer
        $pagei = new pagei(pagei::ACTIVE_GET, "side_sendte", pagei::PER_PAGE, 8, pagei::TOTAL, $this->up->data['up_bank_num_sent']);
        $result = \Kofradia\DB::get()->query("SELECT bl_receiver_up_id, amount, time FROM bank_log WHERE bl_sender_up_id = " . $this->up->id . " ORDER BY time DESC LIMIT {$pagei->start}, {$pagei->per_page}");
        if ($result->rowCount() == 0) {
            echo '
				<p>
					Ingen sendte overføringer.
				</p>';
        } else {
            echo '
				<table class="table tablemt" width="100%">
					<thead>
						<tr>
							<th>Mottaker</th>
							<th>Beløp</th>
							<th>Tidspunkt</th>
						</tr>
					</thead>
					<tbody>';
            $i = 0;
            while ($row = $result->fetch()) {
                $date = ess::$b->date->get($row['time']);
                echo '
						<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
							<td><user id="' . $row['bl_receiver_up_id'] . '" /></td>
							<td class="r">' . game::format_cash($row['amount']) . '</td>
							<td class="c" style="font-size: 10px">' . $date->format(date::FORMAT_NOTIME) . '<br />' . $date->format("H:i:s") . '</td>
						</tr>';
            }
            echo '
					</tbody>
				</table>
				<p class="c">' . $pagei->pagenumbers(game::address("banken", $_GET, array("side_sendte")) . "#sendte", game::address("banken", $_GET, array("side_sendte"), array("side_sendte" => "_pageid_")) . "#sendte") . '</p>';
        }
        echo '
			</div>
		</div>
		
		<!-- mottatte penger -->
		<div style="width: 50%; margin-right: -5px; float: right">
			<h2 class="bg1">Mottatte penger<span class="left2"></span><span class="right2"></span></h2>
			<div class="bg1">';
        // sideinformasjon - hent mottatte overføringer
        $pagei = new pagei(pagei::ACTIVE_GET, "side_mottatte", pagei::PER_PAGE, 8, pagei::TOTAL, $this->up->data['up_bank_num_received']);
        $result = \Kofradia\DB::get()->query("SELECT bl_sender_up_id, amount, time FROM bank_log WHERE bl_receiver_up_id = " . $this->up->id . " ORDER BY time DESC LIMIT {$pagei->start}, {$pagei->per_page}");
        if ($result->rowCount() == 0) {
            echo '
				<p>
					Ingen mottatte overføringer.
				</p>';
        } else {
            echo '
				<table class="table tablemt" width="100%">
					<thead>
						<tr>
							<th>Sender</th>
							<th>Beløp</th>
							<th>Tidspunkt</th>
						</tr>
					</thead>
					<tbody>';
            $i = 0;
            while ($row = $result->fetch()) {
                $date = ess::$b->date->get($row['time']);
                echo '
						<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
							<td><user id="' . $row['bl_sender_up_id'] . '" /></td>
							<td class="r">' . game::format_cash($row['amount']) . '</td>
							<td class="c" style="font-size: 10px">' . $date->format(date::FORMAT_NOTIME) . '<br />' . $date->format("H:i:s") . '</td>
						</tr>';
            }
            echo '
					</tbody>
				</table>
				<p class="c">' . $pagei->pagenumbers(game::address("banken", $_GET, array("side_mottatte")) . "#mottatte", game::address("banken", $_GET, array("side_mottatte"), array("side_mottatte" => "_pageid_")) . "#mottatte") . '</p>';
        }
        echo '
			</div>
		</div>
		<div class="clear"></div>
	</div>
</div>';
    }
Esempio n. 25
0
                    $td[] = '<td><a href="finn?email=' . urlencode($row['u_email']) . '">' . htmlspecialchars($row['u_email']) . '</a></td>';
                }
                if (isset($show['onlinea'])) {
                    $td[] = '<td>' . $_base->date->get($row['up_last_online'])->format(date::FORMAT_SEC) . '</td>';
                }
                if (isset($show['onliner'])) {
                    $td[] = '<td class="r">' . game::timespan($row['up_last_online'], game::TIME_ABS | game::TIME_SHORT | game::TIME_NOBOLD) . '</td>';
                }
                if (isset($show['hits'])) {
                    $td[] = '<td class="r">' . game::format_number($row['up_hits']) . '</td>';
                }
                if (isset($show['points'])) {
                    $td[] = '<td class="r">' . game::format_number($row['up_points']) . '</td>';
                }
                if (isset($show['cash'])) {
                    $td[] = '<td class="r">' . game::format_cash($row['money']) . '</td>';
                }
                if (isset($show['birth'])) {
                    $birth = explode("-", $row['u_birth']);
                    $td[] = '<td class="r">' . (empty($row['u_birth']) || $row['u_birth'] == "0000-00-00" ? 'Ikke registrert' : intval($birth[2]) . ". " . $_lang['months'][intval($birth[1])] . " " . $birth[0]) . '</td>';
                }
                if (isset($show['banko'])) {
                    $td[] = '<td><input type="radio" name="u1" value="' . $row['up_id'] . '" /></td>';
                    $td[] = '<td><input type="radio" name="u2" value="' . $row['up_id'] . '" /></td>';
                }
                echo '
			<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
				' . implode("\n\t\t\t\t", $td) . '
			</tr>';
            }
            echo '
Esempio n. 26
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>';
    }
Esempio n. 27
0
    while ($row = $result->fetch()) {
        $end = ceil(($row['time'] - 900) / 1800) * 1800 + 900;
        if (!isset($rounds[$end])) {
            $rounds[$end] = array("time" => $end, "total_lodd" => $row['total_lodd'], "total_users" => $row['total_users'], "users" => array());
        }
        $rounds[$end]['users'][$row['type']] = array($row['lv_up_id'], $row['won']);
    }
    krsort($rounds);
    foreach ($rounds as $round) {
        echo '
		<div class="section">
			<h2>' . $_base->date->get($round['time'])->format() . '</h2>
			<p class="h_right">' . game::format_number($round['total_lodd']) . ' lodd, ' . game::format_number($round['total_users']) . ' spiller' . ($round['total_users'] == 1 ? '' : 'e') . '</p>
			<dl class="dd_right">';
        foreach ($round['users'] as $num => $row) {
            echo '
				<dt>' . $num . ' - <user id="' . $row[0] . '" /></dt>
				<dd>' . game::format_cash($row[1]) . '</dd>';
        }
        echo '
			</dl>
		</div>';
    }
    // vis side
    echo '
		<p class="c">' . $pagei->pagenumbers() . '</p>';
}
echo '
	</div>
</div>';
$_base->page->load();
Esempio n. 28
0
    protected function show($as_who = null)
    {
        $complete = $this->data['poker_state'] == self::STATE_COMPLETE;
        if ($complete) {
            $winner = $this->get_winner();
        }
        $is_starter = $as_who == self::SHOW_STARTER;
        $has_challenger = $this->data['poker_state'] >= self::STATE_CHALLENGE;
        $new = $this->data['poker_state'] == self::STATE_BEGIN;
        $challenge = !$is_starter && $this->data['poker_state'] == self::STATE_CHALLENGE;
        echo '
<div class="bg1_c small">
	<h1 class="bg1">' . ($is_starter ? $new ? 'Nytt pokerspill' : 'Ditt pokerspill' : 'Din utfordring') . '<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">';
        if ($new) {
            echo '
		<p>Du har nå startet et nytt pokerspill og fortsetter ved å velge de kortene du vil <u>beholde</u>. Når du har trykket fortsett kommer du opp på listen for utfordrere og andre kan spille mot deg.</p>
		<form action="" method="post">
		<input type="hidden" name="state1" value="' . $this->id . '" />';
        } elseif ($challenge) {
            $time_left = $this->data['poker_time_challenge'] + self::MAX_CHALLENGE_TIME - time();
            echo '
		<p>Du må fullføre din utfordring innen <b>' . game::counter($time_left, true) . '</b>. Dersom du ikke fullfører vil spillet automatisk velge kort for deg.</p>
		<form action="" method="post">
		<input type="hidden" name="state3" value="' . $this->id . '" />';
        }
        echo '
		<dl class="dd_right center" style="width: 60%">
			<dt>Tid siden start</dt>
			<dd>' . game::timespan($this->data['poker_time_start'], game::TIME_ABS) . '</dd>' . ($has_challenger ? '
			<dt>Tid siden utfordring</dt>
			<dd>' . game::timespan($this->data['poker_time_challenge'], game::TIME_ABS) . '</dd>' : '') . '
			<dt>Innsats</dt>
			<dd>' . game::format_cash($this->data['poker_cash']) . '</dd>' . ($has_challenger ? '
			<dt>Utfordrer</dt>
			<dd><user id="' . $this->data['poker_' . ($is_starter ? 'challenger' : 'starter') . '_up_id'] . '" /></dd>' : '
			<dt>Utfordrer</dt>
			<dd>Ingen enda</dd>') . '
		</dl>';
        if ($complete || $has_challenger && access::has("admin")) {
            echo '
		<div class="poker_cards_section">
			<p><b>Motstanderens kort:</b> ' . ($is_starter ? $this->text2 : $this->text1) . '</p>
			<p>';
            if ($is_starter) {
                $this->list_cards($this->poker2, $this->solve2);
            } else {
                $this->list_cards($this->poker1, $this->solve1);
            }
            echo '
			</p>
		</div>';
        }
        echo '
		<div class="poker_cards_section">
			<p><b>Dine kort:</b> ' . ($is_starter ? $this->text1 : $this->text2) . '</p>' . ($challenge ? '
			<p>Marker de kortene du ønsker å <u>beholde</u>.</p>' : '') . '
			<p>';
        if ($new || $challenge) {
            ess::$b->page->add_js('sm_scripts.poker_parse();');
            if ($new) {
                $this->list_cards_selectable($this->poker1, $this->solve1);
            } else {
                $this->list_cards_selectable($this->poker2, $this->solve2);
            }
        } elseif ($is_starter) {
            $this->list_cards($this->poker1, $this->solve1);
        } else {
            $this->list_cards($this->poker2, $this->solve2);
        }
        echo '
			</p>
		</div>';
        if ($complete) {
            if ($winner[0] == 1 && !$is_starter || $winner[0] == 2 && $is_starter) {
                if ($winner[1]) {
                    echo '
		<p class="poker_res_lost">Dere fikk samme kombinasjon, men motstanderen din hadde høyere highcard. Du tapte runden...</p>';
                } else {
                    echo '
		<p class="poker_res_lost">Motstanderen fikk bedre kombinasjon enn deg. Du tapte runden...</p>';
                }
            } elseif ($winner[0] != 0) {
                if ($winner[1]) {
                    echo '
		<p class="poker_res_won">Dere fikk samme kombinasjon, men du hadde høyere highcard og vant ' . game::format_cash($this->data['poker_prize']) . '!</p>';
                } else {
                    echo '
		<p class="poker_res_won">Du fikk bedre kombinasjon enn motstanderen og vant ' . game::format_cash($this->data['poker_prize']) . '!</p>';
                }
            } else {
                echo '
		<p class="poker_res_eq">Runden ble uavgjort.</p>';
            }
        } elseif ($new) {
            echo (access::has("admin") ? '
			<p class="c"><input type="checkbox" name="renew" id="renew"' . (isset($_POST['renew']) ? ' checked="checked"' : '') . '><label for="renew"> Ikke avslutt runden</label></p>' : '') . '
			<p class="c">' . show_sbutton("Velg kort og åpne runden") . '</p>
			</form>';
        } elseif ($challenge) {
            echo (access::has("admin") ? '
			<p class="c"><input type="checkbox" name="renew" id="renew"' . (isset($_POST['renew']) ? ' checked="checked"' : '') . '><label for="renew"> Ikke avslutt runden</label></p>' : '') . '
			<p class="c">' . show_sbutton("Velg kort og avslutt") . '</p>
			</form>';
        } elseif ($this->can_pullback) {
            echo '
			<form action="" method="post">
				<input type="hidden" name="pullback" value="' . $this->id . '" />
				<p class="c">Pokerrunden har ligget ute i mer enn ' . game::timespan(self::PULLBACK_TIME, game::TIME_FULL) . ' og du kan trekke den tilbake for å få igjen pengene og evt. legge deg ut på nytt.</p>
				<p class="c">' . show_sbutton("Trekk tilbake pokerrunden") . '</p>
			</form>';
        } elseif ($this->data['poker_state'] == self::STATE_FREE) {
            echo '
			<p class="c">Hvis ingen utfordrer deg i løpet av ' . game::timespan(self::PULLBACK_TIME, game::TIME_FULL) . ' vil du kunne trekke tilbake runden.</p>';
        } elseif ($is_starter && $this->data['poker_state'] == self::STATE_CHALLENGE) {
            echo '
			<p class="c">Venter på at <user id="' . $this->data['poker_challenger_up_id'] . '" /> skal velge kort...</p>';
        }
        echo '
	</div>
</div>';
    }
Esempio n. 29
0
 /**
  * Try to attack a specific player
  *
  * @param array Data about the player
  * @param int Cash to get
  * @return bool|null True on success
  */
 protected function handleSuccessPlayer($player, $cash)
 {
     $rank = \Kofradia\Game\Rank\Points::getRank($player['up_points']);
     $affect = $this->ut->getAffectedTable($rank);
     // can not have too little energy
     if ($player['up_energy'] < $affect['energy'] * 2) {
         return;
     }
     // now take money
     $a = \Kofradia\DB::get()->prepare("\n\t\t\tUPDATE users_players\n\t\t\tSET up_bank = IF(up_cash < ?, up_bank - ?, up_bank),\n\t\t\t\tup_cash = IF(up_cash >= ?, up_cash - ?, up_cash)\n\t\t\tWHERE up_id = ? AND (up_cash >= ? OR up_bank >= ?)");
     if (!$a->execute(array($cash, $cash, $cash, $cash, $player['up_id'], $cash, $cash))) {
         // did not succeed
         return;
     }
     $this->result->up = \player::get($player['up_id']);
     $this->result->cashLost = $cash;
     $this->result->fromBank = $this->result->up->data['up_cash'] < $cash;
     // TODO: this cannot be checked this way?
     // notify victim
     $this->result->up->add_log("utpressing", $this->ut->up->id, $cash);
     // log
     putlog("SPAMLOG", "%c11%bUTPRESSING:%b%c %u{$this->ut->up->data['up_name']}%u presset %u{$this->result->up->data['up_name']}%u for %u" . \game::format_cash($cash) . "%u" . ($this->result->fromBank ? ' (fra bankkonto)' : ''));
     \Kofradia\DB::get()->prepare("\n\t\t\tINSERT INTO utpressinger\n\t\t\tSET\n\t\t\t\tut_action_up_id = ?,\n\t\t\t\tut_affected_up_id = ?,\n\t\t\t\tut_b_id = ?,\n\t\t\t\tut_time = ?")->execute(array($this->ut->up->id, $this->result->up->id, $this->ut->up->data['up_b_id'], time()));
     // the victim always looses energy
     // but only health if the money comes from the hand
     // (don't really know why we made it this way)
     $this->result->up->energy_use($affect['energy']);
     if (!$this->result->fromBank) {
         $this->result->attack = $this->result->up->health_decrease($affect['health'], $this->ut->up, \player::ATTACK_TYPE_UTPRESSING);
     }
     return true;
 }
Esempio n. 30
0
    /**
     * Vis auksjonen
     */
    protected function show()
    {
        // hent budet som leder, evt. vant
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT ab_up_id, ab_bid, ab_time\n\t\t\tFROM auksjoner_bud\n\t\t\tWHERE ab_a_id = {$this->auksjon->id} AND ab_active != 0\n\t\t\tORDER BY ab_time DESC\n\t\t\tLIMIT 1");
        $bud_lead = $result->fetch();
        // hent alle budene
        $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 30);
        $result = $pagei->query("\n\t\t\tSELECT ab_up_id, ab_bid, ab_time, ab_active\n\t\t\tFROM auksjoner_bud\n\t\t\tWHERE ab_a_id = {$this->auksjon->id}\n\t\t\tORDER BY ab_time DESC");
        $bud = array();
        while ($row = $result->fetch()) {
            $bud[] = $row;
        }
        // sjekk om vi har bud
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT ab_bid, ab_time\n\t\t\tFROM auksjoner_bud\n\t\t\tWHERE ab_a_id = {$this->auksjon->id} AND ab_up_id = {$this->up->id} AND ab_active != 0");
        $bud_own = $result->fetch();
        $bud_own_locked = $this->auksjon->data['a_type'] == auksjon::TYPE_KULER || time() > $bud_own['ab_time'] + auksjon::MAX_TIME_REMOVE;
        $type = auksjon_type::get($this->auksjon->data['a_type']);
        // beregn minstepris
        $minstepris = $bud_lead ? bcadd($bud_lead['ab_bid'], $this->auksjon->data['a_bid_jump']) : $this->auksjon->data['a_bid_start'];
        // sett opp tittel/beskrivelse
        $title = htmlspecialchars($this->auksjon->data['a_title']);
        // firma/familie?
        if ($this->auksjon->data['a_type'] == auksjon::TYPE_FIRMA) {
            $ff_id = $this->auksjon->params->get("ff_id");
            if ($ff_id) {
                $title = '<a href="' . ess::$s['relative_path'] . '/ff/?ff_id=' . $ff_id . '">' . $title . '</a>';
            }
        }
        echo '
<div class="col2_w" style="margin: 40px"> 
	<div class="col_w left" style="width: 45%">
		<div class="col" style="margin-right: 20px">
			<div class="bg1_c">
				<h1 class="bg1">Auksjon<span class="left"></span><span class="right"></span></h1>
				<div class="bg1">
					<p class="c"><a href="auksjoner?t=' . $this->auksjon->data['a_type'] . '">Tilbake til oversikt</a></p>
					<dl class="dd_right">
						<dt>Beskrivelse</dt>
						<dd>' . $title . '</dd>' . ($type->have_up ? '
						<dt>Spiller</dt>
						<dd>' . ($this->auksjon->data['a_up_id'] ? '<user id="' . $this->auksjon->data['a_up_id'] . '" />' : 'Ingen spiller') . '</dd>' : '');
        // ikke startet?
        if ($this->auksjon->status == auksjon::STATUS_WAIT) {
            echo '
						<dt>Auksjonsstart</dt>
						<dd>' . ess::$b->date->get($this->auksjon->data['a_start'])->format(date::FORMAT_SEC) . '<br />' . game::counter($this->auksjon->data['a_start'] - time(), true) . '</dd>
						<dt>Auksjonslutt</dt>
						<dd>' . ess::$b->date->get($this->auksjon->data['a_end'])->format(date::FORMAT_SEC) . '</dd>';
        } else {
            echo '
						<dt>Auksjonslutt</dt>
						<dd>' . ess::$b->date->get($this->auksjon->data['a_end'])->format(date::FORMAT_SEC) . ($this->auksjon->status == auksjon::STATUS_ACTIVE ? '<br />' . game::counter($this->auksjon->data['a_end'] - time(), true) : '') . '</dd>';
        }
        // vis info
        echo '
						<dt>Budstart</dt>
						<dd>' . game::format_cash($this->auksjon->data['a_bid_start']) . '</dd>
						<dt>Minste budøkning</dt>
						<dd>' . game::format_cash($this->auksjon->data['a_bid_jump']) . '</dd>';
        // status
        if ($this->auksjon->status == auksjon::STATUS_WAIT) {
            // ikke startet
            echo '
						<dt>Status</dt>
						<dd>Ikke startet</dd>';
        } elseif ($this->auksjon->status == auksjon::STATUS_FINISHED) {
            // ferdig
            echo '
						<dt>Status</dt>
						<dd>Avsluttet</dd>
						<dt>Vunnet av</dt>';
            // vinnerbudet
            if ($bud_lead) {
                echo '
						<dd><user id="' . $bud_lead['ab_up_id'] . '" /></dd>';
            } else {
                echo '
						<dd>Ingen vinner</dd>';
            }
        } else {
            // pågår
            echo '
						<dt>Status</dt>
						<dd>Pågår nå</dd>';
        }
        echo '
					</dl>';
        // mer info?
        if (!empty($this->auksjon->data['a_info'])) {
            echo '
					<p>' . game::bb_to_html($this->auksjon->data['a_info']) . '</p>';
        }
        echo '
				</div>
			</div>
		</div>
	</div>
	<div class="col_w right" style="width: 55%">
		<div class="col" style="margin-left: 20px">
			<div class="bg1_c">
				<h1 class="bg1">Bud<span class="left"></span><span class="right"></span></h1>
				<div class="bg1">';
        // auksjon pågår -- legg til nye bud
        if ($this->auksjon->status == auksjon::STATUS_ACTIVE) {
            $own = $this->auksjon->data['a_up_id'] == $this->up->id;
            if (!$own) {
                // første budet?
                if (!$bud_lead) {
                    echo '
					<p>Dette er det første budet på denne auksjonen. Du må derfor by minimum ' . game::format_cash($this->auksjon->data['a_bid_start']) . '.</p>';
                } else {
                    echo '
					<p>Du må by minimum ' . game::format_cash($this->auksjon->data['a_bid_jump']) . ' høyere enn ' . ($bud_lead['ab_up_id'] == $this->up->id ? 'ditt forrige bud' : 'det forrige budet til <user id="' . $bud_lead['ab_up_id'] . '" />') . ' på ' . game::format_cash($bud_lead['ab_bid']) . '.</p>';
                }
                // bud på kuler kan ikke trekkes tilbake
                // TODO: om noe kan trekkes tilbake bør bestemmes av auksjonen, ikke logikken i koden her
                if ($this->auksjon->data['a_type'] == auksjon::TYPE_KULER) {
                    echo '
					<p><b>Budet er bindende og kan ikke trekkes tilbake!</b></p>
					<p>Dersom noen byr over deg, vil budet ditt bli inaktivt og du får pengene igjen.</p>';
                } else {
                    echo '
					<p>Du kan trekke tilbake budet ditt innen det har gått ' . game::timespan(auksjon::MAX_TIME_REMOVE, game::TIME_FULL) . '. Etter ' . game::timespan(auksjon::MAX_TIME_REMOVE, game::TIME_FULL | game::TIME_NOBOLD) . ' er budet ditt bindende og det kan ikke trekkes tilbake.</p>
					<p>Dersom noen byr over deg, vil budet ditt bli inaktivt og du får pengene igjen etter at budet har stått i ' . game::timespan(auksjon::MAX_TIME_REMOVE, game::TIME_FULL | game::TIME_NOBOLD) . '.</p>';
                }
            }
            // har vi bydd?
            if ($bud_own) {
                // gått ut på tid?
                if ($bud_own_locked) {
                    echo '
					<p>Du har bydd på denne auksjonen og ditt bud er bindende.</p>';
                } else {
                    // kan trekke budet
                    echo '
					<p>Du har bydd på denne auksjonen og kan fortsatt trekke tilbake ditt bud.</p>';
                }
                // vis budøkning
                echo '
					<form action="" method="post">
						<dl class="dd_right">
							<dt>Øk bud til</dt>
							<dd><input class="styled w100 r" type="text" name="amount" value="' . game::format_cash($minstepris) . '" /></dd>
						</dl>
						<p class="c">' . show_sbutton("Øk bud", 'name="raise_bid"') . (!$bud_own_locked ? ' ' . show_sbutton("Slett bud", 'name="del_bid"') : '') . '</p>
					</form>';
            } elseif (!$own) {
                // har ikke noe våpen?
                if ($this->auksjon->data['a_type'] == auksjon::TYPE_KULER && !$this->up->weapon) {
                    echo '
					<p>Du har ikke noe våpen og kan ikke delta i denne auksjonen.</p>';
                } elseif ($this->auksjon->data['a_type'] == auksjon::TYPE_FIRMA && $this->up->get_health_percent() < player::FF_HEALTH_LOW * 100) {
                    echo '
					<p>Du har for lav helse til å kunne by på et firma.</p>';
                } else {
                    echo '
					<form action="" method="post">
						<dl class="dd_right">
							<dt>Legg inn bud</dt>
							<dd><input class="styled w100 r" type="text" name="amount" value="' . game::format_cash($minstepris) . '" /></dd>
						</dl>
						<p class="c">' . show_sbutton("Legg inn bud", 'name="place_bid"') . '</p>
					</form>';
                }
            }
        }
        // vis budene
        if (count($bud) == 0) {
            if ($this->auksjon->status != auksjon::STATUS_WAIT) {
                echo '
					<p class="c">Ingen bud er lagt inn i denne auksjonen.</p>';
            }
        } else {
            ess::$b->page->add_css('.bud_inactive { text-decoration: line-through; color: #888 }');
            echo '
					<dl class="dd_right">';
            // gå gjennom alle budene
            foreach ($bud as $row) {
                echo '
						<dt' . ($row['ab_active'] == 0 ? ' class="bud_inactive"' : '') . '>' . ess::$b->date->get($row['ab_time'])->format("H:i:s") . ': <user id="' . $row['ab_up_id'] . '" /></dt>
						<dd' . ($row['ab_active'] == 0 ? ' class="bud_inactive"' : '') . '>' . game::format_cash($row['ab_bid']) . '</dd>';
            }
            echo '
					</dl>';
            if ($pagei->pages > 1) {
                echo '
					<p class="c">' . $pagei->pagenumbers() . '</p>';
            }
        }
        echo '
				</div>
			</div>
		</div>
	</div>
</div>';
    }