예제 #1
0
 /**
  * Utfør kriminalitet
  */
 public function utfor($id)
 {
     $this->options_load();
     if (!isset($this->options[$id])) {
         throw new HSException("Fant ikke ønsket alternativ.");
     }
     $krim = $this->options[$id];
     $ret = array("success" => false);
     // treffer vi med sannsynligheten?
     if (rand(0, 100) <= $krim['prob'] * 100) {
         // vellykket
         $ret['success'] = true;
         // gi penger til spilleren
         $cash = rand($krim['cash_min'], $krim['cash_max']);
         \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash + {$cash} WHERE up_id = {$this->up->id}");
         $ret['cash'] = $cash;
         // trigger
         $this->up->update_money($cash, true, false);
         // gi rank til spilleren
         $ret['rank_change'] = $this->up->increase_rank($krim['points']);
         $ret['rank'] = $krim['points'];
     }
     // wanted nivå
     $ret['wanted_change'] = $this->up->fengsel_rank($krim['points'], $ret['success']);
     // oppdater kriminalitet-status
     $s = $ret['success'] ? 2 : 1;
     \Kofradia\DB::get()->exec("\n\t\t\tINSERT INTO kriminalitet_status\n\t\t\tSET krimid = {$id}, ks_up_id = {$this->up->id}, count = 1, success = " . ($ret['success'] ? 1 : 0) . ", last = " . time() . ", ks_strength = ks_strength + {$s}\n\t\t\tON DUPLICATE KEY\n\t\t\tUPDATE count = count + 1, success = success + VALUES(success), last = VALUES(last), ks_strength = VALUES(ks_strength)");
     // oppdater kriminalitet
     \Kofradia\DB::get()->exec("\n\t\t\tUPDATE kriminalitet\n\t\t\tSET k_strength = k_strength + {$s}\n\t\t\tWHERE id = {$id}");
     // trigger
     $this->up->trigger("kriminalitet", array("option" => $krim, "success" => $ret['success']));
     // sett ned energien til spilleren
     $this->up->energy_use(self::ENERGY_KRIM);
     return $ret;
 }
예제 #2
0
 /**
  * Sett oppdrag som vellykket
  *
  * @param integer $o_id
  */
 public function success($o_id, $text = 'Oppdraget &laquo;$name&raquo; ble utført vellykket!')
 {
     $o_id = (int) $o_id;
     if (!isset($this->oppdrag[$o_id])) {
         return false;
     }
     // kontroller at dette oppdraget er aktivt
     $oppdrag =& $this->oppdrag[$o_id];
     $params = $this->params[$o_id];
     if ($oppdrag['uo_active'] == 0) {
         return false;
     }
     // oppdater oppdraget
     $time = time();
     $a = \Kofradia\DB::get()->exec("UPDATE users_oppdrag SET uo_repeats = uo_repeats + 1, uo_success = uo_success + 1, uo_last_time = {$time}, uo_last_state = 1, uo_availiable = 0, uo_locked = 1, uo_active = 0, uo_active_time = 0, uo_params = NULL WHERE uo_up_id = {$this->up->id} AND uo_o_id = {$o_id} AND uo_active != 0");
     // ble ikke oppdatert?
     if ($a == 0) {
         // hent frisk data og avbryt
         $this->user_load_all();
         return false;
     }
     $oppdrag['uo_repeats']++;
     $oppdrag['uo_success']++;
     $oppdrag['uo_last_time_prev'] = $oppdrag['uo_last_time'];
     $oppdrag['uo_last_time'] = time();
     $oppdrag['uo_available'] = 0;
     $oppdrag['uo_locked'] = 1;
     $oppdrag['uo_active'] = 0;
     $oppdrag['uo_active_time'] = 0;
     $oppdrag['uo_params'] = null;
     // fjern oppdraget fra lokalt (skal ikke være på listen)
     unset($this->active);
     $this->active = false;
     unset($this->oppdrag[$o_id]);
     unset($this->params[$o_id]);
     $text = str_replace('$name', $oppdrag['o_title'], $text);
     // send teksten til brukeren
     if ($this->user_active) {
         ess::$b->page->add_message($text);
     }
     // sjekk for premie
     $prize = new container($params['o_params']->get("prize"));
     $prizes_msg = '';
     if (count($prize->items) > 0) {
         $prizes = array();
         foreach ($prize->items as $item) {
             switch ($item[0]) {
                 case "cash":
                     // gi brukeren pengene
                     $cash = (int) $item[1];
                     $this->up->update_money($cash, true, true);
                     $prizes[] = game::format_cash($cash);
                     break;
                 case "rank_points":
                     $points = (int) $item[1];
                     $prizes[] = game::format_num($points) . " poeng";
                     // legg til ranken
                     player::increase_rank_static($points, $this->up->id, true);
                     break;
                     // kuler
                 // kuler
                 case "bullets":
                     $bullets = (int) $item[1];
                     // har vi plass til noen kuler?
                     $kap = $this->up->weapon ? $this->up->weapon->data['bullets'] : 0;
                     if ($this->up->weapon) {
                         $free = $kap - $this->up->data['up_weapon_bullets'] - $this->up->data['up_weapon_bullets_auksjon'];
                         $bullets = max(0, min($free, $bullets));
                         if ($bullets > 0) {
                             // 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;
                             $prizes[] = fwords("%d kule", "%d kuler", $bullets);
                         }
                     }
                     break;
             }
         }
         // mottok premie?
         if (count($prizes) > 0 && $this->user_active) {
             $last = '';
             if (count($prizes) > 1) {
                 $last = " og " . array_pop($prizes);
             }
             $prizes_msg = " Du mottok " . implode(", ", $prizes) . $last . ".";
             ess::$b->page->add_message("Du mottok " . implode(", ", $prizes) . $last . " for å ha fullført oppdraget &laquo;{$oppdrag['o_title']}&raquo;.");
         }
     }
     // melding i spillelogg
     global $_game;
     player::add_log_static("oppdrag", $text . $prizes_msg, 0, $this->up->id);
     // fjern fra params
     $this->up->params->lock();
     $this->up->params->remove("oppdrag_id");
     $this->up->params->remove("oppdrag", true);
     $this->link_triggers();
     // trigger hos spiller
     $this->up->trigger("oppdrag", array("success" => true, "oppdrag" => $oppdrag, "params" => $params));
     return true;
 }
예제 #3
0
파일: banken.php 프로젝트: Kuzat/kofradia
    /**
     * Overføre penger
     */
    protected function overfor()
    {
        $mottaker = postval("mottaker");
        $amount = game::intval(postval("amount"));
        // kontroller at vi har nok penger
        $result = \Kofradia\DB::get()->query("SELECT {$amount} <= up_bank FROM users_players WHERE up_id = " . $this->up->id);
        $amount_ok = $result->fetchColumn(0) == 1;
        // sjekk beløpet
        if ($amount <= 0) {
            ess::$b->page->add_message("Ugyldig beløp.", "error");
            return;
        }
        if ($amount < 50) {
            ess::$b->page->add_message("Du må sende minimum 50 kr.", "error");
            return;
        }
        if (!$amount_ok) {
            ess::$b->page->add_message("Du har ikke så mye penger i banken.", "error");
            return;
        }
        // har vi ikke tilgang (NoStatUser)
        if (access::is_nostat() && !access::has("admin")) {
            ess::$b->page->add_message("Du er NoStatUser og kan ikke sende penger!", "error");
            return;
        }
        // sjekk session
        if (postval("sid") != login::$info['ses_id']) {
            ess::$b->page->add_message("Startet du ikke overføringen selv? :o", "error");
            return;
        }
        // sjekk mottaker
        $result = \Kofradia\DB::get()->query("SELECT up_id, up_u_id, up_name, up_access_level, up_bank_ff_id FROM users_players WHERE up_name = " . \Kofradia\DB::quote($mottaker) . " ORDER BY up_access_level = 0, up_last_online DESC LIMIT 1");
        $player = $result->fetch();
        // ingen gyldig mottaker?
        if (!$player) {
            ess::$b->page->add_message("Fant ikke mottakeren.", "error");
            return;
        }
        // seg selv?
        if ($player['up_id'] == $this->up->id) {
            ess::$b->page->add_message("Du kan ikke sende til deg selv.", "error");
            return;
        }
        // død mottaker?
        if ($player['up_access_level'] == 0) {
            ess::$b->page->add_message('<user id="' . $player['up_id'] . '" /> er død. Hvem skal motta pengene?!');
            return;
        }
        $result = \Kofradia\DB::get()->query("SELECT uc_info FROM users_contacts WHERE uc_u_id = {$player['up_u_id']} AND uc_contact_up_id = " . $this->up->id . " AND uc_type = 2");
        $blokkert = $result->rowCount() > 0;
        $blokkert_info = $blokkert ? $result->fetchColumn(0) : false;
        // sjekk bankkontoen til mottaker
        $bank = page_banken_bank::get($player['up_bank_ff_id']);
        // ingen bankkonto?
        if (!$bank) {
            ess::$b->page->add_message("Mottakeren har ingen bankkonto du kan sende til.", "error");
            return;
        }
        // blokkert?
        if ($blokkert && !access::has("crewet")) {
            // blokkert
            $reason = game::bb_to_html($blokkert_info);
            $reason = empty($reason) ? '' : ' Begrunnelse: ' . $reason;
            ess::$b->page->add_message("Denne spilleren har blokkert deg, og du kan derfor ikke sende personen penger.{$reason}", "error");
            return;
        }
        $note = mb_substr(postval("note"), 0, 100);
        // hoppe over overføringstapet?
        $skip_bog = false;
        if (isset($_POST['skip_bog']) && access::is_nostat()) {
            $skip_bog = true;
            $this->bank->overforingstap = 0;
            $bank->overforingstap = 0;
        }
        // regn ut hvor mye penger som skal bli til overs etc
        $result = \Kofradia\DB::get()->query("SELECT ROUND({$amount} * {$this->bank->overforingstap}), ROUND({$amount} * {$bank->overforingstap}), ROUND({$amount} * {$this->bank->overforingstap}) + ROUND({$amount} * {$bank->overforingstap}), {$amount} - ROUND({$amount} * {$this->bank->overforingstap}) - ROUND({$amount} * {$bank->overforingstap}), {$amount} - ROUND({$amount} * {$this->bank->overforingstap})");
        $info = $result->fetch(\PDO::FETCH_NUM);
        // 0 -> tap sender
        // 1 -> tap mottaker
        // 2 -> tap totalt
        // 3 -> til overs (det som mottakeren får)
        // 4 -> mellombeløp (utgangsbeløpet - tap sender)
        // kontrollere at overføringen ikke blir utført flere ganger
        $form = \Kofradia\Form::getByDomain("banken_" . $player['up_id'], login::$user);
        // bekreftet?
        if (isset($_POST['confirm']) && isset($_POST['ovt_s']) && isset($_POST['ovt_m']) && $form->validateHashOrAlert()) {
            // kontroller overføringstapene (slik at det ikke har skjedd noen endringer)
            $ovt_s = postval("ovt_s");
            $ovt_m = postval("ovt_m");
            if ($ovt_s != $this->bank->overforingstap || $ovt_m != $bank->overforingstap) {
                // det har endret seg
                login::data_set("banken_ovt_endret", true);
            } else {
                // start transaksjon
                \Kofradia\DB::get()->beginTransaction();
                // send pengene
                $a = \Kofradia\DB::get()->exec("UPDATE users_players AS s, users_players AS m SET s.up_bank = s.up_bank - {$amount}, m.up_bank = m.up_bank + {$info[3]} WHERE s.up_id = " . $this->up->id . " AND m.up_id = {$player['up_id']} AND s.up_bank >= {$amount}");
                // mislykket?
                if ($a == 0) {
                    ess::$b->page->add_message("Noe gikk galt under overføringen.", "error");
                    \Kofradia\DB::get()->commit();
                } else {
                    // lagre overføringslogg
                    \Kofradia\DB::get()->exec("INSERT INTO bank_log SET bl_sender_up_id = " . $this->up->id . ", bl_receiver_up_id = {$player['up_id']}, amount = {$info[4]}, time = " . time());
                    // oppdater senderen
                    \Kofradia\DB::get()->exec("UPDATE users_players SET up_bank_sent = up_bank_sent + {$info[4]}, up_bank_profit = up_bank_profit - {$info[4]}, up_bank_num_sent = up_bank_num_sent + 1, up_bank_charge = up_bank_charge + {$info[0]} WHERE up_id = " . $this->up->id);
                    // oppdater mottakeren
                    \Kofradia\DB::get()->exec("UPDATE users_players SET up_bank_received = up_bank_received + {$info[4]}, up_bank_profit = up_bank_profit + {$info[4]}, up_bank_num_received = up_bank_num_received + 1, up_bank_charge = up_bank_charge + {$info[1]} WHERE up_id = {$player['up_id']}");
                    // spillelogg (med melding)
                    $player2 = new player($player['up_id']);
                    $player2->add_log("bankoverforing", $info[4] . ":" . $note, $this->up->id);
                    // legg til transaksjonsrader
                    if ($info[0] > 0) {
                        \Kofradia\DB::get()->exec("INSERT INTO ff_bank_transactions SET ffbt_ff_id = {$this->bank->id}, ffbt_time = " . time() . ", ffbt_amount = {$amount}, ffbt_profit = {$info[0]}");
                    }
                    if ($info[1] > 0) {
                        \Kofradia\DB::get()->exec("INSERT INTO ff_bank_transactions SET ffbt_ff_id = {$bank->id}, ffbt_time = " . time() . ", ffbt_amount = {$amount}, ffbt_profit = {$info[1]}");
                    }
                    // IRC logg
                    putlog("LOG", "%c9%uBANKOVERFØRING:%u%c (%u" . $this->up->data['up_name'] . "%u) sendte (%u" . game::format_cash($amount) . "%u (%u{$info[3]}%u)) til (%u{$player['up_name']}%u) (TAP: " . game::format_cash($info[2]) . ") " . (!empty($note) ? 'Melding: (' . $note . ')' : 'Ingen melding.'));
                    ess::$b->page->add_message('Du overførte <b>' . game::format_cash($info[4]) . '</b> til <user id="' . $player['up_id'] . '" />.' . ($info[0] > 0 ? ' Banken din tok <b>' . game::format_cash($info[0]) . '</b> i overføringsgebyr.' : ''));
                    \Kofradia\DB::get()->commit();
                    // trigger
                    $this->up->update_money(-$amount, false, false, null);
                    $player2->update_money($info[3], false, false, null);
                    redirect::handle();
                }
            }
        }
        ess::$b->page->add_css('.dl_bank dd { text-align: right }');
        // vis godkjenn form
        echo '
<h1>Banken - overføring</h1>
<form action="" method="post">
	<input type="hidden" name="mottaker" value="' . htmlspecialchars($mottaker) . '" />
	<input type="hidden" name="amount" value="' . $amount . '" />
	<input type="hidden" name="note" value="' . htmlspecialchars($note) . '" />
	<input type="hidden" name="ovt_s" value="' . $this->bank->overforingstap . '" />
	<input type="hidden" name="ovt_m" value="' . $bank->overforingstap . '" />
	' . $form->getHTMLInput();
        // hoppe over overføringstapet?
        if ($skip_bog) {
            echo '
	<input type="hidden" name="skip_bog" />';
        }
        echo '
	<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
	<div style="width: 200px; padding-left: 100px; float: left">
		<div class="section">
			<h2>Avsender</h2>
			<dl class="dl_30">
				<dt>Kontoeier</dt>
				<dd>' . game::profile_link() . '</dd>
				
				<dt>Bankfirma</dt>
				<dd><a href="ff/?ff_id=' . $this->bank->id . '">' . htmlspecialchars($this->bank->data['ff_name']) . '</a></dd>
				
				<dt><abbr title="Overføringstap">Overf.tap</abbr></dt>
				<dd>' . $this->bank->overforingstap * 100 . ' %</dd>
				
				<dt>Plassering</dt>
				<dd>' . (!isset(game::$bydeler[$this->bank->data['br_b_id']]) ? '<span style="color: #777777">Ukjent</span>' : htmlspecialchars(game::$bydeler[$this->bank->data['br_b_id']]['name'])) . '</dd>
			</dl>
		</div>
	</div>
	<div style="width: 200px; padding-left: 20px; float: left">
		<div class="section">
			<h2>Mottaker</h2>
			<dl class="dl_30">
				<dt>Kontoeier</dt>
				<dd><user id="' . $player['up_id'] . '" /></dd>
				
				<dt>Bankfirma</dt>
				<dd><a href="ff/?ff_id=' . $bank->id . '">' . htmlspecialchars($bank->data['ff_name']) . '</a></dd>
				
				<dt><abbr title="Overføringstap">Overf.tap</abbr></dt>
				<dd>' . $bank->overforingstap * 100 . ' %</dd>
				
				<dt>Plassering</dt>
				<dd>' . (!isset(game::$bydeler[$bank->data['br_b_id']]) ? '<span style="color: #777777">Ukjent</span>' : htmlspecialchars(game::$bydeler[$bank->data['br_b_id']]['name'])) . '</dd>
			</dl>
		</div>
	</div>
	<div class="clear" style="width: 420px; margin-left: 100px">
		<div class="section">
			<h2>Overføringsinformasjon</h2>
			<dl class="dl_40 dl_bank">
				<dt>Overføringsbeløp</dt>
				<dd>' . game::format_cash($amount) . '</dd>';
        // hopper over overføringstapet?
        if ($skip_bog) {
            echo '
				
				<dt>Hopper over overføringstapet</dt>
				<dd>NoStat</dd>';
        }
        echo '
				
				<dt>Overføringstap for avsender</dt>
				<dd>' . game::format_cash($info[0]) . '</dd>
				
				<dt>Overføringstap for mottaker</dt>
				<dd>' . game::format_cash($info[1]) . '</dd>
				
				<dt>Mottaker får</dt>
				<dd>' . game::format_cash($info[3]) . '</dd>
				
				<dt>Melding</dt>
				<dd>' . (empty($note) ? 'Ingen melding.' : game::bb_to_html($note)) . '</dd>
			</dl>
			<h4>
				' . show_sbutton("Utfør overføring", 'name="confirm"') . '
				' . show_sbutton("Avbryt/endre", 'name="abort"') . '
			</h4>
		</div>
	</div>
</form>';
        ess::$b->page->load();
    }
예제 #4
0
파일: fengsel.php 프로젝트: Kuzat/kofradia
 /**
  * Bryte ut fra fengsel
  */
 protected function bryt_ut()
 {
     // allerede i fengsel?
     if ($this->up->fengsel_check()) {
         ess::$b->page->add_message("Du er allerede i fengsel.", "error");
         redirect::handle();
     }
     // har vi ikke nok energi?
     if (!$this->up->energy_check(self::ENERGY)) {
         ess::$b->page->add_message("Du har ikke nok energi for å bryte ut andre spillere nå.");
         redirect::handle();
     }
     $time = intval(postval('time'));
     // hent informasjon
     @(list($up_id, $expire, $dusor) = explode("_", $_POST['up_id'] . "_", 3));
     $up_id = intval($up_id);
     $expire = intval($expire);
     $dusor = game::intval($dusor);
     $up = player::get($up_id);
     if (!$up) {
         ess::$b->page->add_message("Fant ikke brukeren.", "error");
         redirect::handle();
     }
     // ikke i fengsel lengre?
     $wait = $up->fengsel_wait();
     if ($wait == 0) {
         ess::$b->page->add_message('<user id="' . $up->id . '" /> er nok allerede brutt ut!', "error");
         redirect::handle();
     }
     // ikke riktig tid?
     if ($up->data['up_fengsel_time'] != $expire) {
         ess::$b->page->add_message('<user id="' . $up->id . '" /> har kommet i fengsel på nytt. Prøv igjen.', "error");
         redirect::handle();
     }
     // feil dusør?
     if ($up->data['up_fengsel_dusor'] != $dusor) {
         ess::$b->page->add_message('Dusøren til <user id="' . $up->id . '" /> har endret seg. Prøv på nytt.', "error");
         redirect::handle();
     }
     // sett opp sannsynlighet
     $prob = self::calc_prob($wait, $up->data['up_wanted_level'] / 10);
     $points = self::calc_points($prob);
     // sett opp dusør
     $dusor_org = $up->data['up_fengsel_dusor'];
     $dusor = bcmul($up->data['up_fengsel_dusor'], self::DUSOR_PROFIT);
     // klarte vi det?
     $success = rand(0, 999) < $prob * 10;
     if ($success) {
         // penger man får for utbrytelsen
         $cash = round(max(0, 100 - $prob) / 100 * self::CASH_MAX);
         // sett som utbrytet
         $a = \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE users_players\n\t\t\t\tSET up_fengsel_time = " . (time() - 1) . ", up_fengsel_dusor_total_out = up_fengsel_dusor_total_out + up_fengsel_dusor, up_fengsel_dusor = 0\n\t\t\t\tWHERE up_id = {$up->id} AND up_fengsel_time = {$up->data['up_fengsel_time']} AND up_fengsel_dusor = {$up->data['up_fengsel_dusor']}");
         if ($a == 0) {
             ess::$b->page->add_message('<user id="' . $up->id . '" /> er nok allerede brutt ut!', "error");
             redirect::handle();
         }
         $up->data['up_fengsel_time'] = time() - 1;
         $up->data['up_fengsel_dusor_total_out'] = bcadd($up->data['up_fengsel_dusor_total_out'], $up->data['up_fengsel_dusor']);
         $up->data['up_fengsel_dusor'] = 0;
         // oppdater antall utbrytninger og gi evt. penger
         \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE users_players\n\t\t\t\tSET up_fengsel_num_out_tries = up_fengsel_num_out_tries + 1, up_fengsel_num_out_success = up_fengsel_num_out_success + 1, up_cash = up_cash + {$cash} + {$dusor}, up_fengsel_dusor_total_in = up_fengsel_dusor_total_in + {$dusor}\n\t\t\t\tWHERE up_id = " . $this->up->id);
         $this->up->update_money(bcadd($cash, $dusor), true, false);
         // hendelse for spilleren som ble brutt ut
         $up->add_log("fengsel", $dusor_org > 0 ? $dusor_org : null, $this->up->id);
         $fengsel = $this->up->fengsel_rank($points, true);
         // penger, dusør og poeng vi mottar
         $mottok = array();
         if ($cash > 0) {
             $mottok[] = game::format_cash($cash);
         }
         if ($dusor > 0) {
             $mottok[] = "dusøren på " . game::format_cash($dusor);
         }
         $mottok[] = game::format_num($points) . ' poeng';
         // melding
         $msg = 'Du brøt ut <user id="' . $up->id . '" /> fra fengselet og mottok ' . sentences_list($mottok) . '.';
         if ($fengsel > 0) {
             $msg .= ' Wanted nivået økte med ' . game::format_number($fengsel / 10, 1) . ' %.';
         }
         ess::$b->page->add_message($msg);
         // logg
         putlog("LOG", "FENGSELUTBRYTNING: {$this->up->data['up_name']} brøt ut {$up->data['up_name']} fra fengsel (wait={$wait}, cash={$cash}, dusør={$dusor_org}, prob={$prob}, rank={$points})");
         // rank
         $this->up->increase_rank($points);
     } else {
         // mislykket
         $fengsel = $this->up->fengsel_rank($points, false, true);
         // oppdater antall utbrytninger (kun forsøk)
         \Kofradia\DB::get()->exec("UPDATE users_players SET up_fengsel_num_out_tries = up_fengsel_num_out_tries + 1 WHERE up_id = " . $this->up->id);
         if ($fengsel > 0) {
             ess::$b->page->add_message('Mislykket! Wanted nivået økte med ' . game::format_number($fengsel / 10, 1) . ' %.');
         }
     }
     // trigger
     $this->up->trigger("fengsel", array("success" => $success, "up" => $up, "wait" => $wait, "prob" => $prob, "points" => $points, "cash" => $success ? $cash : null, "dusor" => $dusor, "dusor_org" => $dusor_org));
     $up->trigger("fengsel_affected", array("success" => $success, "up" => $this->up, "wait" => $wait, "prob" => $prob, "points" => $points, "cash" => $success ? $cash : null, "dusor" => $dusor, "dusor_org" => $dusor_org));
     // energy
     $this->up->energy_use(self::ENERGY);
     redirect::handle();
 }
예제 #5
0
 /**
  * Formatter tekst for premie (og gi ut hvis spesifisert)
  */
 protected function prize($give = false)
 {
     // mulige premier:
     // * cash
     // * points
     // * bullets
     $params = new params($this->a->data['ac_prize']);
     $text = array();
     // cash
     if ($cash = $params->get("cash")) {
         if ($give) {
             $this->up->update_money($cash);
         }
         $text[] = game::format_cash($cash);
     }
     // points
     if ($points = $params->get("points")) {
         if ($give) {
             $this->up->increase_rank($points);
         }
         $text[] = game::format_num($points) . " rankpoeng";
     }
     // kuler
     if ($bullets = $params->get("bullets")) {
         $bullets = (int) $bullets;
         // har vi plass til noen kuler?
         if ($this->up->weapon) {
             $kap = $this->up->weapon ? $this->up->weapon->data['bullets'] : 0;
             $free = $kap - $this->up->data['up_weapon_bullets'] - $this->up->data['up_weapon_bullets_auksjon'];
             $bullets = max(0, min($free, $bullets));
             if ($bullets > 0) {
                 if ($give) {
                     // gi kuler
                     \Kofradia\DB::get()->exec("UPDATE users_players SET up_weapon_bullets = up_weapon_bullets + {$bullets} WHERE up_id = {$this->up->id}");
                     $this->up->data['up_weapon_bullets'] += $bullets;
                 }
                 $text[] = fwords("%d kule", "%d kuler", $bullets);
             }
         }
     }
     return sentences_list($text);
 }