Exemplo n.º 1
0
        if ($i++ == $limit) {
            ess::$b->page->add_js_domready('
			document.id("prestasjoner_vis_alle").addEvent("click", function(event)
			{
				this.getParent("ul").getElements("li").setStyle("display", "");
				this.getParent("li").setStyle("display", "none");
				event.stop();
			});');
            $limit_active = true;
            echo '
				<li>Kun siste oppnådd vist - <a href="#" id="prestasjoner_vis_alle">vis alle</a></li>';
        }
        $prefix = '';
        $last = ess::$b->date->get($rep_all[$a->id]['max_upa_time'])->format(date::FORMAT_NOTIME);
        if ($a->data['ac_recurring']) {
            $prefix = fwords("", "%d x ", $rep_all[$a->id]['count_upa_id']);
        }
        echo '
				<li' . ($limit_active ? ' style="display: none"' : '') . '>' . $prefix . '&laquo;' . htmlspecialchars($a->data['ac_name']) . '&raquo; (' . $last . ')</li>';
    }
    echo '
			</ul>';
} else {
    echo '
			<p>Spilleren har ikke oppnådd noen prestasjoner.</p>';
}
echo '
		</div>';
echo '
	</div>
	<div class="clear"></div>
Exemplo n.º 2
0
    /**
     * Kaste ut et medlem
     */
    protected function kick()
    {
        if (!isset($_POST['up_id']) && !isset($_POST['up_ids'])) {
            ess::$b->page->add_message("Du må merke en eller flere spillere.", "error");
            redirect::handle();
        }
        // kontroller medlemmene
        $up_ids = isset($_POST['up_ids']) ? array_map("intval", explode(",", $_POST['up_ids'])) : array_map("intval", (array) $_POST['up_id']);
        $priority_list = array();
        $members = array();
        foreach ($up_ids as $up_id) {
            // er ikke medlem?
            if (!isset($this->ff->members['members'][$up_id])) {
                ess::$b->page->add_message('Spilleren <user id="' . $up_id . '" /> er ikke medlem av ' . $this->ff->type['refobj'] . '.', "error");
                redirect::handle();
            }
            $member = $this->ff->members['members'][$up_id];
            // kan ikke kaste ut seg selv
            if ($member->id == login::$user->player->id && !$this->ff->mod) {
                ess::$b->page->add_message('Du kan ikke kaste ut deg selv. Forlat ' . $this->ff->type['refobj'] . ' via <a href="panel?ff_id=' . $this->ff->id . '">panelet</a>.');
                redirect::handle();
            }
            // eier kan ikke kastes ut
            if ($member->data['ffm_priority'] == 1 && !$this->ff->mod) {
                ess::$b->page->add_message(ucfirst($this->ff->type['priority'][1]) . " kan ikke kastes ut av {$this->ff->type['refobj']}.");
                redirect::handle();
            }
            // har høyere prioritering?
            if ($member->data['ffm_priority'] <= $this->ff->uinfo->data['ffm_priority'] && !$this->ff->mod) {
                ess::$b->page->add_message('Du kan ikke kaste ut <user id="' . $member->id . '" /> som har høyere eller samme posisjon som deg.', "error");
                redirect::handle();
            }
            $members[] = $member;
            $priority_list[] = $member->data['ffm_priority'];
        }
        // ingen medlemmer?
        if (count($members) == 0) {
            ess::$b->page->add_message("Du må merke en eller flere spillere.", "error");
            redirect::handle();
        }
        // godkjent?
        if (isset($_POST['confirm']) && validate_sid()) {
            // sorter slik at medlemmene med lavest posisjon kommer først
            array_multisort($priority_list, SORT_DESC, $members);
            // kast ut medlemmene
            foreach ($members as $member) {
                $member->kick(postval("note"));
            }
            // infomelding
            if (count($members) > 0) {
                $list = array();
                foreach ($members as $member) {
                    $list[] = '<li><user id="' . $member->id . '" /> (' . $member->get_priority_name() . ($member->data['ffm_parent_up_id'] ? ' underordnet <user id="' . $member->data['ffm_parent_up_id'] . '" />' : '') . ')</li>';
                }
                ess::$b->page->add_message('Du kastet ut følgende spillere fra ' . $this->ff->type['refobj'] . ':<ul>' . implode("", $list) . '</ul>');
            } else {
                $member = reset($members);
                ess::$b->page->add_message('Du kastet ut <user id="' . $member->id . '" /> fra sin posisjon som ' . $member->get_priority_name() . ($member->data['ffm_parent_up_id'] ? ' underordnet <user id="' . $member->data['ffm_parent_up_id'] . '" />' : '') . '.');
            }
            redirect::handle();
        }
        // sorter slik at medlemmene med høyest posisjon kommer først
        array_multisort($priority_list, $members);
        // vis skjema
        echo '
<form action="" method="post">
	<input type="hidden" name="kick" value="1" />
	<input type="hidden" name="up_ids" value="' . implode(",", $up_ids) . '" />
	<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
	<div class="section" style="width: ' . (count($members) == 1 ? '230' : '400') . 'px">
		<h1>Kast ut spiller</h1>
		<p class="h_right"><a href="medlemmer?ff_id=' . $this->ff->id . '">Tilbake</a></p>';
        if (count($members) == 1) {
            $member = reset($members);
            echo '
		<p>Du er i ferd med å kaste ut <user id="' . $member->id . '" /> fra ' . $this->ff->type['refobj'] . '.</p>
		<dl class="dd_right">
			<dt>Posisjon</dt>
			<dd>' . ucfirst($member->get_priority_name()) . ($member->data['ffm_parent_up_id'] ? ' underordnet <user id="' . $member->data['ffm_parent_up_id'] . '" />' : '') . '</dd>
			<dt>Ble medlem</dt>
			<dd>' . ess::$b->date->get($member->data['ffm_date_join'])->format() . '</dd>
			<dt>Sist pålogget</dt>
			<dd>' . ess::$b->date->get($member->data['up_last_online'])->format() . '</dd>
		</dl>';
        } else {
            echo '
		<p>Du er i ferd med å kaste ut følgende spillere fra ' . $this->ff->type['refobj'] . ':</p>
		<table class="table">
			<thead>
				<tr>
					<th>Spiller</th>
					<th>Posisjon</th>
					<th>Ble medlem</th>
					<th>Sist pålogget</th>
				</tr>
			</thead>
			<tbody>';
            $i = 0;
            foreach ($members as $member) {
                echo '
				<tr' . (++$i % 2 == 0 ? ' class="color"' : '') . '>
					<td><user id="' . $member->id . '" /></td>
					<td>' . ucfirst($member->get_priority_name()) . ($member->data['ffm_parent_up_id'] ? ' underordnet <user id="' . $member->data['ffm_parent_up_id'] . '" />' : '') . '</td>
					<td class="nowrap">' . ess::$b->date->get($member->data['ffm_date_join'])->format() . '</td>
					<td class="nowrap">' . ess::$b->date->get($member->data['up_last_online'])->format() . '</td>
				</tr>';
            }
            echo '
			</tbody>
		</table>';
        }
        echo '
		<p>Begrunnelse: <i>(valgfritt)</i></p>
		<textarea name="note" rows="3" cols="5" style="width: 90%">' . htmlspecialchars(postval("note")) . '</textarea>
		<p>Begrunnelsen vil bli gitt til spilleren og lagt til i loggen. Merk at ' . fwords("spilleren", "spillerene", count($members)) . ' normalt vil være tilknyttet statistikken for ' . $this->ff->type['refobj'] . ' i 12 timer etter utkastelse.</p>';
        // kontroller for underordnede spillere
        if ($this->ff->type['parent']) {
            $subs = array();
            $pri3_count = 0;
            foreach ($members as $member) {
                if ($member->data['ffm_priority'] == 3) {
                    $pri3_count++;
                }
                if ($member->data['ffm_priority'] == 3 && isset($this->ff->members['members_parent'][$member->id])) {
                    foreach ($this->ff->members['members_parent'][$member->id] as $member_sub) {
                        // hopp over om det er en av de som skal kastes ut
                        if (in_array($member_sub->id, $up_ids)) {
                            continue;
                        }
                        $subs[] = '<li><user id="' . $member_sub->id . '" /></li>';
                    }
                }
            }
            if (count($subs) > 0) {
                // er det noen pri3 etter alle blir kastet ut?
                $pri3 = count($this->ff->members['members_priority'][3]) - $pri3_count > 0;
                if (count($members) == 1) {
                    echo '
		<p>Medlemmet har følgende medlemmer underordnet seg:</p>';
                } else {
                    echo '
		<p>Følgende medlemmer er underordnet av en av spillerene du har valgt:</p>';
                }
                echo '
		<ul>' . implode("", $subs) . '</ul>' . ($pri3 ? '
		<p>Underordnede medlemmer vil bli flyttet til tilfeldige spillere med posisjon ' . $this->ff->type['priority'][3] . '.</p>' : '
		<p>Spilleren med posisjonen ' . $this->ff->type['priority'][4] . ' som har vært medlem lengst bli utvalgt til ' . $this->ff->type['priority'][3] . '.') . '</p>';
            }
        }
        echo '
		<p class="c">
			' . show_sbutton("Kast ut", 'name="confirm"') . '
			<a href="medlemmer?ff_id=' . $this->ff->id . '">Avbryt</a>
		</p>
	</div>
</form>';
        $this->ff->load_page();
    }
Exemplo n.º 3
0
 /**
  * Reset password for the user
  */
 protected function handleResetPassword()
 {
     $user = $this->getUser();
     // update user
     DB::get()->prepare("UPDATE users SET u_pass = NULL, u_pass_change = NULL WHERE u_id = ?")->execute(array($user->id));
     $reseted = $user->data['u_pass'] != null;
     $user->data['u_pass'] = null;
     $user->data['u_pass_change'] = null;
     // log out any sessions
     $q = DB::get()->prepare("\n\t\t\tUPDATE sessions\n\t\t\tSET ses_active = 0, ses_logout_time = ?\n\t\t\tWHERE ses_u_id = ? AND ses_active = 1 AND ses_id != ?");
     $logged_out = $q->execute(array(time(), \login::$user->id, \login::$info['ses_id']));
     $msg = $reseted ? 'Ditt passord har nå blitt nullstilt, og du kan nå opprette et nytt passord.' : 'Ditt passord var allerede nullstilt.';
     if ($logged_out > 0) {
         $msg .= ' ' . fwords("%d økt", "%d økter", $logged_out) . ' ble logget ut automatisk.';
     }
     $this->messages[] = $msg;
     $this->log("Logget inn; passord nullstilt");
     $this->url_override = "/lock?f=pass";
 }
Exemplo n.º 4
0
 /** Formatere hendelser i loggen */
 public function format_log($id, $time, $action, $data, $extra)
 {
     global $__server;
     // sett opp data
     switch (self::$log_id[$action]) {
         // Forum: Ny forumtråd
         case "forum_topic_add":
             $info = explode(":", $data);
             $data = '<user id="' . $info[0] . '" /> opprettet <a href="' . $__server['relative_path'] . '/forum/topic?id=' . $info[1] . '">' . htmlspecialchars(urldecode($info[2])) . '</a> i forumet.';
             break;
             // Forum: Forumtråd slettet
         // Forum: Forumtråd slettet
         case "forum_topic_delete":
             $info = explode(":", $data);
             $title = $this->mod ? '<a href="' . $__server['relative_path'] . '/forum/topic?id=' . $info[1] . '">' . htmlspecialchars(urldecode($info[2])) . '</a>' : htmlspecialchars(urldecode($info[2]));
             $data = '<user id="' . $info[0] . '" /> slettet ' . $title . ' fra forumet.';
             break;
             // Forum: Forumtråd gjenopprettet
         // Forum: Forumtråd gjenopprettet
         case "forum_topic_restore":
             $info = explode(":", $data);
             $data = '<user id="' . $info[0] . '" /> gjenopprettet <a href="' . $__server['relative_path'] . '/forum/topic?id=' . $info[1] . '">' . htmlspecialchars(urldecode($info[2])) . '</a> i forumet.';
             break;
             // Forum: Forumtråd redigert
         // Forum: Forumtråd redigert
         case "forum_topic_edit":
             $info = explode(":", $data);
             $data = '<user id="' . $info[0] . '" /> redigerte <a href="' . $__server['relative_path'] . '/forum/topic?id=' . $info[1] . '">' . htmlspecialchars(urldecode($info[2])) . '</a> i forumet.';
             break;
             // Medlem: Inviter spiller
         // Medlem: Inviter spiller
         case "member_invite":
             $info = explode(":", $data);
             $data = '<user id="' . $info[0] . '" /> inviterte <user id="' . $info[1] . '" /> til ' . $this->refstring . ' som <b>' . htmlspecialchars(urldecode($info[2])) . (!empty($info[3]) ? ' underordnet <user id="' . $info[3] . '" />' : '') . '</b>.';
             break;
             // Medlem: Godta invitasjon
         // Medlem: Godta invitasjon
         case "member_invite_accept":
             $data = '<user id="' . $data . '" /> godtok invitasjonen og er nå medlem av ' . $this->refstring . '.';
             break;
             // Medlem: Avslå invitasjon
         // Medlem: Avslå invitasjon
         case "member_invite_decline":
             $data = '<user id="' . $data . '" /> avslo invitasjonen til ' . $this->refstring . '.';
             break;
             // Medlem: Tilbaketrukket invitasjon
         // Medlem: Tilbaketrukket invitasjon
         case "member_invite_pullback":
             $info = explode(":", $data);
             if ($info[0]) {
                 $data = '<user id="' . $info[0] . '" /> trakk tilbake invitasjonen til <user id="' . $info[1] . '" />.';
             } else {
                 $data = 'Invitasjonen til <user id="' . $info[1] . '" /> ble trukket tilbake.';
             }
             break;
             // Medlem: Foreslå medlem
         // Medlem: Foreslå medlem
         case "member_suggest":
             $info = explode(":", $data);
             $data = '<user id="' . $info[0] . '" /> foreslo <user id="' . $info[1] . '" /> som medlem av ' . $this->refstring . ' som <b>' . htmlspecialchars(urldecode($info[2])) . '</b>.';
             break;
             // Medlem: Godta forslag
         // Medlem: Godta forslag
         case "member_suggest_accept":
             $info = explode(":", $data);
             $data = '<user id="' . $info[0] . '" /> godtok forslaget' . ($info[3] ? ' til <user id="' . $info[3] . '" />' : '') . ' om å invitere <user id="' . $info[1] . '" /> til ' . $this->refstring . ' som <b>' . htmlspecialchars(urldecode($info[2])) . '</b>. <user id="' . $info[1] . '" /> er nå invitert.';
             break;
             // Medlem: Avslå forslag
         // Medlem: Avslå forslag
         case "member_suggest_decline":
             $info = explode(":", $data);
             if ($info[0]) {
                 $data = '<user id="' . $info[0] . '" /> avslo forslaget om å invitere <user id="' . $info[1] . '" />.';
             } else {
                 $data = 'Forslaget om å invitere <user id="' . $info[1] . '" /> ble avslått.';
             }
             break;
             // Medlem: Forlat
         // Medlem: Forlat
         case "member_leave":
             $info = explode(":", $data);
             $data = '<user id="' . $info[0] . '" /> forlot ' . $this->refstring . (isset($info[1]) ? ' fra sin posisjon som <b>' . htmlspecialchars(urldecode($info[1])) . '</b>' : '') . '.';
             break;
             // Medlem: Drept/for lav helse
         // Medlem: Drept/for lav helse
         case "member_deactivated":
             $info = explode(":", $data);
             $data = '<user id="' . $info[0] . '" /> fikk for lite helse til å kunne opprettholde sitt medlemskap.' . (isset($info[1]) ? ' Hadde posisjonen <b>' . htmlspecialchars(urldecode($info[1])) . '</b>' : '') . '.';
             break;
             // Medlem: Sparket
         // Medlem: Sparket
         case "member_kicked":
             $info = explode(":", $data);
             $note = $note = empty($info[3]) ? '' : ' Begrunnelse: ' . game::bb_to_html(urldecode($info[3]));
             $data = '<user id="' . $info[0] . '" /> sparket <user id="' . $info[1] . '" /> fra ' . $this->refstring . ' og sin posisjon som <b>' . htmlspecialchars(urldecode($info[2])) . '</b>.' . $note;
             break;
             // Medlem: Posisjon
         // Medlem: Posisjon
         case "member_priority":
             $info = explode(":", $data);
             if ($info[0]) {
                 $data = '<user id="' . $info[0] . '" /> endret posisjonen til <user id="' . $info[1] . '" /> fra <b>' . htmlspecialchars(urldecode($info[2])) . '</b>' . (!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
                 $data = 'Posisjonen til <user id="' . $info[1] . '" /> ble endret fra <b>' . htmlspecialchars(urldecode($info[2])) . '</b>' . (!empty($info[4]) ? ' underordnet <user id="' . $info[4] . '" />' : '') . ' til <b>' . htmlspecialchars(urldecode($info[3])) . '</b>' . (!empty($info[5]) ? ' underordnet <user id="' . $info[5] . '" />' : '') . '.';
             }
             break;
             // Medlem Overordnet capo
         // Medlem Overordnet capo
         case "member_parent":
             $info = explode(":", $data);
             if ($info[0]) {
                 $data = '<user id="' . $info[0] . '" /> endret overordnet til <user id="' . $info[1] . '" /> fra <user id="' . $info[2] . '" /> til <user id="' . $info[3] . '" />.';
             } else {
                 // anonym
                 $data = 'Overordnet til <user id="' . $info[1] . '" /> ble endret fra <user id="' . $info[2] . '" /> til <user id="' . $info[3] . '" />.';
             }
             break;
             // Sett en spiller til en bestemt posisjon
         // Sett en spiller til en bestemt posisjon
         case "member_set_priority":
             // syntax: up_id:priority_name:parent_up_id
             $info = explode(":", $data);
             $data = '<user id="' . $info[0] . '" /> ble satt som <b>' . htmlspecialchars(urldecode($info[1])) . '</b>' . (!empty($info[2]) ? ' underordnet <user id="' . $info[2] . '" />' : '') . '.';
             break;
             // Ny logo
         // Ny logo
         case "logo":
             if (empty($data)) {
                 $data = "Logoen ble fjernet.";
             } else {
                 $info = explode(":", $data);
                 $data = isset($info[1]) && $info[1] == "removed" ? '<user id="' . $info[0] . '" /> fjernet logoen' : '<user id="' . $info[0] . '" /> lastet opp' . (!empty($extra) ? ' ny logo' : ' en logo');
                 $data .= ' for ' . $this->type['refobj'] . '.';
             }
             if (!empty($extra)) {
                 $data .= ' Gammel logo: <img src="' . ess::$s['rpath'] . '/ff/_logo?ff_id=' . $this->id . '&amp;log_id=' . $id . '" alt="Gammel logo" />';
             }
             break;
             // Endre beskrivelse
         // Endre beskrivelse
         case "description":
             $data = '<user id="' . $data . '" /> redigerte beskrivelsen for ' . $this->refstring . '.';
             break;
             // Salg
         // Salg
         case "sell":
             $info = explode(":", $data);
             switch ($info[0]) {
                 // starter salget:
                 // {TYPE=init}:BOSS:UBOSS:FEE:AMOUNT
                 case "init":
                     $data = '<user id="' . $info[1] . '" /> åpnet salg av ' . $this->refstring . ' til <user id="' . $info[2] . '" /> for ' . game::format_cash($info[4]) . '.';
                     break;
                     // avbryter salget (trekker det tilbake)
                     // {TYPE=abort}:BOSS:UBOSS:FEE:AMOUNT
                 // avbryter salget (trekker det tilbake)
                 // {TYPE=abort}:BOSS:UBOSS:FEE:AMOUNT
                 case "abort":
                     $data = '<user id="' . $info[1] . '" /> trakk tilbake salg av ' . $this->refstring . ' til <user id="' . $info[2] . '" /> for ' . game::format_cash($info[4]) . '.';
                     break;
                     // godtar kjøpet (mottakeren)
                     // {TYPE=approve}:BOSS:UBOSS:FEE:AMOUNT
                 // godtar kjøpet (mottakeren)
                 // {TYPE=approve}:BOSS:UBOSS:FEE:AMOUNT
                 case "approve":
                     $data = '<user id="' . $info[2] . '" /> godtok salget av ' . $this->refstring . ' og har nå overtatt som ' . htmlspecialchars($this->type['priority'][1]) . '. <user id="' . $info[1] . '" /> har blitt satt som ' . htmlspecialchars($this->type['priority'][2]) . '. Gebyr: ' . game::format_cash($info[3]) . '. Salgsbeløp: ' . game::format_cash($info[4]) . '.';
                     break;
                     // avslår kjøpet (mottakeren)
                     // {TYPE=reject}:UBOSS:FEE:AMOUNT
                 // avslår kjøpet (mottakeren)
                 // {TYPE=reject}:UBOSS:FEE:AMOUNT
                 case "reject":
                     $data = '<user id="' . $info[2] . '" /> avslo salget av ' . $this->refstring . ' for ' . game::format_cash($info[4]) . '.';
                     break;
             }
             break;
             // Nytt navn
         // Nytt navn
         case "name":
             // syntax: gammelt navn:nytt navn:spiller som sendte søknad:innvilget av
             // syntax (abstrakt): ff_name:ff_name:up_id:up_id
             $info = explode(":", $data);
             $data = 'Navnet på ' . $this->refstring . ' ble endret fra ' . htmlspecialchars(urldecode($info[0])) . ' til <b>' . htmlspecialchars(urldecode($info[1])) . '</b>.';
             break;
         case "bank_overforing_tap_change":
             $info = explode(":", $data);
             $data = 'Overføringsgebyret endret seg med ' . game::format_number($info[1] * 100, 2) . ' % til <b>' . game::format_number(($info[0] + $info[1]) * 100, 2) . ' %</b>.';
             break;
         case "article_edited":
             // data: fna_id,up_id,fna_up_id,fna_title_org,fna_title_new,fna_text_old,fna_text_new
             $info = array_map("urldecode", explode(":", $data));
             $data = '<user id="' . $info[1] . '" /> redigerte <a href="' . $__server['relative_path'] . '/ff/avis?ff_id=' . $this->id . '&amp;a&amp;ffna=' . $info[0] . '">artikkelen</a> til <user id="' . $info[2] . '" />.';
             break;
             // kastet ut spiller fra bomberommet
         // kastet ut spiller fra bomberommet
         case "bomberom_kick":
             // syntax: up_id(som utfører handlingen):up_id(som ble kastet ut):up_brom_expire(når vi egentlig skulle gå ut av bomberommet)
             $info = explode(":", $data);
             $data = '<user id="' . $info[0] . '" /> kastet ut <user id="' . $info[1] . '" /> fra bomberommet, som egentlig skulle sittet til ' . ess::$b->date->get($info[2])->format() . '.';
             break;
             // oppløst
         // oppløst
         case "dissolve":
             // syntax: up_id(som utfører handlingen):up_id(som ble kastet ut):up_brom_expire(når vi egentlig skulle gå ut av bomberommet)
             $info = explode(":", $data);
             $data = ucfirst($this->type['refobj']) . ' ble oppløst.';
             break;
             // kuler inn
         // kuler inn
         case "bullets_in":
             // syntax: up_id:num
             $info = explode(":", $data);
             $data = '<user id="' . $info[0] . '" /> satt inn ' . fwords("%d kule", "%d kuler", $info[1]) . ' i kulelageret.';
             break;
             // kuler ut
         // kuler ut
         case "bullets_out":
             // syntax: up_id:num[:action_up]
             $info = explode(":", $data);
             if (isset($info[2])) {
                 $data = '<user id="' . $info[2] . '" /> tok ut ' . fwords("%d kule", "%d kuler", $info[1]) . ' fra kulelageret og gav de til <user id="' . $info[0] . '" />.';
             } else {
                 $data = '<user id="' . $info[0] . '" /> tok ut ' . fwords("%d kule", "%d kuler", $info[1]) . ' fra kulelageret.';
             }
             break;
             // informasjon
         // informasjon
         case "info":
             // behold data urørt
             break;
             // Dummy
         // Dummy
         case "dummy":
             $data = $time;
             break;
         default:
             $data = htmlspecialchars($data);
     }
     return $data;
 }
Exemplo n.º 5
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']));
     }
 }
Exemplo n.º 6
0
 /**
  * Nodesøk
  */
 protected function node_search($cid, $dest, $search)
 {
     $search = utf8_decode($search);
     // hent all informasjon
     $result = \Kofradia\DB::get()->query("SELECT node_id, node_parent_node_id, node_title, node_type, node_params, node_show_menu, node_expand_menu, node_enabled, node_priority, node_change FROM nodes");
     $nodes = array();
     while ($row = $result->fetch()) {
         $row['params'] = new params($row['node_params']);
         $row['enheter'] = array();
         $row['plain'] = "";
         $nodes[$row['node_id']] = $row;
     }
     if (count($nodes) == 0) {
         $this->msg($cid, $dest, "Ingen siden eksisterer.");
         return;
     }
     // sett opp søkekriteriene
     $search_list = search_query($search);
     $search_list = $search_list[1];
     $search_list2 = $search_list;
     // for delvise treff
     foreach ($search_list as &$q) {
         $q = '/(\\P{L}|^)' . preg_replace(array('/([\\/\\\\\\[\\]()$.+?|{}])/', '/\\*\\*+/', '/\\*/'), array('\\\\$1', '*', '\\S*'), $q) . '(\\P{L}|$)/i';
     }
     // sett opp søkeliste hvor vi søker med * på slutten av ordene
     foreach ($search_list2 as &$q) {
         $q = '/' . preg_replace(array('/([\\/\\\\\\[\\]()$.+?|{}])/', '/\\*\\*+/', '/\\*/'), array('\\\\$1', '*', '\\S*'), $q) . '/i';
     }
     // hent alle enhetene
     $result = \Kofradia\DB::get()->query("SELECT ni_id, ni_node_id, ni_type, nir_content, nir_params, nir_time FROM nodes_items LEFT JOIN nodes_items_rev ON nir_id = ni_nir_id WHERE ni_enabled != 0 AND ni_deleted = 0 ORDER BY ni_priority");
     while ($row = $result->fetch()) {
         if (!isset($nodes[$row['ni_node_id']])) {
             continue;
         }
         $data = nodes::content_build($row);
         $nodes[$row['ni_node_id']]['enheter'][] = $data;
         // bygg opp plain tekst
         $plain = preg_replace("/<br[^\\/>]*\\/?>/", "\n", $data);
         $plain = preg_replace("/(<\\/?(h[1-6]|p)[^>]*>)/", "\n\\1", $plain);
         $plain = html_entity_decode(strip_tags($plain));
         $plain = preg_replace("/(^ +| +\$|\\r)/m", "", $plain);
         #$plain = preg_replace("/(?<![!,.\\n ])\\n/", " ", $plain);
         $plain = preg_replace("/\\n/", " ", $plain);
         $plain = preg_replace("/  +/", " ", $plain);
         $plain = trim($plain);
         $nodes[$row['ni_node_id']]['plain'] .= $plain . " ";
     }
     // sett opp riktige referanser og lag tree
     $sub = array();
     foreach (nodes::$nodes as $row) {
         if ($row['node_enabled'] != 0) {
             $sub[$row['node_parent_node_id']][] = $row['node_id'];
         }
     }
     $tree = new tree($sub);
     $data = $tree->generate(0, NULL, $nodes);
     // sett opp paths
     $paths = array();
     $path = array();
     $number = 1;
     foreach ($data as $row) {
         for (; $row['number'] <= $number; $number--) {
             // fjern fra path
             array_pop($path);
         }
         if ($row['number'] >= $number) {
             // legg til i path
             $path[] = $row['data']['node_title'];
         }
         $paths[$row['data']['node_id']] = $path;
         $number = $row['number'];
     }
     // sett opp søkeresultater
     $result = array();
     $points = array();
     $points2 = array();
     foreach ($data as $row) {
         if ($row['data']['node_type'] != "container") {
             continue;
         }
         // utfør søk
         $found = true;
         $p = 0;
         $p2 = 0;
         foreach ($search_list as $key => $regex) {
             $ok = false;
             $matches = null;
             // søk i teksten
             if (preg_match_all($regex, $row['data']['plain'], $matches)) {
                 $ok = true;
                 $p += count($matches[0]);
             }
             if (preg_match_all($search_list2[$key], $row['data']['plain'], $matches)) {
                 $ok = true;
                 $p2 += count($matches[0]);
             }
             // søk i tittelen
             if (preg_match_all($regex, $row['data']['node_title'], $matches)) {
                 $ok = true;
                 $p += count($matches[0]);
             }
             if (preg_match_all($search_list2[$key], $row['data']['node_title'], $matches)) {
                 $ok = true;
                 $p2 += count($matches[0]);
             }
             if ($ok) {
                 continue;
             }
             $found = false;
             break;
         }
         // fant?
         if ($found) {
             $result[] = $row;
             $points[] = $p;
             $points2[] = $p2;
         }
     }
     // vis søkeresultater
     if (count($result) == 0) {
         $this->msg($cid, $dest, "Ingen treff ble funnet.");
     }
     // sorter søkeresultatene
     array_multisort($points, SORT_DESC, SORT_NUMERIC, $points2, SORT_DESC, SORT_NUMERIC, $result);
     $this->msg($cid, $dest, count($result) . " treff ble funnet - " . ess::$s['path'] . '/node/search?q=' . urlencode($search));
     $i = 0;
     foreach ($result as $key => $row) {
         if ($i++ == 3) {
             break;
         }
         $partial = $points2[$key] - $points[$key];
         if ($row['data']['node_id'] == nodes::$default_node) {
             $url = ess::$s['path'] . '/node';
         } else {
             $url = ess::$s['path'] . '/node/' . $row['data']['node_id'];
         }
         $m = array();
         if ($points[$key] > 0) {
             $m[] = $points[$key] . ' treff';
         }
         if ($partial > 0) {
             $m[] = fwords("%d delvis treff", "%d delvise treff", $partial);
         }
         $this->msg($cid, $dest, implode(", ", $m) . ": " . implode(" -> ", $paths[$row['data']['node_id']]) . " {$url}");
     }
 }
Exemplo n.º 7
0
    /**
     * Endre garasjekapasitet
     */
    protected function garasje_endre_show()
    {
        ess::$b->page->add_title("Endre kapasitet");
        // hent informasjon om garasjen
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT ugg_time, ugg_time_next_rent, ugg_ff_id, ugg_cost_total, ugg_places\n\t\t\tFROM users_garage\n\t\t\tWHERE ugg_up_id = {$this->gta->up->id} AND ugg_b_id = {$this->gta->up->data['up_b_id']}");
        $garasje = $result->fetch();
        // har vi ingen garasje?
        if (!$garasje) {
            redirect::handle("/gta/garasje", redirect::ROOT);
        }
        // hent alle firmaene og plukk ut det korrekte
        $ff_list = $this->gta->get_ff();
        if (!isset($ff_list[$garasje['ugg_ff_id']])) {
            throw new HSException("Mangler firma for garasje.");
        }
        $ff = $ff_list[$garasje['ugg_ff_id']];
        // finn ut antall biler i garasjen
        $result = \Kofradia\DB::get()->query("SELECT COUNT(*) FROM users_gta WHERE ug_up_id = {$this->gta->up->id} AND b_id = {$this->gta->up->data['up_b_id']}");
        $ug_num = $result->fetchColumn(0);
        $limit = $this->gta->get_places_limit();
        // valgt kapasitet?
        if (isset($_POST['places'])) {
            $price_place = (int) postval("price");
            $places = (int) postval("places");
            $places_old = (int) postval("placeso");
            // bydel forandret seg
            if (postval("b_id") != $this->gta->up->data['up_b_id']) {
                ess::$b->page->add_message("Du har reist til en annen bydel siden du sist viste siden.", "error");
                redirect::handle("/gta/garasje", redirect::ROOT);
            } elseif ($ff['price'] != $price_place && $places > $garasje['ugg_places']) {
                ess::$b->page->add_message("Utleieprisen for firmaet har forandret seg.", "error");
            } elseif ($places_old != $garasje['ugg_places']) {
                ess::$b->page->add_message("Kapasiteten i garasjen har endret.", "error");
            } elseif ($places == $garasje['ugg_places']) {
                ess::$b->page->add_message("Du må fylle inn en annen kapasitet enn hva den er i dag.", "error");
            } elseif ($places < 1 || $places > $limit) {
                ess::$b->page->add_message("Ugyldig antall for antall plasser du ønsker å leie.", "error");
            } elseif ($places < $ug_num) {
                ess::$b->page->add_message("Du kan ikke sette kapasiteten lavere enn antall biler som er i garasjen. Det er for øyeblikket " . fwords("%d bil", "%d biler", $ug_num) . " i garasjen.", "error");
            } else {
                $change = $places - $garasje['ugg_places'];
                // beregn penger
                if ($change > 0) {
                    $days_left = max(1, ceil(($garasje['ugg_time_next_rent'] - time()) / 86400));
                    $price = $change * $ff['price'] * $days_left / 7;
                }
                // bekreftet?
                if (isset($_POST['confirm'])) {
                    // senkes?
                    if ($change < 0) {
                        // oppdater
                        $a = \Kofradia\DB::get()->exec("UPDATE users_garage SET ugg_places = {$places} WHERE ugg_up_id = {$this->gta->up->id} AND ugg_b_id = {$this->gta->up->data['up_b_id']} AND ugg_places = {$garasje['ugg_places']}");
                        if ($a > 0) {
                            ess::$b->page->add_message("Du nedjusterte kapasiteten i garasjen fra " . $garasje['ugg_places'] . " plasser til " . fwords("%d plass", "%d plasser", $places) . ".");
                            redirect::handle("/gta/garasje", redirect::ROOT);
                        }
                    } else {
                        // forsøk å trekk fra pengene
                        $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$price} WHERE up_id = {$this->gta->up->id} AND up_cash >= {$price}");
                        if ($a == 0) {
                            ess::$b->page->add_message("Du har ikke råd til å leie så mange plasser hos dette firmaet.", "error");
                        } else {
                            // oppdater antall plasser
                            $a = \Kofradia\DB::get()->exec("UPDATE users_garage SET ugg_places = {$places}, ugg_cost_total = ugg_cost_total + {$price} WHERE ugg_up_id = {$this->gta->up->id} AND ugg_b_id = {$this->gta->up->data['up_b_id']} AND ugg_places = {$garasje['ugg_places']}");
                            if ($a == 0) {
                                // kunne ikke oppdatere garasje; gi tilbake pengene
                                \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash + {$price} WHERE up_id = {$this->gta->up->id}");
                            } else {
                                // gi pengene til firmaet
                                ff::bank_static(ff::BANK_TJENT, round($price * ff::GTA_PERCENT), $ff['ff_id']);
                                ess::$b->page->add_message('Du oppjusterte kapasiteten i garasjen med ' . fwords("%d plass", "%d plasser", $change) . ' til ' . $places . ' plasser for ' . game::format_cash($price) . '.');
                                redirect::handle("/gta/garasje", redirect::ROOT);
                            }
                        }
                    }
                }
                echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Endre kapasitet for garasje på ' . htmlspecialchars($this->gta->up->bydel['name']) . '<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<dl class="dd_right">
			<dt>Utleiefirma</dt>
			<dd><a href="&rpath;/ff/?ff_id=' . $ff['ff_id'] . '">' . htmlspecialchars($ff['ff_name']) . '</a></dd>
			<dt>Leiepris per plass</dt>
			<dd>' . game::format_cash($ff['price']) . '</dd>
			<dt>Neste betalingsfrist</dt>
			<dd>' . ess::$b->date->get($garasje['ugg_time_next_rent'])->format() . '</dd>
		</dl>
		<form action="" method="post">
			<input type="hidden" name="price" value="' . $ff['price'] . '" />
			<input type="hidden" name="placeso" value="' . $garasje['ugg_places'] . '" />
			<input type="hidden" name="places" value="' . $places . '" />
			<input type="hidden" name="b_id" value="' . $this->gta->up->data['up_b_id'] . '" />
			<dl class="dd_right">
				<dt>Endring i kapasitet</dt>
				<dd>Fra ' . game::format_num($garasje['ugg_places']) . ' til ' . game::format_num($places) . '</dd>' . ($change > 0 ? '
				<dt>Kostnad for endring</dt>
				<dd>' . game::format_cash($price) . '</dd>' : '') . '
			</dl>
			<p class="c">' . show_sbutton("Utfør endringer", 'name="confirm"') . ' <a href="&rpath;/gta/garasje/endre">Tilbake</a></p>
		</form>
	</div>
</div>';
                ess::$b->page->load();
            }
        }
        echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Endre kapasitet for garasje på ' . htmlspecialchars($this->gta->up->bydel['name']) . '<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<p class="c"><a href="&rpath;/gta/garasje/detaljer">Tilbake</a></p>
		<dl class="dd_right">
			<dt>Utleiefirma</dt>
			<dd><a href="&rpath;/ff/?ff_id=' . $ff['ff_id'] . '">' . htmlspecialchars($ff['ff_name']) . '</a></dd>
			<dt>Leiepris per plass</dt>
			<dd>' . game::format_cash($ff['price']) . '</dd>
			<dt>Neste betalingsfrist</dt>
			<dd>' . ess::$b->date->get($garasje['ugg_time_next_rent'])->format() . '</dd>
		</dl>
		<form action="" method="post">
			<input type="hidden" name="price" value="' . $ff['price'] . '" />
			<input type="hidden" name="placeso" value="' . $garasje['ugg_places'] . '" />
			<input type="hidden" name="b_id" value="' . $this->gta->up->data['up_b_id'] . '" />
			<dl class="dd_right">
				<dt>Nåværende kapasitet</dt>
				<dd>' . game::format_num($garasje['ugg_places']) . '</dd>
				<dt>Maksimal kapasitet</dt>
				<dd>' . game::format_num($limit) . '</dd>
				<dt>Ønsket kapasitet</dt>
				<dd><input type="text" class="styled w40" name="places" id="gta_places" value="' . game::format_num(intval(postval("places", $garasje['ugg_places']))) . '" /></dd>
			</dl>
			<p class="c">' . show_sbutton("Fortsett") . '</p>
		</form>
		<p class="c">Husk at det kan hende det lønner seg å bytte til et <a href="&rpath;/gta/garasje/detaljer">annet firma</a>.</p>
	</div>
</div>';
    }
Exemplo n.º 8
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;
 }
Exemplo n.º 9
0
    /**
     * Vis oversikt over de forskjellige kategoriene vi kan velge mellom
     */
    protected function show_types()
    {
        // hent antall aktive auksjoner i de ulike typene
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT a_type, COUNT(a_id) num_a\n\t\t\tFROM auksjoner\n\t\t\tWHERE a_active != 0 AND a_completed = 0 AND a_start < " . time() . " AND a_end >= " . time() . "\n\t\t\tGROUP BY a_type");
        $num = array();
        while ($row = $result->fetch()) {
            $num[$row['a_type']] = $row['num_a'];
        }
        echo '
<div class="bg1_c small">
	<h1 class="bg1">Auksjoner<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">';
        foreach (auksjon_type::$types as $type_id => $type) {
            $n = isset($num[$type_id]) ? $num[$type_id] : 0;
            echo '
		<p class="auksjonertype">
			<a href="?t=' . $type_id . '">
				<img src="' . $type['img'] . '" alt="" />
				' . htmlspecialchars($type['title']) . '
				<span class="info">(' . fwords("<b>%d</b> aktiv auksjon", "<b>%d</b> aktive auksjoner", $n) . ')</span>
			</a>
		</p>';
        }
        echo '
		<p class="c"><a href="node/9">Informasjon om auksjoner</a></p>
	</div>
</div>';
        // oppdater cache for auksjoner
        auksjon::update_cache();
    }
Exemplo n.º 10
0
 /**
  * Ta ut kuler
  */
 protected function bullets_out()
 {
     if (!login::$user->player->weapon) {
         redirect::handle();
     }
     $num = (int) postval("bullets_out", 0);
     if ($num <= 0) {
         redirect::handle();
     }
     // på vegne av en spiller?
     $up = login::$user->player;
     $real_up = null;
     if ($this->ff->uinfo->data['ffm_priority'] != 4 && !empty($_POST['bullets_up'])) {
         // har vi ikke ansvar for denne spilleren?
         $id = postval("bullets_up");
         if (!isset($this->ff->members['members'][$id]) || $this->ff->uinfo->data['ffm_priority'] == 3 && $this->ff->members['members'][$id]->data['ffm_parent_up_id'] != login::$user->player->id || $this->ff->uinfo->data['ffm_priority'] < 3 && $this->ff->members['members'][$id]->data['ffm_priority'] != 4) {
             ess::$b->page->add_message("Ugyldig spillervalg.", "error");
             redirect::handle();
         }
         $real_up = $up;
         $up = player::get($id);
         // har ikke våpen?
         if (!$up->weapon) {
             ess::$b->page->add_message('Spilleren <user id="' . $up->id . '" /> har ikke noe våpen og har derfor ikke plass til noen kuler.', "error");
             redirect::handle();
         }
     }
     $ret = $this->ff->bullets_out($num, $up, $real_up);
     switch ($ret) {
         case "missing":
             ess::$b->page->add_message("Det er ikke så mange kuler i broderskapet.", "error");
             break;
         case "full":
             if ($real_up) {
                 $f = max(0, $up->weapon->data['bullets'] - $up->data['up_weapon_bullets'] - $up->data['up_weapon_bullets_auksjon']);
                 ess::$b->page->add_message('<user id="' . $up->id . '" /> har ' . ($f == 0 ? 'ikke plass til flere kuler' : 'bare plass til ' . fwords("%d kule til", "%d kuler til", $f)) . '.', "error");
             } else {
                 ess::$b->page->add_message("Du har ikke plass til så mange kuler.", "error");
             }
             break;
         default:
             if ($real_up) {
                 ess::$b->page->add_message("Du gav " . fwords("%d kule", "%d kuler", $num) . ' til <user id="' . $up->id . '" /> fra kulelageret til broderskapet.');
             } else {
                 ess::$b->page->add_message("Du tok ut " . fwords("%d kule", "%d kuler", $num) . " fra kulelageret til broderskapet.");
             }
             redirect::handle();
     }
 }
Exemplo n.º 11
0
 /**
  * Utfør sjekk
  */
 protected function check()
 {
     if (!$this->form->validateHashOrAlert()) {
         return;
     }
     // ingen merket?
     if (!isset($_POST['bilde'])) {
         ess::$b->page->add_message("Du må markere noen bilder.", "error");
     } elseif (!is_array($_POST['bilde'])) {
         putlog("ABUSE", "%bUGYLDIG INNTASTING I ANTI-BOT:%b _POST bilde var ikke array: {$_POST['bilde']}");
         ess::$b->page->add_message("Du må markere noen bilder.", "error");
     } elseif (count($_POST['bilde']) != $this->images_valid) {
         ess::$b->page->add_message("Du må markere " . fwords("%d bilde", "%d bilder", $this->images_valid) . ". Du markerte " . fwords("%d bilde", "%d bilder", count($_POST['bilde'])) . ".");
     } else {
         // sjekk om det er korrekt inntastet
         $keys = array_keys($_POST['bilde']);
         $valid = 0;
         foreach ($keys as $key) {
             if (isset($this->images[$key]) && $this->images[$key]['valid']) {
                 $valid++;
             }
         }
         // feil bilder?
         if ($valid != $this->images_valid) {
             ess::$b->page->add_message("Du merket av feil bilder.", "error");
             // lagre logg
             $this->antibot->update_status("failed", $valid);
             // oppdater tid
             $this->antibot->update_time();
         } else {
             $this->antibot->valid();
             $this->redirect();
         }
     }
     // send til testen
     redirect::handle();
 }
Exemplo n.º 12
0
    /**
     * Utfør et søk
     */
    protected static function search_handle($search_list, $search_list2, $nodes)
    {
        // hent alle enhetene
        $result = \Kofradia\DB::get()->query("SELECT ni_id, ni_node_id, ni_type, nir_content, nir_params, nir_time FROM nodes_items LEFT JOIN nodes_items_rev ON nir_id = ni_nir_id WHERE ni_enabled != 0 AND ni_deleted = 0 ORDER BY ni_priority");
        while ($row = $result->fetch()) {
            if (!isset($nodes[$row['ni_node_id']])) {
                continue;
            }
            $data = nodes::content_build($row);
            $nodes[$row['ni_node_id']]['enheter'][] = $data;
            // bygg opp plain tekst
            $plain = preg_replace("/<br[^\\/>]*\\/?>/u", "\n", $data);
            $plain = preg_replace("/(<\\/?(h[1-6]|p)[^>]*>)/u", "\n\\1", $plain);
            $plain = html_entity_decode(strip_tags($plain));
            $plain = preg_replace("/(^ +| +\$|\\r)/mu", "", $plain);
            #$plain = preg_replace("/(?<![!,.\\n ])\\n/u", " ", $plain);
            $plain = preg_replace("/\\n/u", " ", $plain);
            $plain = preg_replace("/  +/u", " ", $plain);
            $plain = trim($plain);
            $nodes[$row['ni_node_id']]['plain'] .= $plain . " ";
        }
        // sett opp riktige referanser og lag tree
        $sub = array();
        foreach (nodes::$nodes as $row) {
            if ($row['node_enabled'] != 0) {
                $sub[$row['node_parent_node_id']][] = $row['node_id'];
            }
        }
        $tree = new tree($sub);
        $data = $tree->generate(0, NULL, $nodes);
        // sett opp paths
        $paths = array();
        $path = array();
        $number = 1;
        foreach ($data as $row) {
            for (; $row['number'] <= $number; $number--) {
                // fjern fra path
                array_pop($path);
            }
            if ($row['number'] >= $number) {
                // legg til i path
                switch ($row['data']['node_type']) {
                    case "url_absolute":
                        $path[] = '<a href="' . htmlspecialchars($row['data']['params']->get("url")) . '"' . ($row['data']['params']->get("new_window") ? ' target="_blank"' : '') . '>' . htmlspecialchars($row['data']['node_title']) . '</a>';
                        break;
                    case "url_relative":
                        $path[] = '<a href="' . ess::$s['relative_path'] . htmlspecialchars($row['data']['params']->get("url")) . '"' . ($row['data']['params']->get("new_window") ? ' target="_blank"' : '') . '>' . htmlspecialchars($row['data']['node_title']) . '</a>';
                        break;
                    default:
                        if ($row['data']['node_id'] == nodes::$default_node) {
                            $url = ess::$s['relative_path'] . '/node';
                        } else {
                            $url = ess::$s['relative_path'] . '/node/' . $row['data']['node_id'];
                        }
                        $path[] = '<a href="' . htmlspecialchars($url) . '">' . htmlspecialchars($row['data']['node_title']) . '</a>';
                }
            }
            $paths[$row['data']['node_id']] = $path;
            $number = $row['number'];
        }
        // sett opp søkeresultater
        $result = array();
        $points = array();
        $points2 = array();
        foreach ($data as $row) {
            if ($row['data']['node_type'] != "container") {
                continue;
            }
            // utfør søk
            $found = true;
            $p = 0;
            $p2 = 0;
            foreach ($search_list as $key => $regex) {
                $ok = false;
                $matches = null;
                // søk i teksten
                if (preg_match_all($regex, $row['data']['plain'], $matches)) {
                    $ok = true;
                    $p += count($matches[0]);
                }
                if (preg_match_all($search_list2[$key], $row['data']['plain'], $matches)) {
                    $ok = true;
                    $p2 += count($matches[0]);
                }
                // søk i tittelen
                if (preg_match_all($regex, $row['data']['node_title'], $matches)) {
                    $ok = true;
                    $p += count($matches[0]);
                }
                if (preg_match_all($search_list2[$key], $row['data']['node_title'], $matches)) {
                    $ok = true;
                    $p2 += count($matches[0]);
                }
                if ($ok) {
                    continue;
                }
                $found = false;
                break;
            }
            // fant?
            if ($found) {
                $result[] = $row;
                $points[] = $p;
                $points2[] = $p2;
            }
        }
        // vis søkeresultater
        if (count($result) == 0) {
            echo '
<p style="font-weight: bold">Ingen treff ble funnet.</p>';
        } else {
            // sorter søkeresultatene
            array_multisort($points, SORT_DESC, SORT_NUMERIC, $points2, SORT_DESC, SORT_NUMERIC, $result);
            echo '
<h2>Søkeresultater</h2>';
            ess::$b->page->add_css('
.nodes_search_node {
	position: relative;
	background-color: #222;
	padding: 0 10px;
	overflow: hidden;
	margin: 10px 0;
}
.nodes_search_path {
	
}
.nodes_search_points {
	position: absolute;
	right: 5px;
	bottom: 5px;
	color: #AAA;
	margin: 0;
	font-size: 11px;
	text-align: right;
}');
            redirect::store("/node/search", redirect::ROOT);
            $pagei = new pagei(pagei::TOTAL, count($result), pagei::PER_PAGE, 15, pagei::ACTIVE_GET, "side");
            $result = array_slice($result, $pagei->start, $pagei->per_page, true);
            foreach ($result as $key => $row) {
                $partial = $points2[$key] - $points[$key];
                if ($row['data']['node_id'] == nodes::$default_node) {
                    $url = ess::$s['relative_path'] . '/node';
                } else {
                    $url = ess::$s['relative_path'] . '/node/' . $row['data']['node_id'];
                }
                echo '
<div class="nodes_search_node">
	<h3><a href="' . $url . '">' . htmlspecialchars($row['data']['node_title']) . '</a></h3>
	<p class="nodes_search_path">' . implode(" &raquo; ", $paths[$row['data']['node_id']]) . '</p>
	<p class="nodes_search_points">' . ($points[$key] > 0 ? $points[$key] . ' treff' : '') . ($partial > 0 ? '<br />' . fwords("%d delvis treff", "%d delvise treff", $partial) : '') . '</p>
</div>';
            }
            if ($pagei->pages > 1) {
                echo '
<p class="c">' . $pagei->pagenumbers() . '</p>';
            }
        }
    }
Exemplo n.º 13
0
    /**
     * Plassere spiller i bomberom
     */
    protected function type_bomberom_set_handle($ledige_plasser, $ant_i_bomberommet)
    {
        $player = login::$user->player;
        $self = true;
        $familie = false;
        // plassere en annen spiller?
        if ($_POST['player'] != "own") {
            // ingen ledige plasser?
            if ($ledige_plasser == 0) {
                ess::$b->page->add_message("Det er ingen ledige plasser til å plassere andre spillere i bomberommet.", "error", null, "bomberom_set");
                redirect::handle();
            }
            // hent spillerinfo
            $player = player::get(postval("player"));
            if (!$player || !$player->active || $player->bomberom_check() || $player->fengsel_check()) {
                ess::$b->page->add_message("Kan ikke plassere spilleren i bomberom.", "error", null, "bomberom_set");
                redirect::handle();
            }
            // kan ikke sette i bomberom pga. rankforskjell?
            if (!login::$user->player->can_set_brom($player)) {
                ess::$b->page->add_message('Kan ikke plassere <user id="' . $player->id . '" /> i bomberom pga. spilleren sin rank er for langt unna din rank. Se mer i <a href="&rpath;node/39">hjelp</a>.', "error", null, "bomberom_set");
                redirect::handle();
            }
            // kontroller at vi er ansvarlig eller har tilgang pga. familie
            if ($player->data['up_brom_up_id'] != $this->up->id) {
                // sjekk at vi er i en felles familie
                $result = \Kofradia\DB::get()->query("\n\t\t\t\t\tSELECT ffm_ff_id\n\t\t\t\t\tFROM ff, ff_members, (\n\t\t\t\t\t\tSELECT ffm_ff_id ff_id FROM ff_members WHERE ffm_up_id = " . $this->up->id . " AND ffm_status = 1\n\t\t\t\t\t) ref\n\t\t\t\t\tWHERE ffm_ff_id = ref.ff_id AND ff.ff_id = ref.ff_id AND ff_type = 1 AND ffm_up_id = {$player->id} AND ffm_status = 1\n\t\t\t\t\tLIMIT 1");
                // ikke i felles familie?
                if ($result->rowCount() == 0) {
                    ess::$b->page->add_message('Du kan ikke plassere <user id="' . $player->id . '" /> i bomberom.', "error", null, "bomberom_set");
                    redirect::handle();
                }
                $familie = true;
            }
            // kan vi ikke flytte spilleren?
            if ($familie && $player->data['up_b_id'] != $this->ff->data['br_b_id']) {
                ess::$b->page->add_message('<user id="' . $player->id . '" /> er ikke i samme bydel som bomberommet. Du har ikke mulighet til å flytte spilleren og kan dermed ikke plassere spilleren i dette bomberommt.', "error", null, "bomberom_set");
                redirect::handle();
            }
            $self = false;
        }
        // familie og vi har allerede plassert en spiller de siste 12 timene?
        if ($familie) {
            $familie_wait = max(0, $this->up->data['up_brom_ff_time'] + bomberom::FAMILIY_MEMBERS_WAIT - time());
            if ($familie_wait > 0) {
                ess::$b->page->add_message("Du kan ikke plassere medlemmer av noen broderskap du er med i for øyeblikket, fordi du plasserte forrige spiller fra broderskap " . ess::$b->date->get($this->up->data['up_brom_ff_time'])->format() . ". Du må vente " . game::counter($familie_wait) . ".", "error", null, "bomberom_set");
                redirect::handle();
            }
        }
        // sett opp timepris
        $price_hour = bomberom::PRICE_HOUR + $ant_i_bomberommet * bomberom::PRICE_EACH_PLAYER;
        if (!$self) {
            $price_hour *= bomberom::PRICE_FACTOR_OTHER;
        }
        if ($self && $this->ff->access(true)) {
            $price_hour *= bomberom::PRICE_FACTOR_OWN;
        }
        // sjekke pris?
        $hours = (int) $_POST['hours'];
        if ($hours <= 0) {
            ess::$b->page->add_message("Du må skrive inn et gyldig antall timer.", "error", null, "bomberom_set");
        } elseif ($hours > bomberom::MAX_HOURS) {
            ess::$b->page->add_message("Du kan maksimalt sette en spiller i bomberom i " . bomberom::MAX_HOURS . " timer.", "error", null, "bomberom_set");
        } else {
            // bekreftet pris?
            if (isset($_POST['price']) && $_POST['price'] != "") {
                validate_sid();
                // beregn pris
                $price = $hours * $price_hour;
                // har prisen endret seg?
                if (postval("price") != $price) {
                    ess::$b->page->add_message("Prisen har endret seg og du må bekrefte på nytt.", "error", null, "bomberom_set");
                } else {
                    \Kofradia\DB::get()->beginTransaction();
                    // trekk fra pengene
                    $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$price} WHERE up_id = " . $this->up->id . " AND up_cash >= {$price}");
                    if ($a == 0) {
                        ess::$b->page->add_message("Du har ikke så mye penger på hånda.", "error", null, "bomberom_set");
                    } else {
                        $expire = time() + $hours * 3600;
                        $b_id = !$self && !$familie ? ', up_b_id = ' . $this->ff->data['br_b_id'] : '';
                        // sett spilleren i bomberommet
                        $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_brom_ff_id = {$this->ff->id}, up_brom_expire = {$expire}{$b_id} WHERE up_id = {$player->id} AND up_brom_expire = {$player->data['up_brom_expire']}");
                        // kunne ikke plassere spilleren i bomberommet?
                        if ($a == 0) {
                            ess::$b->page->add_message("Kunne ikke plassere spilleren i bomberommet.", "error", null, "bomberom_set");
                            \Kofradia\DB::get()->rollback();
                        } else {
                            // send logg til spilleren
                            if (!$self) {
                                $player->add_log("bomberom_set", $this->up->id . ":" . urlencode($this->ff->data['ff_name']) . ":{$expire}", $this->ff->id);
                            }
                            // oppdatere tidspunkt for familie?
                            if ($familie) {
                                \Kofradia\DB::get()->exec("UPDATE users_players SET up_brom_ff_time = " . time() . " WHERE up_id = " . $this->up->id);
                            }
                            // gi penger til firmaet
                            $this->ff->bank(ff::BANK_TJENT, round($price * ff::BOMBEROM_PERCENT));
                            putlog("DF", "BOMBEROM ANSVARLIG: " . $this->up->data['up_name'] . " satt%c3 " . ($self ? 'seg selv' : $player->data['up_name']) . "%c i bomberom i firmaet {$this->ff->data['ff_name']} for {$hours} timer " . $player->generate_minside_url());
                            ess::$b->page->add_message("Du plasserte " . ($self ? 'deg selv' : '<user id="' . $player->id . '" />') . " i bomberommet med en varighet på <b>{$hours}</b> " . fword("time", "timer", $hours) . ". Det kostet deg <b>" . game::format_cash($price) . "</b>.", null, null, "bomberom_set");
                            \Kofradia\DB::get()->commit();
                            redirect::handle("?ff_id={$this->ff->id}");
                        }
                    }
                    \Kofradia\DB::get()->commit();
                }
            }
            echo '
		' . ess::$b->page->message_get("bomberom_set", true, true) . '
		<p>Du er i ferd med å plassere ' . ($self ? 'deg selv' : $player->profile_link()) . ' i dette bomberommet.</p>
		<p>For tiden er det ' . fwords("%d spiller", "%d spillere", $ant_i_bomberommet) . ' i bomberommet og ' . fwords("%d ledig plass", "%d ledige plasser", $ledige_plasser) . '.' . ($ledige_plasser == 0 ? ' Du har alikevel plass i bomberommet som medlem av firmaet.' : '') . '</p>
		<dl class="dd_right">
			<dt>Antall timer</dt>
			<dd>' . fwords("<b>%d</b> time", "<b>%d</b> timer", $hours) . '</dd>
			<dt>Total kostnad</dt>
			<dd>' . game::format_cash($hours * $price_hour) . '</dd>
			<dt>Varighet til</dt>
			<dd>' . ess::$b->date->get(time() + $hours * 3600)->format(date::FORMAT_SEC) . '</dd>
		</dl>
		<form action="" method="post">' . (!$self ? '
			<input type="hidden" name="player" value="' . $player->id . '" />' : '') . '
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<input type="hidden" name="hours" value="' . $hours . '" />
			<input type="hidden" name="price" value="' . $hours * $price_hour . '" />
			<p class="c">' . show_sbutton("Sett spilleren i bomberom") . '</p>
		</form>
		<form action="" method="post">' . (!$self ? '
			<input type="hidden" name="player" value="' . $player->id . '" />' : '') . '
			<p>Endre antall timer: <input type="text" name="hours" class="styled w30" value="' . $hours . '" /> ' . show_sbutton("Nytt prisoppsett") . '</p>
		</form>
		<p class="c"><a href="./?ff_id=' . $this->ff->id . '">Tilbake</a></p>';
        }
    }
Exemplo n.º 14
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>';
    }
Exemplo n.º 15
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;
 }
Exemplo n.º 16
0
 /**
  * Hent posisjon og info om forumstats for FF
  */
 protected function get_ff_info($up_id)
 {
     if (!$this->ff) {
         // ikke FF, vis medlemskap i familier
         if (!isset($this->ff_rel[$up_id])) {
             return '';
         }
         return $ret = ' <span class="f_stilling">[<span class="f_stilling_i">' . $this->ff_rel[$up_id] . '</span>]</span>';
     }
     // ikke medlem lenger
     if (!isset($this->ff->members['members'][$up_id])) {
         return '';
     }
     $member = $this->ff->members['members'][$up_id];
     $ret = ' <span class="f_stilling">[<span class="f_stilling_i">' . ucfirst($member->get_priority_name()) . '</span>]</span>';
     $ret .= ' <span class="f_stilling">[<span class="f_stilling_i">' . fwords("%d tråd", "%d tråder", $member->data['ffm_forum_topics']) . ', ' . $member->data['ffm_forum_replies'] . ' svar</span>]</span>';
     return $ret;
 }
Exemplo n.º 17
0
    /**
     * Vis logger
     */
    protected function show_logs()
    {
        $filters = "";
        if ($this->filter_actions) {
            $filters .= " AND lc_lca_id IN (" . implode(",", $this->filter_actions) . ")";
        }
        if ($this->filter_time_before) {
            $filters .= " AND lc_time <= {$this->filter_time_before}";
        }
        if ($this->filter_time_after) {
            $filters .= " AND lc_time >= {$this->filter_time_after}";
        }
        if ($this->filter_by_up) {
            $filters .= " AND lc_up_id" . (isset($_POST['by_invert']) ? ' NOT' : '') . " IN (" . $this->get_full_up_list($this->filter_by_up) . ")";
        }
        if ($this->filter_a_up) {
            $filters .= " AND lc_a_up_id" . (isset($_POST['a_invert']) ? ' NOT' : '') . " IN (" . $this->get_full_up_list($this->filter_a_up) . ")";
        }
        $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::ACTIVE_POST, "side", pagei::PER_PAGE, 100);
        $result = $pagei->query("\n\t\t\tSELECT lc_id, lc_up_id, lc_time, lc_lca_id, lc_a_up_id, lc_log\n\t\t\tFROM log_crew\n\t\t\tWHERE 1{$filters}\n\t\t\tORDER BY lc_time DESC");
        $rows = array();
        while ($row = $result->fetch()) {
            $rows[$row['lc_id']] = $row;
        }
        $data = crewlog::load_summary_data($rows);
        $logs = array();
        foreach ($data as $row) {
            // hent sammendrag
            $summary = crewlog::make_summary($row);
            $day = ess::$b->date->get($row['lc_time'])->format(date::FORMAT_NOTIME);
            $logs[$day][] = '<p><span class="time"><a href="' . ess::$s['relative_path'] . '/crew/crewlogg?lc_id=' . $row['lc_id'] . '">' . ess::$b->date->get($row['lc_time'])->format("H:i") . '</a>:</span> ' . $summary . '</p>';
        }
        ess::$b->page->add_css('
		h1.crewlog { margin: 30px auto 20px }
		div.crewlog { margin: 0 30px }
		.crewlog .time { color: #888888; padding-right: 5px }
		');
        if ($this->filters_active) {
            echo '
		<p class="c">Fant ' . fwords("%d oppføring", "%d oppføringer", $pagei->total) . ' som passet til filteret.</p>';
        }
        echo '
		<p class="c">' . $pagei->pagenumbers($this->filters_active ? "input" : null) . '</p>
		<div class="crewlog">';
        foreach ($logs as $day => $items) {
            echo '
			<div class="bg1_c">
				<h1 class="bg1">' . $day . '<span class="left2"></span><span class="right2"></span></h1>
				<div class="bg1">
					' . implode('
					', $items) . '
				</div>
			</div>';
        }
        echo '
			<p class="c">' . $pagei->pagenumbers($this->filters_active ? "input" : null) . '</p>
		</div>';
    }
Exemplo n.º 18
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);
 }
Exemplo n.º 19
0
    /**
     * Vis resultat fra angrep
     */
    protected function attack_result_show($result, $bullets)
    {
        echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">' . ($result['drept'] ? 'Spiller drept' : 'Spiller skadet') . '<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">';
        // sett opp hva vi fikk
        $got = array();
        $got[] = game::format_num($result['rankpoeng']) . ' poeng' . ($result['drept'] ? '' : ' fra spilleren');
        if (isset($result['penger']) && $result['penger'] > 0) {
            $got[] = game::format_cash($result['penger']) . ' som offeret hadde på hånda';
        }
        if (isset($result['penger_bank']) && $result['penger_bank'] > 0) {
            $got[] = game::format_cash($result['penger_bank']) . ' som deler av det offeret hadde i banken';
        }
        if (isset($result['hitlist']) && $result['hitlist'] > 0) {
            $got[] = game::format_cash($result['hitlist']) . ' fra hitlista';
        }
        $got = sentences_list($got);
        // vellykket?
        if ($result['drept']) {
            $place = bydeler::get_random_place(login::$user->player->bydel['id']);
            echo '
		<p>Du fant ' . $this->up_offer->profile_link() . ' som hadde ranken ' . $this->up_offer->rank['name'] . ' og var plassert som nummer ' . $this->up_offer->data['upr_rank_pos'] . ' på ranklista' . ($place ? ' ved ' . $place : '') . ' og angrep spilleren med ' . $bullets . ' ' . fword("kule", "kuler", $bullets) . '.</p>
		<p>Spilleren døde av angrepet ditt. Du fikk ' . $got . '.' . ($result['penger'] == 0 ? ' Offeret hadde ingen penger på hånda.' : '') . '</p>';
        } else {
            $place = bydeler::get_random_place(login::$user->player->bydel['id']);
            echo '
		<p>Du fant ' . $this->up_offer->profile_link() . ' med ranken ' . $this->up_offer->rank['name'] . ' og plassering nummer ' . $this->up_offer->data['upr_rank_pos'] . ' på ranklista' . ($place ? ' ved ' . $place : '') . ' og angrep spilleren med ' . $bullets . ' ' . fword("kule", "kuler", $bullets) . '.</p>
		<p>Spilleren ble skadet av angrepet men overlevde. Du mottok ' . $got . '.</p>';
        }
        // list opp vitner
        if (count($result['vitner']) == 0) {
            echo '
		<p>Ingen spillere vitnet ' . ($result['drept'] ? 'drapet' : 'drapsforsøket') . '.</p>';
        } else {
            // sett opp liste over navngitte spillere som oppdaget det
            $list = array();
            $count_other = 0;
            foreach ($result['vitner'] as $vitne) {
                if ($vitne['visible']) {
                    $list[] = $vitne['up']->profile_link();
                } else {
                    $count_other++;
                }
            }
            if ($count_other > 0) {
                $list[] = fwords("%d ukjent spiller", "%d ukjente spillere", $count_other);
            }
            echo '
		<p>Du ble oppdaget av ' . sentences_list($list) . ' da ' . ($result['drept'] ? 'drapet' : 'drapsforsøket') . ' ble gjennomført.</p>';
        }
        // fengselendring?
        if (isset($result['fengsel'])) {
            // kom i fengsel?
            if ($result['fengsel'] === false) {
                // fjern meldingen som allerede er lagt inn
                ess::$b->page->message_get("fengsel");
                echo '
		<p>Du kom i fengsel og slipper ut om ' . game::counter(login::$user->player->data['up_fengsel_time'] - time()) . '. Wanted nivået er nå på ' . game::format_num(login::$user->player->data['up_wanted_level'] / 10, 1) . ' %.</p>';
            } else {
                echo '
		<p>Wanted nivået økte med ' . game::format_num($result['fengsel'] / 10, 1) . ' %.</p>';
            }
        }
        echo '
		<p class="c"><a href="angrip">Tilbake</a></p>
	</div>
</div>';
        ess::$b->page->load();
    }
Exemplo n.º 20
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>';
    }