Пятница, 08 Ноября 2024, 21:39

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Добавить расу в игру
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 файл.

А ещё где нибудь что то нужно писать ? cranky
Ну может в функциях или ... в лог боя.


В этой жизни тот добивается чего-то, кто смог победить в себе свою лень, свои страхи, свою неуверенность, свои слабости и недостатки.

Сообщение отредактировал 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ы вырезать то что нужно именно мне, ещё надо покумекать confused

Просто я ещё не уверен как лучше сделать.
Сделать при регистрации выбор фракций, или сделать автоматически добавляемую фракцию "Гражданские" и уже в последствии,
что бы можно было купить лицензию и права на странице фракций. Но пока хоть что то сделать.


В этой жизни тот добивается чего-то, кто смог победить в себе свою лень, свои страхи, свою неуверенность, свои слабости и недостатки.

Сообщение отредактировал 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 если количество фракций будет не очень большим


Так если вводить каждой фракции уникального юнита ( или юнитов ), то по любому это нужно указать в БД.
Вообще планирую восемь фракций. А "гражданские", как таково фракцией не являются, они скорее не определившиеся.


В этой жизни тот добивается чего-то, кто смог победить в себе свою лень, свои страхи, свою неуверенность, свои слабости и недостатки.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг