Beispiel #1
0
 protected function get_text($name, $sub, $data)
 {
     switch ($name) {
         case "rank":
         case "rank_kill":
             return ucfirst(game::$ranks['items_number'][$sub]['name']);
         case "familie":
             return 'Broderskap';
         case "familie_rank":
             return game::format_num($data['ff_points_sum']) . ' poeng';
         case "ff_owner":
             return ucfirst(ff::$types[$sub]['typename']);
         case "cash_num":
             return hall_of_fame::get_cash_pos($sub);
     }
 }
Beispiel #2
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>';
        }
    }
Beispiel #3
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>';
    }
Beispiel #4
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']));
     }
 }
Beispiel #5
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);
 }
Beispiel #6
0
    /**
     * Vise forskjellig statistikk for gta
     */
    protected function stats_show()
    {
        ess::$b->page->add_title("Statistikk");
        // hent antall forsøk og vellykkede spredt på hver bydel
        $stats_totalt = array();
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT b_id, MAX(time_last) max_time_last, SUM(count) sum_count, SUM(success) sum_success\n\t\t\tFROM gta_options_status\n\t\t\t\tJOIN gta_options ON optionid = gta_options.id\n\t\t\tWHERE gos_up_id = {$this->gta->up->id}\n\t\t\tGROUP BY b_id");
        while ($row = $result->fetch()) {
            $stats_totalt[$row['b_id']] = $row;
        }
        // hent informasjon om bydelene
        $bydeler = $this->gta->get_bydeler_info();
        echo '
<h1>Statistikk for biltyveri</h1>
<div class="bg1_c small">
	<h1 class="bg1">Bydeler<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">';
        if (count($stats_totalt) == 0) {
            echo '
		<p>Du har ikke gjennomført noen forsøk på biltyveri.</p>';
        } else {
            echo '
		<table class="table center tablem">
			<thead>
				<tr>
					<th>Bydel</th>
					<th>Antall forsøk</th>
					<th>Antall vellykkede</th>
					<th>Forrige forsøk</th>
				</tr>
			</thead>
			<tbody class="r">';
            $i = 0;
            foreach (game::$bydeler as $bydel) {
                if ($bydel['active'] == 0) {
                    continue;
                }
                if (isset($stats_totalt[$bydel['id']])) {
                    $forsok = $stats_totalt[$bydel['id']]['sum_count'];
                    $vellykkede = $stats_totalt[$bydel['id']]['sum_success'];
                    $siste = ess::$b->date->get($stats_totalt[$bydel['id']]['max_time_last'])->format();
                    echo '
				<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
					<td class="l">' . htmlspecialchars($bydel['name']) . '</td>
					<td>' . $forsok . '</td>
					<td>' . $vellykkede . '</td>
					<td>' . $siste . '</td>
				</tr>';
                } else {
                    echo '
				<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
					<td class="l">' . htmlspecialchars($bydel['name']) . '</td>
					<td class="c dark" colspan="3"><i>Ingen forsøk</i></td>
				</tr>';
                }
            }
            echo '
			</tbody>
		</table>';
        }
        echo '
	</div>
</div>
<div class="bg1_c xmedium">
	<h1 class="bg1">Garasjer<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<table class="table center tablem">
			<thead>
				<tr>
					<th>Bydel</th>
					<th>Firma</th>
					<th>Kapasitet</th>
					<th>Biler i garasjen</th>
					<th>Ledige plasser</th>
					<th>Neste frist</th>
				</tr>
			</thead>
			<tbody class="c">';
        $i = 0;
        foreach ($bydeler as $b_id => $row) {
            $bydel = game::$bydeler[$b_id];
            if ($bydel['active'] == 0) {
                continue;
            }
            echo '
				<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
					<td class="l">' . htmlspecialchars($bydel['name']) . '</td>';
            if (!$row['ff_id']) {
                echo '
					<td class="dark" colspan="5"><i>Ingen garasje</i></td>';
            } else {
                $ant = $row['garage_max_cars'] - $row['cars'];
                if ($ant < 0) {
                    $ant = 0;
                }
                echo '
					<td><a href="&rpath;/ff/?ff_id=' . $row['ff_id'] . '">' . htmlspecialchars($row['ff_name']) . '</a></td>
					<td>' . game::format_num($row['garage_max_cars']) . '</td>
					<td>' . game::format_num($row['cars']) . '</td>
					<td><b>' . game::format_num($ant) . '</b></td>
					<td>' . ess::$b->date->get($row['garage_next_rent'])->format("d.m H:i") . '</td>';
            }
            echo '
				</tr>';
        }
        echo '
			</tbody>
		</table>
	</div>
</div>';
    }
Beispiel #7
0
 /**
  * Hent tekst for en Hall of Fame
  */
 public static function get_text($name, $sub, $data)
 {
     switch ($name) {
         case "rank":
             return 'første spilleren til å oppnå ranken ' . game::$ranks['items_number'][$sub]['name'];
         case "rank_kill":
             return 'første spilleren til å drepe en ' . game::$ranks['items_number'][$sub]['name'];
         case "familie":
             return 'første familien i spillet';
         case "familie_rank":
             return 'topp rangert broderskap i spillet med ' . game::format_num($data['ff_points_sum']) . ' poeng';
         case "ff_owner":
             return 'første spilleren til å eie ' . ($sub == 1 ? 'en' : 'et') . ' ' . ff::$types[$sub]['typename'];
         case "cash_num":
             return 'første spilleren til å oppnå pengeplasseringen &laquo;' . self::get_cash_pos($sub) . '&raquo;';
     }
     throw new HSException("Ukjent type.");
 }
Beispiel #8
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;
 }
Beispiel #9
0
					<tr>
						<td>#</td>
						<td>Spiller</td>
						<td>Antall</td>
						<td>Broderskap</td>
					</tr>
				</thead>
				<tbody>';
$i = 0;
foreach ($stats_dam as $row) {
    $familier = isset($up_ff[$row['up_id']]) ? implode(",<br />", $up_ff[$row['up_id']]) : '&nbsp;';
    echo '
					<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
						<td class="c">' . $i . '.</td>
						<td><user id="' . $row['up_id'] . '" /></td>
						<td class="r">' . game::format_num($row['up_attack_damaged_num']) . '</td>
						<td>' . $familier . '</td>
					</tr>';
}
echo '
				</tbody>
			</table>';
echo '	
			<!-- pengestatusene -->
			<table class="table game tablemb" width="100%">
				<thead>
					<tr>
						<th colspan="4">Pengestatusene</th>
					</tr>
					<tr>
						<td>Nummer</td>
Beispiel #10
0
    /**
     * Vis lotto
     */
    protected function show_page()
    {
        echo '
<div class="col2_w" style="margin: 40px"> 
	<div class="col_w left"> 
		<div class="col" style="margin-right: 20px">
			<div class="bg1_c" id="lotto">
				<h1 class="bg1">Lotto<span class="left"></span><span class="right"></span></h1>
				<div class="bg1">
					<p class="c">Neste trekning: ' . game::counter($this->next, true) . '.</p>';
        if ($this->active) {
            // kan vi kjøpe lodd?
            if ($this->info['antall_lodd'] < lotto::$lodd_maks) {
                $antall = min(lotto::$lodd_maks_om_gangen, floor(login::$user->player->data['up_cash'] / lotto::get_lodd_price()));
                echo '
					<form action="" method="post">' . $this->form->getHTMLInput() . '<input type="hidden" name="b" value="Gjenstående lodd" /><input type="hidden" name="lodd" value="' . $antall . '" /></form>' . (time() < lotto::PRICE_CHANGE + 43200 ? '
					<p class="c">Pris per lodd ' . (time() < lotto::PRICE_CHANGE ? 'blir' : 'ble') . ' økt til <span style="color: #DD3333">' . game::format_cash(lotto::PRICE) . '</span> kl. ' . ess::$b->date->get(lotto::PRICE_CHANGE)->format("H:i") . '</p>' : '') . '
					<form action="" method="post">
						' . $this->form->getHTMLInput() . '
						<dl class="dd_right center" style="width: 80%">
							<dt>Gjenstående lodd</dt>
							<dd>' . game::format_number(lotto::$lodd_maks - $this->info['antall_lodd']) . '</dd>
							<dt>Antall kjøpt</dt>
							<dd>' . game::format_number($this->info['antall_lodd']) . '</dd>
							<dt>Pris per lodd</dt>
							<dd>' . game::format_cash(lotto::get_lodd_price()) . '</dd>' . ($this->wait > 0 ? '
							<dt>Må vente</dt>
							<dd style="color: #FF0000">' . game::counter($this->wait, true) . '</dd>' : '
							<dt>Ventetid</dt>
							<dd>' . game::timespan(lotto::$ventetid, game::TIME_FULL) . '</dd>
						</dl>
						<dl class="dd_right dl_2x center" style="width: 80%">
							<dt>Antall lodd</dt>
							<dd><input type="text" value="' . $antall . '" class="styled w40 r" name="lodd" maxlength="3" /></dd>
							<dd>' . show_sbutton("Kjøp lodd") . '</dd>') . '
						</dl>
					</form>';
            }
        } else {
            echo '
					<p class="c">Lottorunden er for øyeblikket ikke aktiv.</p>';
        }
        echo '
					<p class="c"><a href="lotto_vinn">Min historie</a> | <a href="node/25">Informasjon om funksjonen</a></p>
				</div>
			</div>
			<div class="bg1_c" style="margin-top: 20px">
				<h1 class="bg1">Informasjon om lottorunden<span class="left"></span><span class="right"></span></h1>
				<div class="bg1">
					<dl class="dd_right">
						<dt>Antall lodd solgt totalt denne runden</dt>
						<dd>' . game::format_number($this->info['totalt_lodd']) . '</dd>
						<dt>Antall spillere som har kjøpt lodd</dt>
						<dd>' . game::format_number($this->info['brukere']) . '</dd>
						<dt><b>Potten</b></dt>
						<dd><b>' . game::format_cash($this->info['pott']) . '</b></dd>
					</dl>
				</div>
			</div>
			<div class="bg1_c" style="margin-top: 20px">
				<h1 class="bg1">Gevinster<span class="left"></span><span class="right"></span></h1>
				<div class="bg1">
					<table class="table tablem" width="100%">
						<tbody>';
        $i = 0;
        foreach (lotto::$premier as $premie) {
            echo '
							<tr' . (is_int($i / 2) ? ' class="color"' : '') . '>
								<td>' . ($i + 1) . '. plass</td>
								<td class="r"><b style="color: #55AA55">' . game::format_num($premie[0]) . '</b> poeng</td>
								<td class="r"><b style="color: #F9E600">' . game::format_number($premie[1] * 100, 0) . ' %</b> av potten</td>
							</tr>';
            $i++;
        }
        echo '
						</tbody>
					</table>
					<p class="c">Poengene tar utgangspunkt i at ' . lotto::PLAYERS_TOP . ' spillere eller flere deltar. Ved færre deltakere vil poengene bli redusert.</p>
				</div>
			</div>
		</div> 
	</div> 
	<div class="col_w right">
		<div class="col" style="margin-left: 20px">
			<div class="bg1_c">
				<h1 class="bg1">Siste trekninger<span class="left"></span><span class="right"></span></h1>
				<div class="bg1">';
        // hent de siste trekningene
        $result = \Kofradia\DB::get()->query("SELECT CEILING((time-900)/1800)*1800+900 FROM lotto_vinnere GROUP BY CEILING((time-900)/1800)*1800+900 ORDER BY time DESC LIMIT 4");
        if ($result->rowCount() == 0) {
            echo '
					<p>Ingen trekninger har blitt gjennomført.</p>';
        } else {
            $row = $result->fetch(\PDO::FETCH_NUM);
            $last = $row[0];
            do {
                $first = $row[0] - 1800;
            } while ($row = $result->fetch(\PDO::FETCH_NUM));
            // hent vinnerene
            $result = \Kofradia\DB::get()->query("SELECT lv_up_id, time, won, total_lodd, total_users, type FROM lotto_vinnere WHERE time >= {$first} AND time < {$last} ORDER BY type");
            $rounds = array();
            // legg i riktig gruppe
            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">
						<h1>' . ess::$b->date->get($round['time'])->format() . '</h1>
						<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>';
            }
            echo '
				<p class="c"><a href="lotto_trekninger">Vis utvidet oversikt</a></a>';
        }
        echo '
				</div>
			</div>
		</div>
	</div>
</div>';
    }
Beispiel #11
0
    /**
     * Panelet
     */
    protected function page_panel()
    {
        ess::$b->page->add_title("Panel");
        ess::$b->page->add_css('
.ff_panel {
	width: 490px;
	margin: 0 auto;
	overflow: hidden;
}
.ff_panel .section {
	margin-bottom: 20px;
}');
        // hent info om innbetaling
        $pay_info = $this->ff->pay_info();
        // sjekk om vi er i forum lista
        $forum_added = $this->ff->uinfo->forum_link() !== NULL;
        // medlemsbegrensning
        $limits = $this->ff->get_limits();
        echo '
<div class="ff_panel">
	<div style="width: 235px; float: left">
		
		<!-- ffinformasjon -->
		<div class="section">
			<h2>Informasjon om ' . $this->ff->type['refobj'] . '</h2>
			<dl class="dd_right">
				<dt>Navn</dt>
				<dd>' . htmlspecialchars($this->ff->data['ff_name']) . '</dd>
				<dt>Opprettet</dt>
				<dd>' . ess::$b->date->get($this->ff->data['ff_date_reg'])->format() . '</dd>
				<dt>Pengebeholdning</dt>
				<dd>' . game::format_cash($this->ff->data['ff_bank']) . '</dd>
				<dt>Medlemsbegrensning</dt>
				<dd>' . $limits[0] . ' medlemmer</dd>
			</dl>' . ($this->ff->data['ff_is_crew'] ? '
			<p>' . ucfirst($this->ff->type['refobj']) . ' har status som nostat. Den teller ikke med i spillstatistikken til spilleren.</p>' : '') . ($this->ff->uinfo->data['ffm_priority'] == 3 ? '
			<p class="c"><a href="panel?ff_id=' . $this->ff->id . '&amp;a=suggestion">Foreslå ' . ($this->ff->type['type'] == "familie" ? 'nytt medlem' : 'ny ansatt') . ' til ' . $this->ff->type['refobj'] . ' &raquo;</a></p>' : '') . '
			<p class="c"><a href="./?ff_id=' . $this->ff->id . '&amp;stats">Vis statistikk for ' . $this->ff->type['refobj'] . '</a></p>
		</div>
		
		<!-- egen informasjon -->
		<div class="section">
			<h2>Min informasjon</h2>
			<dl class="dl_30 dd_right">
				<dt>Ble med</dt>
				<dd>' . ess::$b->date->get($this->ff->uinfo->data['ffm_date_join'])->format() . '</dd>
				<dt>Posisjon</dt>
				<dd>' . ucfirst($this->ff->uinfo->get_priority_name()) . '</dd>
				<dt>Donert</dt>
				<dd>' . game::format_cash($this->ff->uinfo->data['ffm_donate']) . '</dd>
			</dl>
			<form action="" method="post">
				<p class="c">' . show_sbutton("Forlat {$this->ff->type['refobj']}", 'name="leave"') . '</p>
			</form>
		</div>';
        // kulelager for familie
        if ($this->ff->type['type'] == "familie") {
            $cap = $this->ff->get_bullets_capacity();
            $bullets = $this->ff->params->get("bullets", 0);
            echo '
		
		<!-- kulelager for broderskap -->
		<div class="section">
			<h2>Kulelager for broderskapet</h2>
			<dl class="dd_right">
				<dt>Kapasitet</dt>
				<dd>' . game::format_num($cap) . '</dd>
				<dt>Antall kuler</dt>
				<dd>' . game::format_num($bullets) . '</dd>
			</dl>';
            if (login::$user->player->weapon) {
                $up_cap = login::$user->player->weapon->data['bullets'];
                $up_bullets = login::$user->player->data['up_weapon_bullets'];
                $up_bullets_a = login::$user->player->data['up_weapon_bullets_auksjon'];
                echo '
			<p style="margin-bottom: 0"><b>Din oversikt</b></p>
			<dl class="dd_right" style="margin-top: 0">
				<dt>Kapasitet</dt>
				<dd>' . game::format_num($up_cap) . '</dd>
				<dt>Antall kuler</dt>
				<dd>' . game::format_num($up_bullets) . ($up_bullets_a ? ' (' . game::format_num($up_bullets_a) . ')' : '') . '</dd>
			</dl>';
                // de som ikke er nostat skal ikke få ta ut kuler fra Kofradia Crew
                if (!access::is_nostat() && $this->ff->data['ff_id'] == 1) {
                    echo '
					<p>Du kan ikke sette inn/ta ut kuler fra ' . htmlspecialchars($this->ff->data['ff_name']) . '.</p>';
                } else {
                    // kan vi ikke ta ut kuler?
                    $p = $this->ff->uinfo->data['ffm_priority'];
                    if ($p > 3) {
                        echo '
						<p>Du kan ikke ta ut kuler, men kan få <user id="' . $this->ff->uinfo->data['ffm_parent_up_id'] . '" /> til å gi deg kuler fra broderskapet.</p>';
                    } else {
                        // spillere vi kan ta ut kuler til
                        $s_up = postval("bullets_up");
                        $other = array();
                        // kan vi ta ut kuler for kun underordnede under seg selv? (har pri 3)
                        if ($p == 3 && isset($this->ff->members['members_parent'][login::$user->player->id])) {
                            foreach ($this->ff->members['members_parent'][login::$user->player->id] as $ffm) {
                                $other[] = $ffm;
                            }
                        } elseif ($p < 3 && isset($this->ff->members['members_priority'][4])) {
                            foreach ($this->ff->members['members_priority'][4] as $ffm) {
                                $other[] = $ffm;
                            }
                        }
                        // har vi noen underordnede?
                        $sub = '';
                        if ($other) {
                            $sub = '
							<select name="bullets_up">
							<option value="">Til meg</option>';
                            foreach ($other as $ffm) {
                                $sub .= '
								<option value="' . $ffm->data['ffm_up_id'] . '"' . ($s_up == $ffm->data['ffm_up_id'] ? ' selected="selected"' : '') . '>' . htmlspecialchars($ffm->data['up_name']) . '</option>';
                            }
                            $sub .= '
							</select>';
                        }
                        echo '
						<form action="" method="post">
						<p class="c">' . $sub . '
						<input type="text" name="bullets_out" value="' . htmlspecialchars(postval("bullets_out")) . '" class="styled w30" />
						' . show_sbutton("Ta ut") . '
						</p>
						</form>';
                    }
                    echo '
					<form action="" method="post">
					<p class="c">
					<input type="text" name="bullets_in" value="' . htmlspecialchars(postval("bullets_in")) . '" class="styled w30" />
					' . show_sbutton("Sett inn kuler") . '
					</p>
					</form>';
                }
            } else {
                echo '
			<p>Du har ikke noe våpen og kan ikke sette inn/ta ut kuler.</p>';
            }
            echo '
		</div>';
        }
        echo '
		
		<!-- donasjon til FF -->
		<div class="section">
			<h2>Donér til ' . $this->ff->type['refobj'] . '</h2>
			<form action="" method="post">
				<dl class="dd_right">
					<dt>Beløp</dt>
					<dd><input type="text" name="donate" value="' . game::format_cash(game::intval(postval("donate"))) . '" class="styled w75" /></dd>
					<dt>Melding/notat</dt>
					<dd><input type="text" name="note" value="' . htmlspecialchars(postval("note")) . '" maxlength="50" class="styled w100" /></dd>
				</dl>
				<p class="c">' . show_sbutton("Donér") . '</p>
			</form>
		</div>
		
	</div>
	<div style="margin-left: 20px; float: left; width: 235px">' . ($pay_info ? '
		
		<!-- driftskostnad -->
		<div class="section">
			<h2>Driftskostnad</h2>
			<p>For at ' . $this->ff->type['refobj'] . ' ikke skal dø ut, må det betales inn et beløp på <u>100 mill</u> i tillegg til kostnad per ekstra medlemsplass til spillet hver 10. dag.</p>
			<p>Når medlemmene i ' . $this->ff->type['refobj'] . ' ranker, vil beløpet som må innbetales synke med 1 og 1 mill avhengig av hvor mye som rankes.</p>
			<p>' . ucfirst($this->ff->type['refobj']) . ' mister ikke ranken hvis et medlem forlater ' . $this->ff->type['refobj'] . '.</p>
			<p>Beløpet vil bli trukket fra banken automatisk ved innbetalingstidspunkt. Hvis det ikke er nok penger i banken, vil ' . $this->ff->type['refobj'] . ' få frist på å innbetale beløpet manuelt innen 24 timer. Beløpet vil da øke med 50 %.</p>' . (!$pay_info['in_time'] ? '
			<div class="section">
				<h2>Betaling av driftskostnad</h2>
				<p class="error_box">' . ucfirst($this->ff->type['refobj']) . ' har overskredet tidspunktet for innbetaling. Betaling må skje manuelt av ' . $this->ff->type['priority'][1] . '/' . $this->ff->type['priority'][2] . '.</p>
				<dl class="dd_right">
					<dt>Betalingsfrist</dt>
					<dd>' . ess::$b->date->get($pay_info['next'])->format() . '<br />' . game::timespan($pay_info['next'], game::TIME_ABS) . '</dd>
					<dt>Beløp</dt>
					<dd>' . game::format_cash($pay_info['price']) . '</dd>
				</dl>
				<p class="c"><a href="panel?ff_id=' . $this->ff->id . '&amp;a=pay" class="button">Fortsett/vis detaljer &raquo;</a></p>
				<p>Hvis beløpet ikke blir betalt innen betalingsfristen vil ' . $this->ff->type['refobj'] . ' dø ut.</p>
			</div>' : '
			<dl class="dd_right">
				<dt>Neste innbetaling</dt>
				<dd>' . ess::$b->date->get($pay_info['next'])->format() . '</dd>
				<dt>Foreløpig beløp</dt>
				<dd>' . game::format_cash($pay_info['price']) . '</dd>
			</dl>
			<p><a href="panel?ff_id=' . $this->ff->id . '&amp;a=pay">Vis oversikt over medlemmers bidrag &raquo;</a></p>
			<p><a href="panel?ff_id=' . $this->ff->id . '&amp;a=paystats">Statistikk &raquo;</a></p>') . '
		</div>' : '') . '
		
		<!-- forum ting -->
		<div class="section">
			<h2>Forum</h2>
			<p class="h_right"><a href="../forum/forum?id=' . $this->ff->get_fse_id() . '">Vis forum</a></p>
			<p>For enkel tilgang til forumet for ' . $this->ff->type['refobj'] . ' kan du legge til en lenke i menyen.</p>
			<form action="" method="post">
				<p><b>Status</b>: ' . ($forum_added ? 'Lenke <u>vises</u> - ' . show_sbutton("Fjern lenke", 'name="forum_link_remove"') : 'Lenke er <u>skjult</u> - ' . show_sbutton("Vis lenke", 'name="forum_link_add"')) . '</p>
			</form>
		</div>';
        // eier info
        if ($this->ff->access(2)) {
            $high = $this->ff->access(1);
            $groups = array();
            $eier = ucfirst($this->ff->type['priority'][1]);
            if ($high) {
                $groups["Generelt"][] = '<a href="panel?ff_id=' . $this->ff->id . '&amp;a=sell">Selg ' . $this->ff->type['refobj'] . ' til ' . $this->ff->type['priority'][2] . '</a> (' . $eier . ')';
            }
            if ($high) {
                $groups["Generelt"][] = '<a href="panel?ff_id=' . $this->ff->id . '&amp;a=navnbytte">' . ($this->ff->mod ? 'Endre navn' : 'Søk om navnbytte') . '</a> (' . $eier . ')';
            }
            $groups["Generelt"][] = '<a href="panel?ff_id=' . $this->ff->id . '&amp;a=beskrivelse">Rediger beskrivelse</a>';
            if ($high) {
                $groups["Generelt"][] = '<a href="panel?ff_id=' . $this->ff->id . '&amp;a=logo">Bytt logo</a> (' . $eier . ')';
            }
            if ($high) {
                $groups["Generelt"][] = '<a href="banken?ff_id=' . $this->ff->id . '">Banken</a> (' . $eier . ')';
            }
            if ($high) {
                $groups["Generelt"][] = '<a href="panel?ff_id=' . $this->ff->id . '&amp;a=drop">Legg ned ' . $this->ff->type['refobj'] . '</a> (' . $eier . ')';
            }
            if ($this->ff->mod) {
                $groups["Generelt"][] = '<a href="panel?ff_id=' . $this->ff->id . '&amp;a=br">Velg ny bygning</a> (Moderator)';
            }
            // firmaer
            switch ($this->ff->type['type']) {
                case "avis":
                    $groups["Avisfirma"][] = '<a href="avis?ff_id=' . $this->ff->id . '&amp;a">Mine avisartikler</a>';
                    $groups["Avisfirma"][] = '<a href="avis?ff_id=' . $this->ff->id . '&amp;u">Administrer avisutgivelser</a>';
                    break;
                case "bank":
                    $groups["Bankfirma"][] = '<a href="bank?ff_id=' . $this->ff->id . '">Administrer banken</a>';
                    break;
            }
            $groups["Medlemmer"][] = '<a href="medlemmer?ff_id=' . $this->ff->id . '">Medlemskontroll</a>';
            $groups["Medlemmer"][] = '<a href="medlemmer?ff_id=' . $this->ff->id . '&amp;invite">Inviter spiller</a>';
            if ($high && $this->ff->type['type'] == "familie") {
                $groups["Medlemmer"][] = '<a href="panel?ff_id=' . $this->ff->id . '&amp;a=members_limit">Medlemsbegrensning</a> (' . $eier . ')';
            }
            $groups["Annet"][] = '<a href="logg?ff_id=' . $this->ff->id . '">Vis logg</a>';
            $groups["Annet"][] = '<a href="../forum/forum?id=' . $this->ff->get_fse_id() . '">Vis forum</a>';
            echo '
		<div class="section">
			<h2>Innstillinger/handlinger</h2>';
            foreach ($groups as $group => $items) {
                echo '
			<h3>' . $group . '</h3>
			<ul>
				<li>' . implode('</li>
				<li>', $items) . '</li>
			</ul>';
            }
            echo '
		</div>';
        }
        echo '
	</div>
</div>';
    }
Beispiel #12
0
    /**
     * Be som sykebil
     */
    protected function sykebil()
    {
        // kan ikke bruke sykebil?
        if ($this->up->data['up_b_id'] == $this->ff->data['br_b_id'] || $this->up->get_energy_percent() >= self::ENERGY_SYKEBIL_REQ) {
            return;
        }
        // bekreftet?
        if (isset($_POST['confirm']) && validate_sid()) {
            // ikke bekreftet?
            if (!isset($_POST['c'])) {
                ess::$b->page->add_message("Du må bekrefte at du mister 25 % rank for å kunne benytte deg av alternativet.", "error");
            } else {
                if (!$this->form->validateHashOrAlert(null, "Sykehus")) {
                    return;
                }
                // sett ned ranken
                $p = round($this->up->data['up_points'] * 0.25);
                $this->up->increase_rank(-$p, false);
                // flytt til korrekt bydel
                \Kofradia\DB::get()->exec("UPDATE users_players SET up_b_id = {$this->ff->data['br_b_id']}, up_b_time = " . time() . " WHERE up_id = " . $this->up->id);
                $this->up->data['up_b_id'] = $this->ff->data['br_b_id'];
                unset($this->up->bydel);
                // gi  melding
                ess::$b->page->add_message("Du ble hentet av en sykebil og ble fraktet til <b>" . htmlspecialchars($this->up->bydel['name']) . "</b>. Du kan nå kjøpe energi hos sykehuset. Du mistet " . game::format_num($p) . " poeng (" . game::format_rank($p) . " rank).");
                putlog("DF", "%c4%bSYKEBIL:%b%c " . $this->up->data['up_name'] . " benyttet seg av sykebil og mistet " . game::format_number($p) . " rankpoeng. " . $this->up->generate_minside_url());
                redirect::handle();
            }
        }
        echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Sykehus<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<boxes />
		<p class="c"><a href="./?ff_id=' . $this->ff->id . '">Tilbake</a></p>
		<p>Du har svært lite energi. Hvis du føler du står i fare for å dø og ikke har nok energi for å reise via bydeler, kan du få en sykebil til å hente deg.</p>
		<p>Når du blir hentet av en sykebil, vil du bli fraktet til bydelen sykehuset befinner seg i uten å miste noe helse eller energi. Du vil deretter kunne utføre alternativene for å få energi.</p>
		<p>Ved å benytte seg av dette alternativet <b>må du ofre 25 % av din totale rank</b>.</p>
		<form action="" method="post">
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<input type="hidden" name="sykebil" />
			' . $this->form->getHTMLInput() . '
			<p class="c"><input type="checkbox" id="sykebil_c" name="c" /><label for="sykebil_c"> Jeg bekrefter at jeg mister 25 % av min rank</label></p>
			<p class="c">' . show_sbutton("Be om sykebil", 'name="confirm"') . '</p>
		</form>
		<p class="c"><a href="./?ff_id=' . $this->ff->id . '">Tilbake</a></p>
	</div>
</div>';
        return true;
    }
Beispiel #13
0
    /**
     * Prestasjoner
     */
    protected static function page_achievements()
    {
        ess::$b->page->add_title("Prestasjoner");
        kf_menu::page_id("achievements");
        // kan ikke se?
        if (!page_min_side::$pstats) {
            echo '
	<p class="c">Du har ikke tilgang til å se denne siden.</p>';
            return;
        }
        echo '
	<p class="c">Du har oppnådd totalt ' . game::format_num(page_min_side::$active_player->data['up_achievements_points']) . ' prestasjonspoeng.</p>
	
	<div class="achievements">';
        // hent repetisjoner
        $rep_all = page_min_side::$active_player->achievements->get_rep_count();
        // grupper etter gjentakelsemulighet
        $list = array("norep" => array(), "rep" => array());
        foreach (achievements::$achievements as $a) {
            $list[$a->data['ac_recurring'] ? 'rep' : 'norep'][] = $a;
        }
        foreach ($list as $type => $all) {
            echo '
		<div class="achievements_group">
			<p class="ac_group">' . ($type == "rep" ? 'Repeterende prestasjoner:' : 'Enkeltoppnående prestasjoner:') . '</p>';
            foreach ($all as $a) {
                // hent premie
                $prize = sentences_list($a->get_prizes());
                if (empty($prize)) {
                    $prize = '&nbsp;';
                }
                // sjekk om utført
                if (isset($rep_all[$a->id])) {
                    if ($a->data['ac_recurring']) {
                        $done = 'Oppnådd ' . fwords("%d gang", "%d ganger", $rep_all[$a->id]['count_upa_id']);
                        $done .= '<br />Sist ' . ess::$b->date->get($rep_all[$a->id]['max_upa_time'])->format();
                    } else {
                        $done = 'Oppnådd ' . ess::$b->date->get($rep_all[$a->id]['max_upa_time'])->format();
                    }
                } else {
                    $done = "Du har ikke oppnådd denne prestasjonen";
                }
                $img = isset($rep_all[$a->id]) && !$a->data['ac_recurring'] ? '<img src="' . STATIC_LINK . '/icon/ruby.png" alt="" title="Oppnådd" /> ' : '';
                // fremdrift
                $progress = '';
                $progress_text = '';
                $item = new achievement_player_item(page_min_side::$active_player, $a);
                $item->load_active();
                if ($p = $item->get_progress()) {
                    $w = round($p['current'] / $p['target'] * 100, 1);
                    $progress = '
			<div class="ac_progress" title="Fremdrift: ' . $p['current'] . ' / ' . $p['target'] . '" style="width: ' . $w . '%"></div>';
                    $progress_text = '
			<p class="ac_progress_text" style="text-align: right;">Fremdrift: ' . $p['current'] . ' / ' . $p['target'] . '</p>';
                }
                echo '
		<div class="ac_row">' . $progress . '
			<div class="ac_data' . ($progress ? ' ac_data_progress' : '') . '">
				<h2>' . htmlspecialchars($a->data['ac_name']) . '</h2>' . ($a->data['ac_text'] ? '
				<p class="ac_text">' . $a->data['ac_text'] . '</p>' : '') . '
				<p class="ac_prize">Premie: ' . $prize . '</p>
				<p class="ac_apoints" title="Prestasjonspoeng">' . $img . $a->data['ac_apoints'] . '</p>
				<p class="ac_status">' . $done . '</p>
				' . $progress_text . '
			</div>
		</div>';
            }
            echo '
		</div>';
        }
        echo '
	</div>';
    }
Beispiel #14
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();
    }
Beispiel #15
0
 /**
  * Sett opp tekst for en logg
  */
 public function format_log($type, $note, $num)
 {
     global $_game, $__server;
     $html = false;
     // typenavn
     $type_name = self::$items_id[$type];
     switch ($type_name) {
         case "utpressing":
             $melding = '[user id=' . $note . '] presset deg for [b]' . game::format_cash($num) . '[/b]!';
             break;
         case "fengsel":
             $dusor = empty($note) ? '' : ' og mottok dusøren på ' . game::format_cash($note);
             $melding = '[user id=' . $num . '] brøt deg ut av fengselet' . $dusor . '!';
             break;
         case "fengsel_dusor_return":
             $melding = 'Ingen hadde brutt deg ut av fengsel innen du kom ut og du fikk tilbake dusøren på ' . game::format_cash($num) . '.';
             break;
         case "renter":
             $melding = "Du mottok [b]" . game::format_cash($num) . "[/b] i renter fra banken!" . (!empty($note) ? ' ' . $note : '');
             break;
         case "forfremmelse":
             $melding = "Du ble forfremmet til [b]{$note}[/b]!";
             break;
         case "nedgradering":
             $melding = "Du ble nedgradert til [b]{$note}[/b]!";
             break;
             // rank bonus
         // rank bonus
         case "rank_bonus":
             // syntax: plassering(int):prosent bonus(float), num = bonus
             $info = explode(":", $note);
             $melding = 'Du var den ' . ($info[0] == 1 ? 'beste' : $info[0] . '. beste') . ' rankeren de siste 24 timene og fikk ' . game::format_num($info[1] * 100) . ' % i bonus av poengene du hadde skaffet (' . game::format_num($num) . ' poeng i bonus).';
             break;
             // verve bonus
         // verve bonus
         case "verve_bonus":
             // syntax: antall_spillere num = bonus
             $melding = 'Du mottok ' . game::format_num($num) . ' poeng i bonus fra ' . fwords("%d spiller", "%d spillere", $note) . ' du har vervet som hadde ranket de siste 24 timene.';
             break;
         case "testing":
             $melding = "Testing - Melding: {$note} - Tall: {$num}";
             break;
         case "raw":
             $html = true;
             $melding = $note;
             break;
         case "systeminfo":
             $melding = "Systeminformasjon: " . $note;
             break;
             // emen i crewforumet
         // emen i crewforumet
         case "crewforum_emne":
             $u = explode(":", $note, 2);
             $html = true;
             $melding = '<user id="' . $u[0] . '" /> opprettet <a href="forum/topic?id=' . $num . '">' . htmlspecialchars($u[1]) . '</a> i crewforumet.';
             break;
             // svar i crewforumet
         // svar i crewforumet
         case "crewforum_svar":
             $u = explode(":", $note, 2);
             $s = explode("#", $u[0]);
             $u[0] = $s[0];
             $replyid = isset($s[1]) ? '&amp;replyid=' . $s[1] : '';
             $html = true;
             $melding = '<user id="' . $u[0] . '" /> svarte i <a href="forum/topic?id=' . $num . $replyid . '">' . htmlspecialchars($u[1]) . '</a> i crewforumet';
             break;
             // emne i crewforumet (arkiv)
         // emne i crewforumet (arkiv)
         case "crewforuma_emne":
             $u = explode(":", $note, 2);
             $html = true;
             $melding = '<user id="' . $u[0] . '" /> opprettet <a href="forum/topic?id=' . $num . '">' . htmlspecialchars($u[1]) . '</a> i crewforumet (arkiv).';
             break;
             // svar i crewforumet (arkiv)
         // svar i crewforumet (arkiv)
         case "crewforuma_svar":
             $u = explode(":", $note, 2);
             $s = explode("#", $u[0]);
             $u[0] = $s[0];
             $replyid = isset($s[1]) ? '&amp;replyid=' . $s[1] : '';
             $html = true;
             $melding = '<user id="' . $u[0] . '" /> svarte i <a href="forum/topic?id=' . $num . $replyid . '">' . htmlspecialchars($u[1]) . '</a> i crewforumet (arkiv).';
             break;
             // emne i idémyldringsforumet
         // emne i idémyldringsforumet
         case "crewforumi_emne":
             $u = explode(":", $note, 2);
             $html = true;
             $melding = '<user id="' . $u[0] . '" /> opprettet <a href="forum/topic?id=' . $num . '">' . htmlspecialchars($u[1]) . '</a> i idémyldringsforumet.';
             break;
             // svar i idémyldringsforumet
         // svar i idémyldringsforumet
         case "crewforumi_svar":
             $u = explode(":", $note, 2);
             $s = explode("#", $u[0]);
             $u[0] = $s[0];
             $replyid = isset($s[1]) ? '&amp;replyid=' . $s[1] : '';
             $html = true;
             $melding = '<user id="' . $u[0] . '" /> svarte i <a href="forum/topic?id=' . $num . $replyid . '">' . htmlspecialchars($u[1]) . '</a> i idémyldringsforumet.';
             break;
         case "bankoverforing":
             $info = explode(":", $note, 2);
             $melding = '[user id=' . $num . '] sendte deg [b]' . game::format_cash($info[0]) . '[/b]!' . (!empty($info[1]) ? ' [b]Melding[/b]: ' . $info[1] : '');
             break;
         case "lotto":
             $info = explode(":", $note);
             $data = array();
             $data[] = 'Du kom på <b>' . $info[0] . '</b>. plass i lotto';
             $data[] = 'vant <b>' . game::format_cash($num) . '</b>';
             if (isset($info[1])) {
                 $data[] = 'mottok <b>' . game::format_num($info[1]) . '</b> poeng';
             }
             $melding = sentences_list($data) . "!";
             $html = true;
             break;
         case "informasjon":
             $html = $num == 1;
             $melding = $note;
             break;
         case "poker":
             // winner:utfordrer:pott
             $info = explode(":", $note, 3);
             $melding = 'Du brukte for lang tid da du utfordret [user id=' . $info[1] . '] i poker for [b]' . game::format_cash($num) . '[/b]. Spillet valgte kort for deg automatisk..';
             switch ($info[0]) {
                 case 1:
                     $melding .= ' Motstanderen vant runden.';
                     break;
                 case 2:
                     $melding .= ' Du vant runden og fikk [b]' . game::format_cash($info[2]) . '[/b].';
                     break;
                 default:
                     $melding .= ' Det ble uavgjort og du fikk tilbake [b]' . game::format_cash($info[2]) . '[/b].';
             }
             break;
             // oppdrag
         // oppdrag
         case "oppdrag":
             $html = true;
             $melding = $note;
             break;
             // døde
         // døde
         case "dead":
             // syntax: instant(int:0/1)
             $html = true;
             $melding = $note ? "Du ble angrepet og klarte ikke å stå i mot angrepet. Du døde." : "Du døde på grunn av lav energi og lav helse.";
             break;
         case "support":
             // avsluttet?
             if (mb_substr($note, 0, 2) == "c:") {
                 $info = explode(":", $note, 3);
                 // c:sum_up_id:su_title
                 $html = true;
                 $melding = '<user id="' . $info[1] . '" /> avsluttet din henvendelse &laquo;<a href="' . $__server['relative_path'] . '/support/?a=show&amp;su_id=' . $num . '">' . htmlspecialchars($info[2]) . '</a>&raquo; hos support.';
                 break;
             }
             // oppdatert
             $info = explode(":", $note, 2);
             // sum_up_id:su_title
             $html = true;
             $melding = '<user id="' . $info[0] . '" /> oppdaterte din henvendelse &laquo;<a href="' . $__server['relative_path'] . '/support/?a=show&amp;su_id=' . $num . '">' . htmlspecialchars($info[1]) . '</a>&raquo; hos support.';
             break;
         case "blokkering":
             // ny blokkering: 1:type:end:reason
             // blokkering endret: 2:type:end:reason end og reason kan være blank hvis feltet ikke ble endret
             // blokkering fjernet: 3:type
             $info = explode(":", $note);
             $blokkering = isset(blokkeringer::$types[$num]) ? blokkeringer::$types[$num]['userlog'] : '(type ukjent: ' . $num . ')';
             switch ($info[0]) {
                 // ny blokkering
                 case 1:
                     $melding = 'Du har blitt blokkert fra å ' . $blokkering . '. Varer til ' . ess::$b->date->get($info[1])->format() . '. Begrunnelse: ' . urldecode($info[2]);
                     break;
                     // blokkering endret
                 // blokkering endret
                 case 2:
                     $melding = 'Blokkeringen for å ' . $blokkering . ' har blitt endret.';
                     if ($info[1] != "") {
                         $melding .= ' Ny varighet til ' . ess::$b->date->get($info[1])->format() . '.';
                     }
                     if ($info[2] != "") {
                         $melding .= ' Ny begrunnelse: ' . urldecode($info[2]);
                     }
                     break;
                     // blokkering fjernet
                 // blokkering fjernet
                 case 3:
                     $melding = 'Blokkeringen for å ' . $blokkering . ' har blitt fjernet.';
                     break;
             }
             break;
         case "advarsel":
             // type:reason
             $info = explode(":", $note, 2);
             $melding = 'Du har fått en advarsel fra Crewet (kategori: ' . urldecode($info[0]) . '). Begrunnelse: ' . urldecode($info[1]);
             break;
         case "soknader":
             // av enkelthetskyld (og praktiske årsaker) blir meldinger lagt til med full tekst fra søknadssystemet
             // dette kan utvidees ved en senere anledning
             // syntax: html:Din søknad [..]
             // syntax: bb:Din søknad [..]
             $info = explode(":", $note, 2);
             if ($info[0] == "html") {
                 $html = true;
                 $melding = $info[1];
             } elseif ($info[0] == "bb") {
                 $melding = $info[1];
             }
             break;
             // spiller bløde ihjel etter angrep
         // spiller bløde ihjel etter angrep
         case "player_bleed":
             $html = true;
             $melding = '<user id="' . $num . '" /> døde av skadene som ble påført i ditt tidligere angrep.';
             break;
             // vitne
         // vitne
         case "vitne":
             // syntax: drept:attack_type:ble_sett:offer_up_id (num = angriper)
             $info = explode(":", $note);
             $html = true;
             $melding = 'Du vitnet <user id="' . $num . '" /> ' . ($info[0] ? 'drepe' : 'skade') . ' <user id="' . $info[3] . '" />.';
             // ble vi oppdaget?
             if ($info[2]) {
                 $melding .= ' Du ble oppdaget av <user id="' . $num . '" />.';
             }
             break;
             // mistet beskyttelse
         // mistet beskyttelse
         case "beskyttelse_lost":
             // syntax: gammel_beskyttelse_navn:ny_beskyttelse_navn:ny_beskyttelse_state (navn er urlencode-ed)
             $info = explode(":", $note);
             $html = true;
             $melding = 'Du mistet din beskyttelse <b>' . htmlspecialchars(urldecode($info[0])) . '</b>. Du har nå <b>' . htmlspecialchars(urldecode($info[1])) . '</b> som beskyttelse med en status på <b>' . game::format_num($info[2] * 100, 2) . ' %</b>.';
             break;
             // angrepet?
         // angrepet?
         case "attacked":
             // syntax: lost_health:lost_energy:lost_protection:lost_rankpoints:new_health:new_energy:new_protection:new_rankpoints:gammel_bydel:ny_bydel:bank:cash
             $info = explode(":", $note);
             $html = true;
             // vise hvor mye vi mistet
             $d = array();
             $d[] = '<b>' . game::format_num($info[0] * 100, 2) . ' %</b> helse';
             $d[] = '<b>' . game::format_num($info[1] * 100, 2) . ' %</b> energi';
             if ($info[2]) {
                 $d[] = '<b>' . game::format_num($info[2] * 100, 2) . ' %</b> beskyttelse';
             }
             $d[] = '<b>' . $info[3] . '</b> poeng';
             $melding = 'Du ble angrepet av en spiller og mistet ' . sentences_list($d) . '.';
             // vis verdiene etter angrepet
             $d = array();
             $d[] = '<b>' . game::format_num($info[4] * 100, 2) . ' %</b> helse';
             $d[] = '<b>' . game::format_num($info[5] * 100, 2) . ' %</b> energi';
             if ($info[6]) {
                 $d[] = '<b>' . game::format_num($info[6] * 100, 2) . ' %</b> beskyttelse';
             }
             $melding .= ' Du endte opp med ' . sentences_list($d) . '.';
             // mistet vi penger?
             if (!empty($info[10])) {
                 $melding .= ' Angriperen fikk i tillegg med seg <b>' . game::format_cash($info[10]) . '</b> fra hånda di.';
             }
             // ble vi flyttet til en annen bydel?
             if (!empty($info[8])) {
                 $melding .= ' Du ble flyttet fra bydelen ' . htmlspecialchars(urldecode($info[8])) . ' til <b>' . htmlspecialchars(urldecode($info[9])) . '</b> siden du hadde under ' . game::format_num(player::HEALTH_MOVE_AUTO * 100) . ' % helse.';
             }
             break;
             // mistet/nedgradert våpen
         // mistet/nedgradert våpen
         case "weapon_lost":
             // syntax 1: weapon_id:weapon_name:bullets (num = 0)
             // syntax 2: weapon_id:weapon_name:bullets:new_weapon:new_training (num = 1)
             $info = explode(":", $note);
             $html = true;
             if ($num == 1) {
                 $melding = 'Våpentreningen falt under 25 % og ditt våpen <b>' . htmlspecialchars(urldecode($info[1])) . '</b>' . ($info[2] > 0 ? ' med <b>' . $info[2] . '</b> kuler' : '') . ' ble nedgradert til våpnet <b>' . htmlspecialchars(urldecode($info[3])) . '</b> med ' . game::format_num($info[4] * 100) . ' % våpentrening og 0 kuler.';
             } else {
                 $melding = 'Våpentreningen falt under 25 % og du mistet våpenet <b>' . htmlspecialchars(urldecode($info[1])) . '</b>' . ($info[2] > 0 ? ' og <b>' . $info[2] . '</b> kuler' : '') . '.';
             }
             break;
             // kastet ut av bomberom
         // kastet ut av bomberom
         case "bomberom_kicked":
             // syntax: up_id(som utfører handlingen):urlencode(ff_name):up_brom_expire(når vi egentlig skulle gå ut av bomberommet) num=ff_id
             $info = explode(":", $note);
             $html = true;
             $melding = 'Du ble kastet ut fra bomberommet <a href="' . ess::$s['relative_path'] . '/ff/?ff_id=' . $num . '">' . htmlspecialchars(urldecode($info[1])) . '</a>. Du skulle egentlig sittet til ' . ess::$b->date->get($info[2])->format() . '.';
             break;
             // plassert i bomberom
         // plassert i bomberom
         case "bomberom_set":
             // syntax: up_id(som utfører handlingen):urlencode(ff_name):up_brom_expire(hvor lenge vi er inne) num=ff_id
             $info = explode(":", $note);
             $html = true;
             $melding = '<user id="' . $info[0] . '" /> plasserte deg i bomberommet <a href="' . ess::$s['relative_path'] . '/ff/?ff_id=' . $num . '">' . htmlspecialchars(urldecode($info[1])) . '</a> til ' . ess::$b->date->get($info[2])->format() . '.';
             break;
             // fikk penger fra etterlyst for angrep
         // fikk penger fra etterlyst for angrep
         case "etterlyst_receive":
             // syntax: up_id(som ble angrepet):bool(instant?):bool(bare skadet?)
             $info = explode(":", $note);
             $html = true;
             $melding = '<user id="' . $info[0] . '" /> ' . (!empty($info[2]) ? 'ble skadet av ditt angrep' : 'døde etter ditt angrep') . ' og du mottok ' . game::format_cash($num) . ' som' . (!empty($info[2]) ? ' del av det' : '') . ' spilleren var etterlyst for.';
             break;
             // fikk tilbake penger fra etterlyst fordi spiller ble deaktivert
         // fikk tilbake penger fra etterlyst fordi spiller ble deaktivert
         case "etterlyst_deactivate":
             // syntax: up_id(som ble deaktivert)
             $html = true;
             $melding = '<user id="' . $note . '" /> ble deaktivert og du fikk tilbake ' . game::format_cash($num) . ' fra etterlyst som du hadde plassert på spilleren.';
             break;
             // lagt til på etterlyst
         // lagt til på etterlyst
         case "etterlyst_add":
             $melding = 'En spiller la til en dusør for deg på ' . game::format_cash($num) . '.';
             break;
             // kuleauksjon avsluttet uten bud
         // kuleauksjon avsluttet uten bud
         case "auksjon_kuler_no_bid":
             // syntax: a_id(auksjonen) num=antall kuler returnert
             $html = true;
             $melding = 'Ingen vant <a href="' . ess::$s['relative_path'] . '/auksjoner?a_id=' . $note . '">auksjonen</a> for kuler du la ut for salg og du fikk tilbake ' . $num . ' kuler.';
             break;
             // vinner kuleauksjon
         // vinner kuleauksjon
         case "auksjon_kuler_won":
             // syntax: a_id(auksjonen):amount(beløp man vant med) num=antall kuler
             $info = explode(":", $note);
             $html = true;
             $melding = 'Du vant <a href="' . ess::$s['relative_path'] . '/auksjoner?a_id=' . $info[0] . '">auksjonen</a> for kuler med ditt bud på ' . game::format_cash($info[1]) . ' og mottok ' . $num . ' kuler.';
             break;
             // mistet garasje
         // mistet garasje
         case "garage_lost":
             // syntax: urlencode(bydel) num=antal biler
             $html = true;
             $melding = 'Du mistet garasjen din på ' . htmlspecialchars(urldecode($note)) . ($num > 0 ? ' og ' . fwords("den ene bilen", "de %d bilene", $num) . ' som var i garasjen' : '') . '.';
             break;
             // FF-systemet
         // FF-systemet
         case "ff_invite":
             // ff_id:ff_name:stilling:parent
             $info = explode(":", $note, 4);
             $html = true;
             $melding = '<user id="' . $num . '" /> inviterte deg til <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a> for posisjonen <b>' . htmlspecialchars(urldecode($info[2])) . '</b>' . (!empty($info[3]) ? ' underordnet <user id="' . $info[3] . '" />' : '') . '.';
             break;
         case "ff_delinvite":
             // ff_id:ff_name
             $info = explode(":", $note, 2);
             $html = true;
             if ($num) {
                 $melding = '<user id="' . $num . '" /> fjernet din invitasjon til <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a>.';
             } else {
                 $melding = 'Din invitasjon til <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a> ble fjernet.';
             }
             break;
         case "ff_member_priority":
             // num = action_user_id
             // ff_id:ff_name:priority_old:priority_new:parent_old:parent_new
             $info = explode(":", $note);
             $html = true;
             if ($num) {
                 $melding = '<user id="' . $num . '" /> endret din posisjon i <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a> fra ' . htmlspecialchars(urldecode($info[2])) . (!empty($info[4]) ? ' underordnet <user id="' . $info[4] . '" />' : '') . ' til <b>' . htmlspecialchars(urldecode($info[3])) . '</b>' . (!empty($info[5]) ? ' underordnet <user id="' . $info[5] . '" />' : '') . '.';
             } else {
                 // anonym
                 $melding = 'Din posisjon i <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a> ble endret fra ' . htmlspecialchars(urldecode($info[2])) . (!empty($info[4]) ? ' underordnet <user id="' . $info[4] . '" />' : '') . ' til <b>' . htmlspecialchars(urldecode($info[3])) . '</b>' . (!empty($info[5]) ? ' underordnet <user id="' . $info[5] . '" />' : '') . '.';
             }
             break;
         case "ff_member_set_priority":
             // ff_id:ff_name:priority:parent_up_id
             $info = explode(":", $note);
             $html = true;
             $melding = 'Du ble satt som ' . htmlspecialchars(urldecode($info[2])) . (!empty($info[3]) ? ' underordnet <user id="' . $info[3] . '" />' : '') . ' i <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a>.';
             break;
         case "ff_member_parent":
             // num = action_user_id
             // ff_id:ff_name:parent_old:parent_new
             $info = explode(":", $note);
             $html = true;
             if ($num) {
                 $melding = '<user id="' . $num . '" /> endret din overordnede i <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a> fra <user id="' . $info[2] . '" /> til <user id="' . $info[3] . '" />.';
             } else {
                 // anonym
                 $melding = 'Din overordnede i <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a> ble endret fra <user id="' . $info[2] . '" /> til <user id="' . $info[3] . '" />.';
             }
             break;
         case "ff_kick":
             // ff_id:ff_name:note
             $info = explode(":", $note, 3);
             $html = true;
             $note = empty($info[2]) ? '' : ' Begrunnelse: ' . game::bb_to_html(urldecode($info[2]));
             $melding = '<user id="' . $num . '" /> kastet deg ut fra <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a>.' . $note;
             break;
         case "ff_dead":
             // refstring,name
             $info = explode(":", $note, 2);
             $html = true;
             $melding = ucfirst($info[0]) . ' <b>' . htmlspecialchars(urldecode($info[1])) . '</b> har blitt oppløst.';
             break;
         case "ff_dead_invited":
             // refstring,name
             $info = explode(":", $note, 2);
             $html = true;
             $melding = ucfirst($info[0]) . ' <b>' . htmlspecialchars(urldecode($info[1])) . '</b> som du var invitert til har blitt oppløst.';
             break;
         case "ff_diverse":
             $html = true;
             $melding = $note;
             break;
         case "ff_low_health":
             // ff_id:ff_name:stilling:parent
             $info = explode(":", $note, 4);
             $html = true;
             $melding = 'Du mistet posisjonen som <b>' . htmlspecialchars(urldecode($info[2])) . '</b>' . (!empty($info[3]) ? ' underordnet <user id="' . $info[3] . '" />' : '') . ' i <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a> grunnet for lav helse.';
             break;
         case "ff_takeover":
             // ff_id:ff_name_org:ff_name_new:ff_type_ref:ff_stilling
             $info = explode(":", $note, 5);
             $html = true;
             $melding = 'Ditt angrep førte til at ' . htmlspecialchars(urldecode($info[3])) . ' ' . htmlspecialchars(urldecode($info[1])) . ' ble stående uten ' . htmlspecialchars(urldecode($info[4])) . '. Du tok derfor over ' . htmlspecialchars(urldecode($info[3])) . ' som fikk navnet <a href="ff/?ff_id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[2])) . '</a>.';
             break;
             // forumtråd flyttet
         // forumtråd flyttet
         case "forum_topic_move":
             // ft_id, ft_title, fromname, toname, up_id(hvem gjorde det)
             $info = explode(":", $note);
             $html = true;
             $melding = 'Din forumtråd <a href="' . ess::$s['relative_path'] . '/forum/topic?id=' . $info[0] . '">' . htmlspecialchars(urldecode($info[1])) . '</a> ble flyttet fra ' . htmlspecialchars(urldecode($info[2])) . ' til ' . htmlspecialchars(urldecode($info[3])) . '.';
             break;
             // prestasjon oppnådd
         // prestasjon oppnådd
         case "achievement":
             // count(repetisjonsnummer), ac_name, prize
             // num: ac_id
             $info = explode(":", $note);
             $html = true;
             $rep = $info[0] > 1 ? ' for ' . $info[0] . '. gang' : '';
             $prize = !empty($info[2]) ? ' og mottok ' . $info[2] : '';
             $melding = 'Du oppnådde prestasjonen &laquo;' . htmlspecialchars(urldecode($info[1])) . "&raquo;" . $rep . $prize . '.';
             break;
             // hall of fame
         // hall of fame
         case "hall_of_fame":
             $html = true;
             $melding = 'Du ble den ' . $note . ' og havnet på <a href="' . ess::$s['rpath'] . '/hall_of_fame">Hall of Fame</a>!';
             break;
         default:
             $type = "Ukjent ({$type})";
             $melding = $note;
     }
     $melding = $html ? $melding : game::bb_to_html($melding);
     return $melding;
 }
Beispiel #16
0
					<dd onmouseover="handleClass(\'div.pr1\', \'div.pr2\', null, this)" onmouseout="handleClass(\'div.pr2\', \'div.pr1\', null, this)">
						<div class="hide pr1">' . game::timespan($player->data['up_created_time'], game::TIME_ABS | game::TIME_FULL) . '</div>
						<div class="pr2">' . ess::$b->date->get($player->data['up_created_time'])->format() . '</div>
					</dd>
					
					<dt>Sist aktiv</dt>
					<dd onmouseover="handleClass(\'div.psa1\', \'div.psa2\', null, this)"  onmouseout="handleClass(\'div.psa2\', \'div.psa1\', null, this)">
						<div class="hide psa1">' . ess::$b->date->get($player->data['up_last_online'])->format(date::FORMAT_SEC) . '</div>
						<div class="psa2">' . ($player->data['up_last_online'] ? game::timespan($player->data['up_last_online'], game::TIME_ABS | game::TIME_FULL) : 'Aldri') . '</div>
					</dd>
					
					<dt>Rank</dt>
					<dd>' . $player->getRank()->getName() . '</dd>
					
					<dt>Prestasjonspoeng</dt>
					<dd>' . game::format_num($player->data['up_achievements_points']) . '</dd>' . ($attacks == 0 ? '' : '
					
					<dt>Utført <b>' . $attacks . '</b> angrep, hvorav ' . fwords("<b>%d</b> spiller", "<b>%d</b> spillere", $player->data['up_attack_killed_num'] + $player->data['up_attack_bleed_num']) . ' har blitt drept og ' . fwords("<b>%d</b> spiller", "<b>%d</b> spillere", $player->data['up_attack_damaged_num'] - $player->data['up_attack_bleed_num']) . ' har blitt skadet.</dt>') . '
				</dl>
			</div>
			<div id="profileinfo_right">
				<dl class="dd_right">
					<dt>Pengenivå</dt>
					<dd><a href="' . ess::$s['rpath'] . '/node/27">' . game::cash_name($player->data['up_cash'] + $player->data['up_bank']) . '</a></dd>
					
					<dt>Pengerank</dt>
					<dd><a href="' . ess::$s['rpath'] . '/node/27">' . $pengerank . '</a></dd>
					
					<dd>&nbsp;</dd>
					
					<dt>Wanted nivå</dt>
Beispiel #17
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;
    }
Beispiel #18
0
    /**
     * Rankplassering siden kl 21
     */
    protected static function page_rank_pos()
    {
        // finn vår plassering for ranking siden forrige rankperiode startet
        $d = ess::$b->date->get();
        if ($d->format("H") < 21) {
            $d->modify("-1 day");
        }
        $d->setTime(21, 0, 0);
        $date_from = $d->format("U");
        $d->modify("+1 day");
        $date_to = $d->format("U");
        // hent statistikk
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT up_id, up_name, up_access_level, sum_uhi_points, up_points, up_last_online, up_profile_image_url, upr_rank_pos\n\t\t\tFROM\n\t\t\t\t(\n\t\t\t\t\tSELECT uhi_up_id, SUM(uhi_points) sum_uhi_points\n\t\t\t\t\tFROM users_hits\n\t\t\t\t\t\tJOIN users_players ON up_id = uhi_up_id AND (up_access_level != 0 OR up_deactivated_time < {$date_to}) AND up_access_level < " . ess::$g['access_noplay'] . "\n\t\t\t\t\tWHERE uhi_secs_hour >= {$date_from} AND uhi_secs_hour < {$date_to}\n\t\t\t\t\tGROUP BY uhi_up_id\n\t\t\t\t\tHAVING sum_uhi_points > 0\n\t\t\t\t\tORDER BY sum_uhi_points DESC\n\t\t\t\t\tLIMIT 5\n\t\t\t\t) ref,\n\t\t\t\tusers_players\n\t\t\t\tLEFT JOIN users_players_rank ON upr_up_id = up_id\n\t\t\tWHERE uhi_up_id = up_id");
        $players = array();
        $up_list = array();
        $in_list = false;
        $pos = null;
        while ($row = $result->fetch()) {
            $players[] = $row;
            $up_list[] = $row['up_id'];
            if ($row['up_id'] == page_min_side::$active_player->id) {
                $in_list = true;
            }
        }
        // er vi ikke i lista?
        if (!$in_list) {
            // hvor mange poeng har vi fått?
            $result = \Kofradia\DB::get()->query("\n\t\t\t\tSELECT SUM(uhi_points) sum_uhi_points\n\t\t\t\tFROM users_hits\n\t\t\t\tWHERE uhi_up_id = " . page_min_side::$active_player->id . " AND uhi_secs_hour >= {$date_from} AND uhi_secs_hour < {$date_to}");
            $points = $result->fetchColumn(0);
            if ($points > 0) {
                // finn plasseringen vår
                $result = \Kofradia\DB::get()->query("\n\t\t\t\t\tSELECT COUNT(uhi_up_id) FROM (\n\t\t\t\t\t\tSELECT uhi_up_id, SUM(uhi_points) sum_uhi_points\n\t\t\t\t\t\tFROM users_hits\n\t\t\t\t\t\t\tJOIN users_players ON up_id = uhi_up_id AND (up_access_level != 0 OR up_deactivated_time < {$date_to}) AND up_access_level < " . ess::$g['access_noplay'] . "\n\t\t\t\t\t\tWHERE uhi_secs_hour >= {$date_from} AND uhi_secs_hour < {$date_to}\n\t\t\t\t\t\tGROUP BY uhi_up_id\n\t\t\t\t\t\tHAVING sum_uhi_points > {$points}\n\t\t\t\t\t) ref");
                $pos = $result->fetchColumn(0) + 1;
            }
        }
        echo '
	<div class="bg1_c">
		<h1 class="bg1">Rankplassering siste periode<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<p>Statistikk gjelder fra kl 21.</p>';
        if (count($players) == 0) {
            echo '
			<p>Ingen har ranket i denne perioden.</p>';
        } else {
            echo '
			<ol>';
            foreach ($players as $row) {
                $me = $row['up_id'] == page_min_side::$active_player->id ? " (meg)" : "";
                echo '
				<li>' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . $me . '</li>';
            }
            echo '
			</ol>';
            if (!$in_list && !$pos) {
                echo '
			<p>Du har ikke ranket i perioden og har ingen plassering.</p>';
            } elseif ($pos) {
                echo '
			<p>Din plassering: ' . game::format_num($pos) . '</p>';
            }
        }
        echo '
		</div>
	</div>';
    }
Beispiel #19
0
    protected static function get_status_bars()
    {
        if (self::$locked) {
            return;
        }
        $bars = array();
        // helse
        $health = login::$user->player->get_health_percent();
        $bars[] = array('Helse', ($health == 100 ? '100' : game::format_num($health, 2)) . ' %', ess::$s['relative_path'] . '/min_side', $health < 20 ? 'levelcrit' : ($health < 50 ? 'levelwarn' : ''), 'upst_health', $health);
        // energi
        $energy = login::$user->player->get_energy_percent();
        $bars[] = array('Energi', ($energy == 100 ? '100' : game::format_num($energy, 2)) . ' %', ess::$s['relative_path'] . '/min_side', $energy < 20 ? 'levelcrit' : ($energy < 50 ? 'levelwarn' : ''), 'upst_energy', $energy);
        // beskyttelse
        $protection = login::$user->player->get_protection_percent();
        $bars[] = array('Beskyttelse', $protection === false ? 'Ingen' : ($protection == 100 ? '100' : game::format_num($protection, 2)) . ' %', ess::$s['relative_path'] . '/min_side', $protection !== false ? $protection < 20 ? 'levelcrit' : ($protection < 50 ? 'levelwarn' : '') : '', 'upst_protection', $protection);
        if (!login::$user->params->get("hide_progressbar_left")) {
            $rank_prosent = login::$user->player->rank['need_points'] == 0 ? login::$user->player->data['up_points'] / login::$user->player->rank['points'] * 100 : (login::$user->player->data['up_points'] - login::$user->player->rank['points']) / login::$user->player->rank['need_points'] * 100;
            $wl = login::$user->player->data['up_wanted_level'] / 10;
            // rank
            $bars[] = array('Poeng', game::format_num(login::$user->player->data['up_points']), ess::$s['relative_path'] . '/min_side', '', 'upst_rank', $rank_prosent);
            // wanted nivå
            $bars[] = array('Wanted nivå', ($wl == 0 ? '0' : game::format_num($wl, 1)) . ' %', ess::$s['relative_path'] . '/min_side', $wl > 80 ? 'levelwarn' : '', 'upst_wanted', $wl, 'Wanted nivå');
        }
        $data = '
			<div id="default_status">';
        $c = count($bars);
        $max = 100 - $c * 2 + 2;
        $width = floor($max / $c);
        $width_extra = $max - $width * $c;
        $i = 0;
        foreach ($bars as $bar) {
            /*
             * 0 => tekst
             * 1 => verdi
             * 2 => link
             * 3 => class
             * 4 => id
             * 5 => prosent 0-100
             * 6 => title-attr
             */
            // legge til ekstra bredde hvis det totalt sett ikke blir 100 %
            $w = $width;
            if ($width_extra-- > 0) {
                $w++;
            }
            $data .= '
				<a href="' . $bar[2] . '" class="def_up_st' . ($bar[3] ? ' ' . $bar[3] : '') . (++$i == $c ? ' last' : '') . '" id="' . $bar[4] . '" style="width: ' . $w . '%">
					<span class="def_upst_t">' . $bar[0] . '</span>
					<span class="def_upst_v">' . $bar[1] . '</span>
					<span class="def_upst_pw r4">
						<span class="def_upst_p r4" style="width: ' . min(100, round($bar[5])) . '%"></span>
					</span>
				</a>';
        }
        return $data . '
			</div>';
        /*
        			
        				<a href="'.ess::$s['relative_path'].'/min_side" class="def_up_st progressbar'.($health < 20 ? ' levelcrit' : ($health < 50 ? ' levelwarn' : '')).'" id="upst_health">
        					<span class="progress" style="width: '.min(100, round($health)).'%"><span>Helse: '.($health == 100 ? '100' : game::format_num($health, 2)).' %</span></span>
        				</a>
        				<a href="'.ess::$s['relative_path'].'/min_side" class="def_up_st progressbar def_up_st2'.($energy < 20 ? ' levelcrit' : ($energy < 50 ? ' levelwarn' : '')).'" id="upst_energy">
        					<span class="progress" style="width: '.min(100, round($energy)).'%"><span>Energi: '.($energy == 100 ? '100' : game::format_num($energy, 2)).' %</span></span>
        				</a>
        				<a href="'.ess::$s['relative_path'].'/min_side" class="def_up_st progressbar def_up_st3'.($protection !== false ? ($protection < 20 ? ' levelcrit' : ($protection < 50 ? ' levelwarn' : '')) : '').'" id="upst_protection">
        					<span class="progress" style="width: '.min(100, round($protection)).'%"><span>Beskyttelse: '.($protection === false ? 'Ingen' : ($protection == 100 ? '100' : game::format_num($protection, 2)) . " %").'</span></span>
        				</a>';
        			
        			if (!login::$user->params->get("hide_progressbar_left"))
        			{
        				$wl = login::$user->player->data['up_wanted_level']/10;
        				
        				// rankinfo
        				$rank_prosent = login::$user->player->rank['need_points'] == 0 ? login::$user->player->data['up_points'] / login::$user->player->rank['points'] * 100 : (login::$user->player->data['up_points']-login::$user->player->rank['points']) / login::$user->player->rank['need_points'] * 100;
        				
        				echo '
        				<a href="'.ess::$s['relative_path'].'/min_side" class="def_up_st progressbar def_up_st4" id="upst_rank">
        					<span class="progress" style="width: '.min(100, round($rank_prosent)).'%">
        						<span>Poeng: '.game::format_num(login::$user->player->data['up_points']).'</span>
        					</span>
        				</a>
        				<a href="'.ess::$s['relative_path'].'/min_side" class="def_up_st progressbar def_up_st5'.($wl > 80 ? ' levelwarn' : '').'" id="upst_wanted">
        					<span class="progress" style="width: '.round(min(100, $wl)).'%">
        						<span title="Wanted nivå">Wanted: '.($wl == 0 ? '0' : game::format_num($wl, 1)).' %</span>
        					</span>
        				</a>';
        			}
        		}*/
    }
Beispiel #20
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>';
    }
Beispiel #21
0
    /**
     * Vis alle drapsforsøk for en spesifikk spiller
     * @param player $up
     * @param bool $offer skal vi vise angrep mot spilleren?
     */
    protected function show_tries(player $up = null, $offer = null)
    {
        $alle = !$up;
        $egen = $up && $up->id == $this->up->id;
        if ($alle) {
            ess::$b->page->add_title("Alle drapsforsøk");
        } elseif (!$egen) {
            ess::$b->page->add_title("Drapsforsøk " . ($offer ? 'mot' : 'for') . " '{$up->data['up_name']}'");
        } else {
            ess::$b->page->add_title("Mine drapsforsøk");
        }
        echo '
<div class="bg1_c ' . ($alle ? 'large' : 'medium') . '">
	<h1 class="bg1">
		' . ($alle ? 'Alle drapsforsøk' : 'Drapsforsøk') . '
		<span class="left2"></span><span class="right2"></span>
	</h1>
	<p class="h_left"><a href="drap">&laquo; Tilbake</a></p>
	<div class="bg1">
		<p class="c">Dette er en oversikt som viser ' . ($alle ? 'alle drapsforsøk som er utført' : 'drapsforsøk ' . ($egen ? 'du har utført' : ($offer ? 'rettet mot spilleren ' . $up->profile_link() : 'spilleren ' . $up->profile_link() . ' har utført'))) . '.</p>';
        $pagei = new pagei(pagei::PER_PAGE, 20, pagei::ACTIVE_GET, "side");
        $result = $pagei->query("\n\t\t\tSELECT df_attack_up_id, df_defend_up_id, df_time, df_b_id, df_outcome, df_rankpoints, df_type, df_cash, df_hitlist, df_vitner, df_attack_ff_list, df_defend_ff_list\n\t\t\tFROM drapforsok\n\t\t\tWHERE " . ($alle ? "" : ($offer ? "df_defend_up_id" : "df_attack_up_id") . " = {$up->id} AND ") . "(df_type != 1 OR df_outcome != 0)\n\t\t\tORDER BY df_time DESC");
        if ($pagei->total == 0) {
            if ($alle) {
                echo '
		<p class="c"><b>Det er ingen som har prøvd å drepe noen enda.</b></p>';
            } elseif ($offer) {
                echo '
		<p class="c"><b>Ingen har angrepet ' . $up->profile_link() . ' enda.</b></p>';
            } else {
                echo '
		<p class="c"><b>' . ($egen ? 'Du' : $up->profile_link()) . ' har ikke prøvd å drepe noen enda.</b></p>';
            }
        } else {
            $ff_only_familier = isset($_GET['familier']);
            if ($ff_only_familier) {
                echo '
		<p class="c"><a href="' . game::address("drap", $_GET, array("familier")) . '">Vis også firmaer</a></p>';
            } else {
                echo '
		<p class="c"><a href="' . game::address("drap", $_GET, array(), array("familier" => true)) . '">Vis kun broderskap i listen</a></p>';
            }
            echo '
		<table class="table center' . ($pagei->pages == 1 ? ' tablemb' : '') . '">
			<thead>
				<tr>' . ($alle || $offer ? '
					<th>Angriper</th>' : '') . (!$offer ? '
					<th>Offer</th>' : '') . '
					<th>Tid/sted</th>
					<th>Omfang</th>
					<th>Poeng</th>
					<th>Penger / Etterlyst</th>
					<th>Vitner</th>
				</tr>
			</thead>
			<tbody>';
            ess::$b->page->add_css('.df_ff_list a { font-size: 10px; color: #777; text-decoration: none } .df_ff_list a:hover { text-decoration: underline }');
            $i = 0;
            while ($row = $result->fetch()) {
                // sett opp vitner
                $vitner = $row['df_time'] > 1278604000 ? '<span class="dark">Ingen</span>' : '<span class="dark">Ukjent</span>';
                if ($row['df_vitner']) {
                    $v = unserialize($row['df_vitner']);
                    $synlige = array();
                    $ukjente = 0;
                    foreach ($v as $r) {
                        if ($r[1] || access::has("mod")) {
                            $synlige[] = '<user id="' . $r[0] . '" />' . (!$r[1] ? ' <span title="Ble ikke oppdaget">(u)</span>' : '');
                        } else {
                            $ukjente++;
                        }
                    }
                    $vitner = implode("<br />", $synlige);
                    if ($ukjente > 0) {
                        if (count($synlige) > 0) {
                            $vitner .= '<br />';
                        }
                        $vitner .= fwords("%d ukjent", "%d ukjente", $ukjente);
                    }
                }
                if ($alle || $offer) {
                    // sett opp familier/firmaer (for angriper)
                    $ff_attack = '';
                    if ($row['df_attack_ff_list']) {
                        $v = unserialize($row['df_attack_ff_list']);
                        $ff_list = array();
                        // $ff[] = array($ffm->ff->data['ff_type'], $ffm->ff->id, $ffm->ff->type['refobj'], $ffm->ff->data['ff_name'], $ffm->data['ffm_priority'], $ffm->get_priority_name());
                        foreach ($v as $r) {
                            if ($ff_only_familier && $r[0] != 1) {
                                continue;
                            }
                            $ff_list[] = '<a href="' . ess::$s['relative_path'] . '/ff/?ff_id=' . $r[1] . '" title="' . htmlspecialchars(ucfirst($r[5])) . '">' . htmlspecialchars($r[3]) . '</a>';
                        }
                        $ff_attack = '<br /><span class="df_ff_list">' . implode("<br />", $ff_list) . '</span>';
                    }
                }
                // sett opp familier/firmaer
                $ff = '';
                if ($row['df_defend_ff_list']) {
                    $v = unserialize($row['df_defend_ff_list']);
                    $ff_list = array();
                    // $ff[] = array($ffm->ff->data['ff_type'], $ffm->ff->id, $ffm->ff->type['refobj'], $ffm->ff->data['ff_name'], $ffm->data['ffm_priority'], $ffm->get_priority_name());
                    foreach ($v as $r) {
                        if ($ff_only_familier && $r[0] != 1) {
                            continue;
                        }
                        $ff_list[] = '<a href="' . ess::$s['relative_path'] . '/ff/?ff_id=' . $r[1] . '" title="' . htmlspecialchars(ucfirst($r[5])) . '">' . htmlspecialchars($r[3]) . '</a>';
                    }
                    $ff = '<br /><span class="df_ff_list">' . implode("<br />", $ff_list) . '</span>';
                }
                // sett opp bydel
                $bydel = "Ukjent bydel";
                if (!empty($row['df_b_id']) && isset(game::$bydeler[$row['df_b_id']])) {
                    $bydel = htmlspecialchars(game::$bydeler[$row['df_b_id']]['name']);
                }
                echo '
				<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>' . ($alle || $offer ? '
					<td><user id="' . $row['df_attack_up_id'] . '" />' . $ff_attack . '</td>' : '') . (!$offer ? '
					<td><user id="' . $row['df_defend_up_id'] . '" />' . $ff . '</td>' : '') . '
					<td>' . ess::$b->date->get($row['df_time'])->format() . '<br />' . $bydel . '</td>
					<td>' . ($row['df_outcome'] == 1 ? '<b style="color: #FF0000">Døde</b>' : 'Ble skadet') . '<br />
						<span class="dark">' . ($row['df_type'] == 1 ? 'Utpressing' : 'Drapsforsøk') . '</span></td>
					<td class="r">' . game::format_num($row['df_rankpoints']) . '</td>
					<td class="r">' . game::format_cash($row['df_cash']) . ($row['df_hitlist'] > 0 ? '<br />' . game::format_cash($row['df_hitlist']) : '') . '</td>
					<td>' . $vitner . '</td>
				</tr>';
            }
            echo '
			</tbody>
		</table>';
            if ($pagei->pages > 1) {
                echo '
		<p class="c">' . $pagei->pagenumbers() . '</p>';
            }
        }
        echo '
	</div>
</div>';
    }