this.getParent("div").dispose(); });'); } echo ' <div id="spillerhistorie" class="section' . (isset($_GET['side_up']) ? '' : ' hide') . '"> <h2>Spillerhistorikk</h2> <table class="table ' . ($pagei_other_up->pages == 1 ? 'tablem' : 'tablemt') . '" style="width: 100%"> <thead> <tr> <th>Spiller</th> <th>Status</th> </tr> </thead> <tbody>'; while ($row = $result_other_up->fetch()) { $rank = game::rank_info($row['up_points'], $row['upr_rank_pos'], $row['up_access_level']); echo ' <tr> <td>' . ($player->id == $row['up_id'] ? htmlspecialchars($row['up_name']) : game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level'])) . '<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 ? ' Status: ' . ($row['up_deactivated_dead'] == 0 ? 'Deaktivert' : 'Død') . '<br />' : ' Status: I live<br />') . ' Sist pålogget: ' . ess::$b->date->get($row['up_last_online'])->format() . ' </td> </tr>'; } echo ' </tbody> </table>' . ($pagei_other_up->pages > 1 ? ' <p class="c">' . $pagei_other_up->pagenumbers() . '</p>' : '') . '
/** * Vis toppliste */ protected function top() { if (access::has("crewet") && !isset($_GET['update'])) { echo ' <p class="c"><a href="ranklist?update">Oppdater ranklista hvis det er feil i den »</a></p>'; } // hent folka.. $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT up_id, up_name, up_access_level, up_points, up_last_online, up_profile_image_url, upr_rank_pos\n\t\t\tFROM users_players\n\t\t\t\tLEFT JOIN users_players_rank ON upr_up_id = up_id\n\t\t\tWHERE up_access_level < " . ess::$g['access_noplay'] . " AND up_access_level != 0\n\t\t\tORDER BY up_points DESC\n\t\t\tLIMIT 15"); // hent familier hvor spilleren er medlem $result_ff = \Kofradia\DB::get()->query("\n\t\t\tSELECT ffm_up_id, ffm_priority, ff_id, ff_type, ff_name\n\t\t\tFROM\n\t\t\t\t(\n\t\t\t\t\tSELECT up_id\n\t\t\t\t\tFROM users_players\n\t\t\t\t\tWHERE up_access_level < " . ess::$g['access_noplay'] . " AND up_access_level != 0\n\t\t\t\t\tORDER BY up_points DESC\n\t\t\t\t\tLIMIT 15\n\t\t\t\t) ref\n\t\t\t\tJOIN ff_members ON ffm_up_id = up_id AND ffm_status = " . ff_member::STATUS_MEMBER . "\n\t\t\t\tJOIN ff ON ff_id = ffm_ff_id AND ff_type = 1 AND ff_inactive = 0\n\t\t\tORDER BY ff_name"); $familier = array(); while ($row = $result_ff->fetch()) { $pos = ff::$types[$row['ff_type']]['priority'][$row['ffm_priority']]; $text = '<a href="' . ess::$s['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '" title="' . htmlspecialchars($pos) . '">' . htmlspecialchars($row['ff_name']) . '</a>'; $familier[$row['ffm_up_id']][] = $text; } ess::$b->page->add_css(' .ranklist_box { background-color: #1D1D1D; margin: 15px auto; overflow: hidden; padding-left: 10px; position: relative; /*width: 60%;*/ } .ranklist_box .profile_image { float: left; margin: 0 10px 0 -10px; border: 0; } .ranklist_box_1 { max-height: 100px; min-height: 80px; } .ranklist_box_2 { min-height: 60px; max-height: 60px; } .ranklist_box_2 .profile_image { width: 80px; } .ranklist_pos { position: absolute; top: 10px; right: 10px; font-size: 30px; } .ranklist_box_2 .ranklist_pos { font-size: 20px } .ranklist_player { position: absolute; top: 10px; left: 130px; } .ranklist_player img { display: none } .ranklist_box_2 .ranklist_player { left: 90px } .rp_up { font-size: 16px } .rp_rank { display: block; padding-top: 5px; color: #555; } .rp_familie { position: absolute; bottom: 10px; right: 10px; text-align: right; } .rp_no_familie { color: #555 }'); echo ' <div class="bg1_c small"> <h1 class="bg1">Rangeringsoversikt<span class="left"></span><span class="right"></span></h1> <div class="bg1">'; $e = 0; while ($row = $result->fetch()) { $e++; $rank = game::rank_info($row['up_points'], $row['upr_rank_pos'], $row['up_access_level']); echo ' <p class="ranklist_box ranklist_box_' . ($e > 5 ? "2" : "1") . '"> <img src="' . htmlspecialchars(player::get_profile_image_static($row['up_profile_image_url'])) . '" alt="Profilbilde" class="profile_image" /> <span class="ranklist_pos">#' . $e . '</span> <span class="ranklist_player"> <span class="rp_up">' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</span><br /> <span class="rp_rank">' . $rank['name'] . '</span> </span> <span class="rp_familie">' . (!isset($familier[$row['up_id']]) ? '<i class="rp_no_familie">Ingen broderskap</i>' : implode(", ", $familier[$row['up_id']])) . '</span> </p>'; if ($e == 15) { break; } } echo ' <p class="c"><a href="ranklist?alle">Vis komplett liste »</a></p> </div> </div>'; }
/** * Endre posisjon for et medlem */ protected function change_priority() { ess::$b->page->add_title("Endre posisjon på medlem"); // har ikke merket av en spiller? if (!isset($_REQUEST['up_id']) && !isset($_REQUEST['up_ids'])) { ess::$b->page->add_message("Du må merke en eller flere spillere.", "error"); redirect::handle(); } // kontroller medlemmene $up_ids = isset($_REQUEST['up_ids']) ? array_map("intval", explode(",", $_REQUEST['up_ids'])) : array_map("intval", (array) $_REQUEST['up_id']); $priority_list = array(); $members = array(); $rank_points_low = null; // rankpoengene til spilleren med dårligst rank foreach ($up_ids as $up_id) { // er ikke medlem? if (!isset($this->ff->members['members'][$up_id])) { ess::$b->page->add_message('Spilleren <user id="' . $up_id . '" /> er ikke medlem av ' . $this->ff->type['refobj'] . '.', "error"); redirect::handle(); } $member = $this->ff->members['members'][$up_id]; // kan ikke endre posisjon på seg selv if ($member->id == login::$user->player->id && !$this->ff->mod) { ess::$b->page->add_message('Du kan ikke omplassere deg selv.'); redirect::handle(); } // eier kan ikke omplasseres if ($member->data['ffm_priority'] == 1 && !$this->ff->mod) { ess::$b->page->add_message(ucfirst($this->ff->type['priority'][1]) . " kan ikke omplasseres."); redirect::handle(); } // har høyere prioritering? if ($member->data['ffm_priority'] <= $this->ff->uinfo->data['ffm_priority'] && !$this->ff->mod) { ess::$b->page->add_message('Du kan ikke omplassere <user id="' . $member->id . '" /> som har høyere eller samme posisjon som deg.', "error"); redirect::handle(); } // sett opp rank informasjon for spilleren if ($rank_points_low === null || $member->data['up_points'] < $rank_points_low) { $rank_points_low = $member->data['up_points']; } $members[] = $member; $priority_list[] = $member->data['ffm_priority']; } // ingen medlemmer? $c = count($members); if ($c == 0) { ess::$b->page->add_message("Du må merke en eller flere spillere.", "error"); redirect::handle(); } // sorter slik at medlemmene med høyest posisjon kommer først array_multisort($priority_list, $members); ksort($priority_list); // sett opp nåværende prioritering hvis det kun er 1 spiller eller alle har samme prioritering $priority_old = array_unique($priority_list); if (count($priority_old) == 1) { $priority_old = $priority_old[0]; } else { $priority_old = null; } // rank info for den dårligste ranken $rank_info = game::rank_info($rank_points_low); $rank_number = $rank_info['number']; // hent oversikt over ledige plasser og fjern eier/medeier posisjon om nødvendig $limits_data = $this->ff->check_limits($members); if (!$this->ff->mod) { unset($limits_data['priorities'][1]); if ($this->ff->uinfo->data['ffm_priority'] > 1) { unset($limits_data['priorities'][2]); } } // valg posisjon? if ((isset($_POST['pick_priority']) || isset($_POST['priority'])) && validate_sid()) { // har ikke valgt posisjon? $priority = isset($_POST['priority']) && isset($limits_data['priorities'][$_POST['priority']]) ? $limits_data['priorities'][$_POST['priority']] : false; if (!isset($_POST['priority'])) { ess::$b->page->add_message("Du må velge en posisjon.", "error"); } elseif (!$priority || $priority['max'] == -1 && !$this->ff->mod) { ess::$b->page->add_message("Ugyldig posisjon.", "error"); } elseif ($rank_number < $priority['min_rank'] && !$this->ff->mod && $priority['priority'] != $priority_old) { ess::$b->page->add_message('En eller flere av spillerene valgt har ikke høy nok rank for å bli ' . $this->ff->type['priority'][$priority['priority']] . ".", "error"); } elseif ($priority['free'] < $c && !$this->ff->mod && $priority['priority'] != $priority_old) { ess::$b->page->add_message("Det er ingen ledige plasser som " . $this->ff->type['priority'][$priority['priority']] . ".", "error"); } elseif ($this->ff->type['parent'] && $priority['priority'] == 4 && $limits_data['priorities'][3]['members'] == 0) { ess::$b->page->add_message("Det finnes ingen spillere med posisjon {$this->ff->type['priority'][3]} du kan tilegne en {$this->ff->type['priority'][4]}. Du må først sette en spiller som {$this->ff->type['priority'][3]} før du kan sette en {$this->ff->type['priority'][4]}.", "error"); } elseif ($priority['priority'] == $priority_old && (!$this->ff->type['parent'] || $priority['priority'] != 4)) { ess::$b->page->add_message("Du må velge en annen posisjon enn den som er satt."); } else { // fjern de som er valgt og som allerede har denne prioriteringen if ($priority_old === null && ($priority['priority'] != 4 || !$this->ff->type['parent'])) { foreach ($members as $key => $member) { if ($member->data['ffm_priority'] == $priority['priority']) { unset($members[$key]); unset($priority_list[$key]); } } $c = count($members); } $parent = $this->pick_parent($priority, $members, null, 'medlemmer?ff_id=' . $this->ff->id . '&change_priority&up_ids=' . implode(",", $up_ids), ' <input type="hidden" name="change_priority" /> <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />'); // fjern de som er valgt og som har samme parent if ($priority['priority'] == 4 && $this->ff->type['parent']) { foreach ($members as $key => $member) { if ($member->data['ffm_priority'] == $priority['priority'] && $member->data['ffm_parent_up_id'] == $parent) { unset($members[$key]); unset($priority_list[$key]); } } $c = count($members); } // godkjent? if (isset($_POST['confirm']) && validate_sid(false)) { // sorter slik at medlemmene med lavest posisjon kommer først array_multisort($priority_list, SORT_DESC, $members); // flytt spillerene $changed = array(); $error = array(); foreach ($members as $member) { // flytt spilleren $old_priority = $member->data['ffm_priority']; $old_parent = $member->data['ffm_parent_up_id']; if ($member->change_priority($priority['priority'], $parent)) { $changed[] = '<user id="' . $member->id . '" /> fra ' . $this->ff->type['priority'][$old_priority] . ($old_parent ? ' underordnet <user id="' . $old_parent . '" />' : ''); } else { $error[] = '<user id="' . $member->id . '" /> (' . $this->ff->type['priority'][$old_priority] . ($old_parent ? ' underordnet <user id="' . $old_parent . '" />' : '') . ')'; } } if (count($changed) == 1) { ess::$b->page->add_message("Du endret posisjonen til {$changed[0]} til " . $this->ff->type['priority'][$priority['priority']] . ($parent ? ' underordnet <user id="' . $parent . '" />' : '') . '.'); } elseif (count($changed) > 1) { ess::$b->page->add_message("Du endret posisjonene til følgende spillere til " . $this->ff->type['priority'][$priority['priority']] . ($parent ? ' underordnet <user id="' . $parent . '" />' : '') . ':<ul><li>' . implode("</li><li>", $changed) . '</li></ul>'); } if (count($error) == 1) { ess::$b->page->add_message("Posisjonen til {$error[0]} kunne ikke bli endret til " . $this->ff->type['priority'][$priority['priority']] . ($parent ? ' underordnet <user id="' . $parent . '" />' : '') . '.', "error"); } elseif (count($error) > 1) { ess::$b->page->add_message("Posisjonene til følgende spillere kunne ikke bli satt til " . $this->ff->type['priority'][$priority['priority']] . ($parent ? ' underordnet <user id="' . $parent . '" />' : '') . ':<ul><li>' . implode("</li><li>", $error) . '</li></ul>'); } redirect::handle(); } // vis bekreftskjema ess::$b->page->add_title("Bekreft endring av posisjon"); $width = 180; if ($c > 1) { $width = 300; } elseif ($parent || $members[0]->data['ffm_parent_up_id']) { $width = 300; } echo ' <div class="section" style="width: ' . $width . 'px"> <h1>Bekreft endring av posisjon</h1> <p class="h_right"><a href="medlemmer?ff_id=' . $this->ff->id . '&change_priority&up_ids=' . implode(",", $up_ids) . '">Tilbake</a></p> <boxes /> <form action="" method="post"> <input type="hidden" name="change_priority" /> <input type="hidden" name="up_ids" value="' . implode(",", $up_ids) . '" /> <input type="hidden" name="priority" value="' . $priority['priority'] . '" />' . ($parent ? ' <input type="hidden" name="parent" value="' . $parent . '" />' : '') . ' <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />'; if ($c == 1) { $member = $members[0]; echo ' <dl class="dd_right"> <dt>Spiller</dt> <dd>' . game::profile_link($member->id, $member->data['up_name'], $member->data['up_access_level']) . '</dd> <dt>Nåværende posisjon</dt> <dd>' . ucfirst($member->get_priority_name()) . ($member->data['ffm_parent_up_id'] ? ' underordnet <user id="' . $member->data['ffm_parent_up_id'] . '" />' : '') . '</dd> <dt>Ny posisjon</dt> <dd>' . ucfirst($this->ff->type['priority'][$priority['priority']]) . ($parent ? ' underordnet <user id="' . $parent . '" />' : '') . '</dd> </dl>'; } else { $list = array(); foreach ($members as $member) { $list[] = '<li><user id="' . $member->id . '" /> (' . $member->get_priority_name() . ($member->data['ffm_parent_up_id'] ? ' underordnet <user id="' . $member->data['ffm_parent_up_id'] . '" />' : '') . ')</li>'; } echo ' <p>Spillere som flyttes:</p> <ul>' . implode("", $list) . '</ul> <dl class="dd_right"> <dt>Ny posisjon</dt> <dd>' . ucfirst($this->ff->type['priority'][$priority['priority']]) . ($parent ? ' underordnet <user id="' . $parent . '" />' : '') . '</dd> </dl>'; } echo ($rank_number < $priority['min_rank'] ? ' <p>En eller flere spillere har i utgangspunktet for lav rank.</p>' : '') . ($priority['free'] < $c && $priority['priority'] != $priority_old ? ' <p>Det er i utgangspunktet ikke mange nok ledige plasser for denne posisjonen.</p>' : ''); // kontroller for underordnede spillere if ($this->ff->type['parent']) { $subs = array(); $pri3_count = 0; foreach ($members as $member) { if ($member->data['ffm_priority'] == 3) { $pri3_count++; } if ($member->data['ffm_priority'] == 3 && isset($this->ff->members['members_parent'][$member->id])) { foreach ($this->ff->members['members_parent'][$member->id] as $member_sub) { // hopp over om det er en av de som skal bytte plass if (in_array($member_sub->id, $up_ids)) { continue; } $subs[] = '<li><user id="' . $member_sub->id . '" />' . ($c == 1 ? '' : '(Underordnet <user id="' . $member->data['ffm_parent_up_id'] . '" />)') . '</li>'; } } } if (count($subs) > 0) { // er det noen pri3 etter alle blir kastet ut? $pri3 = count($this->ff->members['members_priority'][3]) - $pri3_count > 0; if ($c == 1) { echo ' <p>Medlemmet har følgende medlemmer underordnet seg:</p>'; } else { echo ' <p>Følgende medlemmer er underordnet av en av spillerene du har valgt:</p>'; } echo ' <ul>' . implode("", $subs) . '</ul>' . ($pri3 ? ' <p>Underordnede medlemmer vil bli flyttet til tilfeldige spillere med posisjon ' . $this->ff->type['priority'][3] . '.</p>' : ' <p>Spilleren med posisjonen ' . $this->ff->type['priority'][4] . ' som har vært medlem lengst bli utvalgt til ' . $this->ff->type['priority'][3] . '.') . '</p>'; } } echo ' <p class="c"> ' . show_sbutton("Endre posisjon", 'name="confirm"') . ' <a href="medlemmer?ff_id=' . $this->ff->id . '&change_priority&up_ids=' . implode(",", $up_ids) . '">Tilbake</a> </p> </form> </div>'; $this->ff->load_page(); } } ess::$b->page->add_title("Velg ny posisjon"); // vis oversikt over de ulike posisjonene man kan velge echo ' <div class="section" style="width: 400px"> <h1>Velg ny posisjon</h1> <p class="h_right"><a href="medlemmer?ff_id=' . $this->ff->id . '">Tilbake</a></p> <boxes /> <form action="" method="post">'; if ($c == 1) { $member = reset($members); echo ' <p>Valgt spiller: ' . game::profile_link($member->id, $member->data['up_name'], $member->data['up_access_level']) . ' (' . $member->get_priority_name() . ($member->data['ffm_parent_up_id'] ? ' underordnet <user id="' . $member->data['ffm_parent_up_id'] . '" />' : '') . ')</p>'; } else { $list = array(); foreach ($members as $member) { $list[] = '<li>' . game::profile_link($member->id, $member->data['up_name'], $member->data['up_access_level']) . ' (' . $member->get_priority_name() . ($member->data['ffm_parent_up_id'] ? ' underordnet <user id="' . $member->data['ffm_parent_up_id'] . '" />' : '') . ')</li>'; } echo ' <p>Valgte spillere:</p> <ul>' . implode("", $list) . '</ul>'; } echo ' <input type="hidden" name="change_priority" /> <input type="hidden" name="up_ids" value="' . implode(",", $up_ids) . '" /> <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <p>Du må nå velge ny posisjon du ønsker ' . fword("spilleren", "spillerene", $c) . ' skal få i ' . $this->ff->type['refobj'] . '.</p>'; $this->pick_position($limits_data, $rank_info['number'], $members); echo ' <p class="c"> ' . show_sbutton("Velg posisjon", 'name="pick_priority"') . ' <a href="medlemmer?ff_id=' . $this->ff->id . '">Tilbake</a> </p> </form> </div>'; $this->ff->load_page(); }
/** * Spillere tilhørende brukeren */ protected static function page_up() { // hent spillerene tilhørende denne personen $pagei = new pagei(pagei::ACTIVE_GET, "side_up", pagei::PER_PAGE, 15); $result = $pagei->query("\n\t\t\tSELECT up_id, up_name, up_access_level, up_created_time, up_points, up_deactivated_time, up_hits, up_cash+up_bank money, upr_rank_pos\n\t\t\tFROM users_players\n\t\t\t\tLEFT JOIN users_players_rank ON upr_up_id = up_id\n\t\t\tWHERE up_u_id = " . page_min_side::$active_user->id . "\n\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> <div class="bg1"> <table class="table ' . ($pagei->pages == 1 ? 'tablem' : 'tablemt') . '" style="width: 100%"> <thead> <tr> <th>Spiller</th> <th>Opprettet</th> <th>Rank</th> <th>Penger</th> <th>Visninger</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']) . '</td> <td>' . ess::$b->date->get($row['up_created_time'])->format() . '</td> <td>' . $rank['name'] . ($rank['orig'] ? '<br />(' . $rank['orig'] . ')' : '') . '</td> <td class="r">' . game::format_cash($row['money']) . '</td> <td class="r">' . game::format_number($row['up_hits']) . '</td> <td>' . ($row['up_access_level'] == 0 ? 'Deaktivert:<br />' . ess::$b->date->get($row['up_deactivated_time'])->format() : 'Status: I live') . '</td> </tr>'; } echo ' </tbody> </table>' . ($pagei->pages > 1 ? ' <p class="c">' . $pagei->pagenumbers() . '</p>' : '') . ' </div> </div>'; }
/** * Endre rankpoengene for en bestemt spiller * @param integer $points_change * @param player $up (evt. integer) * @param boolean $use_login skal vi oppdatere sesjonsinfo hvis dette er den innloggede spilleren? * @param boolean $silent ikke annonser svaret på f.eks. IRC * @param integer $points_change_rel * @param string $oppdrag_name navn for oppdragtrigger å identifisere funksjonen som gav poeng * @return integer rank pos change/boolean false 404 */ public static function increase_rank_static($points_change, $up, $use_login = false, $silent = null, $points_change_rel = null, $oppdrag_name = null) { // ikke behandle hvis antall poeng ikke endres if (!$points_change) { return; } // hent ut spillerid if (!is_numeric($up) && (!is_object($up) || !$up instanceof player)) { throw new HSException("Ukjent spiller."); } if (is_numeric($up)) { $up_id = $up; $up = player::get($up_id); } else { $up_id = $up->id; } // tilhører spilleren brukeren som er logget inn? $is_login = $use_login && login::$logged_in && $up_id == login::$user->player->id; // hent helt fersk spillerinfo $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT up_name, up_access_level, up_points, upr_rank_pos\n\t\t\tFROM users_players\n\t\t\t\tLEFT JOIN users_players_rank ON upr_up_id = up_id\n\t\t\tWHERE up_id = {$up_id}"); $row = $result->fetch(); // sett opp info $points_change_rel = $points_change_rel === null ? $points_change : (int) $points_change_rel; $access_level = $row['up_access_level']; $points = $row['up_points']; $points_after = $points + $points_change; $points_after_rel = $points + $points_change_rel; $rank_pos = $row['upr_rank_pos']; $name = $row['up_name']; $pos_change = 0; $extra = ""; // må ranklista oppdateres? if ($rank_pos === null) { ranklist::flush(); // hent oppdatert plassering $result = \Kofradia\DB::get()->query("SELECT upr_rank_pos FROM users_players_rank WHERE upr_up_id = {$up_id}"); $row = $result->fetch(); // har fortsatt ikke plassering? if (!$row) { throw new HSException("Klarer ikke å finne korrekt rankplassering."); } } // ranken vi har nå $rank = game::rank_info($points); $rank_num_now = $rank['number']; // ranken vi kommer til å være på etter endring $rank_after = game::rank_info($points_after); $rank_num_after = $rank_after['number']; $invisible = $access_level >= ess::$g['access_noplay'] || $access_level == 0; // positiv forandring if ($points_change > 0) { // hent ny rankplassering $result = \Kofradia\DB::get()->query("\n\t\t\t\tSELECT MIN(upr_rank_pos)\n\t\t\t\tFROM users_players_rank\n\t\t\t\tWHERE upr_up_points > {$points} AND upr_up_points <= {$points_after} AND upr_up_access_level != 0 AND upr_up_access_level < " . ess::$g['access_noplay']); // endre rankplassering? $pos = $result->fetchColumn(0); if ($pos !== NULL) { #$extra = ", up_rank_pos = $pos"; $pos_change = $rank_pos - $pos; if ($up) { $up->data['upr_rank_pos'] -= $pos_change; } } // oppdater brukeren \Kofradia\DB::get()->exec("UPDATE users_players SET up_points = up_points + {$points_change}, up_points_rel = up_points_rel + {$points_change_rel}{$extra} WHERE up_id = {$up_id}"); // oppdater ranklisten \Kofradia\DB::get()->exec("UPDATE users_players_rank SET upr_up_points = upr_up_points + {$points_change} WHERE upr_up_id = {$up_id}"); // oppdater rankplasseringen til de vi går forbi #if (!$invisible) \Kofradia\DB::get()->exec("UPDATE users_players SET up_rank_pos = up_rank_pos + 1 WHERE up_points >= $points AND up_points < $points_after"); ranklist::update(); } elseif ($points_change < 0) { // hent ny rankplassering $result = \Kofradia\DB::get()->query("\n\t\t\t\tSELECT MAX(upr_rank_pos)\n\t\t\t\tFROM users_players_rank\n\t\t\t\tWHERE upr_up_points < {$points} AND upr_up_points > {$points_after} AND upr_up_access_level != 0 AND upr_up_access_level < " . ess::$g['access_noplay']); // endre rankplassering? $pos = $result->fetchColumn(0); if ($pos !== NULL) { $pos++; #$extra = ", up_rank_pos = $pos"; $pos_change = $rank_pos - $pos; if ($up) { $up->data['upr_rank_pos'] -= $pos_change; } } // oppdater brukeren \Kofradia\DB::get()->exec("UPDATE users_players SET up_points = up_points + {$points_change}, up_points_rel = up_points_rel + {$points_change_rel}{$extra} WHERE up_id = {$up_id}"); // oppdater ranklisten \Kofradia\DB::get()->exec("UPDATE users_players_rank SET upr_up_points = upr_up_points + {$points_change} WHERE upr_up_id = {$up_id}"); // oppdater rankplasseringen til de vi går forbi #if (!$invisible) \Kofradia\DB::get()->exec("UPDATE users_players SET up_rank_pos = GREATEST(1, up_rank_pos - 1) WHERE up_points < $points AND up_points >= $points_after"); ranklist::update(); } // oppdater info knyttet til users_hits og sessions if ($is_login) { \Kofradia\DB::get()->exec("UPDATE users_hits SET uhi_points = uhi_points + {$points_change} WHERE uhi_up_id = {$up_id} AND uhi_secs_hour = " . login::$info['secs_hour']); \Kofradia\DB::get()->exec("UPDATE sessions SET ses_points = ses_points + {$points_change} WHERE ses_id = " . login::$info['ses_id']); } // logg putlog("SPAMLOG", "%c6%bRANKPOENG:%b%c %u{$name}%u skaffet %b%u{$points_change}%u%b rankpoeng ({$_SERVER['REQUEST_URI']}) ({$_SERVER['REQUEST_METHOD']})"); // økning? if ($rank_num_after > $rank_num_now) { for ($i = $rank_num_now + 1; $i <= $rank_num_after && $i <= count(game::$ranks['items']); $i++) { $rank_name = game::$ranks['items_number'][$i]['name']; // forfremmet self::add_log_static("forfremmelse", $rank_name, 0, $up_id); // mirc msg if (!$silent) { // live-feed if ($i >= 6) { livefeed::add_row('<user id="' . $up_id . '" /> ble forfremmet til ' . htmlspecialchars($rank_name) . '.'); } $type = $i >= 6 ? "INFO" : "SPAM"; putlog($type, "%bFORFREMMELSE:%b %u{$name}%u ble forfremmet til %b{$rank_name}%b!"); } } } elseif ($rank_num_after < $rank_num_now) { for ($i = $rank_num_now - 1; $i >= $rank_num_after && $i > 0; $i--) { $rank_name = game::$ranks['items_number'][$i]['name']; // nedgradert self::add_log_static("nedgradering", $rank_name, 0, $up_id); // mirc msg if (!$silent) { // live-feed if ($i >= 6) { livefeed::add_row('<user id="' . $up_id . '" /> ble nedgradert til ' . htmlspecialchars($rank_name) . '.'); } putlog("INFO", "%bNEDGRADERING:%b %u{$name}%u ble nedgradert til %b{$rank_name}%b!"); } } } // sett ny helse og energi if ($rank_num_after != $rank_num_now) { \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE users_players\n\t\t\t\tSET\n\t\t\t\t\tup_health = ROUND(up_health * ({$rank_after['rank_max_health']} / up_health_max)), up_health_max = {$rank_after['rank_max_health']},\n\t\t\t\t\tup_energy = ROUND(up_energy * ({$rank_after['rank_max_energy']} / up_energy_max)), up_energy_max = {$rank_after['rank_max_energy']}\n\t\t\t\tWHERE up_id = {$up_id}"); } // sjekke oppdrag? // kontroller spiller if ($up) { // nullstill rankobjekt unset($up->rank); // sett ny helse og energi if ($rank_num_after != $rank_num_now) { $up->data['up_health'] = round($up->data['up_health'] * ($rank_after['rank_max_health'] / $up->data['up_health_max'])); $up->data['up_health_max'] = $rank_after['rank_max_health']; $up->data['up_energy'] = round($up->data['up_energy'] * ($rank_after['rank_max_energy'] / $up->data['up_energy_max'])); $up->data['up_energy_max'] = $rank_after['rank_max_energy']; } // oppdater rankpoeng $up->data['up_points'] += $points_change; $up->data['up_points_rel'] += $points_change_rel; // fyr av trigger $up->trigger("rank_points", array("source" => $oppdrag_name, "points" => $points_change, "points_rel" => $points_change_rel, "points_after" => $points_after, "points_after_rel" => $points_after_rel, "rank" => $rank_num_after - $rank_num_now, "pos" => $pos_change)); } // har vi endret plass når vi er i top 100 lista? if (($rank_pos <= 10 || $pos <= 10) && $pos_change != 0 && !$silent) { if ($pos_change < 0) { putlog("INFO", "%bRANKNUMMER:%b %u{$name}%u falt tilbake %b" . abs($pos_change) . "%b plass" . ($pos_change != -1 ? 'er' : '') . " til %b{$pos}.%b plass.."); // live-feed livefeed::add_row('<user id="' . $up_id . '" /> falt tilbake <b>' . abs($pos_change) . '</b> plass' . ($pos_change != -1 ? 'er' : '') . ' til <b>' . $pos . '</b> plass.'); } else { putlog("INFO", "%bRANKNUMMER:%b %u{$name}%u avanserte %b" . $pos_change . "%b plass" . ($pos_change != 1 ? 'er' : '') . " til %b{$pos}.%b plass!"); // live-feed livefeed::add_row('<user id="' . $up_id . '" /> avanserte <b>' . abs($pos_change) . '</b> plass' . ($pos_change != 1 ? 'er' : '') . ' til <b>' . $pos . '</b>. plass.'); } } return $pos_change; }
$result = \Kofradia\DB::get()->query("\n\tSELECT\n\t\tusers_players.*,\n\t\tup_cash + up_bank AS money,\n\t\tu_email, u_online_ip,\n\t\tupr_rank_pos\n\tFROM users_players\n\t\tLEFT JOIN users_players_rank ON upr_up_id = up_id,\n\t\tusers\n\tWHERE up_id = {$up_id} AND up_u_id = u_id\n\tGROUP BY up_id"); if (!($player = $result->fetch())) { ajax::text("ERROR:404-USER", ajax::TYPE_404); } // hent FF $result = \Kofradia\DB::get()->query("\n\tSELECT ffm_priority, ff_id, ff_name, ff_type\n\tFROM ff_members JOIN ff ON ffm_ff_id = ff_id\n\tWHERE ffm_up_id = {$up_id} AND ffm_status = 1 AND ff_inactive = 0\n\tORDER BY ff_name"); $ff = array(); while ($row = $result->fetch()) { $type = ff::$types[$row['ff_type']]; $row['posisjon'] = ucfirst($type['priority'][$row['ffm_priority']]); $ff[] = $row; } // profilbildet $profile_image = player::get_profile_image_static($player['up_profile_image_url']); // ranken $rank = game::rank_info($player['up_points'], $player['upr_rank_pos'], $player['up_access_level']); #$rank_name = $rank['name']; // statusen $status = ""; // drept? if ($player['up_access_level'] == 0 && $player['up_deactivated_dead'] != 0) { $status = '<span class="c_deactivated">[Død]</span>'; } else { $types = access::types($player['up_access_level']); if (!in_array("none", $types)) { $type = access::type($player['up_access_level']); $type_name = access::name($type); $class = access::html_class($type); $status = '<span class="' . $class . '">[' . htmlspecialchars($type_name) . ']</span>'; } // nostat?
/** * Lag HTML for forhåndsvisning av et forumsvar * @param array $data * * $data må inneholde: * * ft_id * fr_text * fr_last_edit [optional] * fr_last_edit_up_id [optional] * * fr_up_id * up_name * up_access_level * up_points * upr_rank_pos * up_forum_signature * up_profile_image_url * * fs_new [boolean, optional] */ public static function template_topic_reply_preview($data) { if (!\login::$logged_in) { throw new \HSNotLoggedIn(); } $date = \ess::$b->date->get(); // sett opp ranken $rank = \game::rank_info($data['up_points'], $data['upr_rank_pos'], $data['up_access_level']); $rank = $rank['name']; $player_ff_position = ''; $html = ' <div class="forum_topic"> <h2 class="forum_title"><a href="topic?id=' . $data['ft_id'] . '" class="forum_permlink r4">#XX</a> - ' . $date->format(\date::FORMAT_NOTIME) . ' <b>' . $date->format("H:i:s") . '</b> - Av ' . \game::profile_link($data['fr_up_id'], $data['up_name'], $data['up_access_level']) . $player_ff_position . (isset($data['fs_new']) && $data['fs_new'] ? ' <span class="fs_new">(Ny)</span>' : '') . '</h2> <p class="h_left"><a href="#default_header_wrap"><img src="' . STATIC_LINK . '/other/up.gif" title="Til toppen" /></a></p> <p class="h_right" style="text-transform: uppercase; margin: -17px 10px 0 !important; color: #DDD">Forhåndsvisning</p>'; // profilbildet og rank $img = ' <div class="forum_profile_image"><a href="' . \ess::$s['relative_path'] . '/p/' . $data['up_name'] . '/' . $data['fr_up_id'] . '"><img src="' . htmlspecialchars(\player::get_profile_image_static($data['up_profile_image_url'])) . '" class="profile_image" alt="" /><span class="forum_rank">' . $rank . '</span></a></div>'; // innlegget $html .= ' <div class="forum_text">' . $img . ' ' . \game::format_data($data['fr_text']) . ' </div>'; // signaturen $signatur = false; if (\login::$user->data['u_forum_show_signature']) { $signatur = \game::format_data($data['up_forum_signature']); } if (!empty($signatur)) { $html .= ' <div class="forum_signature">' . $signatur . '</div>'; } // sist endret if (!empty($data['fr_last_edit'])) { $html .= ' <p class="forum_last_edit">Sist redigert av <user id="' . $data['fr_last_edit_up_id'] . '" /> ' . \ess::$b->date->get($data['fr_last_edit'])->format(\date::FORMAT_SEC) . '</p>'; } $html .= ' </div>'; return $html; }
/** * Hent broderskapet med flest rangeringspoeng */ public static function get_fam_points_rank() { // hent alle broderskapene $ff_list = self::get_ff_group("ff_type = " . self::TYPE_FAMILIE . " AND ff_inactive = 0 AND ff_is_crew = 0"); // hent alle eiere og medeiere $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT ffm_up_id, ffm_ff_id, ffm_priority\n\t\t\tFROM ff_members JOIN ff ON ffm_ff_id = ff_id AND ff_type != " . self::TYPE_FAMILIE . " AND ff_is_crew = 0 AND ff_inactive = 0\n\t\t\tWHERE ffm_priority <= 2 AND ffm_status = " . ff_member::STATUS_MEMBER); $list = array(); while ($row = $result->fetch()) { $list[$row['ffm_up_id']][] = $row['ffm_priority']; } // tell opp poeng i alle FF $ff_points_most_count = 0; $ff_points_most = null; $ff_points = array(); foreach ($ff_list as $ff) { $points_ff = 0; // disse 3 er bare for å bryte ned statistikken $points_up = 0; $points_kill = 0; foreach ($ff->members['members'] as $ffm) { // firmaer if (isset($list[$ffm->id])) { foreach ($list[$ffm->id] as $pri) { // eier = 3 poeng, medeier = 2 poeng $p = $pri == 1 ? 3 : 2; $points_ff += $p; } } // hent rank $rank = game::rank_info($ffm->data['up_points'], $ffm->data['upr_rank_pos'], $ffm->data['up_access_level']); $points_up += $rank['number']; // ett poeng per rank for medlemmene // sjekk rank posisjon if ($rank['pos'] == 1) { $points_up += 3; } elseif ($rank['pos'] <= 5) { $points_up += 2; } elseif ($rank['pos'] <= 15) { $points_up += 1; } // 1 poeng for Lucky Luciano } // 1 poeng per 5. drap $points_kill += floor(($ff->data['ff_attack_killed_num'] + $ff->data['ff_attack_bleed_num']) / 5); // minus 1 poeng per 2. spiller i broderskapet som er drept $points_kill -= floor(($ff->data['ff_attacked_killed_num'] + $ff->data['ff_attacked_bleed_num']) / 2); $points = $ff->data['ff_points']; $points += $points_ff + $points_up + $points_kill; $ff_points[] = $points; $ff->data['ff_points_sum'] = $points; $ff->data['ff_points_ff'] = $points_ff; $ff->data['ff_points_up'] = $points_up; $ff->data['ff_points_kill'] = $points_kill + $ff->data['ff_points']; // flest poeng? if ($points > $ff_points_most_count) { $ff_points_most_count = $points; $ff_points_most = $ff; } } // sorter FF etter poeng array_multisort($ff_points, SORT_DESC, SORT_NUMERIC, $ff_list); // sett opp med ID-er $ff_list_indexed = array(); foreach ($ff_list as $ff) { $ff_list_indexed[$ff->id] = $ff; } // sjekk for all-time-high if ($ff_points_most) { hall_of_fame::trigger("familie_rank", $ff_points_most); } return $ff_list_indexed; }
public static function format_data($data, $type = "bb", $args = null) { global $_base; switch ($type) { case "bb": case "signature": // bb kode return game::bb_to_html($data); // bb-kode eller egendefinert tekst hvis bb-kode er tom // bb-kode eller egendefinert tekst hvis bb-kode er tom case "bb-opt": $bb = trim(game::bb_to_html($data)); if ($bb == "") { return $args; } return $bb; case "music_pre": return preg_replace('~\\[music\\](https?://.+?)\\[/music\\]~ieu', 'game::music_add(\'$1\')', $data); case "music_post": return game::music_replace($data); case "profile": $data = game::format_data($data, "music_pre"); // sett opp ranken $rank = game::rank_info($args->data['up_points'], $args->data['upr_rank_pos'], $args->data['up_access_level']); // diverse bb koder $data = str_replace(array("[counter]", "[visits]", "[visitor]", "[rank]", "[bank]", "[cash]", "[money]", "[renter]", "[pm_ulest]", "[pengerank]"), array('<img src="&rpath;/counter?count=' . $args->data['up_profile_hits'] . '" alt="Antall visninger: ' . $args->data['up_profile_hits'] . '" />', $args->data['up_profile_hits'], game::profile_link(), $rank['orig'] ? $rank['orig'] : $rank['name'], game::format_cash($args->data['up_bank']), game::format_cash($args->data['up_cash']), game::format_cash($args->data['up_cash'] + $args->data['up_bank']), game::format_cash($args->data['up_interest_last']), game::format_number($args->user->data['u_inbox_new']), game::cash_name($args->data['up_cash'] + $args->data['up_bank'])), game::bb_to_html($data)); // rankbar $type = false; $match_rank = preg_match("~\\[rank_(neste_tid|neste_dato|tid|dato)\\]~iu", $data); if (preg_match("~\\[rankbar( type=(1|2))?\\]~iu", $data, $type) || $match_rank) { // høyeste rank? if ($rank['need_points'] == 0) { global $_game; $prosent = $args->data['up_points'] / game::$ranks['items_number'][count(game::$ranks['items_number'])]['points'] * 100; $rankbar_total = ' <div class="progressbar"> <div class="progress"><p>' . game::format_num($prosent, 3) . ' %</p></div> </div>'; $rankbar_total2 = ' <div class="progressbar" style="margin-top: 1em"> <div class="progress"><p>' . game::format_num($prosent, 3) . ' %</p></div> </div>'; $data = str_replace(array("[rankbar]", "[rankbar type=1]", "[rankbar type=2]", "[rank_tid]", "[rank_dato]", "[rank_neste_tid]", "[rank_neste_dato]"), array($rankbar_total . $rankbar_total2, $rankbar_total, $rankbar_total, "Oppnådd", "Oppnådd", "Oppnådd", "Oppnådd"), $data); } else { // i forhold til den høyeste ranken global $_game; // antall poeng for den høyeste ranken $points_max = game::$ranks['items']; end($points_max); $points_max = current($points_max); $points_max = $points_max['points']; // hvor langt ifra er vi? $percent_total = round($args->data['up_points'] / $points_max, 2) * 100; #if ($percent_total > 100) $percent_total = 100; if ($percent_total == 0) { $percent_total = 0.01; } $rankbar_total = ' <div class="progressbar"> <div class="progress" style="width: ' . floor($percent_total) . '%"><p>' . game::format_num($percent_total, 2) . ' % i forhold til høyeste rank.</p></div> </div>'; // i forhold til neste rank $points_rank = $args->data['up_points'] - $rank['points']; $percent = round($points_rank / $rank['need_points'] * 100, 2); #if ($percent ) $rankbar_next = ' <div class="progressbar"> <div class="progress" style="width: ' . floor($percent) . '%"><p>' . game::format_num($percent, 2) . ' % i forhold til neste rank</p></div> </div>'; $rankbar_next2 = ' <div class="progressbar" style="margin-top: 1em"> <div class="progress" style="width: ' . floor($percent) . '%"><p>' . game::format_num($percent, 2) . ' % i forhold til neste rank</p></div> </div>'; // fiks bb kodene $data = str_replace(array("[rankbar]", "[rankbar type=1]", "[rankbar type=2]"), array($rankbar_total . $rankbar_next2, $rankbar_total, $rankbar_next), $data); // beregn antatt tid det tar å nå høyeste rank if ($match_rank) { // hent ut aktiviteten de siste X dagene $expire = ess::$b->date->get(); $expire->modify("-21 days"); $expire = max($args->data['up_created_time'], $expire->format("U")); // maks tid: siste 21 dager eller siden reg (om registrert innen 30 dager) $result = \Kofradia\DB::get()->query("SELECT SUM(uhi_points) FROM users_hits WHERE uhi_up_id = {$args->id} AND uhi_secs_hour >= {$expire}"); $points = (int) $result->fetchColumn(0); if ($points == 0) { $data = str_replace(array("[rank_tid]", "[rank_dato]", "[rank_neste_tid]", "[rank_neste_dato]"), array("ukjent", "ukjent", "ukjent", "ukjent"), $data); } else { // antall sekunder poengene skal fordeles på $time_elapsed = time() - $expire; // beregn til neste rank og erstatt BB-kode $need = $rank['points'] + $rank['need_points'] - $args->data['up_points']; $time_left = $need / $points * $time_elapsed; if ($time_left > 63072000) { $text_left = "over 2 år"; $text_date = "om over 2 år"; } else { $text_left = game::timespan($time_left); $text_date = ess::$b->date->get($time_left + time())->format(date::FORMAT_NOTIME); } $data = str_replace(array("[rank_neste_tid]", "[rank_neste_dato]"), array($text_left, $text_date), $data); // beregn til øverste rank og erstatt BB-kode $need = $points_max - $args->data['up_points']; $time_left = $need / $points * $time_elapsed; if ($time_left > 63072000) { $text_left = "over 2 år"; $text_date = "om over 2 år"; } else { $text_left = game::timespan($time_left); $text_date = ess::$b->date->get($time_left + time())->format(date::FORMAT_NOTIME); } $data = str_replace(array("[rank_tid]", "[rank_dato]"), array($text_left, $text_date), $data); } } } } // kontaktliste? if (mb_strpos($data, "[kontakter]") !== false) { // hent kontaktliste $result = \Kofradia\DB::get()->query("SELECT uc_contact_up_id, up_name, up_access_level, up_last_online FROM users_contacts LEFT JOIN users_players ON uc_contact_up_id = up_id WHERE uc_u_id = {$args->data['up_u_id']} AND uc_type = 1 ORDER BY up_name"); $html = ' <table class="table l tablem"> <thead> <tr> <th>Spiller</th> <th>Sist pålogget</th> </tr> </thead> <tbody>'; while ($row = $result->fetch()) { $html .= ' <tr> <td>' . game::profile_link($row['uc_contact_up_id'], $row['up_name'], $row['up_access_level']) . '</td> <td class="r">' . game::timespan($row['up_last_online'], game::TIME_ABS) . '</td> </tr>'; } $html .= ' </tbody> </table>'; // sett inn som bb kode $data = str_replace("[kontakter]", $html, $data); } // blokkeringliste? if (mb_strpos($data, "[blokkert]") !== false) { // hent blokkeringliste $result = \Kofradia\DB::get()->query("SELECT uc_contact_up_id, up_name, up_access_level, up_last_online FROM users_contacts LEFT JOIN users_players ON uc_contact_up_id = up_id WHERE uc_u_id = {$args->data['up_u_id']} AND uc_type = 2 ORDER BY up_name"); $html = ' <table class="table l tablem"> <thead> <tr> <th>Spiller</th> <th>Sist pålogget</th> </tr> </thead> <tbody>'; while ($row = $result->fetch()) { $html .= ' <tr> <td>' . game::profile_link($row['uc_contact_up_id'], $row['up_name'], $row['up_access_level']) . '</td> <td class="r">' . game::timespan($row['up_last_online'], game::TIME_ABS) . '</td> </tr>'; } $html .= ' </thead> </table>'; // sett inn som bb kode $data = str_replace("[blokkert]", $html, $data); } return game::format_data($data, "music_post"); default: // ukjent! throw new HSException("Ukjent type ({$type})"); } return false; }
/** * Vis beste rankere forrige periode */ protected function show_beste_rankere() { $d = ess::$b->date->get(); $a = $d->format("H") < 21 ? 2 : 1; $d->modify("-{$a} day"); $d->setTime(21, 0, 0); $date_from = $d->format("U"); $d->modify("+1 day"); $date_to = $d->format("U"); // hent statistikk $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT up_id, up_name, up_access_level, sum_uhi_points, up_points, up_last_online, up_profile_image_url, upr_rank_pos\n\t\t\tFROM\n\t\t\t\t(\n\t\t\t\t\tSELECT uhi_up_id, SUM(uhi_points) sum_uhi_points\n\t\t\t\t\tFROM users_hits\n\t\t\t\t\t\tJOIN users_players ON up_id = uhi_up_id AND (up_access_level != 0 OR up_deactivated_time < {$date_to}) AND up_access_level < " . ess::$g['access_noplay'] . "\n\t\t\t\t\tWHERE uhi_secs_hour >= {$date_from} AND uhi_secs_hour < {$date_to}\n\t\t\t\t\tGROUP BY uhi_up_id\n\t\t\t\t\tHAVING sum_uhi_points > 0\n\t\t\t\t\tORDER BY sum_uhi_points DESC\n\t\t\t\t\tLIMIT 3\n\t\t\t\t) ref,\n\t\t\t\tusers_players\n\t\t\t\tLEFT JOIN users_players_rank ON upr_up_id = up_id\n\t\t\tWHERE uhi_up_id = up_id"); if ($result->rowCount() == 0) { return; } $players = array(); $up_list = array(); while ($row = $result->fetch()) { $players[] = $row; $up_list[] = $row['up_id']; } // hent familier hvor spilleren er medlem $result_ff = \Kofradia\DB::get()->query("\n\t\t\tSELECT ffm_up_id, ffm_priority, ff_id, ff_type, ff_name\n\t\t\tFROM\n\t\t\t\tff_members\n\t\t\t\tJOIN ff ON ff_id = ffm_ff_id AND ff_type = 1 AND ff_inactive = 0\n\t\t\tWHERE ffm_up_id IN (" . implode(",", $up_list) . ") AND ffm_status = " . ff_member::STATUS_MEMBER . "\n\t\t\tORDER BY ff_name"); $familier = array(); while ($row = $result_ff->fetch()) { $pos = ff::$types[$row['ff_type']]['priority'][$row['ffm_priority']]; $text = '<a href="' . ess::$s['relative_path'] . '/ff/?ff_id=' . $row['ff_id'] . '" title="' . htmlspecialchars($pos) . '">' . htmlspecialchars($row['ff_name']) . '</a>'; $familier[$row['ffm_up_id']][] = $text; } $data = ' <p>Beste rankere siste periode</p>'; $e = 0; foreach ($players as $row) { $e++; $img = player::get_profile_image_static($row['up_profile_image_url']); $rank = game::rank_info($row['up_points'], $row['upr_rank_pos'], $row['up_access_level']); $data .= ' <p class="ranklist_box"> <a href="' . ess::$s['relative_path'] . '/p/' . rawurlencode($row['up_name']) . '" title="Vis profil"><img src="' . htmlspecialchars($img) . '" alt="Profilbilde" class="profile_image" /></a> <span class="ranklist_pos">#' . $e . '</span> <span class="ranklist_player"> <span class="rp_up">' . game::profile_link($row['up_id'], $row['up_name'], $row['up_access_level']) . '</span><br /> <span class="rp_rank">' . $rank['name'] . '</span> </span> <span class="rp_familie">' . (!isset($familier[$row['up_id']]) ? '<i class="rp_no_familie">Ingen broderskap</i>' : implode(", ", $familier[$row['up_id']])) . '</span> </p>'; if ($e == 15) { break; } } $data .= ' <p class="dark">En rankperiode er fra sist klokka var 21:00 og 24 timer før. De beste rankerene <a href="' . ess::$s['rpath'] . '/node/59">mottar bonus</a> for sin innsats.</p>'; $this->put_box($data); }
/** * Behandle forslag av medlem */ protected function page_suggestion_handle() { ess::$b->page->add_title("Foreslå en spiller som medlem"); $player = false; // hvilken posisjon kan vi foreslå til? $limits = $this->ff->get_limits(); $priority = isset($limits[4]) && $limits[4] >= 0 ? 4 : 3; // finne spiller? if (isset($_POST['player']) || isset($_REQUEST['up_id'])) { // hent spillerinformasjon $where = isset($_REQUEST['up_id']) ? 'up_id = ' . intval($_REQUEST['up_id']) : 'up_name = ' . \Kofradia\DB::quote($_POST['player']); $more = isset($_REQUEST['up_id']) ? '' : ' ORDER BY up_access_level = 0, up_last_online DESC LIMIT 1'; $result = \Kofradia\DB::get()->query("\n\t\t\t\tSELECT up_id, up_name, up_access_level, up_points, upr_rank_pos, uc_time, uc_info, COUNT(IF(ff_is_crew = 0 AND ff_inactive = 0, 1, NULL)) ff_num\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\t\tJOIN users ON up_u_id = u_id\n\t\t\t\t\tLEFT JOIN users_contacts ON uc_u_id = u_id AND uc_contact_up_id = " . login::$user->player->id . " AND uc_type = 2\n\t\t\t\t\tLEFT JOIN ff_members ON ffm_up_id = up_id AND (ffm_status = 0 OR ffm_status = 1)\n\t\t\t\t\tLEFT JOIN ff ON ff_id = ffm_ff_id\n\t\t\t\tWHERE {$where}\n\t\t\t\tGROUP BY up_id{$more}"); $row = $result->fetch(); // fant ikke spilleren? if (!$row || !$row['up_id']) { ess::$b->page->add_message("Fant ikke spilleren med " . (isset($_REQUEST['up_id']) ? "id #" . intval($_REQUEST['up_id']) : "navn <b>" . htmlspecialchars($_POST['player']) . "</b>") . ".", "error"); } else { // sett opp rank informasjon for spilleren $rank_info = game::rank_info($row['up_points'], $row['upr_rank_pos'], $row['up_access_level']); // er i FF? if (isset($this->ff->members['list'][$row['up_id']])) { ess::$b->page->add_message('<user id="' . $row['up_id'] . '" /> er allerede foreslått, invitert eller medlem av ' . $this->ff->type['refobj'] . '.', "error"); } elseif ($row['up_access_level'] == 0) { ess::$b->page->add_message('<user id="' . $row['up_id'] . '" /> er død og kan ikke foreslås til ' . $this->ff->type['refobj'] . '.', "error"); } elseif ($row['uc_time'] && !$this->ff->mod) { $reason = game::bb_to_html($row['uc_info']); $reason = empty($reason) ? '' : ' Begrunnelse: ' . $reason; ess::$b->page->add_message('Denne spilleren blokkerte deg ' . ess::$b->date->get($row['uc_time'])->format() . '. Du kan derfor ikke foreslå spilleren til ' . $this->ff->type['refobj'] . '.' . $reason, "error"); } elseif ($rank_info['number'] < $this->ff->get_priority_rank($priority)) { ess::$b->page->add_message('<user id="' . $row['up_id'] . '" /> har ikke høy nok rank for å bli ' . $this->ff->type['priority'][$priority] . '. Må være minst ' . game::$ranks['items_number'][$this->ff->get_priority_rank($priority)]['name'] . '.', "error"); } else { $player = $row; } } } // har ikke funnet spiller? if (!$player || $_SERVER['REQUEST_METHOD'] == "GET") { // vis skjema for å finne spiller ess::$b->page->add_title("Velg spiller"); echo ' <div class="section" style="width: 200px"> <h1>Foreslå medlem til ' . $this->ff->type['refobj'] . '</h1> <p class="h_right"><a href="panel?ff_id=' . $this->ff->id . '">Tilbake</a></p> <boxes /> <form action="" method="post"> <p>Skriv inn navnet på spilleren du ønsker å foreslå som medlem til ' . $this->ff->type['refobj'] . '.</p> <p>' . ucfirst($this->ff->type['priority'][1]) . '/' . $this->ff->type['priority'][2] . ' vil få opp dette forslaget, og kan akseptere det slik at spilleren blir invitert som ' . $this->ff->type['priority'][$priority] . ($this->ff->type['parent'] ? ' underordnet deg' : '') . '.</p> <dl class="dd_right"> <dt>Spiller</dt> <dd><input type="text" name="player" value="' . htmlspecialchars(postval("player", $player ? $player['up_name'] : '')) . '" class="styled w100" /></dd> </dl> <p class="c"> ' . show_sbutton("Finn spiller") . ' <a href="panel?ff_id=' . $this->ff->id . '">Tilbake</a> </p> </form> </div>'; $this->ff->load_page(); } // bekreftet? if (isset($_POST['confirm']) && validate_sid(false)) { // legg til forslag if ($this->ff->player_suggest($player['up_id'])) { ess::$b->page->add_message('<user id="' . $player['up_id'] . '" /> ble foreslått til ' . $this->ff->type['refobj'] . ' som ' . $this->ff->type['priority'][$priority] . ($this->ff->type['parent'] ? ' underordnet deg' : '') . '.'); redirect::handle(); } else { ess::$b->page->add_message("Noe gikk galt. Kunne ikke foreslå spilleren.", "error"); } } // vis bekreftskjema ess::$b->page->add_title("Bekreft forslag"); echo ' <div class="section" style="width: 220px"> <h1>Bekreft forslag</h1> <p class="h_right"><a href="panel?ff_id=' . $this->ff->id . '&a=suggestion">Tilbake</a></p> <boxes /> <form action="" method="post"> <input type="hidden" name="up_id" value="' . $player['up_id'] . '" /> <input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" /> <p>Informasjon:</p> <dl class="dd_right"> <dt>Spiller</dt> <dd>' . game::profile_link($player['up_id'], $player['up_name'], $player['up_access_level']) . '</dd> <dt>Posisjon</dt> <dd>' . ucfirst($this->ff->type['priority'][$priority]) . ($this->ff->type['parent'] ? ' underordnet <user id="' . $this->ff->uinfo->id . '" />' : '') . '</dd> </dl> <p class="c"> ' . show_sbutton("Bekreft forslag", 'name="confirm"') . ' <a href="panel?ff_id=' . $this->ff->id . '&a=suggestion">Tilbake</a> </p> </form> </div>'; $this->ff->load_page(); }
/** Hent informasjon om en spiller */ public function c_spiller() { global $_game; $player = $this->cmd_x[1]; if (empty($player)) { $this->send_output("%bSyntax:%b !info spiller <spiller>"); } else { if ($row = $this->hent_bruker_info($player, "up_id, up_name, up_points, up_last_online, up_hits, up_cash, up_b_id, up_bank, upr_rank_pos, up_access_level")) { $rank = game::rank_info($row['up_points'], $row['upr_rank_pos'], $row['up_access_level']); $real = $rank['orig'] ? '%b (' . $rank['orig'] . ')' : ''; $rank = strip_tags($rank['name']) . $real; $last_online_delay = game::timespan($row['up_last_online'], game::TIME_ABS | game::TIME_SHORT | game::TIME_NOBOLD); $cash = game::format_cash($row['up_cash']); $bydel = game::$bydeler[$row['up_b_id']]['name']; $bank = game::format_cash($row['up_bank']); $hits = game::format_number($row['up_hits']); $this->send_output("Info for %b{$row['up_name']}%b (#{$row['up_id']}):"); $this->send_output("Rank: %b{$rank}"); $this->send_output("Bydel: %b{$bydel}"); $this->send_output("Penger: %b{$cash}%b - I banken: %b{$bank}"); $this->send_output("Sist pålogget: %b{$last_online_delay}"); $this->send_output("Antall sidevisninger: %b{$hits}"); } else { $this->send_output("%b{$player}%b finnes ikke!"); } } }
/** * Standard side - viser status for spilleren */ protected static function page_default() { // kan ikke se? if (!page_min_side::$pstats) { echo ' <p class="c">Du har ikke tilgang til å se denne siden.</p>'; return; } global $_game; // rank $rank_need = 0; if (page_min_side::$active_player->rank['need_points'] == 0) { $rank_prosent = 100; } else { $rank_prosent = (page_min_side::$active_player->data['up_points'] - page_min_side::$active_player->rank['points']) / page_min_side::$active_player->rank['need_points'] * 100; $rank_need = page_min_side::$active_player->rank['need_points'] - page_min_side::$active_player->data['up_points'] + page_min_side::$active_player->rank['points']; } $rank_prosent_top = page_min_side::$active_player->data['up_points'] / game::$ranks['items_number'][count(game::$ranks['items_number'])]['points'] * 100; // hvor mange rankprosent må vi til for å ta igjen neste person? $result = \Kofradia\DB::get()->query("SELECT up_points FROM users_players WHERE up_access_level != 0 AND up_access_level < {$_game['access_noplay']} AND up_points > " . page_min_side::$active_player->data['up_points'] . " ORDER BY up_points LIMIT 1"); $rank_user_next = false; $rank_user_prevnext = false; if ($next = $result->fetch()) { $points = $next['up_points']; $to = game::rank_info($points); if ($to['need_points'] == 0) { // totalt for spillet $percent = game::format_rank($points, "all"); $rank_user_next = '<p>Du må oppnå ' . game::format_num($points) . ' poeng (' . $percent . ' rank for spillet totalt) for å ta igjen neste rangert spiller.</p>'; // antall prosent vi trenger $rank_user_next .= '<p>Du trenger ' . game::format_num($points - page_min_side::$active_player->data['up_points']) . ' poeng (' . game::format_rank($points - page_min_side::$active_player->data['up_points'], $to) . ' rank).</p>'; } else { $percent = game::format_number(($points - $to['points']) / $to['need_points'] * 100, 3); // samme rank? $same = page_min_side::$active_player->rank['id'] == $to['id']; $rank_user_next = '<p>Du må oppnå ' . game::format_num($points) . ' poeng (' . $percent . ' % ' . ($same ? 'på nåværende rank' : 'på ranken ' . $to['name']) . ') for å nå neste rangert spiller.</p>'; if ($same) { $rank_user_next .= '<p>Du trenger ' . game::format_num($points - page_min_side::$active_player->data['up_points']) . ' poeng (' . game::format_rank($points - page_min_side::$active_player->data['up_points'], $to) . ' rank).</p>'; } } // finn ut hvor langt det er til forrige rankerte spiller $result = \Kofradia\DB::get()->query("SELECT up_points FROM users_players WHERE up_access_level != 0 AND up_access_level < {$_game['access_noplay']} AND up_id != " . page_min_side::$active_player->id . " AND up_points <= " . page_min_side::$active_player->data['up_points'] . " ORDER BY up_points DESC LIMIT 1"); if ($row = $result->fetch()) { $rank_user_prevnext = round((page_min_side::$active_player->data['up_points'] - $row['up_points']) / ($next['up_points'] - $row['up_points']) * 100, 4); } } // finn ut tidspunkt for de forskjellige funksonene $status = array("krim" => page_min_side::$active_player->status_kriminalitet(), "utpressing" => page_min_side::$active_player->status_utpressing(), "gta" => page_min_side::$active_player->status_gta(), "lotto" => page_min_side::$active_player->status_lotto()); // finn ut når vi kan gjøre forskjellige ting $wait = array("kriminalitet" => $status['krim']['wait_time'], "utpressing" => $status['utpressing']['wait_time'], "biltyveri" => $status['gta']['wait_time'], "lotto" => $status['lotto']['wait_time'], "forum_topic" => 0, "forum_reply" => 0, "fengsel" => 0); // forumene $wait['forum_reply'] = max(0, page_min_side::$active_user->data['u_forum_reply_time'] + game::$settings['delay_forum_reply']['value'] - time()); $wait['forum_topic'] = max(0, page_min_side::$active_user->data['u_forum_topic_time'] + game::$settings['delay_forum_new']['value'] - time()); if (page_min_side::$active_player->data['up_weapon_id']) { $wait['training'] = max(0, page_min_side::$active_player->data['up_weapon_training_next'] - time()); } // for lav rank til å opprette forumtråder? if (page_min_side::$active_player->rank['number'] < 4) { $wait['forum_topic'] = -1; } // fengsel og bomberom $wait['fengsel'] = max(0, page_min_side::$active_player->data['up_fengsel_time'] - time()); $wait['bomberom'] = max(0, page_min_side::$active_player->data['up_brom_expire'] - time()); $wait['lock'] = max($wait['fengsel'], $wait['bomberom']); // sammendrag $status = array(array("Kriminalitet", max($wait['kriminalitet'], $wait['lock']), "kriminalitet"), array("Utpressing", max($wait['utpressing'], $wait['lock']), "utpressing"), array("Biltyveri", max($wait['biltyveri'], $wait['lock']), "gta/biltyveri"), array("Lotto", max($wait['lotto'], $wait['lock']), "lotto"), array("Forumemne", $wait['forum_topic'], "forum/"), array("Forumsvar", $wait['forum_reply'], "forum/"), array("Fengsel", $wait['lock'], "fengsel")); if (page_min_side::$active_player->data['up_weapon_id']) { $status[] = array("Våpentrening", max($wait['training'], $wait['lock']), "angrip"); } // javascript funksjoner for status ess::$b->page->add_js_domready(' var min_side_data = ' . js_encode($status) . '; var elm, c; for (var i = 0; i < min_side_data.length; i++) { elm = $("min_side_"+i); if (!elm) continue; c = new Countdown($("min_side_"+i)); c.timesize = "partial", c.complete = function() { this.element.set("text", "Klar!"); this.element.removeClass("status_venter").addClass("status_ny"); }; }'); // css ess::$b->page->add_css(' .ms_space { margin-top: 2px } .ms_space_bt { margin-bottom: 1em } .status dd { text-align: right } .status dd a { text-decoration: none; color: #CCFF00 } a.status_ny { font-weight: bold } a.status_klar:hover, a.status_ny:hover { color: #AAFF00; text-decoration: underline } .status_venter { color: #888888 !important } a.status_venter:hover { } .split { height: 1px; background-color: #222222; overflow: hidden }'); $health = page_min_side::$active_player->data['up_health'] / page_min_side::$active_player->data['up_health_max'] * 100; $energy = page_min_side::$active_player->data['up_energy'] / page_min_side::$active_player->data['up_energy_max'] * 100; $health = page_min_side::$active_player->get_health_percent(); $energy = page_min_side::$active_player->get_energy_percent(); $protection = page_min_side::$active_player->get_protection_percent(); $training = page_min_side::$active_player->weapon ? page_min_side::$active_player->data['up_weapon_training'] * 100 : false; echo ' <div class="col2_w"> <div class="col_w left"> <div class="col">' . (page_min_side::$active_player->active ? ' <div class="bg1_c"> <h1 class="bg1">Status<span class="left2"></span><span class="right2"></span></h1> <div class="ms_space ms_up_st progressbar' . ($health < 20 ? ' levelcrit' : ($health < 50 ? ' levelwarn' : '')) . '"> <div class="progress" style="width: ' . round(min(100, $health)) . '%"> <p>Helse: ' . ($health == 100 ? '100' : game::format_num($health, 2)) . ' %</p> </div> </div> <div class="ms_space ms_up_st progressbar' . ($energy < 20 ? ' levelcrit' : ($energy < 50 ? ' levelwarn' : '')) . '"> <div class="progress" style="width: ' . round(min(100, $energy)) . '%"> <p>Energi: ' . ($energy == 100 ? '100' : game::format_num($energy, 2)) . ' %</p> </div> </div> <div class="ms_space ms_up_st progressbar' . ($protection !== false ? $protection < 20 ? ' levelcrit' : ($protection < 50 ? ' levelwarn' : '') : '') . '"> <div class="progress" style="width: ' . round(min(100, $protection)) . '%"> <p>Beskyttelse: ' . ($protection === false ? 'Ingen' : ($protection == 100 ? '100' : game::format_num($protection, 2)) . ' %') . '</p> </div> </div> <div class="ms_space ms_up_st progressbar' . ($training !== false ? $training < 28 ? ' levelcrit' : ($training < 35 ? ' levelwarn' : '') : '') . '"> <div class="progress" style="width: ' . round(min(100, $training)) . '%"> <p><a href="' . ess::$s['relative_path'] . '/angrip">Våpentrening</a>: ' . ($training === false ? 'Ingen våpen' : ($training == 100 ? '100' : game::format_num($training, 2)) . ' %') . '</p> </div> </div> <div class="progressbar ms_space"> <div class="progress" style="width: ' . round(min(100, page_min_side::$active_player->data['up_wanted_level'] / 10)) . '%"> <p>Wanted nivå: ' . game::format_number(page_min_side::$active_player->data['up_wanted_level'] / 10, 1) . ' %</p> </div> </div> </div>' : '') . ($rank_prosent < 100 ? ' <div class="bg1_c"> <h1 class="bg1">Prosent til neste rank<span class="left2"></span><span class="right2"></span></h1> <div class="progressbar"> <div class="progress" style="width: ' . round($rank_prosent) . '%"> <p>' . game::format_number($rank_prosent, 3) . ' %' . ($rank_need > 0 ? ' (trenger ' . game::format_num($rank_need) . ' poeng)' : '') . '</p> </div> </div> </div>' : '') . ' <div class="bg1_c"> <h1 class="bg1">Prosent til høyeste rank<span class="left2"></span><span class="right2"></span></h1> <div class="progressbar">' . (page_min_side::$active_player->rank['number'] < 5 && !access::has("mod") ? ' <p>Krever ranken <b>' . game::$ranks['items_number'][5]['name'] . '</b> eller høyere!</p>' : ' <div class="progress" style="width: ' . min(round($rank_prosent_top), 100) . '%"> <p>' . game::format_number($rank_prosent_top, 4) . ' % (' . game::format_num(page_min_side::$active_player->data['up_points']) . ' poeng)</p> </div>') . ' </div> </div> <div class="bg1_c"> <h1 class="bg1">Rangstige<span class="left2"></span><span class="right2"></span></h1>'; $ranks = array_reverse(game::$ranks['items_number']); $active = page_min_side::$active_player->rank['number']; $split = false; foreach ($ranks as $rank) { if ($split) { echo ' <div class="split"></div>'; } if ($rank['number'] <= $active) { echo ' <div class="progressbar_v"' . ($rank['number'] == $active ? ' style="font-weight: bold"' : '') . '> <p>' . $rank['number'] . ' - ' . $rank['name'] . '</p> </div>'; } elseif ($rank['number'] == $active + 1) { echo ' <div class="progressbar_v"> <div class="progress" style="height: ' . round(100 - $rank_prosent) . '%"> <p>' . $rank['number'] . ' - ' . $rank['name'] . '</p> </div> </div>'; } else { echo ' <div class="progressbar_v"> <div class="progress"> <p>' . $rank['number'] . ' - ' . $rank['name'] . '</p> </div> </div>'; } $split = true; } echo ' </div> </div> </div> <div class="col_w right"> <div class="col">'; if (page_min_side::$active_player->active) { echo ' <div class="bg1_c"> <h1 class="bg1">Status<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> <dl class="dl_40 status">'; foreach ($status as $key => $row) { echo ' <dt>' . htmlspecialchars($row[0]) . '</dt> <dd>' . ($row[1] == -1 ? '<span class="status_venter">For lav rank</span>' : ($row[1] == 0 ? '<a href="' . htmlspecialchars($row[2]) . '" class="status_klar">Klar!</a>' : '<a href="' . htmlspecialchars($row[2]) . '" rel="' . $row[1] . '" id="min_side_' . $key . '" class="status_venter">' . game::timespan($row[1], 0, 5) . '</a>')) . ' </dd>'; } echo ' </div> </div>'; } elseif (page_min_side::$active_player->data['up_deactivated_dead'] != 0) { $instant = page_min_side::$active_player->data['up_deactivated_dead'] == 1; echo ' <div class="bg1_c"> <h1 class="bg1">Drept<span class="left2"></span><span class="right2"></span></h1>' . (access::has("mod") ? ' <p class="h_right"><a href="' . htmlspecialchars(page_min_side::addr("activate")) . '">aktiver</a></p>' : '') . ' <div class="bg1"> <p>Denne spilleren ' . ($instant ? 'ble drept' : 'døde av skader') . (access::has("mod") ? $instant ? ' av <user id="' . page_min_side::$active_player->data['up_deactivated_up_id'] . '" />' : ' påført av <user id="' . page_min_side::$active_player->data['up_deactivated_up_id'] . '" />' : '') . ' ' . ess::$b->date->get(page_min_side::$active_player->data['up_deactivated_time'])->format(date::FORMAT_SEC) . '.</p> </div> </div>'; } else { // deaktivert av seg selv? $deact_self = false; if (!empty(page_min_side::$active_player->data['up_deactivated_up_id'])) { $deact_self = page_min_side::$active_player->data['up_deactivated_up_id'] == page_min_side::$active_player->id; if (!$deact_self) { $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_player->data['up_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 spilleren deaktiverte seg selv ' . ess::$b->date->get(page_min_side::$active_player->data['up_deactivated_time'])->format(date::FORMAT_SEC) . '.</p>' : ' <p>Denne spilleren ble deaktivert ' . ess::$b->date->get(page_min_side::$active_player->data['up_deactivated_time'])->format(date::FORMAT_SEC) . (!page_min_side::$active_own ? ' av ' . (empty(page_min_side::$active_player->data['up_deactivated_up_id']) ? 'en ukjent bruker' : '<user id="' . page_min_side::$active_player->data['up_deactivated_up_id'] . '" />') : '') . '.</p>') . ' <div class="p"><b>Begrunnelse:</b> ' . (empty(page_min_side::$active_player->data['up_deactivated_reason']) ? 'Ingen begrunnelse oppgitt.' : game::bb_to_html(page_min_side::$active_player->data['up_deactivated_reason'])) . '</div>' . (!page_min_side::$active_own && !$deact_self ? ' <div class="p"><b>Intern informasjon:</b> ' . (access::has("mod") ? empty(page_min_side::$active_player->data['up_deactivated_note']) ? 'Ingen intern informasjon oppgitt.' : game::bb_to_html(page_min_side::$active_player->data['up_deactivated_note']) : 'Du har ikke tilgang til å se intern informasjon.') . '</div>' : '') . ' </div> </div>'; } echo ' <div class="bg1_c"> <h1 class="bg1">Avstand til neste rangert spiller<span class="left2"></span><span class="right2"></span></h1> <div class="bg1"> ' . ($rank_user_next ? $rank_user_next : '<p>Du er høyest rangert!</p>') . ($rank_user_prevnext ? ' <div class="progressbar ms_space_bt"> <div class="progress" style="width: ' . round($rank_user_prevnext) . '%"> <p>Avstand forrige/neste spiller: ' . game::format_number($rank_user_prevnext, 4) . ' %</p> </div> </div>' : '') . ' </div> </div>'; if (page_min_side::$active_player->active) { OFC::embed("ranklevel_last_days", "graphs/ranklevel_last_days?up_id=" . page_min_side::$active_player->id, "100%", 150); echo ' <div class="bg1_c"> <h1 class="bg1">Ditt ranknivå siste dagene<span class="left2"></span><span class="right2"></span></h1> <div class="bg1" style="padding: 0 0 5px; background-color: #1A1A1A"> <p style="font-size: 10px; margin: 5px">Denne grafen sammenlikner deg med de 10 beste rankerne de siste dagene.</p> <span id="ranklevel_last_days"></span> </div> </div>'; } echo ' </div> </div> </div>'; }