Esempio n. 1
0
    /**
     * Construct
     */
    public function __construct()
    {
        $this->ff = ff::get_ff();
        $this->ff->needaccess(2, "Du har ikke tilgang til denne banken.");
        $this->priority_write = $this->ff->get_bank_write_priority();
        if (false && !access::has("admin")) {
            echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">' . ucfirst($this->ff->type['type']) . 'bank stengt<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">
		<p>' . ucfirst($this->ff->type['type']) . 'banken er stengt for å unngå distribusjon av penger. Pengenivået vil bli justert til å være ihht. verdiene ved midnatt.</p>
	</div>
</div>';
            $this->ff->load_page();
        }
        redirect::store("banken?ff_id={$this->ff->id}");
        ess::$b->page->add_title("Banken");
        $this->nostat = access::is_nostat() && login::$user->player->id != 1;
        // kontroller at vi har bankkonto
        if (!login::$user->player->user->data['u_bank_auth']) {
            ess::$b->page->add_message("Banken for {$this->ff->type['refobj']} benytter seg av passordet i din vanlige bank. For å få tilgang til den må du først opprette et passord. Etter du har opprettet et passord kan du gå tilbake til banken til {$this->ff->type['refobj']}.");
            redirect::handle("banken", redirect::ROOT);
        }
        // kontroller at vi er logget inn i banken
        $this->auth_verify();
        // gi/fjerne tilgang for medeier?
        if ((isset($_POST['pri2_wt']) || isset($_POST['pri2_wf'])) && validate_sid()) {
            $this->pri2_access();
        }
        // vise statistikk
        if (isset($_GET['stats'])) {
            $this->stats();
        }
        // sette inn penger?
        if (isset($_POST['bank_inn']) && !$this->nostat && $this->ff->access($this->priority_write)) {
            $this->sett_inn();
        }
        // ta ut penger
        if (isset($_POST['bank_ut']) && !$this->nostat && $this->ff->access($this->priority_write)) {
            $this->ta_ut();
        }
        // vis banken
        $this->show();
        $this->ff->load_page();
    }
Esempio n. 2
0
 /**
  * Get criterias for player match
  *
  * @param int Cash to retrieve
  * @return array(string statement, array prepared_data)
  */
 protected function getPlayersCriterias($cash)
 {
     $p = array();
     // players to ignore
     $up_ignore = $this->getFFPlayers();
     $up_ignore[] = $this->ut->up->id;
     // limit by time online
     $time_limit = time() - 604800 * 2;
     // ranklimits
     $ranks = $this->getRankLimits();
     // criterias for finding player
     $where = "up_access_level != 0";
     $where .= " AND up_last_online >= ?";
     $p[] = $time_limit;
     $where .= " AND up_b_id = ?";
     $p[] = $this->ut->up->data['up_b_id'];
     $where .= " AND up_fengsel_time < ?";
     $p[] = time();
     $where .= " AND up_brom_expire < ?";
     $p[] = time();
     $where .= " AND up_points >= ?";
     $p[] = $ranks[0]->points;
     // upper rank limit
     if ($ranks[1]) {
         $where .= " AND up_points < ?";
         $p[] = $ranks[1]->points;
     }
     if ($this->result->success) {
         $where .= " AND (up_cash >= ? OR up_bank >= ?)";
         $p[] = $cash;
         $p[] = $cash;
     } else {
         $where .= " AND up_cash < {$cash}";
     }
     $where .= " AND up_id NOT IN (" . implode(",", $up_ignore) . ")";
     if (MAIN_SERVER) {
         $where .= \access::is_nostat() ? " AND up_access_level >= " . \ess::$g['access_noplay'] : " AND up_access_level < " . \ess::$g['access_noplay'];
     }
     return array($where, $p);
 }
Esempio n. 3
0
	});');
}
// loggfør visning
if (!login::$logged_in) {
    putlog("PROFILVIS", "%c6%bVIS-PROFIL:%b%c Ikke-innlogget-person viste profilen til %u{$player->data['up_name']}%u (up_id: " . $player->id . ")");
} elseif (login::$user->player->id != $player->id) {
    putlog("PROFILVIS", "%c6%bVIS-PROFIL:%b%c %u" . login::$user->player->data['up_name'] . "%u viste profilen til %u{$player->data['up_name']}%u (up_id: " . $player->id . ")");
}
// legg til som besøkende til denne profilen
if (!login::$logged_in || !access::is_nostat() && login::$user->id != $player->data['up_u_id']) {
    // anonym
    if (!login::$logged_in) {
        $siste = $player->data['up_profile_anon_time'];
        $player->data['up_profile_anon_time'] = time();
        \Kofradia\DB::get()->exec("UPDATE users_players SET up_profile_anon_time = {$player->data['up_profile_anon_time']} WHERE up_id = {$player->id}");
    } elseif (!access::is_nostat() && login::$user->id != $player->data['up_u_id']) {
        // når besøkte vi profilen sist?
        $siste = 0;
        $result = \Kofradia\DB::get()->query("SELECT time FROM users_views WHERE uv_up_id = {$player->id} AND uv_visitor_up_id = " . login::$user->player->id);
        if ($result->rowCount()) {
            $siste = $result->fetchColumn(0);
        }
        \Kofradia\DB::get()->exec("\n\t\t\tINSERT INTO users_views SET uv_up_id = {$player->id}, uv_visitor_up_id = " . login::$user->player->id . ", time = " . time() . "\n\t\t\tON DUPLICATE KEY UPDATE time = " . time());
    }
    // oppdater antall visninger -- kun hvis det er en annen bruker som viser profilen
    // oppdater kun hvis det har gått mer enn 90 sekunder siden forrige visning (30 sekunder for anonyme)
    if ($siste + (login::$logged_in ? 90 : 30) < time()) {
        \Kofradia\DB::get()->exec("UPDATE users_players SET up_profile_hits = up_profile_hits + 1 WHERE up_id = {$player->id}");
        $player->data['up_profile_hits']++;
    }
}
Esempio n. 4
0
    /**
     * Vise publiserte utgivelser
     */
    protected function published()
    {
        ess::$b->page->add_title("Utgivelser");
        // hent publiserte utvivelser
        $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 10);
        $ffnp_q = login::$logged_in ? "ffnp_ffn_id = ffn_id AND ffnp_up_id = " . login::$user->player->id : "FALSE";
        $result = $pagei->query("SELECT ffn_id, ffn_published_time, ffn_cost, ffn_title, ffn_sold, ffn_description, ffnp_time FROM ff_newspapers LEFT JOIN ff_newspapers_payments ON {$ffnp_q} WHERE ffn_ff_id = {$this->ff->id} AND ffn_published != 0 ORDER BY ffn_published_time DESC");
        echo '
<p class="c">Utgivelser</p>';
        // ingen publiserte utgivelser?
        if ($result->rowCount() == 0) {
            echo '
<p class="c">Ingen utgivelser er publisert.</p>';
        } else {
            echo '
<p class="c">' . $pagei->total . ' utgivelse' . ($pagei->total == 1 ? '' : 'r') . ' er publisert:</p>';
            #$i = $pagei->total - ($pagei->per_page*($pagei->active-1));
            while ($row = $result->fetch()) {
                echo '
<div class="section center w200">
	<h2><a href="avis?ff_id=' . $this->ff->id . '&amp;ffn=' . $row['ffn_id'] . '">' . htmlspecialchars($row['ffn_title']) . '</a></h2>
	<dl class="dd_right">
		<dt>Publisert</dt>
		<dd>' . ess::$b->date->get($row['ffn_published_time'])->format() . '</dd>
		<dt>Solgte utgivelser</dt>
		<dd>' . game::format_number($row['ffn_sold']) . '</dd>
		<dt>Pris</dt>
		<dd>' . game::format_cash($row['ffn_cost']) . '</dd>
		<dt>Kjøpt?</dt>
		<dd>' . ($row['ffnp_time'] ? '<a href="avis?ff_id=' . $this->ff->id . '&amp;ffn=' . $row['ffn_id'] . '">Ja</a> (' . ess::$b->date->get($row['ffnp_time'])->format() . ')' : 'Nei [<a href="avis?ff_id=' . $this->ff->id . '&amp;ffn=' . $row['ffn_id'] . '">Kjøp</a>]') . (access::is_nostat() ? ' (nostat)' : '') . '</dd>
	</dl>
	<div class="p">' . $this->ff->format_description($row['ffn_description']) . '</div>
</div>';
                #$i--;
            }
            // flere sider?
            if ($pagei->pages > 1) {
                echo '
<p class="c">Navigasjon: ' . $pagei->pagenumbers() . '</p>';
            }
        }
    }
Esempio n. 5
0
    /**
     * Vis side med kart
     */
    public function show_full_page()
    {
        global $__server;
        // hent familierangering
        $ff_list = ff::get_fam_points_rank();
        // deaktiver høyre side
        //define("DISABLE_RIGHT_COL", true);
        ess::$b->page->add_css('
#default_main { overflow: visible }');
        ess::$b->page->add_js_domready('
	sm_scripts.load_hm();
	window.HM.addEvent("f-changed", function(data) {
		//$$(".bydeler_filter a").removeClass("active");
		$$(".bydeler_ressurs").setStyle("display", "none");
		$$(".bydeler_ressurs_"+data).setStyle("display", "block");
		//$("f_"+data).addClass("active");
	});
	window.HM.addEvent("f-removed", function() {
		//$$(".bydeler_filter a").removeClass("active");
		//$("f_").addClass("active");
		$$(".bydeler_ressurs").setStyle("display", "block");
	});
	window.HM.addEvent("b-added", function() {
		//$$(".bydeler_alt a").removeClass("active");
		//$("v_b").addClass("active");
		$$(".bydeler_br").setStyle("display", "none");
		$$(".bydeler_steder").setStyle("display", "block");
	});
	window.HM.addEvent("b-removed", function() {
		//$$(".bydeler_alt a").removeClass("active");
		//$("v_").addClass("active");
		$$(".bydeler_br").setStyle("display", "block");
		$$(".bydeler_steder").setStyle("display", "none");
	});
	
	$$(".bydeler_steder").setStyle("display", "none");
	$$(".bydeler_alt a").addEvent("click", function(e)
	{
		window.HM.remove("f");
		window.HM.set("b", "");
		e.stop();
	});
	
	$$(".bydeler_filter a").addEvent("click", function(e)
	{
		window.HM.remove("b");
		if (this.get("id") == "f_") window.HM.remove("f");
		else window.HM.set("f", this.get("id").substring(2));
		e.stop();
	});
	
	window.HM.recheck();
');
        // sett opp alle FF og sorter dem i y-retning
        $data = array();
        $pos_x = array();
        $pos_y = array();
        foreach ($this->bydeler as $id => $bydel) {
            if ($id == 0) {
                continue;
            }
            foreach ($bydel['ff'] as $row) {
                $pos_x[] = $row['br_pos_x'];
                $pos_y[] = $row['br_pos_y'];
                $type = ff::$types[$row['ff_type']];
                // familie
                if ($row['ff_type'] == 1) {
                    $eier = count($row['eier']) == 0 ? 'Ingen leder av broderskapet' : 'Styres av ' . self::list_players($row['eier']);
                    $class = "bydeler_ressurs_familie";
                    // antall poeng
                    if (isset($ff_list[$row['ff_id']]) && $ff_list[$row['ff_id']]->data['ff_is_crew'] == 0) {
                        $eier .= '<br />' . game::format_num($ff_list[$row['ff_id']]->data['ff_points_sum']) . ' poeng';
                    }
                } else {
                    if ($type['type'] == "bomberom") {
                        $eier = count($row['eier']) == 0 ? 'Ingen styrer bomberommet' : 'Styres av ' . self::list_players($row['eier']);
                    } else {
                        $eier = count($row['eier']) == 0 ? 'Ingen eier av firmaet' : 'Eies av ' . self::list_players($row['eier']);
                    }
                    $class = "bydeler_ressurs_firma bydeler_ressurs_{$type['type']}firma";
                }
                $data[] = '
		<a href="' . $__server['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '" class="bydeler_ressurs ' . $class . '" style="left: ' . $row['br_pos_x'] . '%; top: ' . $row['br_pos_y'] . '%">
			<img class="bydeler_ressurs_t" src="' . htmlspecialchars($type['bydeler_graphic']) . '" alt="' . htmlspecialchars($type['bydeler_alt_pre']) . htmlspecialchars($row['ff_name']) . '" />
			<span class="bydeler_ressurs_tekst">
				' . htmlspecialchars($row['ff_name']) . '<span class="bydeler_owner"><br />
				' . $eier . '</span>
			</span>
			<img class="bydeler_ressurs_graphic" src="' . htmlspecialchars(ff::get_logo_path_static($row['ff_id'], $row['ff_logo_path'])) . '" alt="" />
		</a>';
            }
        }
        array_multisort($pos_y, $pos_x, $data);
        $bydeler_0 = $this->bydeler[0];
        unset($this->bydeler[0]);
        // sorter bydelene i y-retning
        $bydeler_x = array();
        $bydeler_y = array();
        foreach ($this->bydeler as $id => $bydel) {
            $bydeler_x[] = $bydel['bydel_x'];
            $bydeler_y[] = $bydel['bydel_y'];
        }
        array_multisort($bydeler_x, $bydeler_y, $this->bydeler);
        // invitasjoner til FF
        if (count($this->ff_invites) > 0) {
            echo '
<div class="bg1_c small">
	<h1 class="bg1">Invitasjoner<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">';
            foreach ($this->ff_invites as $row) {
                $type = ff::$types[$row['ff_type']];
                echo '
		<p>Du er invitert til ' . $type['refobj'] . ' <a href="' . $__server['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '">' . htmlspecialchars($row['ff_name']) . '</a> som ' . $type['priority'][$row['ffm_priority']] . ' (' . ess::$b->date->get($row['ffm_date_join'])->format(date::FORMAT_NOTIME) . ') - <a href="' . $__server['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '">Godta/avslå</a></p>';
            }
            echo '
	</div>
</div>';
        }
        if (count($this->fff) > 0) {
            echo '
<div class="bg1_c medium bydeler_br bydeler_ressurs bydeler_ressurs_familie">
	<h1 class="bg1">Konkurranse om å danne broderskap<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<table class="table center tablem">
			<thead>
				<tr>
					<th>Avsluttes</th>
					<th>Gjenstår</th>
					<th>Antall broderskap</th>
					<th>Gjenstående broderskap</th>
					<th>&nbsp;</th>
				</tr>
			</thead>
			<tbody class="r">';
            $i = 0;
            $free = 0;
            foreach ($this->fff as $row) {
                if ($row['ff_count'] < ff::MAX_FFF_FF_COUNT) {
                    $free += ff::MAX_FFF_FF_COUNT - $row['ff_count'];
                }
                echo '
				<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
					<td>' . ess::$b->date->get($row['fff_time_expire'])->format(date::FORMAT_SEC) . '</td>
					<td>' . game::timespan(max(time(), $row['fff_time_expire']), game::TIME_ABS) . '</td>
					<td>' . $row['ff_count'] . '</td>
					<td>' . $row['ff_count_active'] . '</td>
					<td><a href="' . $__server['relative_path'] . '/ff/?fff_id=' . $row['fff_id'] . '">Vis &raquo;</a></td>
				</tr>';
            }
            $create_link = login::$logged_in ? $this->up->rank['number'] < ff::$types[1]['priority_rank'][1] ? ' - Du har ikke høy nok rank til å opprette et broderskap' : ' - Du har høy nok rank - <a href="' . $__server['relative_path'] . '/ff/?create">Opprett broderskap &raquo;</a>' : '';
            echo '
			</tbody>
		</table>' . ($free > 0 ? '
		<p class="c" style="margin-top: 0">Det er ' . $free . ' ' . fword("ledig konkurranseplass", "ledige konkurranseplasser", $free) . $create_link . '</p>' : '
		<p class="c" style="margin-top: 0">Ingen ledige konkurranseplasser.</p>') . '
	</div>
</div>';
        }
        // topp rangerte familier
        if (count($ff_list) > 0) {
            echo '
<div class="bg1_c xxsmall bydeler_br bydeler_ressurs bydeler_ressurs_familie">
	<h1 class="bg1">Topp rangerte broderskap<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">
		<dl class="dd_right">';
            $i = 0;
            foreach ($ff_list as $ff) {
                $title = "For rank til medlemmer: " . $ff->data['ff_points_up'] . " - For firma til medlemmer: " . $ff->data['ff_points_ff'] . " - For drap: " . $ff->data['ff_points_kill'];
                echo '
			<dt><a href="' . ess::$s['rpath'] . '/ff/?ff_id=' . $ff->id . '">' . htmlspecialchars($ff->data['ff_name']) . '</a></dt>
			<dd title="' . $title . '">' . game::format_num($ff->data['ff_points_sum']) . ' poeng</dd>';
                // vis kun 3 beste familiene
                if (++$i == 3) {
                    break;
                }
            }
            echo '
		</dl>
		<p class="c"><a href="' . ess::$s['rpath'] . '/node/19">Poenginformasjon</a></p>
	</div>
</div>';
        }
        kf_menu::$data['bydeler_menu'] = true;
        echo '
<h1 class="bydeler">Bydeler</h1>
<div class="bydeler">
	<div class="bydeler_kart bydeler_br">
		<img src="' . STATIC_LINK . '/themes/kofradia/drammen_stor.gif" class="bydeler_bg" />
		' . implode('', $data) . '
	</div>';
        // har vi noen FF som ikke er plassert?
        if ($bydeler_0['active']) {
            echo '
	<div class="bydeler_uplassert bydeler_br">';
            foreach ($bydeler_0['ff'] as $row) {
                $type = ff::$types[$row['ff_type']];
                // familie
                if ($row['ff_type'] == 1) {
                    $eier = count($row['eier']) == 0 ? 'Ingen leder av broderskapet' : 'Styres av ' . self::list_players($row['eier']);
                    $class = "bydeler_ressurs_familie";
                } else {
                    if ($type['type'] == "bomberom") {
                        $eier = count($row['eier']) == 0 ? 'Ingen styrer bomberommet' : 'Styres av ' . self::list_players($row['eier']);
                    } else {
                        $eier = count($row['eier']) == 0 ? 'Ingen eier av firmaet' : 'Eies av ' . self::list_players($row['eier']);
                    }
                    $class = "bydeler_ressurs_firma bydeler_ressurs_{$type['type']}firma";
                }
                echo '
		<div class="bydeler_uplassert_boks">
			<a href="' . $__server['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '" class="bydeler_ressurs ' . $class . '">
				<img class="bydeler_ressurs_graphic" src="' . htmlspecialchars(ff::get_logo_path_static($row['ff_id'], $row['ff_logo_path'])) . '" alt="" />
				<span class="bydeler_ressurs_tekst">
					' . htmlspecialchars($row['ff_name']) . '<span class="bydeler_owner"><br />
					' . $eier . '</span>
				</span>
				<img class="bydeler_ressurs_t" src="' . htmlspecialchars($type['bydeler_graphic']) . '" alt="' . htmlspecialchars($type['bydeler_alt_pre']) . htmlspecialchars($row['ff_name']) . '" />
			</a>
		</div>';
            }
            echo '
	</div>';
        }
        echo '
	<div class="bydeler_kart bydeler_steder">
		<img src="' . STATIC_LINK . '/themes/kofradia/drammen_stor.gif" class="bydeler_bg" />';
        foreach ($this->bydeler as $bydel) {
            if ($bydel['active'] == 0) {
                continue;
            }
            if ($this->up) {
                $distance = self::calc_travel_distance($this->up->bydel, $bydel);
                $taxi_price = round($distance * self::TAXI_PRICE_KM);
                $taxi_points = round($distance * self::TAXI_POINTS_KM * $this->up->rank['number']);
            }
            echo '
		<div class="map_unit' . ($this->up && $this->up->bydel['id'] == $bydel['id'] ? ' map_active' : '') . '" style="left: ' . $bydel['bydel_x'] . '%; top: ' . $bydel['bydel_y'] . '%" id="map_link_' . $bydel['id'] . '">
			<div class="map_title">
				<p class="map_link"><b><b><b>' . htmlspecialchars($bydel['name']) . '</b></b></b></p>
				<div class="bydeler_sted">
					<div class="bydeler_sted_info">
						<dl class="dd_right">
							<dt>Spillere</dt>
							<dd>' . game::format_number($bydel['num_players']) . '</dd>
							<dt>Penger i omløp</dt>
							<dd>' . game::format_cash($bydel['sum_money']) . '</dd>
						</dl>';
            if (!$this->up) {
            } elseif ($this->up->bydel['id'] == $bydel['id']) {
                echo '
						<p>Du befinner deg i denne bydelen.</p>';
            } elseif ($this->up->fengsel_check()) {
                echo '
						<p>Du er i fengsel og kan ikke reise.</p>';
            } elseif ($this->up->bomberom_check()) {
                echo '
						<p>Du er i bomberom og kan ikke reise.</p>';
            } else {
                echo '
						<div class="bydeler_reise c">
							<form action="bydeler" method="post">
								<input type="hidden" name="reise" value="' . htmlspecialchars($bydel['name']) . '" />';
                // taxi
                if (!$this->up->energy_check(self::TAXI_ENERGY * 1.3)) {
                    echo '
								<p>Du har ikke nok energi til å ta taxi hit.</p>';
                } elseif ($this->up->data['up_points'] < $taxi_points * 2) {
                    echo '
								<p>Du har ikke høy nok rank til å ta taxi hit.</p>';
                } else {
                    echo '
								<p>' . show_sbutton("Ta taxi (" . game::format_cash($taxi_price) . ", " . game::format_number(round($taxi_points)) . " poeng)", 'name="taxi"') . '</p>';
                }
                // gta
                if ($this->gta_count == 0) {
                    echo '
								<p>Du har ingen biler i bydelen du oppholder deg i for å reise med.</p>';
                } elseif (!$this->gta_garage[$bydel['id']]['garage']) {
                    echo '
								<p>Det er ingen garasje i denne bydelen.</p>';
                } elseif ($this->gta_garage[$bydel['id']]['garage_free'] == 0) {
                    echo '
								<p>Det er ingen ledige plasser i garasjen i denne bydelen.</p>';
                } else {
                    echo '
								<p>' . show_sbutton("Kjør egen bil", 'name="gta"') . '</p>';
                }
                // teleportere
                if (access::is_nostat()) {
                    echo '
								<p>' . show_sbutton("Teleporter hit (nostat)", 'name="teleporter"') . '</p>';
                }
                echo '
							</form>
						</div>';
            }
            echo '
					</div>
				</div>
			</div>
		</div>';
        }
        echo '
	</div>';
        echo '
</div>';
        ess::$b->page->load();
    }
Esempio n. 6
0
    /**
     * Vis fengsel
     */
    protected function show()
    {
        // er vi i fengsel nå?
        if ($wait = $this->up->fengsel_wait()) {
            ess::$b->page->add_js_domready('$("fengsel_dusor").focus();');
            echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Du er i fengsel<span class="left"></span><span class="right"></span></h1>
	<p class="h_right"><a href="node/16">Hjelp</a></p>
	<div class="bg1">
		<p>Du befinner deg for øyeblikket i fengsel og slipper ut om ' . game::counter($wait, true) . '.</p>' . (!$this->up->is_nostat() ? '
		<form action="" method="post">
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<input type="hidden" name="expire" value="' . $this->up->data['up_fengsel_time'] . '" />
			<dl class="dd_right">
				<dt>Dusør for å bryte deg ut</dt>
				<dd><input type="text" class="styled w80" name="amount" id="fengsel_dusor" value="' . game::format_cash($this->up->data['up_fengsel_dusor']) . '" /></dd>
			</dl>
			<p class="c">' . show_sbutton($this->up->data['up_fengsel_dusor'] > 0 ? "Endre dusør" : "Sett dusør", 'name="dusor"') . '</p>
			<p class="c">Spilleren som bryter ut mottar kun ' . self::DUSOR_PROFIT * 100 . ' % av dusøren.</p>
		</form>' : '') . '
	</div>
</div>';
        }
        // sortering
        $sort = new sorts("sort");
        $sort->append("asc", "Spiller", "up_name");
        $sort->append("desc", "Spiller", "up_name DESC");
        $sort->append("asc", "Wanted nivå", "up_wanted_level, up_fengsel_time DESC");
        $sort->append("desc", "Wanted nivå", "up_wanted_level DESC, up_fengsel_time DESC");
        $sort->append("asc", "Tid igjen", "up_fengsel_time");
        $sort->append("desc", "Tid igjen", "up_fengsel_time DESC");
        $sort->set_active(requestval("sort"), 5);
        // hent folk i fengsel
        $sort_info = $sort->active();
        $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 15);
        $result = $pagei->query("\n\t\t\tSELECT up_id, up_name, up_access_level, up_fengsel_time, up_fengsel_num, up_fengsel_dusor, ROUND(up_fengsel_dusor * " . self::DUSOR_PROFIT . ") up_fengsel_dusor_get, up_wanted_level\n\t\t\tFROM users_players\n\t\t\tWHERE up_fengsel_time > " . time() . " AND up_access_level != 0\n\t\t\tORDER BY {$sort_info['params']}");
        $num = $result->rowCount();
        echo '
<div class="bg1_c ' . ($num == 0 ? 'xsmall' : 'xlarge') . '">
	<h1 class="bg1">Fengsel<span class="left"></span><span class="right"></span></h1>
	<p class="h_right"><a href="node/16">Hjelp</a></p>
	<div class="bg1">
		<form action="" method="post">
			<p class="c dark">Ditt wanted nivå er på ' . game::format_number($this->up->data['up_wanted_level'] / 10, 1) . ' %.</p>';
        if ($num == 0) {
            echo '
			<p class="c dark">Ingen er i fengselet for øyeblikket.</p>
			<p class="c"><a href="' . htmlspecialchars(game::address("fengsel", $_GET)) . '" class="button">Oppdater</a></p>';
        } else {
            echo '
			<table class="table center" width="100%">
				<thead>
					<tr>
						<th>Spiller ' . $sort->show_link(0, 1) . '</th>
						<th>Wanted<br />nivå ' . $sort->show_link(2, 3) . '</th>
						<th>Utbrytning<br />sannsynlighet</th>
						<th>Ca. poeng</th>
						<th>Dusør</th>
						<th>Tid igjen ' . $sort->show_link(4, 5) . '</th>
					</tr>
				</thead>
				<tbody>';
            $i = 0;
            while ($row = $result->fetch()) {
                $prefix = "";
                $attr = new attr("class");
                if (++$i % 2 == 0) {
                    $attr->add("color");
                }
                if (!$this->up->fengsel_check()) {
                    $attr->add("box_handle");
                    $prefix = '<input type="radio" name="up_id" value="' . $row['up_id'] . '_' . $row['up_fengsel_time'] . '_' . $row['up_fengsel_dusor'] . '" /> ';
                }
                $time = $row['up_fengsel_time'] - time();
                $prob = self::calc_prob($time, $row['up_wanted_level'] / 10);
                $points = self::calc_points($prob);
                echo '
					<tr' . $attr->build() . '>
						<td>' . $prefix . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</td>
						<td class="c">' . game::format_number($row['up_wanted_level'] / 10, 1) . ' %</td>
						<td class="c">' . game::format_number($prob, 1) . ' %</td>
						<td class="c">' . game::format_num($points) . '</td>
						<td class="r nowrap">' . game::format_cash($row['up_fengsel_dusor_get']) . '</td>
						<td class="r">' . game::counter($time) . '</td>
					</tr>';
            }
            echo '
				</tbody>
			</table>
			<p class="c">' . (($wait = $this->up->fengsel_wait()) == 0 ? '
				' . show_sbutton("Bryt ut", 'name="brytut"') : '
				Du er i fengsel og slipper ut om ' . game::counter($wait, true) . '.
			</p>
			<p class="c">') . '
				<a href="' . htmlspecialchars(game::address("fengsel", $_GET)) . '" class="button">Oppdater</a>
			</p>';
            // flere sider?
            if ($pagei->pages > 1) {
                echo '
			<div class="hr"></div>
			<p class="c">
				' . $pagei->pagenumbers() . '
			</p>';
            }
        }
        echo '
		</form>
	</div>
</div>';
        // testing
        if (!MAIN_SERVER || access::is_nostat() && access::has("mod")) {
            echo '
<div class="bg1_c xxsmall bg1_padding">
	<h1 class="bg1">' . (MAIN_SERVER ? 'No-stat' : 'Testing') . '<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">
		<form action="" method="post">' . ($this->up->fengsel_check() ? '
			<p class="c">' . show_sbutton("Gå ut av fengsel", 'name="remove"') . '</p>' : '
			<dl class="dd_right dl_2x">
				<dt>Tid</dt>
				<dd><input type="text" name="time" value="' . htmlspecialchars(postval("time", 20)) . '" class="styled w40" /> sekunder</dd>
			</dl>
			<p class="c">' . show_sbutton("Gå inn i fensgel") . '</p>') . '
		</form>
	</div>
</div>';
        }
    }
Esempio n. 7
0
    protected static function page_default()
    {
        global $_lang;
        $mod = access::has("mod");
        // 	fødselsdato
        $birth = explode("-", page_min_side::$active_user->data['u_birth']);
        // alder
        $date = ess::$b->date->get();
        $n_day = $date->format("j");
        $n_month = $date->format("n");
        $n_year = $date->format("Y");
        if (!empty(page_min_side::$active_user->data['u_birth'])) {
            $age = $n_year - $birth[0] - ($n_month < $birth[1] || $birth[1] == $n_month && $n_day < $birth[2] ? 1 : 0);
        }
        echo '
	<div class="col2_w">
		<div class="col_w left">
			<div class="col">
				<div class="bg1_c">
					<h1 class="bg1">Basisinformasjon<span class="left2"></span><span class="right2"></span></h1>
					<div class="bg1">
						<dl class="dd_right">
							<dt>Brukerens ID</dt>
							<dd>#' . page_min_side::$active_user->id . '</dd>
							<dt>Opprettet</dt>
							<dd>' . ess::$b->date->get(page_min_side::$active_user->data['u_created_time'])->format() . '</dd>' . (page_min_side::$active_user->id != login::$user->id ? '
							<dt>Sist pålogget</dt>
							<dd>' . ess::$b->date->get(page_min_side::$active_user->data['u_online_time'])->format() . '</dd>' : '') . '
							<dt>E-postadresse</dt>
							<dd>' . (page_min_side::$active_own || access::has("mod") ? '<a href="' . htmlspecialchars(page_min_side::addr("set", "b=email")) . '" class="user_edit_box" rel="email">' . htmlspecialchars(page_min_side::$active_user->data['u_email']) . '</a>' . ($mod ? ' (<a href="admin/brukere/finn?email=' . urlencode(page_min_side::$active_user->data['u_email']) . '">søk</a>)' : '') : htmlspecialchars(page_min_side::$active_user->data['u_email'])) . '</dd>
							<dt>Fødselsdato</dt>
							<dd>' . (access::has("mod") ? '<a href="' . htmlspecialchars(page_min_side::addr("crew", "b=birth")) . '">' : '') . (empty(page_min_side::$active_user->data['u_birth']) || page_min_side::$active_user->data['u_birth'] == "0000-00-00" ? 'Ukjent' : intval($birth[2]) . ". " . $_lang['months'][intval($birth[1])] . " " . $birth[0] . ' (' . $age . ' år)') . (access::has("mod") ? '</a>' : '') . '</dd>' . (!empty(page_min_side::$active_user->data['u_phone']) || access::has("mod") ? '
							<dt>Mobilnummer</dt>
							<dd>' . (access::has("mod") ? '<a href="' . htmlspecialchars(page_min_side::addr("crew", "b=phone")) . '" title="Endre nummer">' : '') . (empty(page_min_side::$active_user->data['u_phone']) ? 'Ikke registrert' : htmlspecialchars(page_min_side::$active_user->data['u_phone'])) . (access::has("mod") ? '</a>' : '') . '</dd>' : '') . '
							<dt>IP-adresse registrert med</dt>' . (empty(page_min_side::$active_user->data['u_created_ip']) ? '
							<dd class="dark">Ukjent</dd>' : '
							<dd>' . ($mod ? '<a href="admin/brukere/finn?ip=' . urlencode(page_min_side::$active_user->data['u_created_ip']) . '">' . htmlspecialchars(page_min_side::$active_user->data['u_created_ip']) . '</a>' : htmlspecialchars(page_min_side::$active_user->data['u_created_ip'])) . '</dd>') . '
							<dt>Nåværende IP-adresse</dt>
							<dd>' . ($mod ? '<a href="admin/brukere/finn?ip=' . urlencode(page_min_side::$active_user->data['u_online_ip']) . '">' . htmlspecialchars(page_min_side::$active_user->data['u_online_ip']) . '</a>' : htmlspecialchars(page_min_side::$active_user->data['u_online_ip'])) . '</dd>';
        if (page_min_side::$active_user->data['u_created_referer'] != "") {
            $referer = preg_replace("/\\|/u", "\n", page_min_side::$active_user->data['u_created_referer'], 1);
            echo '
							<dt>Henvisning</dt>
							<dd>' . game::format_data($referer) . '</dd>';
        }
        // har vi blitt vervet av noen?
        $result = \Kofradia\DB::get()->query("SELECT r.up_id, r.up_name, r.up_access_level FROM users_players r JOIN users_players ref ON ref.up_u_id = " . page_min_side::$active_user->id . " AND ref.up_recruiter_up_id = r.up_id LIMIT 1");
        if ($row = $result->fetch()) {
            echo '
							<dt>Rekrutert av</dt>
							<dd>' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</dd>';
        }
        echo '
						</dl>
					</div>
				</div>
			</div>
		</div>';
        // høyre kolonne
        echo '
		<div class="col_w right">
			<div class="col">';
        // deaktivert?
        if (page_min_side::$active_user->data['u_access_level'] == 0) {
            // deaktivert av seg selv?
            $deact_self = false;
            if (!empty(page_min_side::$active_user->data['u_deactivated_up_id'])) {
                $result = \Kofradia\DB::get()->query("SELECT u_id FROM users JOIN users_players ON u_id = up_u_id WHERE up_id = " . page_min_side::$active_user->data['u_deactivated_up_id']);
                $row = $result->fetch();
                unset($result);
                if ($row && $row['u_id'] == page_min_side::$active_user->id) {
                    $deact_self = true;
                }
            }
            echo '
				<div class="bg1_c">
					<h1 class="bg1">Deaktivert<span class="left2"></span><span class="right2"></span></h1>' . (access::has("mod") ? '
					<p class="h_right"><a href="' . htmlspecialchars(page_min_side::addr("cdeact")) . '">rediger</a> <a href="' . htmlspecialchars(page_min_side::addr("activate")) . '">aktiver</a></p>' : '') . '
					<div class="bg1">' . ($deact_self ? '
						<p>Denne brukeren deaktiverte seg selv ' . ess::$b->date->get(page_min_side::$active_user->data['u_deactivated_time'])->format(date::FORMAT_SEC) . '.</p>' : '
						<p>Denne brukeren ble deaktivert ' . ess::$b->date->get(page_min_side::$active_user->data['u_deactivated_time'])->format(date::FORMAT_SEC) . ' av ' . (empty(page_min_side::$active_user->data['u_deactivated_up_id']) ? 'en ukjent bruker' : '<user id="' . page_min_side::$active_user->data['u_deactivated_up_id'] . '" />') . '.</p>') . '
						<div class="p"><b>Begrunnelse:</b> ' . (empty(page_min_side::$active_user->data['u_deactivated_reason']) ? 'Ingen begrunnelse oppgitt.' : game::bb_to_html(page_min_side::$active_user->data['u_deactivated_reason'])) . '</div>' . (!$deact_self || !empty(page_min_side::$active_user->data['u_deactivated_note']) ? '
						<div class="p"><b>Intern informasjon:</b> ' . (access::has("mod") ? empty(page_min_side::$active_user->data['u_deactivated_note']) ? 'Ingen intern informasjon oppgitt.' : game::bb_to_html(page_min_side::$active_user->data['u_deactivated_note']) : 'Du har ikke tilgang til å se intern informasjon.') . '</div>' : '') . '
					</div>
				</div>';
        } elseif (page_min_side::$active_user->lock_state && access::has("crewet")) {
            echo '
				<div class="bg1_c">
					<h1 class="bg1">Begrenset tilgang<span class="left2"></span><span class="right2"></span></h1>
					<div class="bg1">
						<p>Denne brukeren har begrenset tilgang fordi:</p>
						<ul class="spacer">';
            foreach (page_min_side::$active_user->lock as $l) {
                switch ($l) {
                    case "birth":
                        echo '
							<li>Brukeren har ikke lagt inn fødselsdatoen.</li>';
                        break;
                    case "player":
                        echo '
							<li>Brukeren har ingen levende spiller.</li>';
                        break;
                }
            }
            echo '
						</ul>
					</div>
				</div>';
        }
        // vis liste over spillere kun for spillerne selv eller en moderator
        if ($mod || page_min_side::$active_own) {
            // hent spillerene tilhørende denne personen
            $pagei = new pagei(pagei::ACTIVE_GET, "side_up", pagei::PER_PAGE, 7);
            $result = $pagei->query("\n\t\t\t\tSELECT up_id, up_name, up_access_level, up_created_time, up_last_online, up_points, up_deactivated_time, upr_rank_pos\n\t\t\t\tFROM users_players\n\t\t\t\t\tLEFT JOIN users_players_rank ON upr_up_id = up_id\n\t\t\t\tWHERE up_u_id = " . page_min_side::$active_user->id . "\n\t\t\t\tORDER BY up_last_online DESC");
            echo '
				<div class="bg1_c">
					<h1 class="bg1">Spillere tilhørende brukeren<span class="left2"></span><span class="right2"></span></h1>' . (access::is_nostat() || page_min_side::$active_own ? '
					<p class="h_right">' . page_min_side::link("Mer info &raquo;", "up") . '</p>' : '') . '
					<div class="bg1">
						<table class="table ' . ($pagei->pages == 1 ? 'tablem' : 'tablemt') . '" style="width: 100%">
							<thead>
								<tr>
									<th>Spiller</th>
									<th>Status</th>
								</tr>
							</thead>
							<tbody>';
            while ($row = $result->fetch()) {
                $rank = game::rank_info($row['up_points'], $row['upr_rank_pos'], $row['up_access_level']);
                echo '
								<tr>
									<td>' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level'], true, 'min_side?up_id=' . $row['up_id']) . '<br /><span style="font-size: 10px">' . $rank['name'] . '</span></td>
									<td style="font-size: 10px">
										Opprettet: ' . ess::$b->date->get($row['up_created_time'])->format() . '<br />' . ($row['up_access_level'] == 0 ? '
										Deaktivert: ' . ess::$b->date->get($row['up_deactivated_time'])->format() : '
										Status: I live<br />
										Sist pålogget: ' . ess::$b->date->get($row['up_last_online'])->format()) . '
									</td>
								</tr>';
            }
            echo '
							</tbody>
						</table>' . ($pagei->pages > 1 ? '
						<p class="c">' . $pagei->pagenumbers() . '</p>' : '') . '
					</div>
				</div>';
        } else {
            echo '
			<div class="bg1_c">
				<h1 class="bg1">Spillere tilhørende brukeren<span class="left2"></span><span class="right2"></span></h1>
				<div class="bg1">
					<p>Du har ikke tilgang til å vise denne oversikten.</p>
				</div>
			</div>';
        }
        echo '
			</div>
		</div>
	</div>';
    }
Esempio n. 8
0
 /**
  * Construct: Hent detaljer
  * @param int $ff_id
  */
 public function __construct($ff_id, $new = null)
 {
     $this->id = (int) $ff_id;
     // hente info?
     if ($this->id) {
         $result = \Kofradia\DB::get()->query("\n\t\t\t\tSELECT ff_id, ff_date_reg, ff_bank, ff_name, ff_is_crew, ff_params, br_b_id\n\t\t\t\tFROM ff\n\t\t\t\t\tLEFT JOIN bydeler_resources ON ff_br_id = br_id\n\t\t\t\tWHERE ff_id = {$this->id} AND ff_type = 3 AND ff_inactive = 0");
         $this->data = $result->fetch();
         if ($this->data) {
             // ikke crew?
             if (!$this->data['ff_is_crew'] || !$new || access::is_nostat()) {
                 $this->params = new params($this->data['ff_params']);
                 $this->overforingstap = (double) $this->params->get("bank_overforing_tap", 0);
             }
             return;
         }
     }
     $this->data = null;
 }
Esempio n. 9
0
    /**
     * Sette dusør på en spiller
     */
    protected function show_add_player()
    {
        ess::$b->page->add_title("Sett dusør");
        echo '
<div class="bg1_c xxsmall">
	<h1 class="bg1">Etterlyst - sett dusør<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1"><boxes />';
        // har vi valgt en spiller?
        $player = false;
        if (isset($_GET['up_id']) || isset($_POST['up_id']) || isset($_POST['up_name'])) {
            $by_id = isset($_GET['up_id']) ? (int) $_GET['up_id'] : (isset($_POST['up_id']) ? (int) $_POST['up_id'] : false);
            // finn spilleren
            $search = "";
            if ($by_id !== false) {
                $search = "up_id = {$by_id}";
            } else {
                $search = "up_name = " . \Kofradia\DB::quote($_POST['up_name']) . " ORDER BY up_access_level = 0, up_last_online DESC LIMIT 1";
            }
            $result = \Kofradia\DB::get()->query("SELECT up_id, up_name, up_access_level FROM users_players WHERE {$search}");
            $player = $result->fetch();
            // fant ikke?
            if (!$player) {
                ess::$b->page->add_message("Fant ikke spilleren.", "error");
                if ($by_id !== false) {
                    redirect::handle("etterlyst?add");
                }
            }
            // død spiller?
            if ($player && $player['up_access_level'] == 0) {
                ess::$b->page->add_message('Spilleren <user id="' . $player['up_id'] . '" /> er død og kan ikke etterlyses.', "error");
                if ($by_id !== false) {
                    redirect::handle("etterlyst?add");
                }
                $player = false;
            }
            // seg selv?
            if ($player && $player['up_id'] == $this->up->id) {
                ess::$b->page->add_message("Du kan ikke sette dusør på deg selv.", "error");
                if ($by_id !== false) {
                    redirect::handle("etterlyst?add");
                }
                $player = false;
            }
            // nostat?
            if ($player['up_access_level'] >= ess::$g['access_noplay'] && !access::is_nostat()) {
                ess::$b->page->add_message("Du kan ikke sette dusør på en nostat.", "error");
                if ($by_id !== false) {
                    redirect::handle("etterlyst?add");
                }
                $player = false;
            }
            // er nostat og prøver å sette dusør på en spiller som ikke er nostat?
            if (access::is_nostat() && $player['up_access_level'] < ess::$g['access_noplay'] && !access::has("sadmin")) {
                ess::$b->page->add_message("Du er nostat og kan ikke sette dusør på en vanlig spiller.", "error");
                if ($by_id !== false) {
                    redirect::handle("etterlyst?add");
                }
                $player = false;
            }
        }
        // bestemme dusør?
        if ($player) {
            // hent eventuelle aktive dusører på spilleren
            $result = \Kofradia\DB::get()->query("\n\t\t\t\tSELECT SUM(hl_amount_valid) AS sum_hl_amount_valid\n\t\t\t\tFROM hitlist\n\t\t\t\tWHERE hl_up_id = {$player['up_id']}");
            $a = $result->fetchColumn(0);
            // må vi vente?
            $wait = false;
            if ($a == 0 && !access::has("admin")) {
                // sjekk når siste hitlist ble utført
                $last = $this->up->params->get("hitlist_last_new", false);
                if ($last && $last + etterlyst::WAIT_TIME > time()) {
                    $wait = $last + etterlyst::WAIT_TIME - time();
                }
            }
            // legge til dusøren?
            if (isset($_POST['amount']) && !$wait) {
                $amount = game::intval($_POST['amount']);
                // høy nok dusør?
                if ($amount < etterlyst::MIN_AMOUNT_SET) {
                    ess::$b->page->add_message("Dusøren må være på minimum " . game::format_cash(etterlyst::MIN_AMOUNT_SET) . ".", "error");
                } else {
                    \Kofradia\DB::get()->beginTransaction();
                    // forsøk å trekk fra pengene
                    $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$amount} WHERE up_id = " . $this->up->id . " AND up_cash >= {$amount}");
                    if ($a == 0) {
                        ess::$b->page->add_message("Du har ikke nok penger på hånda.", "error");
                    } else {
                        // vellykket
                        \Kofradia\DB::get()->exec("INSERT INTO hitlist SET hl_up_id = {$player['up_id']}, hl_by_up_id = " . $this->up->id . ", hl_time = " . time() . ", hl_amount = {$amount}, hl_amount_valid = {$amount}");
                        \Kofradia\DB::get()->commit();
                        // legg til i loggen til spilleren
                        player::add_log_static("etterlyst_add", NULL, $amount, $player['up_id']);
                        putlog("LOG", "ETTERLYST: " . $this->up->data['up_name'] . " la til dusør for UP_ID={$player['up_id']} på " . game::format_cash($amount) . '.');
                        putlog("INFO", "ETTERLYST: En spiller la til en dusør for {$player['up_name']} på " . game::format_cash($amount) . " " . ess::$s['path'] . "/etterlyst");
                        ess::$b->page->add_message('Du la til ' . game::format_cash($amount) . ' som dusør for spilleren <user id="' . $player['up_id'] . '" />.');
                        $this->up->params->update("hitlist_last_new", time(), true);
                        redirect::handle("etterlyst");
                    }
                    \Kofradia\DB::get()->commit();
                }
            }
            ess::$b->page->add_js_domready('$("select_amount").focus();');
            echo '
		<p>Valgt spiller: <user id="' . $player['up_id'] . '" /></p>
		<form action="" method="post">
			<input type="hidden" name="up_id" value="' . $player['up_id'] . '" />' . (!$a ? '
			<p>Denne spilleren har ingen dusør tilnyttet seg fra før.</p>' : '
			<p>Denne spilleren har allerede en dusør på ' . game::format_cash($a) . '.</p>') . ($wait ? '
			<p class="error_box">Du må vente ' . game::counter($wait) . ' før du kan plassere en ny spiller på listen.</p>
			<p class="c"><a href="etterlyst">Avbryt</a></p>' : '
			<dl class="dd_right">
				<dt>' . (!$a ? 'Dusør' : 'Øk dusøren med') . '</dt>
				<dd><input type="text" name="amount" id="select_amount" value="' . htmlspecialchars(postval("amount")) . '" class="styled w100" /></dd>
			</dl>
			<p class="c">' . show_sbutton($a ? "Øk dusøren" : "Legg til dusør") . '</p>
			<p class="c"><a href="etterlyst">Avbryt</a> - <a href="etterlyst?add">Velg en annen spiller</a></p>
			<p>Hvis du velger å fjerne dusøren etter du har lagt den til, får du kun 50 % igjen. Hvis noen kjøper ut dusøren får du igjen 50 % av den.</p>') . '
		</form>';
        } else {
            ess::$b->page->add_js_domready('$("select_up_name").focus();');
            echo '
		<p>Du må først velge hvilken spiller du ønsker å legge til dusør på.</p>
		<form action="" method="post">
			<dl class="dd_right">
				<dt>Spiller</dt>
				<dd><input type="text" name="up_name" id="select_up_name" value="' . htmlspecialchars(postval("up_name")) . '" class="styled w120" /></dd>
			</dl>
			<p class="c">' . show_sbutton("Finn spiller") . '</p>
			<p class="c"><a href="etterlyst">Avbryt</a></p>
		</form>';
        }
        echo '
	</div>
</div>';
    }
Esempio n. 10
0
 /**
  * Øke eller legge til bud
  */
 protected function bid()
 {
     // nostat?
     if (access::is_nostat() && $this->up->id != 1) {
         ess::$b->page->add_message("Du er nostatuser og har ikke tilgang til å by på auksjoner.", "error");
         redirect::handle();
     }
     $amount = game::intval(postval("amount"));
     // auksjonen avsluttet?
     if ($this->auksjon->status == auksjon::STATUS_FINISHED) {
         ess::$b->page->add_message("Denne auksjonen er avsluttet.", "error");
         redirect::handle();
     }
     // firma og for lite helse?
     if ($this->auksjon->data['a_type'] == auksjon::TYPE_FIRMA && $this->up->get_health_percent() < player::FF_HEALTH_LOW * 100) {
         ess::$b->page->add_message("Du har for lav helse til å kunne by på et firma.", "error");
         redirect::handle();
     }
     // over maks?
     /*if (bccomp($amount, auksjon::MAKS_BUD) == 1)
     		{
     			ess::$b->page->add_message("Du kan ikke by mer enn ".game::format_cash(auksjon::MAKS_BUD).".", "error");
     			redirect::handle();
     		}*/
     // sjekk minste bud vi kan sette
     $result = \Kofradia\DB::get()->query("SELECT ab_bid + {$this->auksjon->data['a_bid_jump']} AS ab_bid FROM auksjoner_bud WHERE ab_a_id = {$this->auksjon->id} AND ab_active != 0 ORDER BY ab_bid DESC LIMIT 1");
     $bud = $result->fetch();
     $min_bud = $bud ? $bud['ab_bid'] : $this->auksjon->data['a_bid_start'];
     // under min?
     if (bccomp($amount, $min_bud) == -1) {
         ess::$b->page->add_message("Du må by minimum " . game::format_cash($min_bud) . ".", "error");
         redirect::handle();
     }
     // hent tidligere bud
     $result = \Kofradia\DB::get()->query("SELECT ab_id, ab_bid, ab_time FROM auksjoner_bud WHERE ab_a_id = {$this->auksjon->id} AND ab_up_id = {$this->up->id} AND ab_active != 0");
     $bud = $result->fetch();
     $update = false;
     // økte bud?
     if ($bud && isset($_POST['raise_bid'])) {
         // er dette det siste budet?
         $result = \Kofradia\DB::get()->query("SELECT ab_id FROM auksjoner_bud WHERE ab_a_id = {$this->auksjon->id} AND ab_active != 0 AND ab_time >= " . (time() - auksjon::MAX_TIME_REMOVE) . " ORDER BY ab_time DESC LIMIT 1");
         $row = $result->fetch();
         if ($row && $row['ab_id'] == $bud['ab_id']) {
             $update = true;
         }
         // start transaksjon
         \Kofradia\DB::get()->beginTransaction();
         // trekk fra pengene
         $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$amount} + {$bud['ab_bid']} WHERE up_id = {$this->up->id} AND up_cash >= {$amount} - {$bud['ab_bid']}");
     } elseif (!$bud && isset($_POST['place_bid'])) {
         // behandle forskjellige auksjonstyper
         switch ($this->auksjon->data['a_type']) {
             // firma
             case auksjon::TYPE_FIRMA:
                 // har vi bud på en annen auksjon?
                 $result = \Kofradia\DB::get()->query("\n\t\t\t\t\t\tSELECT ab_id\n\t\t\t\t\t\tFROM auksjoner, auksjoner_bud\n\t\t\t\t\t\tWHERE ab_a_id = a_id AND a_completed = 0 AND a_active != 0 AND a_type = " . auksjon::TYPE_FIRMA . " AND ab_up_id = {$this->up->id} AND ab_active != 0");
                 if ($result->rowCount() > 0) {
                     ess::$b->page->add_message("Du har allerede bydd på en annen auksjon. Du kan ikke by på flere auksjoner samtidig.", "error");
                     redirect::handle();
                 }
                 break;
                 // kuler
             // kuler
             case auksjon::TYPE_KULER:
                 // har vi ikke noe våpen?
                 if (!$this->up->weapon) {
                     redirect::handle();
                 }
                 // sjekk at vi har plass til flere kuler
                 $kuler = (int) $this->auksjon->params->get("bullets");
                 if ($kuler) {
                     if ($this->up->data['up_weapon_bullets'] + $this->up->data['up_weapon_bullets_auksjon'] + $kuler > $this->up->weapon->data['bullets']) {
                         ess::$b->page->add_message("Du har ikke plass til flere kuler.", "error");
                         redirect::handle();
                     }
                 }
                 break;
         }
         // start transaksjon
         \Kofradia\DB::get()->beginTransaction();
         // trekk fra pengene
         $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$amount} WHERE up_id = {$this->up->id} AND up_cash >= {$amount}");
     } else {
         redirect::handle();
     }
     // ikke nok penger
     if ($a == 0) {
         ess::$b->page->add_message("Du har ikke nok penger på hånda.", "error");
         \Kofradia\DB::get()->rollback();
         redirect::handle();
     }
     // behandle forskjellige auksjonstyper
     if (!$bud) {
         switch ($this->auksjon->data['a_type']) {
             // kuler
             case auksjon::TYPE_KULER:
                 // oppdater antall kuler vi kjøper via auksjoner
                 $kuler = (int) $this->auksjon->params->get("bullets");
                 if ($kuler) {
                     \Kofradia\DB::get()->exec("UPDATE users_players SET up_weapon_bullets_auksjon = up_weapon_bullets_auksjon + {$kuler} WHERE up_id = {$this->up->id}");
                 }
                 break;
         }
     }
     // oppdatere oppføringen?
     if ($update) {
         $a = \Kofradia\DB::get()->exec("UPDATE auksjoner_bud SET ab_bid = {$amount}, ab_time = " . time() . " WHERE ab_id = {$bud['ab_id']} AND ab_time = {$bud['ab_time']}");
         // kunne ikke oppdatere?
         if ($a == 0) {
             ess::$b->page->add_message("Du har ikke noe bud.", "error");
             \Kofradia\DB::get()->rollback();
             redirect::handle();
         }
     } else {
         // tidligere bud som skal fjernes?
         if ($bud) {
             $a = \Kofradia\DB::get()->exec("UPDATE auksjoner_bud SET ab_active = 0 WHERE ab_id = {$bud['ab_id']} AND ab_time = {$bud['ab_time']} AND ab_active != 0");
             // kunne ikke fjerne tidligere bud?
             if ($a == 0) {
                 ess::$b->page->add_message("Kunne ikke øke budet.", "error");
                 \Kofradia\DB::get()->rollback();
                 redirect::handle();
             }
         }
         // legg til oppføringen
         \Kofradia\DB::get()->exec("INSERT INTO auksjoner_bud SET ab_a_id = {$this->auksjon->id}, ab_up_id = {$this->up->id}, ab_bid = {$amount}, ab_time = " . time());
         // oppdater auksjonen
         \Kofradia\DB::get()->exec("UPDATE auksjoner SET a_num_bids = a_num_bids + 1 WHERE a_id = {$this->auksjon->id}");
     }
     $msg = '';
     // meldinger
     $place = $this->auksjon->data['a_type'] == auksjon::TYPE_FIRMA ? "INFO" : "LOG";
     if ($bud) {
         $msg = "Du har økt ditt bud.";
         if ($update) {
             putlog($place, "%bAUKSJONER:%b %u{$this->up->data['up_name']}%u økte sitt bud til %b" . game::format_cash($amount) . "%b på %b{$this->auksjon->data['a_title']}%b og leder fortsatt auksjonen " . ess::$s['spath'] . "/auksjoner?a_id={$this->auksjon->id}");
         } else {
             putlog($place, "%bAUKSJONER:%b %u{$this->up->data['up_name']}%u økte sitt bud til %b" . game::format_cash($amount) . "%b på %b{$this->auksjon->data['a_title']}%b og leder nå auksjonen " . ess::$s['spath'] . "/auksjoner?a_id={$this->auksjon->id}");
         }
     } else {
         $msg = "Du la inn bud for denne auksjonen.";
         putlog($place, "%bAUKSJONER:%b %u{$this->up->data['up_name']}%u bydde %b" . game::format_cash($amount) . "%b på %b{$this->auksjon->data['a_title']}%b " . ess::$s['spath'] . "/auksjoner?a_id={$this->auksjon->id}");
     }
     // sørg for at det er minimum 2 min igjen av auksjonen
     $end_min = time() + 120;
     if ($this->auksjon->data['a_end'] < $end_min) {
         \Kofradia\DB::get()->exec("UPDATE auksjoner SET a_end = {$end_min} WHERE a_id = {$this->auksjon->id} AND a_end < {$end_min}");
         $msg .= " Auksjonen ble forlenget til " . ess::$b->date->get($end_min)->format(date::FORMAT_SEC) . ".";
         putlog("LOG", "%bAUKSJONER:%b %b{$this->auksjon->data['a_title']}%b ble utsatt til " . ess::$b->date->get($end_min)->format(date::FORMAT_SEC) . " " . ess::$s['spath'] . "/auksjoner?a_id={$this->auksjon->id}");
     }
     ess::$b->page->add_message($msg);
     \Kofradia\DB::get()->commit();
     redirect::handle();
 }
Esempio n. 11
0
 /**
  * Kjøpe lodd
  */
 protected function lodd_kjop()
 {
     // nostat?
     if (access::is_nostat() && !access::has("sadmin") && MAIN_SERVER) {
         ess::$b->page->add_message("Du har ikke tilgang til å spille lotto. (NoStat)", "error");
         redirect::handle();
     }
     if (!$this->form->validateHashOrAlert(null, ($this->last > 0 ? "Previous=" . game::timespan($this->last, game::TIME_ABS | game::TIME_SHORT | game::TIME_NOBOLD) . ";" : "First;") . ($this->active ? "Active;" : "NOT-ACTIVE;") . ($this->wait ? "%c11Ventetid=" . game::timespan($this->wait, game::TIME_SHORT | game::TIME_NOBOLD) . "%c" : "%c9No-wait%c"))) {
         return;
     }
     if (isset($_POST['b'])) {
         global $__server;
         putlog("ABUSE", "Trolig bot: " . login::$user->player->data['up_name'] . " - Skjult skjema sendt (Lotto) SID=" . login::$info['ses_id'] . " " . $__server['path'] . "/min_side?up_id=" . login::$user->player->id);
     }
     // ikke aktiv?
     if (!$this->active) {
         ess::$b->page->add_message("Lottoen er ikke aktiv for øyeblikket!", "error");
         redirect::handle();
     }
     // ventetid?
     if ($this->wait > 0) {
         ess::$b->page->add_message('Du må vente ' . game::counter($this->wait, true) . ' før du kan kjøpe nye lodd!', "error");
         redirect::handle();
     }
     $lodd = intval($_POST['lodd']);
     // ikke gyldig?
     if ($lodd < 1) {
         ess::$b->page->add_message("Du må minimum kjøpe ett lodd!", "error");
         redirect::handle();
     }
     // for mange lodd?
     if ($lodd > lotto::$lodd_maks_om_gangen) {
         ess::$b->page->add_message("Du kan maks kjøpe " . game::format_number(lotto::$lodd_maks_om_gangen) . " lodd på en gang!", "error");
         redirect::handle();
     }
     // kan vi kjøpe så mange lodd?
     if ($lodd > lotto::$lodd_maks - $this->info['antall_lodd']) {
         ess::$b->page->add_message("Du kan ikke kjøpe så mange lodd!", "error");
         redirect::handle();
     }
     $lodd_price = lotto::get_lodd_price();
     $cost = $lodd * $lodd_price;
     // trekk fra pengene
     $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - ({$lodd} * " . $lodd_price . ") WHERE up_id = " . login::$user->player->id . " AND up_cash >= ({$lodd} * " . $lodd_price . ")");
     if ($a == 0) {
         ess::$b->page->add_message("Du har ikke nok penger på hånda!", "error");
         redirect::handle();
     }
     // gi loddene til brukeren
     $q = array();
     $time = time();
     for ($i = 0; $i < $lodd; $i++) {
         $q[] = "(" . login::$user->player->id . ", {$time})";
     }
     \Kofradia\DB::get()->exec("INSERT INTO lotto (l_up_id, time) VALUES " . implode(",", $q));
     // energi
     login::$user->player->energy_use(self::ENERGY);
     ess::$b->page->add_message("Du har kjøpt <b>" . game::format_number($lodd) . "</b> lottolodd for <b>" . game::format_cash($lodd * $lodd_price) . "</b>!");
     $this->antibot->increase_counter();
     redirect::handle();
 }
Esempio n. 12
0
 /**
  * Utfordre en spiller
  */
 protected function challenge()
 {
     if (!isset($_POST['utfordre']) || !isset($_POST['id'])) {
         return;
     }
     // finn utfordringen
     $id = (int) $_POST['id'];
     $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT poker_id, poker_starter_up_id, poker_starter_cards, poker_time_start, poker_cash\n\t\t\tFROM poker\n\t\t\tWHERE poker_id = {$id} AND poker_state = 2 AND poker_starter_up_id != " . $this->up->id);
     $row = $result->fetch();
     if (!$row) {
         ess::$b->page->add_message("Fant ikke utfordringen. Noen kan ha kommet før deg!", "error");
         redirect::handle();
     }
     // ikke råd?
     if (bccomp($row['poker_cash'], $this->up->data['up_cash']) == 1) {
         ess::$b->page->add_message("Du har ikke så mye penger på hånda.", "error");
         redirect::handle();
     }
     // nostatuser?
     if (bccomp($row['poker_cash'], 10000) == 1 && MAIN_SERVER && (access::is_nostat() && $this->up->data['up_u_id'] != 1)) {
         ess::$b->page->add_message("Nostat kan ikke spille poker med beløp over 10 000 kr.", "error");
         redirect::handle();
     }
     // sett opp pokerhånd
     $poker1 = new CardsPoker(explode(",", $row['poker_starter_cards']));
     $poker2 = new CardsPoker();
     $poker2->remove_cards($poker1->get_cards());
     $poker2->new_cards(5);
     // oppdater utfordringen
     $a = \Kofradia\DB::get()->exec("UPDATE poker SET poker_state = 3, poker_challenger_up_id = " . $this->up->id . ", poker_challenger_cards = '" . implode(",", $poker2->get_cards()) . "', poker_time_challenge = '" . time() . "' WHERE poker_id = {$row['poker_id']} AND poker_state = 2");
     if ($a == 0) {
         ess::$b->page->add_message("Fant ikke utfordringen. Noen kan ha kommet før deg!", "error");
         redirect::handle();
     }
     // trekk fra pengene fra brukeren
     $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$row['poker_cash']} WHERE up_id = " . $this->up->id . " AND up_cash >= {$row['poker_cash']}");
     // ble ikke brukeren oppdatert?
     if ($a == 0) {
         ess::$b->page->add_message("Du har ikke så mye penger på hånda.", "error");
         // fjern challenge
         \Kofradia\DB::get()->exec("UPDATE poker SET poker_state = 2, poker_challenger_up_id = 0, poker_challenger_cards = '', poker_time_challenge = 0 WHERE poker_id = {$row['poker_id']}");
         redirect::handle();
     }
     poker_round::update_cache();
     redirect::handle();
 }
Esempio n. 13
0
    /**
     * Behandle donasjon
     */
    protected function page_donate_handle()
    {
        $amount = game::intval($_POST['donate']);
        $note = trim(postval("note"));
        // nostat?
        if (access::is_nostat()) {
            ess::$b->page->add_message("Du er nostat og har ikke tilgang til å donere til {$this->ff->type['refobj']}.", "error");
        } elseif ($amount < 0) {
            ess::$b->page->add_message("Beløpet kan ikke være negativt..", "error");
        } elseif ($amount < 15000) {
            ess::$b->page->add_message("Minstebeløp å donere er 15 000 kr.", "error");
        } else {
            // finn ut når vi donerte siste gang - kan ikke donere oftere enn en gang i timen
            $result = \Kofradia\DB::get()->query("SELECT ffbl_time FROM ff_bank_log WHERE ffbl_ff_id = {$this->ff->id} AND ffbl_type = 3 AND ffbl_up_id = " . login::$user->player->id . " ORDER BY ffbl_time DESC LIMIT 1");
            $last = $result->fetch();
            if ($last && $last['ffbl_time'] + 3600 > time()) {
                ess::$b->page->add_message("Du kan ikke donere oftere enn én gang per time. Du må vente " . game::counter($last['ffbl_time'] + 3600 - time()) . " før du kan donere på nytt.", "error");
            } elseif ($amount > login::$user->player->data['up_cash']) {
                ess::$b->page->add_message("Du har ikke nok penger på hånda til å donere " . game::format_cash($amount) . " til {$this->ff->type['refobj']}.", "error");
            } elseif (isset($_POST['approve']) && validate_sid(false)) {
                // forsøk å donere
                $a = \Kofradia\DB::get()->exec("UPDATE ff, users_players SET ff_bank = ff_bank + {$amount}, up_cash = up_cash - {$amount} WHERE ff_id = {$this->ff->id} AND up_id = " . login::$user->player->id . " AND up_cash >= {$amount}");
                // hadde ikke nok penger?
                if ($a == 0) {
                    ess::$b->page->add_message("Du har ikke nok penger på hånda til å donere " . game::format_cash($amount) . " til {$this->ff->type['refobj']}.", "error");
                } else {
                    // finn balanse
                    $result = \Kofradia\DB::get()->query("SELECT ff_bank FROM ff WHERE ff_id = {$this->ff->id}");
                    $balance = $result->fetchColumn(0);
                    // legg til logg
                    \Kofradia\DB::get()->exec("INSERT INTO ff_bank_log SET ffbl_ff_id = {$this->ff->id}, ffbl_type = 3, ffbl_amount = {$amount}, ffbl_up_id = " . login::$user->player->id . ", ffbl_time = " . time() . ", ffbl_balance = {$balance}, ffbl_note = " . \Kofradia\DB::quote($note));
                    // legg til i spillerinfo
                    \Kofradia\DB::get()->exec("UPDATE ff_members SET ffm_donate = ffm_donate + {$amount} WHERE ffm_up_id = " . login::$user->player->id . " AND ffm_ff_id = {$this->ff->id} AND ffm_status = 1");
                    ess::$b->page->add_message("Du donerte " . game::format_cash($amount) . " til {$this->ff->type['refobj']}.");
                    // legg til daglig stats
                    $this->ff->stats_update("money_in", $amount, true);
                    redirect::handle();
                }
            } elseif (!isset($_POST['skip'])) {
                ess::$b->page->add_title("Donér til {$this->ff->type['refobj']}");
                // vis skjema for godkjenning
                echo '
<!-- donasjon -->
<div class="section w200">
	<h2>Donér til ' . $this->ff->type['refobj'] . '</h2>
	<p>Du er i ferd med å donére til ' . $this->ff->type['refobj'] . '.</p>
	<p>Beløp: ' . game::format_cash($amount) . '</p>
	<p>Melding/notat: ' . game::format_data($note, "bb-opt", "Uten melding") . '</p>
	<form action="" method="post">
		<input type="hidden" name="donate" value="' . $amount . '" />
		<input type="hidden" name="note" value="' . htmlspecialchars($note) . '" />
		<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
		<p class="c">
			' . show_sbutton("Utfør donasjon", 'name="approve"') . '
			' . show_sbutton("Avbryt", 'name="skip"') . '
		</p>
	</form>
</div>';
                $this->ff->load_page();
            }
        }
    }