Ejemplo n.º 1
0
 * 			STATUS finish (int): Vise resultat?
 */
$chips = $status->get("chips");
$target = $trigger->get("chips");
// har ikke mange nok chips?
if ($chips <= 0) {
    login::$user->player->oppdrag->failed($oppdrag['o_id'], 'Du hadde ingen flere chips igjen. Oppdraget &laquo;$name&raquo; ble mislykket.');
    $_base->page->add_message("Du hadde ingen flere chips igjen. Oppdraget ble mislykket.");
    redirect::handle("oppdrag");
}
// finn status
$cards = $status->get("cards");
$finish = $status->get("finish");
// starte nytt spill?
if (isset($_POST['chips']) && !$cards) {
    $bet = game::intval($_POST['chips']);
    if ($bet > $chips) {
        $_base->page->add_message("Du har ikke så mange chips.", "error");
        redirect::handle();
    }
    if ($bet < min(100, $chips)) {
        $_base->page->add_message("Du må minimum satse " . min(100, $chips) . " chips.", "error");
        redirect::handle();
    }
    // start
    $poker = new CardsPoker();
    $poker->new_cards(5);
    $status->update("cards", implode(",", $poker->get_cards()));
    $poker_pc = new CardsPoker();
    $poker_pc->remove_cards($poker->get_cards());
    $poker_pc->new_cards(5);
Ejemplo n.º 2
0
    /**
     * Publiser utgivelse
     */
    protected function pub_publish(ff_avis_utgivelse $ffn)
    {
        // allerede publisert
        if ($ffn->data['ffn_published'] != 0) {
            ess::$b->page->add_message("Utgivelsen er allerede publisert.", "error");
            redirect::handle();
        }
        // kontroller beskrivelse
        $desc_plain = strip_tags(game::format_data($ffn->data['ffn_description']));
        if (mb_strlen($desc_plain) < 30) {
            ess::$b->page->add_message("Beskrivelsen for utgivelsen må inneholde minimum 30 bokstaver/tall før den kan publiseres.", "error");
            redirect::handle();
        }
        // sjekk når siste publisering ble utført
        $result = \Kofradia\DB::get()->query("SELECT ffn_published_time FROM ff_newspapers WHERE ffn_ff_id = {$this->ff->id} AND ffn_published != 0 ORDER BY ffn_published_time DESC LIMIT 1");
        $last = $result->rowCount() > 0 ? $result->fetchColumn(0) : 0;
        // har det gått lang nok tid?
        $delay = ff_avis::FFN_PUBLISH_DELAY + $last - time();
        if ($delay > 0) {
            ess::$b->page->add_message("Du må vente " . game::timespan(ff_avis::FFN_PUBLISH_DELAY, game::TIME_FULL) . " mellom hver utgivelse som utføres. Gjenstår før neste utgivelse kan publiseres: " . game::timespan($delay, game::TIME_FULL) . ".", "error");
            redirect::handle();
        }
        // hent artiklene med pris
        $result = \Kofradia\DB::get()->query("SELECT ffna_id, ffna_up_id, ffna_title, ffna_price FROM ff_newspapers_articles WHERE ffna_ffn_id = {$ffn->id} ORDER BY ffna_title");
        // for få artikler?
        if ($result->rowCount() < 4) {
            ess::$b->page->add_message("Utgivelsen må inneholde minimum 4 artikler for å bli publisert.", "error");
            redirect::handle();
        }
        // kun eier
        if (!$this->ff->access(1)) {
            ess::$b->page->add_message("Kun " . htmlspecialchars($this->ff->type['priority'][1]) . " kan publisere utgivelsen.", "error");
            redirect::handle();
        }
        // finn total pris for artiklene
        $articles = array();
        $articles_price = 0;
        while ($row = $result->fetch()) {
            $articles_price += $row['ffna_price'];
            $articles[] = $row;
        }
        $total_price = $articles_price + ff_avis::FFN_PUBLISH_COST;
        // godkjenne publisering?
        if (isset($_POST['approve'])) {
            $price = game::intval(postval("price"));
            $sid = postval("sid");
            // kontroller pris
            if ($price != $total_price) {
                ess::$b->page->add_message("Det ser ut som prisen har endret seg. Prøv på nytt.", "error");
            } elseif ($sid != login::$info['ses_id']) {
                ess::$b->page->add_message("Ugyldig.", "error");
            } elseif ($total_price > 0 && $this->ff->data['ff_bank'] < $total_price) {
                ess::$b->page->add_message("Det er ikke nok penger i firmabanken.", "error");
            } else {
                \Kofradia\DB::get()->beginTransaction();
                // trekk fra pengene fra firmabanken
                if ($total_price > 0 && !$this->ff->bank(ff::BANK_BETALING, $total_price, "Publisering av utgivelse: {$ffn->data['ffn_title']} (id: {$ffn->id})")) {
                    \Kofradia\DB::get()->commit();
                    // var tidligere rollback, men trenger ikke være det
                    ess::$b->page->add_message("Det er ikke nok penger i firmabanken.", "error");
                } else {
                    // oppdater utgivelsen
                    \Kofradia\DB::get()->exec("UPDATE ff_newspapers SET ffn_published = 1, ffn_published_time = " . time() . ", ffn_published_up_id = " . login::$user->player->id . " WHERE ffn_id = {$ffn->id}");
                    // utbetal til journalistene
                    \Kofradia\DB::get()->exec("UPDATE users_players, ff_members, (SELECT ffna_up_id, SUM(ffna_price) AS ffna_sum, COUNT(ffna_price) AS ffna_count FROM ff_newspapers_articles WHERE ffna_ffn_id = {$ffn->id} AND ffna_price > 0 GROUP BY ffna_up_id) AS ref SET up_bank = up_bank + ffna_sum, up_bank_received = up_bank_received + ffna_sum, up_bank_profit = up_bank_profit + ffna_sum, up_bank_num_received = up_bank_num_received + ffna_count, up_log_new = up_log_new + ffna_count, ffm_earnings = ffm_earnings + ffna_sum WHERE ffna_up_id = up_id AND ffm_up_id = up_id AND ffm_ff_id = {$this->ff->id}");
                    // lagre overføringslogg
                    \Kofradia\DB::get()->exec("INSERT INTO bank_log (bl_sender_up_id, bl_receiver_up_id, amount, time) SELECT " . login::$user->player->id . ", ffna_up_id, ffna_price, " . time() . " FROM users_players, ff_newspapers_articles WHERE ffna_ffn_id = {$ffn->id} AND ffna_up_id = up_id AND ffna_price > 0");
                    // spillelogg
                    \Kofradia\DB::get()->exec("INSERT INTO users_log (time, ul_up_id, type, note, num) SELECT " . time() . ", ffna_up_id, " . gamelog::$items['bankoverforing'] . ", CONCAT(ffna_price, ':Utbetaling for avisartikkel.'), " . login::$user->player->id . " FROM users_players, ff_newspapers_articles WHERE ffna_ffn_id = {$ffn->id} AND ffna_up_id = up_id AND ffna_price > 0");
                    \Kofradia\DB::get()->commit();
                    // live-feed
                    livefeed::add_row('Avisutgivelsen <a href="' . ess::$s['relative_path'] . '/ff/avis?ff_id=' . $this->ff->id . '&amp;ffn=' . $ffn->id . '">' . htmlspecialchars($ffn->data['ffn_title']) . '</a> ble publisert av <a href="' . ess::$s['relative_path'] . '/ff/?ff_id=' . $this->ff->id . '">' . htmlspecialchars($this->ff->data['ff_name']) . '</a>.');
                    ess::$b->page->add_message("Utgivelsen er nå publisert.");
                    redirect::handle();
                }
            }
        }
        echo '
<p class="c">Publiser utgivelse | <a href="avis?ff_id=' . $this->ff->id . '&amp;u&amp;ffn=' . $ffn->id . '">Tilbake</a></p>
<div class="section center w200">
	<h2>Utgivelsesinformasjon</h2>
	<dl class="dd_right">
		<dt>Tittel</dt>
		<dd>' . htmlspecialchars($ffn->data['ffn_title']) . '</dd>
		<dt>Opprettet</dt>
		<dd>' . ess::$b->date->get($ffn->data['ffn_created_time'])->format() . '</dd>
		<dt>Salgspris</dt>
		<dd>' . game::format_cash($ffn->data['ffn_cost']) . '</dd>
	</dl>
</div>
<div class="section center w200">
	<h2>Beskrivelse av utgivelsen</h2>' . (($d = $this->ff->format_description($ffn->data['ffn_description'])) != '' ? '
	<div class="p">' . $d . '</div>' : '
	<p>Ingen beskrivelse.</p>') . '
</div>
<form action="" method="post">
	<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
	<input type="hidden" name="price" value="' . $total_price . '" />
	<div class="section center w350">
		<h2>Prisoversikt</h2>
		<dl class="dd_right">
			<dt>Publisering av utgivelse</dt>
			<dd>' . game::format_cash(ff_avis::FFN_PUBLISH_COST) . '</dd>';
        foreach ($articles as $row) {
            echo '
			<dt><a href="avis?ff_id=' . $this->ff->id . '&amp;a&amp;ffna_id=' . $row['ffna_id'] . '">' . htmlspecialchars($row['ffna_title']) . '</a> (<user id="' . $row['ffna_up_id'] . '" />)</dt>
			<dd>' . game::format_cash($row['ffna_price']) . '</dd>';
        }
        echo '
		</dl>
		<dl class="dd_right">
			<dt>I firmabanken</dt>
			<dd>' . game::format_cash($this->ff->data['ff_bank']) . '</dd>
			<dt><u>Samlet kostnader</u></dt>
			<dd><u>' . game::format_cash($total_price) . '</u></dd>
		</dl>
		<p class="c">' . show_sbutton("Publiser utgivelsen", 'name="approve"') . '</p>
	</div>
</form>
<div class="hr fhr"><hr /></div>';
        // vis utgivelsen
        echo $ffn->build_avis_html();
    }
Ejemplo n.º 3
0
         if (!$info['params']->get("optional")) {
             $errors[$key] = ' <span style="color: #FF6666">[mangler innhold]</span>';
         }
     } else {
         // kontroller typen
         switch ($info['params']->get("type")) {
             case "varchar":
                 // kontroller lengde
                 $maxlength = intval($info['params']->get("maxlength", 255));
                 if (mb_strlen($value) > $maxlength) {
                     $value = mb_substr($value, 0, $maxlength);
                 }
                 break;
             case "number":
                 // kontroller tall og størrelse
                 $value = game::intval($value);
                 $max_value = $info['params']->get("number_max", 999999999);
                 if ($value > $max_value) {
                     $value = $max_value;
                 }
                 break;
             case "text":
                 // ingen endringer
                 break;
         }
         $fields[$key] = $value;
     }
 }
 // slett gamle felt
 \Kofradia\DB::get()->beginTransaction();
 \Kofradia\DB::get()->exec("DELETE FROM soknader_applicants_felt WHERE saf_sa_id = {$applicant['sa_id']}");
Ejemplo n.º 4
0
    $arr = explode(",", $poker['cards']);
    foreach ($arr as $kortnum) {
        // fjern fra kortstokken
        unset($kortstokk[$kortnum]);
        // hvilken gruppe (0-3)
        $gruppe = ceil($kortnum / 13) - 1;
        // hvilket kortnummer (1-13)
        $num = $kortnum - $gruppe * 13;
        // legg til kortet
        $kort[] = array($num, $gruppe, $kortnum);
    }
    // vis resultater..
    if ($poker['finished'] == 1) {
        // slett fra databasen
        \Kofradia\DB::get()->exec("DELETE FROM users_poker WHERE id = {$poker['id']}");
        $siste_innsats = game::intval($_SESSION[$GLOBALS['__server']['session_prefix'] . 'poker_siste_innsats'] * 1.1);
        if ($siste_innsats == 0) {
            $siste_innsats = 1000;
        }
        if ($siste_innsats > login::$user->player->data['up_cash']) {
            $siste_innsats = login::$user->player->data['up_cash'];
        }
        #if ($siste_innsats > 1000000000000) $siste_innsats = 1000000000000;
        echo '

<p align="center">
	<b>Resultat:</b>
</p>
<div class="kort_wrapper">
	<div class="kort_i kg_' . $kort[0][1] . '">' . $tegn[$kort[0][0]] . '<br />' . $farger[$kort[0][1]][1] . '</div>
	<div class="kort_i kg_' . $kort[1][1] . '">' . $tegn[$kort[1][0]] . '<br />' . $farger[$kort[1][1]][1] . '</div>
Ejemplo n.º 5
0
 /**
  * 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();
 }
Ejemplo n.º 6
0
 /**
  * Forandre pengeverdi til spilleren (relativ verdi)
  * @param int $amount
  * @param bool $cash true=up_cash false=up_bank
  * @param bool $update oppdatere users_players tabellen?
  * @param int/bool $least må ha minst dette pengebeløpet, evt. true hvis kontrollere at pengenivået ikke går under 0? (kan uansett ikke gå under 0)
  */
 public function update_money($amount, $cash = true, $update = true, $least = null)
 {
     $field = $cash ? "cash" : "bank";
     $amount = game::intval($amount);
     // oppdatere databasen?
     if ($update) {
         $check = "";
         if ($least === true) {
             if (bccomp($amount, 0) == -1) {
                 $check = " AND up_{$field} >= {$amount}";
             }
         } elseif ($least) {
             $least = game::intval($least);
             $check = " AND up_{$field} >= {$least}";
         }
         $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_{$field} = GREATEST(0, up_{$field} + {$amount}) WHERE up_id = {$this->id}{$check}");
         // ingen ting oppdatert?
         if ($a == 0) {
             return false;
         }
     }
     // oppdater spillerfelt
     $this->data['up_' . $field] = bcadd($this->data['up_' . $field], $amount);
     // behandle trigger
     $this->trigger("money_change", array("field" => $field, "amount" => $amount));
 }
Ejemplo n.º 7
0
    /**
     * 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();
    }
Ejemplo n.º 8
0
    /**
     * Kjøpe ut en spiller
     */
    protected function show_free_player()
    {
        $up_id = (int) getval("free");
        // hent informasjon om spilleren
        $expire = etterlyst::get_freeze_expire();
        $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT SUM(hl_amount_valid) AS sum_hl_amount_valid, SUM(IF(hl_time < {$expire}, hl_amount_valid, 0)) AS sum_can_remove\n\t\t\tFROM hitlist\n\t\t\tWHERE hl_up_id = {$up_id}\n\t\t\tGROUP BY hl_up_id");
        $hl = $result->fetch();
        if (!$hl) {
            ess::$b->page->add_message('Spilleren <user id="' . $hl['hl_up_id'] . '" /> har ingen dusør på seg.', "error");
            redirect::handle("etterlyst");
        }
        // kan ikke kjøpe ut noe?
        if ($hl['sum_can_remove'] == 0) {
            ess::$b->page->add_message('Du må vente lenger for å kunne kjøpe ut dusøren til <user id="' . $up_id . '" />.', "error");
            redirect::handle("etterlyst");
        }
        $least = min(max(etterlyst::MIN_AMOUNT_BUYOUT, etterlyst::MIN_AMOUNT_BUYOUT_RATIO * $hl['sum_can_remove']), $hl['sum_can_remove']);
        // kjøpe ut?
        if (isset($_POST['amount'])) {
            $amount = game::intval($_POST['amount']);
            // under minstebeløpet?
            if ($amount < $least) {
                ess::$b->page->add_message("Beløpet kan ikke være mindre enn " . game::format_cash($least) . ".", "error");
            } else {
                // beregn kostnad
                $m = $up_id == $this->up->id ? 3 : 2;
                $result = \Kofradia\DB::get()->query("SELECT {$amount} * {$m}, {$amount} > {$hl['sum_can_remove']}, {$amount} * {$m} > " . $this->up->data['up_cash']);
                $row = $result->fetch(\PDO::FETCH_NUM);
                $price = $row[0];
                // for høyt beløp?
                if ($row[1]) {
                    ess::$b->page->add_message("Beløpet var for høyt.", "error");
                } elseif ($row[2]) {
                    ess::$b->page->add_message("Du har ikke nok penger på hånda. Du må ha " . game::format_cash($price) . " på hånda for å kunne betale ut " . game::format_cash($amount) . ".", "error");
                } else {
                    \Kofradia\DB::get()->beginTransaction();
                    // forsøk å 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 nok penger på hånda. Du må ha " . game::format_cash($price) . " på hånda for å kunne betale ut " . game::format_cash($amount) . ".", "error");
                        \Kofradia\DB::get()->commit();
                    } else {
                        // forsøk å trekk fra pengene fra hitlist
                        \Kofradia\DB::get()->exec("SET @t := {$amount}");
                        \Kofradia\DB::get()->exec("\n\t\t\t\t\t\t\tUPDATE hitlist h, (\n\t\t\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t\t\thl_id,\n\t\t\t\t\t\t\t\t\tGREATEST(0, LEAST(@t, hl_amount_valid)) AS to_remove,\n\t\t\t\t\t\t\t\t\t@t := GREATEST(0, @t - hl_amount_valid)\n\t\t\t\t\t\t\t\tFROM hitlist\n\t\t\t\t\t\t\t\tWHERE hl_up_id = {$up_id} AND @t > 0 AND hl_time < {$expire}\n\t\t\t\t\t\t\t\tORDER BY hl_time DESC\n\t\t\t\t\t\t\t) r\n\t\t\t\t\t\t\tSET h.hl_amount_valid = h.hl_amount_valid - to_remove\n\t\t\t\t\t\t\tWHERE h.hl_id = r.hl_id");
                        \Kofradia\DB::get()->exec("DELETE FROM hitlist WHERE hl_amount_valid = 0");
                        // har vi noe til overs?
                        $result = \Kofradia\DB::get()->query("SELECT @t");
                        $a = $result->fetchColumn(0);
                        if ($a > 0) {
                            \Kofradia\DB::get()->rollback();
                            ess::$b->page->add_message("Beløpet var for høyt.", "error");
                        } else {
                            \Kofradia\DB::get()->commit();
                            putlog("LOG", "ETTERLYST: " . $this->up->data['up_name'] . " kjøpte ut dusør for UP_ID={$up_id} på " . game::format_cash($amount) . '. Betalte ' . game::format_cash($price) . '.');
                            if ($up_id == $this->up->id) {
                                ess::$b->page->add_message("Du kjøpte ut en dusør på " . game::format_cash($amount) . ' for deg selv. Du måtte betale ' . game::format_cash($price) . ' for dette.');
                            } else {
                                ess::$b->page->add_message("Du kjøpte ut en dusør på " . game::format_cash($amount) . ' for <user id="' . $up_id . '" />. Du måtte betale ' . game::format_cash($price) . ' for dette.');
                            }
                            redirect::handle("etterlyst");
                        }
                    }
                }
            }
        }
        ess::$b->page->add_js_domready('$("select_amount").focus();');
        echo '
<div class="bg1_c xxsmall">
	<h1 class="bg1">Etterlyst - kjøp ut spiller<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1"><boxes />
		<dl class="dd_right">
			<dt>Spiller</dt>
			<dd><user id="' . $up_id . '" /></dd>
			<dt>Total dusør</dt>
			<dd>' . game::format_cash($hl['sum_hl_amount_valid']) . '</dd>
			<dt>Dusør som kan kjøpes ut</dt>
			<dd>' . game::format_cash($hl['sum_can_remove']) . '</dd>
		</dl>
		<form action="" method="post">
			<input type="hidden" name="up_id" value="' . $up_id . '" />
			<dl class="dd_right">
				<dt>Dusør å kjøpe ut</dt>
				<dd><input type="text" name="amount" id="select_amount" value="' . htmlspecialchars(postval("amount", game::format_cash($hl['sum_can_remove']))) . '" class="styled w100" /></dd>
			</dl>
			<p class="c">' . show_sbutton("Kjøp ut") . '</p>
			<p class="c"><a href="etterlyst">Avbryt</a> - <a href="etterlyst?add">Velg en annen spiller</a></p>
			<p>' . ($up_id == $this->up->id ? 'Du må betale 3 ganger beløpet du velger å kjøpe ut for når du kjøper ut deg selv.' : 'Du må betale det dobbelte av beløpet du velger å kjøpe ut en annen spiller for.') . '</p>
		</form>
	</div>
</div>';
    }
Ejemplo n.º 9
0
 /**
  * Start salg
  */
 public function sell_init($up_id, $amount)
 {
     global $_game;
     $up_id = (int) $up_id;
     $amount = game::intval($amount);
     // negativt beløp?
     if ($amount < 0) {
         return "negative_amount";
     }
     // har ikke tilgang?
     if (!$this->access(1)) {
         throw new HSException("Brukeren som starter salget må være boss.");
     }
     // hent nåværende status
     $status = $this->sell_status(true, false);
     if ($status !== false) {
         $this->params->commit();
         return false;
     }
     // sjekk at brukeren er underboss
     if (!isset($this->members['members_priority'][2][$up_id])) {
         $this->params->commit();
         return false;
     }
     // sett opp rank informasjon for underboss
     $player = $this->members['members'][$up_id];
     $rank_info = game::rank_info($player->data['up_points_rel'], $player->data['upr_rank_pos'], $player->data['up_access_level']);
     if ($rank_info['number'] < $this->type['priority_rank'][1]) {
         $this->params->commit();
         return "player_rank";
     }
     // legg til oppføringen
     $info = array($up_id, $this->uinfo->id, time(), self::SELL_COST, $amount);
     $this->params->update("sell", implode(":", $info));
     // legg til logg hos underboss
     player::add_log_static("ff_diverse", '<user id="' . $this->uinfo->id . '" /> har startet salg av ' . $this->refstring . ' <a href="' . ess::$s['relative_path'] . '/ff/?ff_id=' . $this->id . '">' . htmlspecialchars($this->data['ff_name']) . '</a>. <a href="' . ess::$s['relative_path'] . '/ff/panel?ff_id=' . $this->id . '&amp;a=sell">Godta/avslå &raquo;</a>', $this->id, $up_id);
     // logg i FF: {TYPE=init}:BOSS:UBOSS:FEE:AMOUNT
     $this->add_log("sell", "init:{$this->uinfo->id}:{$up_id}:" . self::SELL_COST . ":{$amount}");
     // avslutt transaction
     $this->params->commit();
     return true;
 }
Ejemplo n.º 10
0
<?php

require "../../base.php";
global $_base;
$_base->page->add_title("Penger");
access::need_nostat();
access::need("forum_mod");
// gi oss selv penger?
if (isset($_POST['cash'])) {
    $cash = game::intval($_POST['cash']);
    $result = \Kofradia\DB::get()->query("SELECT {$cash} > 10000000000");
    if ($result->fetchColumn(0)) {
        $_base->page->add_message("Du kan ikke sette pengene dine til over 10 mrd!", "error");
    } else {
        \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = {$cash}, up_bank = 0 WHERE up_id = " . login::$user->player->id . " AND {$cash} <= 10000000000");
        $_base->page->add_message("Du har nå nøyaktig <b>" . game::format_cash($cash) . "</b> på hånda og <b>0 kr</b> i banken!");
        putlog("LOG", "%b%NOSTAT PENGER:%c%b %u" . login::$user->player->data['up_name'] . "%u endret pengene sine til nøyaktig %u" . game::format_cash($cash) . "%u. Tidligere kontant: " . game::format_cash(login::$user->player->data['up_cash']) . ". Tidligere i banken: " . game::format_cash(login::$user->player->data['up_bank']) . ".");
    }
    redirect::handle();
}
// har vi over 1 bill nå?
$result = \Kofradia\DB::get()->query("SELECT " . login::$user->player->data['up_cash'] . "+" . login::$user->player->data['up_bank'] . " > 10000000000, " . login::$user->player->data['up_cash'] . "+" . login::$user->player->data['up_bank'] . ", 100000000-" . login::$user->player->data['up_cash'] . "-" . login::$user->player->data['up_bank']);
$row = $result->fetch(\PDO::FETCH_NUM);
$over = $row[0];
$cash = $row[1];
$igjen = $row[2];
echo '
<h1>Penger</h1>
<p>
	Som en NoStat-bruker kan du nå gi deg selv penger, og kan maksimalt ha 10 mrd ved hjelp av denne funksjonen. Ønsker du mer må du spille deg opp på for eksempel pokerfunksjonen.
</p>';
Ejemplo n.º 11
0
 /**
  * Øke eller legge til bud
  */
 protected function bid()
 {
     // nostat?
     if (access::is_nostat() && $this->up->id != 1) {
         ess::$b->page->add_message("Du er nostatuser og har ikke tilgang til å by på auksjoner.", "error");
         redirect::handle();
     }
     $amount = game::intval(postval("amount"));
     // auksjonen avsluttet?
     if ($this->auksjon->status == auksjon::STATUS_FINISHED) {
         ess::$b->page->add_message("Denne auksjonen er avsluttet.", "error");
         redirect::handle();
     }
     // firma og for lite helse?
     if ($this->auksjon->data['a_type'] == auksjon::TYPE_FIRMA && $this->up->get_health_percent() < player::FF_HEALTH_LOW * 100) {
         ess::$b->page->add_message("Du har for lav helse til å kunne by på et firma.", "error");
         redirect::handle();
     }
     // over maks?
     /*if (bccomp($amount, auksjon::MAKS_BUD) == 1)
     		{
     			ess::$b->page->add_message("Du kan ikke by mer enn ".game::format_cash(auksjon::MAKS_BUD).".", "error");
     			redirect::handle();
     		}*/
     // sjekk minste bud vi kan sette
     $result = \Kofradia\DB::get()->query("SELECT ab_bid + {$this->auksjon->data['a_bid_jump']} AS ab_bid FROM auksjoner_bud WHERE ab_a_id = {$this->auksjon->id} AND ab_active != 0 ORDER BY ab_bid DESC LIMIT 1");
     $bud = $result->fetch();
     $min_bud = $bud ? $bud['ab_bid'] : $this->auksjon->data['a_bid_start'];
     // under min?
     if (bccomp($amount, $min_bud) == -1) {
         ess::$b->page->add_message("Du må by minimum " . game::format_cash($min_bud) . ".", "error");
         redirect::handle();
     }
     // hent tidligere bud
     $result = \Kofradia\DB::get()->query("SELECT ab_id, ab_bid, ab_time FROM auksjoner_bud WHERE ab_a_id = {$this->auksjon->id} AND ab_up_id = {$this->up->id} AND ab_active != 0");
     $bud = $result->fetch();
     $update = false;
     // økte bud?
     if ($bud && isset($_POST['raise_bid'])) {
         // er dette det siste budet?
         $result = \Kofradia\DB::get()->query("SELECT ab_id FROM auksjoner_bud WHERE ab_a_id = {$this->auksjon->id} AND ab_active != 0 AND ab_time >= " . (time() - auksjon::MAX_TIME_REMOVE) . " ORDER BY ab_time DESC LIMIT 1");
         $row = $result->fetch();
         if ($row && $row['ab_id'] == $bud['ab_id']) {
             $update = true;
         }
         // start transaksjon
         \Kofradia\DB::get()->beginTransaction();
         // trekk fra pengene
         $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$amount} + {$bud['ab_bid']} WHERE up_id = {$this->up->id} AND up_cash >= {$amount} - {$bud['ab_bid']}");
     } elseif (!$bud && isset($_POST['place_bid'])) {
         // behandle forskjellige auksjonstyper
         switch ($this->auksjon->data['a_type']) {
             // firma
             case auksjon::TYPE_FIRMA:
                 // har vi bud på en annen auksjon?
                 $result = \Kofradia\DB::get()->query("\n\t\t\t\t\t\tSELECT ab_id\n\t\t\t\t\t\tFROM auksjoner, auksjoner_bud\n\t\t\t\t\t\tWHERE ab_a_id = a_id AND a_completed = 0 AND a_active != 0 AND a_type = " . auksjon::TYPE_FIRMA . " AND ab_up_id = {$this->up->id} AND ab_active != 0");
                 if ($result->rowCount() > 0) {
                     ess::$b->page->add_message("Du har allerede bydd på en annen auksjon. Du kan ikke by på flere auksjoner samtidig.", "error");
                     redirect::handle();
                 }
                 break;
                 // kuler
             // kuler
             case auksjon::TYPE_KULER:
                 // har vi ikke noe våpen?
                 if (!$this->up->weapon) {
                     redirect::handle();
                 }
                 // sjekk at vi har plass til flere kuler
                 $kuler = (int) $this->auksjon->params->get("bullets");
                 if ($kuler) {
                     if ($this->up->data['up_weapon_bullets'] + $this->up->data['up_weapon_bullets_auksjon'] + $kuler > $this->up->weapon->data['bullets']) {
                         ess::$b->page->add_message("Du har ikke plass til flere kuler.", "error");
                         redirect::handle();
                     }
                 }
                 break;
         }
         // start transaksjon
         \Kofradia\DB::get()->beginTransaction();
         // trekk fra pengene
         $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$amount} WHERE up_id = {$this->up->id} AND up_cash >= {$amount}");
     } else {
         redirect::handle();
     }
     // ikke nok penger
     if ($a == 0) {
         ess::$b->page->add_message("Du har ikke nok penger på hånda.", "error");
         \Kofradia\DB::get()->rollback();
         redirect::handle();
     }
     // behandle forskjellige auksjonstyper
     if (!$bud) {
         switch ($this->auksjon->data['a_type']) {
             // kuler
             case auksjon::TYPE_KULER:
                 // oppdater antall kuler vi kjøper via auksjoner
                 $kuler = (int) $this->auksjon->params->get("bullets");
                 if ($kuler) {
                     \Kofradia\DB::get()->exec("UPDATE users_players SET up_weapon_bullets_auksjon = up_weapon_bullets_auksjon + {$kuler} WHERE up_id = {$this->up->id}");
                 }
                 break;
         }
     }
     // oppdatere oppføringen?
     if ($update) {
         $a = \Kofradia\DB::get()->exec("UPDATE auksjoner_bud SET ab_bid = {$amount}, ab_time = " . time() . " WHERE ab_id = {$bud['ab_id']} AND ab_time = {$bud['ab_time']}");
         // kunne ikke oppdatere?
         if ($a == 0) {
             ess::$b->page->add_message("Du har ikke noe bud.", "error");
             \Kofradia\DB::get()->rollback();
             redirect::handle();
         }
     } else {
         // tidligere bud som skal fjernes?
         if ($bud) {
             $a = \Kofradia\DB::get()->exec("UPDATE auksjoner_bud SET ab_active = 0 WHERE ab_id = {$bud['ab_id']} AND ab_time = {$bud['ab_time']} AND ab_active != 0");
             // kunne ikke fjerne tidligere bud?
             if ($a == 0) {
                 ess::$b->page->add_message("Kunne ikke øke budet.", "error");
                 \Kofradia\DB::get()->rollback();
                 redirect::handle();
             }
         }
         // legg til oppføringen
         \Kofradia\DB::get()->exec("INSERT INTO auksjoner_bud SET ab_a_id = {$this->auksjon->id}, ab_up_id = {$this->up->id}, ab_bid = {$amount}, ab_time = " . time());
         // oppdater auksjonen
         \Kofradia\DB::get()->exec("UPDATE auksjoner SET a_num_bids = a_num_bids + 1 WHERE a_id = {$this->auksjon->id}");
     }
     $msg = '';
     // meldinger
     $place = $this->auksjon->data['a_type'] == auksjon::TYPE_FIRMA ? "INFO" : "LOG";
     if ($bud) {
         $msg = "Du har økt ditt bud.";
         if ($update) {
             putlog($place, "%bAUKSJONER:%b %u{$this->up->data['up_name']}%u økte sitt bud til %b" . game::format_cash($amount) . "%b på %b{$this->auksjon->data['a_title']}%b og leder fortsatt auksjonen " . ess::$s['spath'] . "/auksjoner?a_id={$this->auksjon->id}");
         } else {
             putlog($place, "%bAUKSJONER:%b %u{$this->up->data['up_name']}%u økte sitt bud til %b" . game::format_cash($amount) . "%b på %b{$this->auksjon->data['a_title']}%b og leder nå auksjonen " . ess::$s['spath'] . "/auksjoner?a_id={$this->auksjon->id}");
         }
     } else {
         $msg = "Du la inn bud for denne auksjonen.";
         putlog($place, "%bAUKSJONER:%b %u{$this->up->data['up_name']}%u bydde %b" . game::format_cash($amount) . "%b på %b{$this->auksjon->data['a_title']}%b " . ess::$s['spath'] . "/auksjoner?a_id={$this->auksjon->id}");
     }
     // sørg for at det er minimum 2 min igjen av auksjonen
     $end_min = time() + 120;
     if ($this->auksjon->data['a_end'] < $end_min) {
         \Kofradia\DB::get()->exec("UPDATE auksjoner SET a_end = {$end_min} WHERE a_id = {$this->auksjon->id} AND a_end < {$end_min}");
         $msg .= " Auksjonen ble forlenget til " . ess::$b->date->get($end_min)->format(date::FORMAT_SEC) . ".";
         putlog("LOG", "%bAUKSJONER:%b %b{$this->auksjon->data['a_title']}%b ble utsatt til " . ess::$b->date->get($end_min)->format(date::FORMAT_SEC) . " " . ess::$s['spath'] . "/auksjoner?a_id={$this->auksjon->id}");
     }
     ess::$b->page->add_message($msg);
     \Kofradia\DB::get()->commit();
     redirect::handle();
 }
Ejemplo n.º 12
0
 /**
  * Starte en utfordring
  */
 protected function start()
 {
     if (!isset($_POST['amount']) || $this->is_starter) {
         return;
     }
     $amount = game::intval($_POST['amount']);
     // for lite beløp?
     if (bccomp($amount, self::MIN_BET) == -1) {
         ess::$b->page->add_message("Du må satse minimum " . game::format_cash(self::MIN_BET) . ".", "error");
         redirect::handle();
     }
     // ikke råd?
     if (bccomp($amount, $this->up->data['up_cash']) == 1) {
         ess::$b->page->add_message("Du har ikke så mye penger på hånda.", "error");
         redirect::handle();
     }
     // nonstatuser?
     if (bccomp($amount, 10000) == 1 && MAIN_SERVER && (access::is_nostat() && $this->up->data['up_u_id'] != 1)) {
         ess::$b->page->add_message("Nostat kan ikke spille poker med beløp over 10 000 kr.", "error");
         redirect::handle();
     }
     login::data_set("poker_siste_innsats", $amount);
     // trekk fra pengene fra spilleren
     $a = \Kofradia\DB::get()->exec("UPDATE users_players SET up_cash = up_cash - {$amount} WHERE up_id = " . $this->up->id . " AND up_cash >= {$amount}");
     if ($a == 0) {
         ess::$b->page->add_message("Du har ikke så mye penger på hånda.", "error");
         redirect::handle();
     }
     // start pokerspill
     $poker = new CardsPoker();
     $poker->new_cards(5);
     \Kofradia\DB::get()->exec("INSERT INTO poker SET poker_starter_up_id = " . $this->up->id . ", poker_starter_cards = " . \Kofradia\DB::quote(implode(",", $poker->get_cards())) . ", poker_time_start = " . time() . ", poker_cash = {$amount}, poker_state = 1");
     redirect::handle();
 }
Ejemplo n.º 13
0
    /**
     * Behandle donasjon
     */
    protected function page_donate_handle()
    {
        $amount = game::intval($_POST['donate']);
        $note = trim(postval("note"));
        // nostat?
        if (access::is_nostat()) {
            ess::$b->page->add_message("Du er nostat og har ikke tilgang til å donere til {$this->ff->type['refobj']}.", "error");
        } elseif ($amount < 0) {
            ess::$b->page->add_message("Beløpet kan ikke være negativt..", "error");
        } elseif ($amount < 15000) {
            ess::$b->page->add_message("Minstebeløp å donere er 15 000 kr.", "error");
        } else {
            // finn ut når vi donerte siste gang - kan ikke donere oftere enn en gang i timen
            $result = \Kofradia\DB::get()->query("SELECT ffbl_time FROM ff_bank_log WHERE ffbl_ff_id = {$this->ff->id} AND ffbl_type = 3 AND ffbl_up_id = " . login::$user->player->id . " ORDER BY ffbl_time DESC LIMIT 1");
            $last = $result->fetch();
            if ($last && $last['ffbl_time'] + 3600 > time()) {
                ess::$b->page->add_message("Du kan ikke donere oftere enn én gang per time. Du må vente " . game::counter($last['ffbl_time'] + 3600 - time()) . " før du kan donere på nytt.", "error");
            } elseif ($amount > login::$user->player->data['up_cash']) {
                ess::$b->page->add_message("Du har ikke nok penger på hånda til å donere " . game::format_cash($amount) . " til {$this->ff->type['refobj']}.", "error");
            } elseif (isset($_POST['approve']) && validate_sid(false)) {
                // forsøk å donere
                $a = \Kofradia\DB::get()->exec("UPDATE ff, users_players SET ff_bank = ff_bank + {$amount}, up_cash = up_cash - {$amount} WHERE ff_id = {$this->ff->id} AND up_id = " . login::$user->player->id . " AND up_cash >= {$amount}");
                // hadde ikke nok penger?
                if ($a == 0) {
                    ess::$b->page->add_message("Du har ikke nok penger på hånda til å donere " . game::format_cash($amount) . " til {$this->ff->type['refobj']}.", "error");
                } else {
                    // finn balanse
                    $result = \Kofradia\DB::get()->query("SELECT ff_bank FROM ff WHERE ff_id = {$this->ff->id}");
                    $balance = $result->fetchColumn(0);
                    // legg til logg
                    \Kofradia\DB::get()->exec("INSERT INTO ff_bank_log SET ffbl_ff_id = {$this->ff->id}, ffbl_type = 3, ffbl_amount = {$amount}, ffbl_up_id = " . login::$user->player->id . ", ffbl_time = " . time() . ", ffbl_balance = {$balance}, ffbl_note = " . \Kofradia\DB::quote($note));
                    // legg til i spillerinfo
                    \Kofradia\DB::get()->exec("UPDATE ff_members SET ffm_donate = ffm_donate + {$amount} WHERE ffm_up_id = " . login::$user->player->id . " AND ffm_ff_id = {$this->ff->id} AND ffm_status = 1");
                    ess::$b->page->add_message("Du donerte " . game::format_cash($amount) . " til {$this->ff->type['refobj']}.");
                    // legg til daglig stats
                    $this->ff->stats_update("money_in", $amount, true);
                    redirect::handle();
                }
            } elseif (!isset($_POST['skip'])) {
                ess::$b->page->add_title("Donér til {$this->ff->type['refobj']}");
                // vis skjema for godkjenning
                echo '
<!-- donasjon -->
<div class="section w200">
	<h2>Donér til ' . $this->ff->type['refobj'] . '</h2>
	<p>Du er i ferd med å donére til ' . $this->ff->type['refobj'] . '.</p>
	<p>Beløp: ' . game::format_cash($amount) . '</p>
	<p>Melding/notat: ' . game::format_data($note, "bb-opt", "Uten melding") . '</p>
	<form action="" method="post">
		<input type="hidden" name="donate" value="' . $amount . '" />
		<input type="hidden" name="note" value="' . htmlspecialchars($note) . '" />
		<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
		<p class="c">
			' . show_sbutton("Utfør donasjon", 'name="approve"') . '
			' . show_sbutton("Avbryt", 'name="skip"') . '
		</p>
	</form>
</div>';
                $this->ff->load_page();
            }
        }
    }
Ejemplo n.º 14
0
    /**
     * Endre leiepris
     */
    protected function type_garasjeutleie_price($price)
    {
        // nylig endret?
        $last = $this->ff->params->get("garasje_time_change");
        $expire = time() - 86400 * 3;
        if ($last > $expire && !access::has("mod")) {
            ess::$b->page->add_message("Leieprisen ble sist forandret " . ess::$b->date->get($last)->format() . ". Du må vente " . game::counter($last - $expire, true) . " før leieprisen kan endres på nytt.");
            $this->ff->redirect();
        }
        // valgt pris?
        if (isset($_POST['price'])) {
            $price_new = game::intval($_POST['price']);
            if ($price_new == $price) {
                ess::$b->page->add_message("Du må skrive inn en ny pris.", "error");
            } elseif ($price_new < ff::GTA_GARAGE_PRICE_LOW) {
                ess::$b->page->add_message("Leieprisen kan ikke være under " . game::format_cash(ff::GTA_GARAGE_PRICE_LOW) . ".", "error");
            } elseif ($price_new > ff::GTA_GARAGE_PRICE_HIGH) {
                ess::$b->page->add_message("Leieprisen kan ikke være over " . game::format_cash(ff::GTA_GARAGE_PRICE_HIGH) . ".", "error");
            } else {
                // lagre ny pris
                $this->ff->params->update("garasje_price", $price_new);
                if (!access::has("mod")) {
                    $this->ff->params->update("garasje_time_change", time(), true);
                } else {
                    $this->ff->params->commit();
                }
                ess::$b->page->add_message("Leieprisen ble endret til " . game::format_cash($price_new) . ".");
                $this->ff->redirect();
            }
        }
        echo '
<div class="bg1_c xxsmall" style="width: 280px">
	<h1 class="bg1">Leiepris for garasje<span class="left2"></span><span class="right2"></span></h1>
	<div class="bg1">
		<boxes />
		<form action="" method="post">
			<dl class="dd_right">
				<dt>Nåværende pris per plass</dt>
				<dd>' . game::format_cash($price) . '</dd>
				<dt>Ny leiepris per plass</dt>
				<dd><input type="text" class="styled w80" name="price" value="' . game::format_cash(game::intval(postval("price", $price))) . '" /></dd>
			</dl>
			<p class="c">' . show_sbutton("Lagre ny pris") . ' <a href="./?ff_id=' . $this->ff->id . '">Tilbake</a></p>
			<p>Leieprisen kan settes fra ' . game::format_cash(ff::GTA_GARAGE_PRICE_LOW) . ' til ' . game::format_cash(ff::GTA_GARAGE_PRICE_HIGH) . ' og kan kun justeres hver 3. time</p>
		</form>
	</div>
</div>';
        $this->ff->load_page();
    }
Ejemplo n.º 15
0
    /**
     * Crewside
     */
    protected static function page_crew()
    {
        if (!isset(login::$extended_access['authed'])) {
            echo '
	<p class="c">Du må logge inn for utvidede tilganger.</p>';
        } else {
            $subpage2 = getval("b");
            redirect::store(page_min_side::addr(NULL, $subpage2 != "" ? "b=" . $subpage2 : ''));
            ess::$b->page->add_title("Crew");
            ess::$b->page->add_css('
.minside_links .active { color: #CCFF00 }');
            $links = array();
            $links[] = '<a href="' . htmlspecialchars(page_min_side::addr("crew", "", "user")) . '">Min bruker</a>';
            $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "")) . '"' . ($subpage2 == "" ? ' class="active"' : '') . '>Oversikt</a>';
            if (access::has("seniormod")) {
                $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=rank")) . '"' . ($subpage2 == "rank" ? ' class="active"' : '') . '>Juster rank</a>';
            }
            if (access::has("mod")) {
                $links[] = '<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=name")) . '"' . ($subpage2 == "name" ? ' class="active"' : '') . '>Endre spillernavn</a>';
            }
            echo '
	<p class="c minside_links">' . implode(" | ", $links) . '</p>';
            if ($subpage2 == "") {
                echo '
	<div class="col2_w">
		<div class="col_w left">
			<div class="col">
				<div class="bg1_c">
					<h1 class="bg1">Oversikt<span class="left2"></span><span class="right2"></span></h1>
					<div class="bg1">' . (access::has("mod") ? '
						<ul>' . (access::has("admin") && KOFRADIA_DEBUG ? '
							<li><a href="innboks?u_id=' . page_min_side::$active_user->id . '">Vis innboksen</a></li>
							<li><a href="innboks_sok?u_id=' . page_min_side::$active_user->id . '">Søk i innboksen</a></li>' : '') . '
							<li><a href="poker?up_id=' . page_min_side::$active_player->id . '&amp;stats">Vis pokerhistorien</a></li>
							<li><a href="admin/brukere/bankoverforinger?u1=' . page_min_side::$active_player->id . '">Vis bankoverføringer</a></li>
							<li><a href="drap?up_id=' . page_min_side::$active_player->id . '">Vis angrep utført av spilleren</a></li>
							<li><a href="drap?offer_up_id=' . page_min_side::$active_player->id . '">Vis angrep utført mot spilleren</a></li>
						</ul>' : '') . '
						<p>Trykk på <a href="' . htmlspecialchars(page_min_side::addr(NULL, "", "user")) . '">min bruker</a> for å vise informasjon om brukeren.</p>
					</div>
				</div>
			</div>
		</div>
		<div class="col_w right">
			<div class="col">
				<div class="bg1_c">
					<h1 class="bg1">Crewnotat for brukeren<span class="left2"></span><span class="right2"></span></h1>
					<p class="h_right"><a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=enote", "user")) . '">rediger</a></p>
					<div class="bg1">
						<p>Her kan hvem som helst i crewet legge til eller endre et notat for denne brukeren for å memorere ting som har med <u>brukeren</u> å gjøre.</p>' . (empty(page_min_side::$active_user->data['u_note_crew']) ? '
						<p>Ingen notat er registrert.</p>' : '
						<div class="p">' . game::bb_to_html(page_min_side::$active_user->data['u_note_crew']) . '</div>') . '
					</div>
				</div>
				<div class="bg1_c">
					<h1 class="bg1">Crewnotat for spilleren<span class="left2"></span><span class="right2"></span></h1>
					<p class="h_right"><a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=enote")) . '">rediger</a></p>
					<div class="bg1">
						<p>Her kan hvem som helst i crewet legge til eller endre et notat for denne spilleren for å memorere ting som har med <u>spilleren</u> å gjøre.</p>' . (empty(page_min_side::$active_player->data['up_note_crew']) ? '
						<p>Ingen notat er registrert.</p>' : '
						<div class="p">' . game::bb_to_html(page_min_side::$active_player->data['up_note_crew']) . '</div>') . '
					</div>
				</div>
			</div>
		</div>
	</div>
	<p class="c">Loggoppføringer for denne spilleren - <a href="' . htmlspecialchars(page_min_side::addr(NULL, "", "user")) . '">se komplett logg for brukeren</a></p>';
                // hent loggene for denne spilleren
                $pagei = new pagei(pagei::ACTIVE_GET, "side", pagei::PER_PAGE, 50);
                $result = $pagei->query("SELECT lc_id, lc_up_id, lc_time, lc_lca_id, lc_a_up_id, lc_log FROM log_crew WHERE lc_a_up_id = " . page_min_side::$active_player->id . " ORDER BY lc_time DESC");
                // ingen handlinger?
                if ($result->rowCount() == 0) {
                    echo '
	<p class="c">Ingen oppføringer eksisterer.</p>';
                } else {
                    $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, NULL, $row['lc_a_up_id'] != page_min_side::$active_player->id);
                        $day = ess::$b->date->get($row['lc_time'])->format(date::FORMAT_NOTIME);
                        $logs[$day][] = '<p><span class="time">' . ess::$b->date->get($row['lc_time'])->format("H:i") . ':</span> ' . $summary . '</p>';
                    }
                    ess::$b->page->add_css('.crewlog .time { color: #888888; padding-right: 5px }');
                    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 crewlog">
			' . implode('
			', $items) . '
		</div>
	</div>';
                    }
                    echo '
	<p class="c">' . $pagei->pagenumbers() . '</p>';
                }
            } elseif ($subpage2 == "enote") {
                ess::$b->page->add_title("Endre notat");
                // lagre endringer?
                if (isset($_POST['notat'])) {
                    $notat = postval("notat");
                    if ($notat == page_min_side::$active_player->data['up_note_crew']) {
                        ess::$b->page->add_message("Ingen endringer ble utført.", "error");
                    } else {
                        \Kofradia\DB::get()->exec("UPDATE users_players SET up_note_crew = " . \Kofradia\DB::quote($notat) . " WHERE up_id = " . page_min_side::$active_player->id);
                        // legg til crewlogg
                        crewlog::log("player_note_crew", page_min_side::$active_player->id, NULL, array("note_old" => page_min_side::$active_player->data['up_note_crew'], "note_diff" => diff::make(page_min_side::$active_player->data['up_note_crew'], $notat)));
                        page_min_side::$active_player->data['up_note_crew'] = $notat;
                        ess::$b->page->add_message("Notet ble endret.");
                        redirect::handle();
                    }
                }
                echo '
	<div class="bg1_c" style="width: 400px">
		<h1 class="bg1">Endre crewnotat for spiller<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<form action="" method="post">
				<p>Dette endrer notatet som er tilknyttet denne spilleren. Du kan også tilknytte <a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=enote", "user")) . '">informasjon til brukeren</a>, eller til en annen av brukerens spillere hvis det heller er ønskelig.</p>
				<p>Notat:</p>
				<p><textarea name="notat" rows="10" cols="30" style="width: 98%">' . htmlspecialchars(page_min_side::$active_player->data['up_note_crew']) . '</textarea></p>
				<p class="c">' . show_sbutton("Lagre") . '</p>
			</form>
		</div>
	</div>';
            } elseif ($subpage2 == "rank" && access::has("seniormod")) {
                // endre?
                if (isset($_POST['rel']) || isset($_POST['abs'])) {
                    $log = trim(postval("log"));
                    $rel = 0;
                    // mangler begrunnelse?
                    if ($log == "") {
                        ess::$b->page->add_message("Mangler begrunnelse.", "error");
                    } elseif (isset($_POST['abs'])) {
                        $points = game::intval(postval("points_abs"));
                        // samme?
                        if ($points == page_min_side::$active_player->data['up_points']) {
                            ess::$b->page->add_message("Ingen endringer ble utført.", "error");
                        } elseif ($points < 0) {
                            ess::$b->page->add_message("Kan ikke sette til negativt tall.", "error");
                        } elseif ($points > 9999999) {
                            ess::$b->page->add_message("Kan ikke settes til så høyt tall.", "error");
                        } else {
                            $rel = $points - page_min_side::$active_player->data['up_points'];
                        }
                    } elseif (isset($_POST['rel'])) {
                        $points = game::intval(postval("points_rel"));
                        // ingen endring?
                        if ($points == 0) {
                            ess::$b->page->add_message("Ingen endringer ble utført.", "error");
                        } elseif (page_min_side::$active_player->data['up_points'] + $points < 0) {
                            ess::$b->page->add_message("Kan ikke utføre handlingen. Vil føre til <b>for lav</b> verdi.", "error");
                        } elseif (page_min_side::$active_player->data['up_points'] + $points > 9999999) {
                            ess::$b->page->add_message("Kan ikke utføre handlingen. Vil føre til <b>for høy</b> verdi.", "error");
                        } else {
                            $rel = $points;
                        }
                    }
                    // skal ikke dette annonseres?
                    $silent = isset($_POST['silent']);
                    // øke ranken?
                    if ($rel > 0) {
                        page_min_side::$active_player->increase_rank($rel, false, $silent, 0);
                        // legg til crewlogg
                        crewlog::log("player_rank_inc", page_min_side::$active_player->id, $log, array("points" => $rel));
                        ess::$b->page->add_message("Endringene ble lagret. Du økte ranken med " . game::format_number($rel) . " poeng." . ($silent ? ' Informasjonen ble ikke annonsert.' : ''));
                        redirect::handle();
                    } elseif ($rel < 0) {
                        page_min_side::$active_player->increase_rank($rel, false, $silent, 0);
                        $rel = abs($rel);
                        // legg til crewlogg
                        crewlog::log("player_rank_dec", page_min_side::$active_player->id, $log, array("points" => $rel));
                        ess::$b->page->add_message("Endringene ble lagret. Du senket ranken med " . game::format_number($rel) . " poeng." . ($silent ? ' Informasjonen ble ikke annonsert.' : ''));
                        redirect::handle();
                    }
                }
                ess::$b->page->add_title("Juster rank");
                echo '
	<div class="bg1_c" style="width: 350px">
		<h1 class="bg1">Juster rank<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<p>Antall rankpoeng: <b>' . game::format_number(page_min_side::$active_player->data['up_points']) . '</b></p>
			<form action="" method="post">
				<dl class="dd_right dl_2x">
					<dt>Bestem rankpoeng (absolutt verdi)</dt>
					<dd><input type="text" name="points_abs" value="' . game::format_number(postval("points_abs", page_min_side::$active_player->data['up_points'])) . '" class="styled w60" maxlength="10" /> ' . show_sbutton("Lagre", 'name="abs"') . '</dd>
					<dt>Juster ranken (relativ verdi)</dt>
					<dd><input type="text" name="points_rel" value="' . game::format_number(postval("points_rel", 0)) . '" class="styled w60" maxlength="10" /> ' . show_sbutton("Lagre", 'name="rel"') . '</dd>
					<dd><input type="checkbox" name="silent"' . (isset($_POST['silent']) ? ' checked="checked"' : '') . ' id="silent" /><label for="silent"> Ikke annonser denne endringen (f.eks. på IRC)</label></dd>
					<dt>Begrunnelse for endring (crewlogg)</dt>
					<dd><textarea name="log" id="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd>
				</dl>
			</form>
		</div>
	</div>';
            } elseif ($subpage2 == "name" && access::has("mod")) {
                // lagre nytt spillernavn?
                if (isset($_POST['name'])) {
                    $name = trim(postval("name"));
                    $log = trim(postval("log"));
                    // ingen endringer utført?
                    if (strcmp(page_min_side::$active_player->data['up_name'], $name) === 0) {
                        ess::$b->page->add_message("Spillernavnet er det samme som før.", "error");
                    } elseif ($log == "") {
                        ess::$b->page->add_message("Mangler begrunnelse.", "error");
                    } else {
                        // kontroller spillernavnet (kun hvis endringer utover små/store bokstaver er gjort)
                        $check = strcasecmp(page_min_side::$active_player->data['up_name'], $name) !== 0;
                        if ($check) {
                            $result = \Kofradia\DB::get()->query("SELECT " . \Kofradia\DB::quoteNoNull($name) . " REGEXP regex AS m, error FROM regex_checks WHERE type = 'reg_user_strength' HAVING m = 1");
                        }
                        if ($check && $result->rowCount() > 0) {
                            // sett opp feilmeldingene
                            $feil = array();
                            while ($row = $result->fetch()) {
                                $feil[] = '<li>' . htmlspecialchars($row['error']) . '</li>';
                            }
                            // legg til feilmeldingene
                            ess::$b->page->add_message("<p>Spillernavnet var ikke gyldig:</p><ul>" . implode("", $feil) . "</ul>", "error");
                        } else {
                            // sjekk at spillernavnet ikke finnes fra før
                            $result = \Kofradia\DB::get()->query("SELECT up_id, up_name, up_access_level FROM users_players WHERE up_name = " . \Kofradia\DB::quote($name) . " AND up_id != " . page_min_side::$active_player->id . " AND (up_u_id != " . page_min_side::$active_user->id . " OR up_access_level != 0)");
                            if ($result->rowCount() > 0) {
                                $row = $result->fetch();
                                ess::$b->page->add_message("Spillernavnet er allerede i bruk: " . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']), "error");
                            } else {
                                // utfør endringer - endre spillernavnet
                                \Kofradia\DB::get()->exec("UPDATE users_players SET up_name = " . \Kofradia\DB::quote($name) . " WHERE up_id = " . page_min_side::$active_player->id);
                                // legg til crewlogg
                                crewlog::log("player_name", page_min_side::$active_player->id, $log, array("user_old" => page_min_side::$active_player->data['up_name'], "user_new" => $name));
                                ess::$b->page->add_message("Spillernavnet ble endret fra " . htmlspecialchars(page_min_side::$active_player->data['up_name']) . " til " . game::profile_link(page_min_side::$active_player->id, $name, page_min_side::$active_player->data['up_access_level']) . '.');
                                redirect::handle();
                            }
                        }
                    }
                }
                ess::$b->page->add_title("Endre spillernavn");
                echo '
	<div class="bg1_c" style="width: 350px">
		<h1 class="bg1">Endre spillernavn<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<p>Ikke utfør andre endringer enn store/små bokstaver i spillernavnet dersom det ikke er veldig nødvendig. Dette på grunn av BB-koder som [user=..] ikke lenger vil fungere.</p>
			<p>Det er mulig å gi en spiller samme navn som en annen spiller, så lenge spillerene tilhører samme bruker.</p>
			<form action="" method="post">
				<dl class="dd_right dl_2x">
					<dt>Nåværende spillernavn</dt>
					<dd>' . htmlspecialchars(page_min_side::$active_player->data['up_name']) . '</dd>
					<dt>Nytt spillernavn</dt>
					<dd><input type="text" value="' . htmlspecialchars(postval("name", page_min_side::$active_player->data['up_name'])) . '" name="name" class="styled w120" /></dd>
					<dt>Begrunnelse for endring (crewlogg)</dt>
					<dd><textarea name="log" id="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd>
				</dl>
				<p class="c">' . show_sbutton("Endre spillernavnet") . '</p>
			</form>
		</div>
	</div>';
            }
        }
    }
Ejemplo n.º 16
0
 /**
  * Ta ut penger fra banken
  */
 protected function ta_ut()
 {
     $amount = game::intval($_POST['bank_ut']);
     $note = \Kofradia\DB::quote(postval("note"));
     if ($amount < 0) {
         ess::$b->page->add_message("Kanskje en fordel med positivt beløp? :)", "error");
     } elseif ($amount == 0) {
         ess::$b->page->add_message("Skal du ikke ta ut noe du da? :(", "error");
     } elseif ($amount < 15000) {
         ess::$b->page->add_message("Minstebeløp på 15 000 kr!", "error");
     } else {
         // forsøk å ta ut
         $a = \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE ff, users_players\n\t\t\t\tSET ff_bank = ff_bank - {$amount}, up_cash = up_cash + {$amount}\n\t\t\t\tWHERE ff_id = {$this->ff->id} AND up_id = " . login::$user->player->id . " AND ff_bank >= {$amount}");
         // hadde ikke nok penger?
         if ($a == 0) {
             ess::$b->page->add_message("Det er ikke nok penger til å ta ut " . game::format_cash($amount) . ".", "error");
         } else {
             // balanse
             $result = \Kofradia\DB::get()->query("SELECT ff_bank FROM ff WHERE ff_id = {$this->ff->id}");
             $balance = $result->fetchColumn(0);
             // legg til logg
             \Kofradia\DB::get()->exec("INSERT INTO ff_bank_log SET ffbl_ff_id = {$this->ff->id}, ffbl_type = 2, ffbl_amount = {$amount}, ffbl_up_id = " . login::$user->player->id . ", ffbl_time = " . time() . ", ffbl_balance = {$balance}, ffbl_note = {$note}");
             ess::$b->page->add_message("Du tok ut " . game::format_cash($amount) . ".");
         }
         redirect::handle();
     }
 }