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