Добавить расу в игру
| |
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 если количество фракций будет не очень большим
Так если вводить каждой фракции уникального юнита ( или юнитов ), то по любому это нужно указать в БД. Вообще планирую восемь фракций. А "гражданские", как таково фракцией не являются, они скорее не определившиеся.
В этой жизни тот добивается чего-то, кто смог победить в себе свою лень, свои страхи, свою неуверенность, свои слабости и недостатки.
|
|
| |
|