public static function novaSessao($id_mapa, $id_campanha = null, $id_personagem = null, $cod_tipo = SESSAO_MESTRE, $tempo_turno = 0, $limite_personagem = 1) { if ($id_mapa <= 0) { throw new Exception('Nenhum mapa selecionado!'); } $id_sessao = md5(uniqid()); if (in_array($cod_tipo, array(SESSAO_MESTRE, SESSAO_GRUPO))) { $id_mestre = ID_JOGADOR; } else { $id_mestre = null; } $cod_situacao = SESSAO_ATIVA; if ($cod_tipo == SESSAO_GRUPO) { $cod_situacao = SESSAO_AGUARDANDO; } Mapa::carregarEstrutura($id_mapa); foreach (Mapa::listarPessoa() as $npc) { $area = Mapa::getArea($npc->getX(), $npc->getY()); if (is_null($area)) { throw new Exception("O npc se encontra em uma area invalida. Posição " . $npc->getX() . "." . $npc->getY() . "."); } $id_instancia = $npc->getId(); $sentido = $npc->getSentido(); $npc = Personagem::pegar($npc->getIdOriginal()); $npc->estruturarCorpo(); $npc->setIdOriginal($npc->getId()); $npc->setIdGrupo(2); $npc->setId($id_instancia); $npc->setPV($npc->getMaxPV()); $npc->setX($area->getX()); $npc->setY($area->getY()); $npc->setPosicao(POSICAO_EM_PE); $npc->setSentido($sentido); if ($cod_tipo == SESSAO_SOLO) { $npc->setAutomatico(true); $npc->desativarTurno(); } $area->setPersonagem($npc); //echo $npc->getNome()."<br />"; } if (!is_null($id_personagem)) { $personagem = Personagem::pegar($id_personagem); Mapa::entrar($personagem); } $data = serialize(Mapa::getMapa()); $query = "\n INSERT INTO sessao (\n id_sessao,\n id_mestre,\n id_campanha,\n id_mapa,\n cod_tipo,\n cod_situacao,\n tempo_turno,\n limite_personagem,\n ultimo_turno,\n data_inclusao,\n data\n ) VALUES (\n '" . do_escape($id_sessao) . "',\n " . do_full_escape($id_mestre) . ",\n " . do_full_escape($id_campanha) . ",\n '" . do_escape($id_mapa) . "',\n '" . do_escape($cod_tipo) . "',\n '" . do_escape($cod_situacao) . "',\n '" . do_escape($tempo_turno) . "',\n '" . do_escape($limite_personagem) . "',\n NOW(),\n NOW(),\n '" . do_escape($data) . "'\n )\n "; do_query($query); if (!is_null($personagem)) { $personagem->setSessao($id_sessao); } return $id_sessao; }