/** * Spiller dør/blir deaktivert */ public static function player_dies(player $up) { // hent evt. pokerrunder vi har startet og trekk tilbake $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT poker_id, poker_starter_up_id, poker_challenger_up_id, poker_starter_cards, poker_challenger_cards, poker_time_start, poker_time_challenge, poker_cash, poker_state, poker_prize\n\t\t\tFROM poker\n\t\t\tWHERE poker_starter_up_id = " . $up->id . " AND poker_state IN (1,2)"); while ($row = $result->fetch()) { // forsøk å trekk tilbake $round = new poker_round($row); $round->pullback(); } }
<?php require "../../app/ajax.php"; ajax::require_user(); // kontroller lås ajax::validate_lock(); // hent alle utfordringer $result = \Kofradia\DB::get()->query("SELECT poker_id, poker_starter_up_id, poker_time_start, poker_starter_cards, poker_cash FROM poker WHERE poker_state = 2 ORDER BY poker_cash"); $i = 0; $data = array(); $html_to_parse = array(); while ($row = $result->fetch()) { $d = array(); $d['self'] = $row['poker_starter_up_id'] == login::$user->player->id; $html_to_parse[$i] = (!$d['self'] ? '<input type="radio" name="id" value="' . $row['poker_id'] . '" />' : '') . '<user id="' . $row['poker_starter_up_id'] . '" />'; $d['cash'] = game::format_cash($row['poker_cash']); $d['reltime'] = poker_round::get_time_text($row['poker_time_start']); if (access::has("admin")) { $cards = new CardsPoker(explode(",", $row['poker_starter_cards'])); $d['cards'] = $cards->solve_text($cards->solve()); } $data[$i++] = $d; } // parse html if (count($html_to_parse) > 0) { $html_to_parse = parse_html_array($html_to_parse); foreach ($html_to_parse as $i => $value) { $data[$i]['player'] = $value; } } ajax::text(js_encode($data), ajax::TYPE_OK);
/** * Frigjør relasjonene en spiller har i spillet * Oppdaterer også ranklisten * @param int $previous_level spillernivået før død/deaktivering */ protected function release_relations($previous_level, player $up_attack = null, $instant = null) { // oppdater ranklisten /*if ($previous_level < ess::$g['access_noplay']) \Kofradia\DB::get()->exec(" UPDATE users_players, (SELECT up_id ref_up_id FROM users_players WHERE up_points = {$this->data['up_points']} AND up_id != $this->id AND up_access_level < ".ess::$g['access_noplay']." LIMIT 1) ref SET up_rank_pos = GREATEST(1, up_rank_pos - 1) WHERE ref_up_id IS NULL AND up_points < {$this->data['up_points']}");*/ \Kofradia\DB::get()->exec("UPDATE users_players_rank SET upr_up_access_level = 0 WHERE upr_up_id = {$this->id}"); ranklist::update(); $ret = $this->release_relations_low_health(true, $up_attack, $instant); // overfør ansvar for bomberom $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT up_id\n\t\t\tFROM users_players\n\t\t\tWHERE up_brom_up_id = {$this->id}"); if ($result->rowCount() > 0) { // TODO: skal spilleren som overtar ansvaret få noen beskjed? // TODO: hvis ingen overtar ansvaret: skal spilleren som mister ansvarsspiller få beskjed om dette? // skal vi gi ansvaret videre? $resp = $this->data['up_brom_up_id'] ? "IF(up_id = {$this->data['up_brom_up_id']}, NULL, {$this->data['up_brom_up_id']})" : "NULL"; // sett nytt ansvar \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE users_players\n\t\t\t\tSET up_brom_up_id = {$resp}\n\t\t\t\tWHERE up_brom_up_id = {$this->id}"); } // fjern ansvaret for denne spilleren if ($this->data['up_brom_up_id']) { \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE users_players\n\t\t\t\tSET up_brom_up_id = NULL\n\t\t\t\tWHERE up_id = {$this->id}"); } // fjern fra aktive auksjoner auksjon::player_release($this); // fjern fra poker poker_round::player_dies($this); return $ret; }
protected function show_active() { echo ' <div class="bg1_c ' . (access::has("admin") ? 'xmedium' : 'small') . '"> <h1 class="bg1">Utfordre en spiller<span class="left"></span><span class="right"></span></h1> <p class="h_right"><a href="' . ess::$s['relative_path'] . '/node/28">Hjelp</a></p> <div class="bg1">'; // hent alle utfordringene som utfordrer.. $result = \Kofradia\DB::get()->query("SELECT poker_id, poker_starter_up_id, poker_time_start, poker_starter_cards, poker_cash FROM poker WHERE poker_state = 2 ORDER BY poker_cash"); $num = $result->rowCount(); // javascript for oppdatering ess::$b->page->add_js_domready(' stuff = { interval: 3000, // hvert 3. sek active: true, init: function() { this.table = $("poker_players_table"); this.players_true = $("poker_players_true"); this.players_false = $("poker_players_false"); this.tbody = $("poker_players"); this.info = new Element("p", {"class": "c"}).inject(this.players_true, "before"); this.start_timer(); }, start_timer: function() { this.info.set("text", "Oppdatering aktivert."); // sett events for aktiv/inaktiv var self = this; document.addEvents({ "active": function() { if (self.active) return; // start timer og oppdater self.active = true; self.startUpdateTimer(); self.update(); }, "idle": function() { // avbryt mulig xhr og stopp timer self.xhr.cancel(); $clear(self.timer); self.active = false; } }); // sett opp ajax objektet this.xhr = new Request({ "url": relative_path + "/ajax/poker_challengers", "autoCancel": true }); this.xhr.addEvents({ "success": function(text, xml) { // vis sist oppdatert tidspunkt var d = new Date($time()+window.servertime_offset); self.info.set("html", "Oppdatert " + str_pad(d.getHours()) + ":" + str_pad(d.getMinutes()) + ":" + str_pad(d.getSeconds())); // hent ut spillerene var players = JSON.decode(text); if (players.length > 0) { self.players_true.setStyle("display", "block"); self.players_false.setStyle("display", "none"); // sjekk om vi har merket noen selected = false; $$("#poker_players_true input[type=radio]").each(function(elm) { if (elm.checked) { selected = elm.value; } }); // fjern alle nåværende spillere self.tbody.empty(); // legg til nye spillere i = 0; players.each(function(row) { tr = new Element("tr"); if (!row.self) tr.addClass("box_handle"); if (i == 1) { tr.addClass("color"); } i++; if (i == 2) { i = 0; } new Element("td", {"html": row.player}).inject(tr); new Element("td", {"class": "r", "html": row.cash}).inject(tr); new Element("td", {"class": "c", "html": row.reltime}).inject(tr);' . (access::has("admin") ? ' new Element("td", {"html": row.cards}).inject(tr);' : '') . ' tr.inject(self.tbody); }); self.tbody.check_html(); // merke en spiller? if (selected) { box = $$("#poker_players_true input[type=radio]")[0]; name = box.get("rel") || box.get("name").replace(new RegExp("^(.*)\\[.+?\\]$"), "$1[]"); boxHandleElms[name].each(function(obj) { if (obj.box.value == selected) { obj.checked = true; obj.check(); } }); } } else { self.players_true.setStyle("display", "none"); self.players_false.setStyle("display", "block"); } window.fireEvent("update_pa", players.length); }, "failure": function(xhr) { // logget inn men feil? if (xhr.responseText != "ERROR:SESSION-EXPIRE" && xhr.responseText != "ERROR:WRONG-SESSION-ID") { self.info.set("html", "<b>Oppdatering feilet:</b> "+xhr.responseText+"<br />Henter ikke lenger oppdateringer."); self.info.check_html(); } // ikke logget inn else { self.info.set("text", "Oppdateringer avbrutt - ikke logget inn."); } // stopp timer $clear(self.timer); } }); // start oppdatering this.startUpdateTimer(); }, /** Start oppdateringstimer */ startUpdateTimer: function() { this.timer = this.update.bind(this).periodical(this.interval); }, /** Hent oppdateringer */ update: function() { // sett info this.info.set("text", "Oppdaterer.."); // oppdater this.xhr.send(); } } stuff.init();'); echo ' <div id="poker_players_true"' . ($num == 0 ? ' style="display: none"' : '') . '> <form action="" method="post"> <table class="table center tablemb"> <thead> <tr> <th>Spiller</th> <th>Beløp</th> <th>Tid</th>' . (access::has("admin") ? ' <th>Kort</th>' : '') . ' </tr> </thead> <tbody id="poker_players">'; $i = 0; while ($row = $result->fetch()) { $attr = new attr("class"); if ($row['poker_starter_up_id'] != $this->up->id) { $attr->add("box_handle"); } if (++$i % 2 == 0) { $attr->add("color"); } $cards = new CardsPoker(explode(",", $row['poker_starter_cards'])); $cardstext = $cards->solve_text($cards->solve()); echo ' <tr' . $attr->build() . '> <td>' . ($row['poker_starter_up_id'] != $this->up->id ? '<input type="radio" name="id" value="' . $row['poker_id'] . '" />' : '') . '<user id="' . $row['poker_starter_up_id'] . '" /></td> <td class="r">' . game::format_cash($row['poker_cash']) . '</td> <td class="c">' . poker_round::get_time_text($row['poker_time_start']) . '</td>' . (access::has("admin") ? ' <td>' . $cardstext . '</td>' : '') . ' </tr>'; } echo ' </tbody> </table> <p class="c">' . show_sbutton("Utfordre", 'name="utfordre"') . '</p> </div> <div id="poker_players_false"' . ($num > 0 ? ' style="display: none"' : '') . '> <p class="c">Ingen utfordringer.</p> <p class="c"><a href="poker" class="button">Oppdater</a></p> </div> </form> </div> </div>'; }