Пример #1
0
 /**
  * Construct
  * @param player $up
  * @param int $up_id hvis man ikke har spillerobjekt fra før
  */
 public function __construct(player $up = null, $up_id = null, &$ref = null)
 {
     // lagre referanse?
     if ($ref === true) {
         $ref = $this;
     }
     // har vi spillerobjekt?
     if ($up) {
         $this->up = $up;
     } else {
         $this->up = player::get($up_id);
         if (!$this->up) {
             throw new HSException("Fant ikke gyldig spiller som det var referert til. Oppdragsystemet kan ikke fortsette.");
         }
         $this->up->oppdrag = $this;
     }
     $this->user_active = login::is_active_user($this->up);
     // sjekk om vi er på et aktivt oppdrag
     if ($this->up->params->get("oppdrag")) {
         // hent ut detaljer om oppdraget
         $oppdrag = new params($this->up->params->get("oppdrag"));
         // legg til som oppdrag
         $this->oppdrag[$oppdrag->get("o_id")] = $oppdrag->params;
         $this->load_params();
         // sett som aktivt
         $this->active_set($oppdrag->get("o_id"));
     }
     // sett opp triggere for oppdragene som er tilgjengelige nå
     $this->load_triggers();
 }
Пример #2
0
 /**
  * Juster wanted nivå og sett i fengsel ved sannsynlighet
  * @param int $rank_points antall rankpoeng man skaffet (grunnlag for hvor mye wanted nivået går opp)
  * @param bool $success var handlingen vellykket slik at man ikke skal kunne komme i fengsel?
  * @param bool $force tving spilleren i fengsel
  * @param int $force_time tidspunkt når spiller skal slippes løs når man tvinger spilleren i fengsel
  */
 public function fengsel_rank($rank_points, $success = false, $force = false, $force_time = NULL)
 {
     // finn ut hvor mye vi skal øke
     $increase = 100;
     if ($rank_points >= 0 && $rank_points <= 50) {
         $increase = $rank_points * 2 + 5;
     }
     // øk wanted level
     \Kofradia\DB::get()->exec("UPDATE users_players SET up_wanted_level = LEAST(1000, up_wanted_level * 1.10 + {$increase}) WHERE up_id = {$this->id}");
     // hent wanted level og test fengsel
     $result = \Kofradia\DB::get()->query("SELECT up_wanted_level, up_fengsel_time FROM users_players WHERE up_id = {$this->id}");
     $row = $result->fetch(\PDO::FETCH_NUM);
     $old_wanted_level = $this->data['up_wanted_level'];
     $this->data['up_wanted_level'] = $row[0];
     $this->data['up_fengsel_time'] = $row[1];
     $go_fengsel = $force || !$success && rand(200, 999) < $this->data['up_wanted_level'];
     $fengsel_time_wait = $this->fengsel_wait();
     $fengsel_time_wait_new = $force_time ? (int) $force_time : ceil($this->data['up_wanted_level'] / 3);
     $fengsel_time_new = time() + $fengsel_time_wait_new;
     $change = $this->data['up_wanted_level'] - $old_wanted_level;
     // sette i fengsel eller forlenge tiden?
     $fengsel = false;
     if ($go_fengsel && ($fengsel_time_wait == 0 || $fengsel_time_wait < $fengsel_time_wait_new)) {
         // sett i fengsel
         \Kofradia\DB::get()->exec("\n\t\t\t\tUPDATE users_players\n\t\t\t\tSET\n\t\t\t\t\tup_fengsel_num = up_fengsel_num + IF(up_fengsel_time <= " . time() . ", 1, 0),\n\t\t\t\t\tup_fengsel_time = " . $fengsel_time_new . "/*,\n\t\t\t\t\tup_wanted_level = (up_wanted_level - {$increase}) / 1.10*/\n\t\t\t\tWHERE up_id = {$this->id}");
         // hent ny data
         $result = \Kofradia\DB::get()->query("SELECT up_fengsel_num, up_wanted_level FROM users_players WHERE up_id = {$this->id}");
         $row = $result->fetch();
         $this->data['up_fengsel_num'] = $row['up_fengsel_num'];
         $this->data['up_fengsel_time'] = $fengsel_time_new;
         $this->data['up_wanted_level'] = $row['up_wanted_level'];
         // gi melding hvis aktiv bruker (den som viser siden)
         if ($fengsel_time_wait == 0 && login::is_active_user($this) && isset(ess::$b->page)) {
             ess::$b->page->add_message('Du ble tatt og kom i fengsel. Du slipper ut om ' . game::counter($fengsel_time_wait_new, true) . '. Wanted nivået er nå på ' . game::format_num($this->data['up_wanted_level'] / 10, 1) . ' %.', null, null, "fengsel");
         }
         $fengsel = true;
     }
     // trigger
     $this->trigger("fengsel_rank", array("fengsel" => $fengsel, "fengsel_time" => $fengsel ? $fengsel_time_wait_new : 0, "wanted_level_old" => $old_wanted_level, "wanted_level_change" => $change));
     return $fengsel ? false : $change;
 }