예제 #1
0
파일: fengsel.php 프로젝트: Kuzat/kofradia
    /**
     * 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>';
        }
    }
예제 #2
0
파일: angrip.php 프로젝트: Kuzat/kofradia
    /**
     * Kontroller spiller
     */
    protected function player_check()
    {
        // søke etter spiller?
        if (isset($_POST['up'])) {
            $this->up_offer = player::get($_POST['up'], NULL, true);
        } else {
            $this->up_offer = player::get(postval("up_id"));
        }
        // fant ikke spilleren?
        if (!$this->up_offer) {
            ess::$b->page->add_message("Fant ikke spilleren.", "error");
            return false;
        }
        // seg selv?
        if ($this->up_offer->id == login::$user->player->id) {
            ess::$b->page->add_message("Du kan ikke angripe deg selv.", "error");
            return false;
        }
        // død?
        if (!$this->up_offer->active) {
            ess::$b->page->add_message('Spilleren <user id="' . $this->up_offer->id . '" /> er ikke levende og kan ikke angripes.', "error");
            return false;
        }
        // angriper nostat?
        if ($this->up_offer->is_nostat() && !login::$user->player->is_nostat()) {
            ess::$b->page->add_message('<user id="' . $this->up_offer->id . '" /> er nostat og kan ikke angripes.', "error");
            return false;
        }
        // nostat angriper andre?
        if (login::$user->player->is_nostat() && !$this->up_offer->is_nostat()) {
            ess::$b->page->add_message('Du er nostat og kan derfor ikke angripe <user id="' . $this->up_offer->id . '" />.', 'error');
            return false;
        }
        // kan ikke angripe spillere registrert for under 1 uke siden og som ikke har nådd ridder
        $expire = time() - 604800;
        if ($this->up_offer->data['up_created_time'] > $expire && $this->up_offer->rank['number'] < 8) {
            ess::$b->page->add_message('<user id="' . $this->up_offer->id . '" /> har vært registrert i under 7 dager med lav rank og kan ikke angripes', "error");
            return false;
        }
        // sett opp skjema
        $this->form = \Kofradia\Form::getByDomain("angrip", login::$user);
        // utføre et angrep?
        if (isset($_POST['attack'])) {
            $this->handle_attack();
        }
        echo '
<form action="" method="post">
	<input type="hidden" name="up_id" value="' . $this->up_offer->id . '" />
	' . $this->form->getHTMLInput() . '
	<div class="bg1_c xsmall">
		<h1 class="bg1">Angrip spiller<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<p>Du er i ferd med å angripe ' . $this->up_offer->profile_link() . ' som har ranken ' . $this->up_offer->rank['name'] . ' og er plassert som nummer ' . $this->up_offer->data['upr_rank_pos'] . ' på ranklista.</p>
			<p>Du befinner deg på ' . login::$user->player->bydel['name'] . ' og 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']) . ' og en våpentrening på <b>' . game::format_num(login::$user->player->data['up_weapon_training'] * 100, 1) . ' %</b>.</p>';
        // har vi ingen kuler?
        if (login::$user->player->data['up_weapon_bullets'] == 0) {
            echo '
			<p><b>Du må kjøpe kuler før du kan utføre et angrep.</b> Kuler får du kjøpt hos våpen og beskyttelse-firmaet.</p>';
        } else {
            ess::$b->page->add_js_domready('$("angrep_kuler").focus();');
            echo '
			<dl class="dd_right">
				<dt>Antall kuler som skal benyttes</dt>
				<dd><input type="text" id="angrep_kuler" name="kuler" class="styled w40" value="' . intval(postval("kuler", "")) . '" /></dd>
			</dl>
			<p class="c">' . show_sbutton("Utfør angrep", 'name="attack"') . '</p>';
        }
        echo '
			<p class="c"><a href="angrip">Avbryt</a></p>
		</div>
	</div>
</form>
<div class="bg1_c xsmall">
	<h1 class="bg1">Informasjon<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<p>Hvis spilleren du angriper ikke befinner seg i <b>' . login::$user->player->bydel['name'] . '</b>, er i <b>bomberom</b> eller <b>fengsel</b> eller hvis du rett og slett ikke klarer å oppdage spilleren, vil du miste en del energi og bli plassert i fengsel i en kort varighet.</p>
		<p>Hvis du klarer å oppdage spilleren, vil du skade spilleren. Hvis angrepet er så kraftig at spilleren dør vil du:</p>
		<ul>
			<li>Overta pengene spilleren hadde på hånda</li>
			<li>Motta en del rank, avhengig av ranken til offeret</li>
		</ul>
		<p>Hvis spilleren overlever, vil du:</p>
		<ul>
			<li>Komme i fengsel en periode</li>
			<li>Miste en god del energi</li>
			<li>Motta litt rank som spilleren du angriper mister</li>
		</ul>
		<p>Når du utfører et angrep mot en annen spiller, risikerer du å bli oppdaget av vitner. Hvis du oppdager vitnene i det du utfører angrepet, vil du også få vite hvem du oppdaget som vitnet angrepet.</p>
	</div>
</div>';
        return true;
    }
예제 #3
0
파일: class.ff.php 프로젝트: Kuzat/kofradia
 /**
  * Trigger når en spiller dreper en annen
  */
 public static function handle_up_kill(player $up, $data)
 {
     // bare skadet angrep?
     if (isset($data['attack']) && !$data['attack']['drept']) {
         return;
     }
     $killed = $data['up'];
     // utenfor topp 15?
     if ($killed->rank['pos'] > 15) {
         return;
     }
     // antall poeng vi skal gi
     // 1. plass = 2 poeng, 2.-15. plass = 1
     $p = $killed->rank['pos'] == 1 ? 2 : 1;
     // oppdater eventuelle FF
     $crew = " AND ff_is_crew " . ($up->is_nostat() ? "!=" : "=") . " 0";
     \Kofradia\DB::get()->exec("\n\t\t\tUPDATE users_players, ff, ff_members\n\t\t\tSET ff_points = ff_points + {$p}\n\t\t\tWHERE up_id = {$up->id} AND ffm_up_id = up_id AND ff_id = ffm_ff_id AND (ffm_status = " . ff_member::STATUS_MEMBER . " OR ffm_status = " . ff_member::STATUS_DEACTIVATED . "){$crew}");
 }