Esempio n. 1
0
 /**
  * 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();
     }
 }
Esempio n. 2
0
<?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);
Esempio n. 3
0
 /**
  * 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;
 }
Esempio n. 4
0
    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>';
    }