| 
				
				Добавить расу в игру
				 |   |  
| BUDARHANAT | Дата: Среда, 28 Сентября 2011, 13:36 | Сообщение # 1 |  
 
участник 
Сейчас нет на сайте 
 
 | Доброго времени суток. 
   У кого есть модуль добавления новых рас в игру ? 
   Я когда то нашёл на каком то сайте, давно. Но по моему того сайта уже нет.   Помню, что я по уроку сделал в Травланде и получилось. Но модуль писался к другой игре.   Может у кого есть этот урок ? 
   Добавлено (28.09.2011, 13:36)   ---------------------------------------------   Такс !!! Значить создаём в базе : 
   Code  
   -- -------------------------------------------------------- 
   --     -- Структура таблицы `factions`   --   
   CREATE TABLE IF NOT EXISTS `factions` (   `id` int(10) unsigned NOT NULL auto_increment,   `name` varbinary(45) NOT NULL,   ` imgPath` varbinary(128) NOT NULL,   PRIMARY KEY (`id`)   ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ; 
   --     -- Дамп данных таблицы `factions`   --   
   INSERT INTO `factions` (`id`, `name`, `imgPath`) VALUES   (1, 'Гражданские', '0/'),   (1, 'Имперцы', '1/'),   (2, 'Республиканцы', '2/'),   (3, 'Орден', '3/');   (4, 'Корсары', 4/'); 
   -- -------------------------------------------------------- 
      
   Потом фракцию добавляем в таблицы users и units. 
   Заием надо вставить в php файлы ( не во все ) :   Code  
   $factions=factions(); 
      
   Затем добавить скрипт в форму регистрации : 
   Code                          <p>                      <label><?php echo $lang['faction'] ?>                      <select class='dropdown' name="faction">          <?php for ($i=0; $i<count($factions); $i++) echo "<option value='".$i."'>".$factions[$i][1]."</option>"; ?>          </select>                      </label>                    </p> 
      
   Соответственно подправить css файл. 
   А ещё где нибудь что то нужно писать ?     Ну может в функциях или ... в лог боя.
  В этой жизни тот добивается чего-то, кто смог победить в себе свою лень, свои страхи, свою неуверенность, свои слабости и недостатки.
 
 Сообщение отредактировал BUDARHANAT - Среда, 28 Сентября 2011, 13:37  |  
| 
 | 
 |    |  
| Sufir | Дата: Среда, 28 Сентября 2011, 14:13 | Сообщение # 2 |  
 
частый гость 
Сейчас нет на сайте 
 
 | Quote  (`id`, `name`, `imgPath`)   (1, 'Гражданские', '0/'),   (1, 'Имперцы', '1/'),     Я не знаю этот движок, но так не должно быть. 
   А как выглядит сама функция factions().
 
 Сообщение отредактировал Sufir - Среда, 28 Сентября 2011, 14:15  |  
| 
 | 
 |    |  
| BUDARHANAT | Дата: Среда, 28 Сентября 2011, 16:04 | Сообщение # 3 |  
 
участник 
Сейчас нет на сайте 
 
 | А, я понял. Ошибку допустил. Но это я исправлю. 
   ( Ид фракции, Название фракции, Папка с рисунками фракции ) 
   Я создаю фракции для игры где нет такого вообще.   Значить что то должно быть в функциях ... ок.   Я на движок Devana ориентируюсь. 
   Добавлено (28.09.2011, 16:04)   ---------------------------------------------   Ого, ужас. А в функциях игры Devana, там завал. Тут ещё надо расшифровать что к чему.   Вот я скопировал всё, где присутствует слово "фракция". 
   Code  
   if (isset($_SESSION["user"][0])) {$faction=faction($_SESSION["user"][10]); $imgs=$_SESSION["user"][13]; $fimgs=$faction[2];}   else {$imgs="default/"; $fimgs="1/";} 
      
   Code  
   function faction($id) 
   {      global $db_id; 
      $query="select * from factions where id=".$id;      $result=mysql_query($query, $db_id);              $row=mysql_fetch_row($result);      return $row;   } 
   function factions()   {      global $db_id; 
      $factions=array();      $query="select * from factions";      $result=mysql_query($query, $db_id);              for ($i=0; $row=mysql_fetch_row($result); $i++) $factions[$i]=$row;      return $factions;   } 
      
   Code function buildings($faction)   {      global $db_id, $lang; 
      $query="select * from buildings where faction=".$faction;      $result=mysql_query($query, $db_id); $buildings=array();              for ($i=0; $row=mysql_fetch_row($result); $i++)      {       $buildings[$i]=$row;       if (isset($lang['buildings']))       {        $buildings[$i][2]=$lang['buildings'][$faction-1][$i][0];        $buildings[$i][8]=$lang['buildings'][$faction-1][$i][1];       }      }      return $buildings;   } 
   function weapons($faction)   {      global $db_id, $lang; 
      $query="select * from weapons where faction=".$faction;      $result=mysql_query($query, $db_id); $weapons=array();              for ($i=0; $row=mysql_fetch_row($result); $i++)      {       $weapons[$i]=$row;       if (isset($lang['weapons']))       {        $weapons[$i][2]=$lang['weapons'][$faction-1][$i][0];        $weapons[$i][5]=$lang['weapons'][$faction-1][$i][1];       }      }      return $weapons;   } 
   function units($faction)   {      global $db_id, $lang; 
      $query="select * from units where faction=".$faction;      $result=mysql_query($query, $db_id); $units=array();              for ($i=0; $row=mysql_fetch_row($result); $i++)      {       $units[$i]=$row;       if (isset($lang['units']))       {        $units[$i][2]=$lang['units'][$faction-1][$i][0];        $units[$i][10]=$lang['units'][$faction-1][$i][1];       }      }      return $units;   } 
      
   Code  
   function check_c($id, $faction)   {      global $db_id, $tdif;   $town=town($id);   $buildings=buildings($faction);   $data=explode("-", $town[8]); $res=explode("-", $town[10]); $lim=explode("-", $town[11]); $prod=explode("-", $town[9]); $land=explode("/", $town[13]);   $land[0]=explode("-", $land[0]); $land[1]=explode("-", $land[1]); $land[2]=explode("-", $land[2]); $land[3]=explode("-", $land[3]); 
      $query="select timediff(dueTime".$tdif.", now()), b, subB from c_queue where town=".$id." order by dueTime asc";      $result=mysql_query($query, $db_id);      for (; $row=mysql_fetch_row($result); )      if ($row[0][0]=="-")      {       if ($row[2]>-1)       {        $land[$row[1]][$row[2]]++; $ldata="";        for ($i=0; $i<count($land); $i++) $ldata[$i]=implode("-", $land[$i]);        $ldata=implode("/", $ldata);        $out=explode("-", $buildings[$row[1]][5]); $prod[$row[1]]=0;        for ($i=0; $i<count($land[$row[1]]); $i++)        if ($land[$row[1]][$i]) $prod[$row[1]]+=$out[$land[$row[1]][$i]-1];        $pdata=implode("-", $prod);        $query="update towns set land='".$ldata."', production='".$pdata."' where id=".$id;        mysql_query($query, $db_id);       }       else switch($row[1])       {        case 0:        {         $data[$row[1]]=1; $bdata=implode("-", $data);         $query="update towns set buildings='".$bdata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 1:        {         $data[$row[1]]=1; $bdata=implode("-", $data);         $query="update towns set buildings='".$bdata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 2:        {         $data[$row[1]]=1; $bdata=implode("-", $data);         $query="update towns set buildings='".$bdata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 3:        {         $data[$row[1]]=1; $bdata=implode("-", $data);         $query="update towns set buildings='".$bdata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 4:        {         $data[4]++; $lim[0]=explode("-", $buildings[4][5]); $lim[0]=$lim[0][$data[4]-1]; $bdata=implode("-", $data); $ldata=implode("-", $lim);         $query="update towns set buildings='".$bdata."', limits='".$ldata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 5:        {         $data[5]++; $lim[1]=explode("-", $buildings[5][5]); $lim[1]=$lim[1][$data[5]-1]; $bdata=implode("-", $data); $ldata=implode("-", $lim);         $query="update towns set buildings='".$bdata."', limits='".$ldata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 6:        {         $data[6]++; $lim[5]=explode("-", $buildings[6][5]); $lim[5]=$lim[5][$data[6]-1]; $bdata=implode("-", $data); $ldata=implode("-", $lim);         $query="update towns set buildings='".$bdata."', limits='".$ldata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 7:        {         $data[7]++; $lim[4]=explode("-", $buildings[7][5]); $lim[4]=$lim[4][$data[7]-1]; $lim[2]+=800; $bdata=implode("-", $data); $ldata=implode("-", $lim);         $query="update towns set buildings='".$bdata."', limits='".$ldata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 8:        {         $data[8]++; $lim[3]=explode("-", $buildings[8][5]); $lim[3]=$lim[3][$data[8]-1]; $bdata=implode("-", $data); $ldata=implode("-", $lim);         $query="update towns set buildings='".$bdata."', limits='".$ldata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 9:        {         $data[9]++; $bdata=implode("-", $data);         $query="update towns set buildings='".$bdata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 10:        {         $data[10]++; $bdata=implode("-", $data);         $query="update towns set buildings='".$bdata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 11:        {         $mdata=explode("-", $buildings[11][5]);         $data[11]++; $bdata=implode("-", $data);         $query="update towns set buildings='".$bdata."', morale=".(100-$prod[4]+$mdata[$data[11]-1])." where id=".$id;      mysql_query($query, $db_id);        } break;        case 12:        {         $data[12]++; $bdata=implode("-", $data);         $query="update towns set buildings='".$bdata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 13:        {         $data[13]++; $lim[6]=explode("-", $buildings[13][5]); $lim[6]=$lim[6][$data[13]-1]; $bdata=implode("-", $data); $ldata=implode("-", $lim);         $query="update towns set buildings='".$bdata."', limits='".$ldata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 14:        {         $data[14]++; $lim[7]=explode("-", $buildings[14][5]); $lim[7]=$lim[7][$data[14]-1]; $bdata=implode("-", $data); $ldata=implode("-", $lim);         $query="update towns set buildings='".$bdata."', limits='".$ldata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 15:        {         $data[15]++; $lim[8]=explode("-", $buildings[15][5]); $lim[8]=$lim[8][$data[15]-1]; $bdata=implode("-", $data); $ldata=implode("-", $lim);         $query="update towns set buildings='".$bdata."', limits='".$ldata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 16:        {         $data[16]=1; $bdata=implode("-", $data);         $query="update towns set buildings='".$bdata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 17:        {         $data[17]++; $bdata=implode("-", $data);         $query="update towns set buildings='".$bdata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 18:        {         $data[18]++; $lim[9]=explode("-", $buildings[18][5]); $lim[9]=$lim[9][$data[18]-1]; $bdata=implode("-", $data); $ldata=implode("-", $lim);         $query="update towns set buildings='".$bdata."', limits='".$ldata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 19:        {         $data[19]++; $lim[10]=explode("-", $buildings[19][5]); $lim[10]=$lim[10][$data[19]-1]; $bdata=implode("-", $data); $ldata=implode("-", $lim);         $query="update towns set buildings='".$bdata."', limits='".$ldata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 20:        {         $data[20]++; $lim[11]=explode("-", $buildings[20][5]); $lim[11]=$lim[11][$data[20]-1]; $bdata=implode("-", $data); $ldata=implode("-", $lim);         $query="update towns set buildings='".$bdata."', limits='".$ldata."' where id=".$id;      mysql_query($query, $db_id);        } break;        case 21:        {         $data[21]++; $lim[12]=explode("-", $buildings[21][5]); $lim[12]=$lim[12][$data[21]-1]; $bdata=implode("-", $data); $ldata=implode("-", $lim);         $query="update towns set buildings='".$bdata."', limits='".$ldata."' where id=".$id;      mysql_query($query, $db_id);        } break;        default: ;       }       $query="delete from c_queue where c_queue.town=".$id." and c_queue.b=".$row[1]." and c_queue.subB=".$row[2];       mysql_query($query, $db_id);      }   } 
      
   Code  
   function cancel_c($id, $b, $subB, $res, $faction)   {      global $db_id;   $town=town($id);   $buildings=buildings($faction);   $data=explode("-", $town[8]); $land=explode("/", $town[13]); $upk=explode("-", $buildings[$b][7]);   $land[0]=explode("-", $land[0]); $land[1]=explode("-", $land[1]); $land[2]=explode("-", $land[2]); $land[3]=explode("-", $land[3]); 
       if ($subB==-1) $pop=$town[3]-$upk[$data[$b]];       else $pop=$town[3]-$upk[$land[$b][$subB]];      $query="update towns set resources='".$res."', population=".$pop." where id=".$id;      $result=mysql_query($query, $db_id);      $query="delete from c_queue where town=".$id." and b=".$b;      $result=mysql_query($query, $db_id);      if ($result) echo "<script type='text/javascript'>history.go(-1)</script>";      else msg("Failed.".mysql_error());   } 
      
   Code  
   function build($id, $b, $subB, $time, $res, $faction)   {      global $db_id;      $town=town($id); $buildings=buildings($faction); $data=explode("-", $town[8]); $land=explode("/", $town[13]); $upk=explode("-", $buildings[$b][7]);      $land[0]=explode("-", $land[0]); $land[1]=explode("-", $land[1]); $land[2]=explode("-", $land[2]); $land[3]=explode("-", $land[3]); 
      $time=explode(":", $time);              $query="select max(dueTime) from c_queue where town=".$id;      $result=mysql_query($query, $db_id);      $row=mysql_fetch_row($result);      if ($row[0]!="") $date=strtotime("+".$time[0]." hours ".$time[1]." minutes ".($time[2]+rand(0, 9))." seconds", strtotime($row[0])); else $date=strtotime("+".$time[0]." hours ".$time[1]." minutes ".($time[2]+rand(0, 9))." seconds");      $date=strftime("%Y-%m-%d %H:%M:%S", $date);      $query="insert into c_queue(town, dueTime, b, subB) values('".$id."', '".$date."', '".$b."', '".$subB."')";      $result=mysql_query($query, $db_id);      $query="update towns set resources='".$res."' where id=".$id;      $result=mysql_query($query, $db_id);      if ($subB==-1) $pop=$town[3]+$upk[$data[$b]];      else $pop=$town[3]+$upk[$land[$b][$subB]];      $query="update towns set population=".$pop." where id=".$id;      $result=mysql_query($query, $db_id);               if ($result) echo "<script type='text/javascript'>history.go(-1)</script>";      else msg("Failed.".mysql_error());   } 
      
   Code  
   function reg($name, $pass, $email, $faction)   {      global $db_id; 
      $query="insert into users(name, pass, email, level, joined, lastVisit, points, ip, grPath, faction) values('".$name."', '".$pass."', '".$email."', 1, now(), now(), 0, '".$_SERVER["REMOTE_ADDR"]."', 'default/', ".$faction.")";      $result=mysql_query($query, $db_id);      if ($result) msg("Succes. You are now registered as '".$name."'. You can now login and create your town.");      else msg("Failed.".mysql_error());   } 
      
   Code  
   function install($name, $pass, $email, $faction)   {      global $db_id; 
      $query="insert into users(name, pass, email, level, joined, lastVisit, points, ip, grPath, faction) values('".$name."', '".$pass."', '".$email."', 5, now(), now(), 0, '".$_SERVER["REMOTE_ADDR"]."', 'default/', ".$faction.")";      $result=mysql_query($query, $db_id);              $handle = fopen ("map.dat","r") or      die("Error opening map data file."); $ok=1;      for ($i=0; $info[$i] = fscanf ($handle, "%i %i %i %i"); $i++)      {       if (!$info[$i][3])        switch($info[$i][2])        {         case 1: $info[$i][3]=rand(1, 6); break;         case 2: $info[$i][3]=rand(1, 4); break;         default: ;        }       $query="insert into map(x, y, type, subtype) values (".$info[$i][0] .", ".$info[$i][1].", ".$info[$i][2].", ".$info[$i][3].")";       $result=mysql_query($query, $db_id);    if (!$result) $ok=0;      }      fclose($handle);      if ($ok) msg(" Succes. Map data added.");      else msg("Failed.".mysql_error());   }   //chat functions   function send_chat($se, $sid, $msg, $re)   {      global $db_id; 
      $query="insert into chat (sId, timeStamp, message, recipient, sender) values (".$sid.", now(), '".$msg."', ".$re.", ".$se.")";      mysql_query($query, $db_id);   } 
      
   Ох уж и намудрено 0_о   Я так понимаю, что мне большая часть этого не нужна. 
   Мне наверно из этих кодов много чего не надо. 
   Всё, что нужно - это : 
   - что бы отображались у игроков вступивших в фракцию разные картинки.   - и что бы были уникальные юниты у фракций. Всё, мне пока ни чего не надо. 
   Но там, что бы из функций Devanы вырезать то что нужно именно мне, ещё надо покумекать   
   Просто я ещё не уверен как лучше сделать.   Сделать при регистрации выбор фракций, или сделать автоматически добавляемую фракцию "Гражданские" и уже в последствии,   что бы можно было купить лицензию и права на странице фракций. Но пока хоть что то сделать.
  В этой жизни тот добивается чего-то, кто смог победить в себе свою лень, свои страхи, свою неуверенность, свои слабости и недостатки.
 
 Сообщение отредактировал BUDARHANAT - Среда, 28 Сентября 2011, 16:07  |  
| 
 | 
 |    |  
| Sufir | Дата: Четверг, 29 Сентября 2011, 10:58 | Сообщение # 4 |  
 
частый гость 
Сейчас нет на сайте 
 
 | Ну, я что-то не пойму в чём проблема. Вот у тебя есть две функции, одна возвращает все игровые фракции, другая возвращает конкретную фракцию по её ID. Вот и пользуйся ими там где тебе необходимо. 
   А вообще разумнее обойтись без mysql если количество фракций будет не очень большим и не предполагается особо часто их изменять. Зачем лишний раз дёргать базу?.. Например так: 
   Code function getFaction($id)        {                               $factions = factions(); 
           if ( isset( $factions[ $id ] ) )               return $factions[ $id ]; 
           return false; 
   }      
   function getFactions()        { 
           $factions[1] = array(               'name' => 'Гражданские',               'imgPath' => '1/'           );           $factions[2] = array(               'name' => 'Имперцы',               'imgPath' => '2/'           );           // прочие фракции                          return $factions; 
   }   
   Дальше уже, где тебе необходимо получай данные фракции и используй по своему усмотрению:   Code    $faction = getFaction( $user['faction'] ); 
   echo 'Игрок принадлежит к фракции ' . $faction['name'];   echo '<img src="/' . $faction['imgPath'] . 'faction_img.gif">'; 
     
 
 Сообщение отредактировал Sufir - Четверг, 29 Сентября 2011, 11:02  |  
| 
 | 
 |    |  
| BUDARHANAT | Дата: Пятница, 30 Сентября 2011, 08:30 | Сообщение # 5 |  
 
участник 
Сейчас нет на сайте 
 
 | Я сейчас пока нарисую весь необходимый графический материал, а потом всё это, с кодами, вставлю в игру ... да наверно лучше   новую будет запустить для тестирования. И я напишу получилось или нет. 
   Если всё получится, то это значить, что это новая версия движка ?Добавлено (30.09.2011, 08:30) ---------------------------------------------
  Quote (Sufir) А вообще разумнее обойтись без mysql если количество фракций будет не очень большим   
   Так если вводить каждой фракции уникального юнита ( или юнитов ), то по любому это нужно указать в БД.   Вообще планирую восемь фракций. А "гражданские", как таково фракцией не являются, они скорее не определившиеся.
  В этой жизни тот добивается чего-то, кто смог победить в себе свою лень, свои страхи, свою неуверенность, свои слабости и недостатки.
 |  
| 
 | 
 |    |     
		
		 
 |