Другие двиги, например параллельно изучаю HGE. Просто Gege 4.хх перешел на новую архитектуру ООП вот мне и стало интересно что за зверь такой получился и с чем его едят)) Последние уроки на сайте по этому двигу аж на первую версию, если не ошибаюсь((( Нет ничего такого, чего ты не познал. Ты уже знаешь всё и в жизни идёт лишь повторение))
Всем доброго времени суток. Сегодня решил разобраться с gege 4.xx и понял, что по нему совсем нет материалов. Кто из знающих этот двиг, если не в тягость, написал бы небольшой мануал по созданию простой аркады(платформера)? В 4 й версии поменяли архитектуру движка и мне сложно разобраться...
С уважением Михаил! Нет ничего такого, чего ты не познал. Ты уже знаешь всё и в жизни идёт лишь повторение))
Здравствуйте. До этого урока у меня все получалось на ура, но теперь есть вопросы: 1. - Когда я нажимаю на кнопку "Отправить": а. - с сообщением mess_send(заполнено), то он ничего не выдает(моргают обновленные сообщения и пропадают тут же), отображение сообщений я могу видеть только после нажатия кнопки "Обновить". В конце функции createMess() добавлено msg() (добавлял и update(), то же самое...). б. - с пустым полем под сообщение mess_send, то в области чата пишется "-2", что-то я напутал... Пробовал копировать все что на сайте есть, ни чего не меняется. 2. - Для меня на данный момент сложно сделать перенаправление... После регистрации и создания чара не перенаправляет на страницу game.php. Прошу подсказать, как осуществляется считывание длинны строки mess_send на которую идет проверка:
Code
if (int(e.result) > 0) { //если результат больше 0, тоесть существует, то per = int(e.result); //переменная равна данным, что считали с php файла if (per > 0){ //если данные равны 1, то переадресовываем в игру var url:URLRequest = new URLRequest("game.php"); navigateToURL(url,"_self"); }
Привожу свои файлы: 1 - CreateChar.mxml
Code
<?xml version="1.0" encoding="utf-8"?> <mx:Application layout="absolute" backgroundColor="#ffffff" backgroundImage="img/bg.jpg" width="400" height="300" xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script><![CDATA[ import mx.rpc.events.ResultEvent; //при написании кода вручную, эти импорты появляються сами, первый нужен для import mx.controls.Alert; //определения результата, второй для вывода всплывающих окон import flash.net.navigateToURL;
private var pic_arr_m:Array = ["img/men1-1.png", "img/men1-2.png", "img/men1-3.png", "img/men1-4.png"]; //создаем масив, который хранит путь к картинкам мужского пола private var pic_arr_w:Array = ["img/women2-1.png", "img/women2-2.png", "img/women2-3.png", "img/women2-4.png"]; //создаем масив, который хранит путь к картинкам женского пола private var i:int = 0; //числовая переменная равна 0 [Bindable] //сам еще не знаю для чего нужна это строка, но без нее выдает ошибку private var gr:String = "1"; //текстовая переменная равна 1 [Bindable] private var patch:String = "img/man1-1.swf"; //текстовая переменная [Bindable] private var per:int; //переменная для проверки создания чара
/* Функция создания чара, отправляет данные которые ввел пользователь */ private function onCreateChar():void { createRequest.send(); } /* Функция выбора RadioButton мужского пола */ private function iMen():void { avatar.load(pic_arr_m[0]); //отображает картинку, которая равна 0 в масиве, тоесть первую картинку gr = "1"; //переменная равна 1 simpleLabel.text = "1-1"; //тег <mx:Text> который имеет имя simpleLabel равен "1-1" } /* Функция выбора RadioButton женского пола */ private function iWomen():void { avatar.load(pic_arr_w[0]); //отображает картинку, которая равна 0 в масиве, тоесть первую картинку gr = "2"; //переменная равна 1 simpleLabel.text = "2-1"; //тег <mx:Text> который имеет имя simpleLabel равен "2-1" } /* Функция нажатия кнопки "Пред." */ private function onLeft():void { if (men.selected == true){ //если выбран пол "Мужской", то avatar.load(pic_arr_m[i]); //картинка равняеться переменной "i" i--; //переменная уменьшаеться на 1 if (i == -1) { //если переменная "i" равна -1, то i = 3; //"i" равна 3 } if (i == 0) { //если "i" равна 0, то simpleLabel.text = "1-1"; //тег <mx:Text> который имеет имя simpleLabel равен "1-1" avatar.load(pic_arr_m[0]); //будет отображать первый аватар patch = "img/man1-1.swf"; //путь к аватару } if (i == 1) { simpleLabel.text = "1-2"; avatar.load(pic_arr_m[1]); patch = "img/man1-2.swf"; } if (i == 2) { simpleLabel.text = "1-3"; avatar.load(pic_arr_m[2]); patch = "img/man1-3.swf"; } if (i == 3) { simpleLabel.text = "1-4"; avatar.load(pic_arr_m[3]); patch = "img/man1-4.swf"; } } if (women.selected == true) { //если выбран пол "Женский", то avatar.load(pic_arr_w[i]); //картинка равняеться переменной "i" i--; //переменная уменьшаеться на 1 if (i == -1) { //если переменная "i" равна -1, то i = 3; //"i" равна 3 } if (i == 0) { simpleLabel.text = "2-1"; avatar.load(pic_arr_w[0]); patch = "img/woman2-1.swf"; } if (i == 1) { simpleLabel.text = "2-2"; avatar.load(pic_arr_w[1]); patch = "img/woman2-2.swf"; } if (i == 2) { simpleLabel.text = "2-3"; avatar.load(pic_arr_w[2]); patch = "img/woman2-3.swf"; } if (i == 3) { simpleLabel.text = "2-4"; avatar.load(pic_arr_w[3]); patch = "img/woman2-4.swf"; } } } /* Функция нажатия кнопки "След." */ private function onRight():void { if (men.selected == true){ //если выбран пол "Мужской", то avatar.load(pic_arr_m[i]); //картинка равняеться переменной "i" i++; //переменная увеличиваеться на 1 if (i == 4) { //если переменная "i" равна 4, то i = 0; //"i" равна 0 } if (i == 0) { simpleLabel.text = "1-1"; avatar.load(pic_arr_m[0]); patch = "img/man1-1.swf"; } if (i == 1) { simpleLabel.text = "1-2"; avatar.load(pic_arr_m[1]); patch = "img/man1-2.swf"; } if (i == 2) { simpleLabel.text = "1-3"; avatar.load(pic_arr_m[2]); patch = "img/man1-3.swf"; } if (i == 3) { simpleLabel.text = "1-4"; avatar.load(pic_arr_m[3]); patch = "img/man1-4.swf"; } } if (women.selected == true) { //если выбран пол "Женский", то avatar.load(pic_arr_w[i]); //картинка равняеться переменной "i" i++; //переменная увеличиваеться на 1 if (i == 4) { //если переменная "i" равна 4, то i = 0; //"i" равна 0 } if (i == 0) { simpleLabel.text = "2-1"; avatar.load(pic_arr_w[0]); patch = "img/woman2-1.swf"; } if (i == 1) { simpleLabel.text = "2-2"; avatar.load(pic_arr_w[1]); patch = "img/woman2-2.swf"; } if (i == 2) { simpleLabel.text = "2-3"; avatar.load(pic_arr_w[2]); patch = "img/woman2-3.swf"; } if (i == 3) { simpleLabel.text = "2-4"; avatar.load(pic_arr_w[3]); patch = "img/woman2-4.swf"; } } }
/* Функция определения результата */ private function onResult(e:ResultEvent):void { if (int(e.result) > 0) { //если результат больше 0, тоесть существует, то per = int(e.result); //переменная равна данным, что считали с php файла if (per > 0){ //если данные равны 1, то переадресовываем в игру var url:URLRequest = new URLRequest("game.php"); navigateToURL(url,"_self"); } } else { //в другом случае, если результат не существует, то switch (int(String(e.result))) { //считываем данные case -1 : //если данные равны "-1", то выводим всплывающее окно Alert.show("Неудалось подключиться к базе данных. Попробуйте позже", "Ошибка!"); break; case -2 : //если данные равны "-2", то выводим всплывающее окно Alert.show("Такое имя уже существует", "Ошибка!"); break; case -3 : //если данные равны "-3", то выводим всплывающее окно Alert.show("Вы не ввели имя", "Ошибка!"); break; case -4: //если данные равны "-4", то выводим всплывающее окно Alert.show("Недопустимые символы в имени", "Ошибка!"); break; } } } ]]></mx:Script> <mx:HTTPService id="createRequest" useProxy="false" method="POST" result="onResult(event)" url="reg_comp.php"> <mx:request> <mx:nameChar>{nameChar.text}</mx:nameChar> <mx:avaIm>{simpleLabel.text}</mx:avaIm> <mx:gr>{gr.toString()}</mx:gr> <mx:patch>{patch.toString()}</mx:patch> </mx:request> </mx:HTTPService> <mx:Label id="simpleLabel" textAlign="center" x="169" y="64" width="36" height="18" color="#000000"/> <mx:Button label="Далее" click="onCreateChar()" color="#000000" x="140" y="252" width="100" height="22"/> <mx:TextInput id="nameChar" textAlign="center" x="111" y="222" width="160" height="22" color="#000000"/> <mx:Image id="avatar" source="img/men1-1.png" x="171" y="93" width="33" height="33"/> <mx:RadioButton id="men" label="Мужской" groupName="gander" selected="true" click="iMen()" fontSize="10" x="19" y="41" width="73" height="22" color="#000000" iconColor="#2b2b18" textRollOverColor="#ff0000" textSelectedColor="#ff0000"/> <mx:RadioButton id="women" label="Женский" groupName="gander" click="iWomen()" fontSize="10" x="279" y="41" width="74" height="22" color="#000000" iconColor="#2b2b18" textRollOverColor="#ff0000" textSelectedColor="#ff0000"/> <mx:Label text="Имя" x="175" y="198" width="36" height="18" color="#000000" themeColor="#dfddd3"/> <mx:Button label="Пред." click="onLeft()" color="#000000" x="77" y="141" width="100" height="22" textRollOverColor="#ff0000" textSelectedColor="#ff0000"/> <mx:Button label="След." click="onRight()" color="#000000" x="200" y="141" width="100" height="22" textRollOverColor="#ff0000" textSelectedColor="#ff0000"/> </mx:Application>
private var id_script:uint; private var i:int; private var mesg:String; private var on:String; /* Функция автообновления пользователей онлайн */ private function time():void { onLine(); msg(); var timers:Timer = new Timer(10000); timers.addEventListener(TimerEvent.TIMER, onTimer); timers.start(); }
private function onTimer(e:TimerEvent):void { onLine(); } /* Функция обновления чата */ private function update():void { msg(); } /* Передача сообщения в скрипт */ public function createMess():void { id_script = 1; createMessage.send(); mess_send.text = ""; msg(); } /* Вывод сообщений на экран */ public function msg():void { id_script = 2; up.send(); } /* Сколько пользователей онлайн */ public function onLine():void { id_script = 3; online.send(); } /* Прокрутка текста */ private function scrollBody():void { // сдвигаем скролл в конец окна vuvod.verticalScrollPosition = vuvod.maxVerticalScrollPosition + 2; }
public function onResult(e:ResultEvent):void { //обработка результатов и ошибок switch (id_script) { case 1: if (int(e.result) > 0) {
} else { switch (int(e.result)) { case -1: Alert.show("Неудалось подключиться к базе данных. Попробуйте позже", "Ошибка"); break; case -2: Alert.show("Вы ничего не ввели", "Ошибка"); break; } } break; case 2: mesg = String(e.result); vuvod.htmlText = mesg; //вывод сообщений break; case 3: on = String(e.result); onlineUsers.text = on; //вывод сколько пользователей онлайн break; } }
include "conf.php"; //инклюдим conf.php /* коннектимся к БД */ $data = mysql_connect($base_name, $base_user, $base_pass); if(!mysql_select_db($db_name,$data)){ print "<BR>"; echo mysql_error(); die(); } /* Узнаем ip адрес юзера */ $ip = $_SERVER['REMOTE_ADDR']; if ($ip==$_SESSION['ip']) { //если ip равен ip записаному в сессию, то выводим флешку ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="description" content="Браузерная Флеш игра Pocemon-Xack" /> <meta name="keywords" content="игра, флеш, браузер, Pocemon-Xack, игроки." /> <link rel="stylesheet" href="style.css" type="text/css" /> <title>Pocemon-Xack - бессплатная онлайн Flash игра</title> </head> <body> <div id="goreg"> <span class="go_span"> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="400" height="300" id="reg" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="allowFullScreen" value="false" /> <param name="movie" value="CreateChar.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#000000" /> <embed src="CreateChar.swf" quality="high" bgcolor="#000000" width="400" height="300" name="reg" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" /> </object> </span> </div> </body> </html> <?php }else{ //в другом случае переадресовываем на главную страницу echo "<script>location.href='index.php';</script>"; } ?>
4 - reg_comp.php
Code
<?php session_start(); //запускаем сессию
include "conf.php"; //инклюдим conf.php
$nameChar = trim($_POST['nameChar']); /* переменная равна данным которые пришли от флешки, а именно — имя чара */ $vid = $_POST['avaIm']; /* получаем номер аватарки */ $gander = $_POST['gr']; /* узнаем какой пол выбран */ $patch = $_POST['patch']; /* получаем путь к аватаркам */ /* Проверяем заполнено ли поле имени, если нет, то выводим ошибку */ if ($nameChar == '') { echo "-3"; exit; } /* Проверяем что б имя состояло только с английских букв */ if (!preg_match("/^[a-zA-Z]+$/",$nameChar)) { echo "-4"; exit; } /* Подключаемся к БД, если не удалось, то выводим ошибку */ $data = mysql_connect($base_name, $base_user, $base_pass); if(!$data){ echo "-1"; exit; } /* Проверяем есть ли юзер с данным именем, если есть, то выводим ошибку */ mysql_select_db($db_name); $query = "SELECT * FROM users WHERE name='".$nameChar."'"; $result = mysql_query($query); $num_results = mysql_num_rows($result); if ($num_results > 0) { echo "-2"; exit; } /* Записываем имя чара */ $result = mysql_query("UPDATE users SET name='".$nameChar."' WHERE email='".$_SESSION['user']."'"); /* Записываем данные аватарки в таблицу avatar */ $ava = mysql_query("INSERT INTO avatar (gander, vid, path) VALUES ('".$gander."', '".$vid."', '".$patch."')"); echo "1"; $who_online = mysql_query("UPDATE users SET online='1' WHERE email='".$_SESSION['user']."'"); //записываем что столбец online равен 1 session_register("nameChar"); //регистрируем сессию $_SESSION["name"] = $_POST["nameChar"]; //создаём сессию, которая равна имени персонажа ?>
5 - send_mess.php
Code
<?php session_start();
include "conf.php";
$aHours = date("H"); //узнаем сколько часов $aMinutes = date("i"); //узнаем сколько минут $time = $aHours.":".$aMinutes; //задаем отображение времени $mess_send = $_POST['mess_send']; //получаем сообщение $write = $_SESSION['name']; //узнаем имя чара $who = $_POST['who']; //узнаем кому отправляют сообщение /* Выводим ошибку, если ничего не ввели, но нажали кнопку Отправить */ if ($mess_send == "") { echo "-2"; exit; } /* Подключаемся к БД */ $data = mysql_connect($base_name, $base_user, $base_pass); if(!$data){ echo "-1"; exit; } mysql_select_db($db_name); /* Записываем данные в БД */ $query = mysql_query("INSERT INTO chat (msg, time_msg, wrt_user, who) VALUES ('".$mess_send."', '".$time."', '".$write."', '".$who."')"); ?>
Добавлено (04.12.2009, 15:52) --------------------------------------------- Понял, что я сделал не так))) Самому аж смешно)) В общем я добавил такой код:
Code
procedure TfmExample.FormActivate(Sender: TObject); begin edInput.SetFocus; end;
А затем в Объект Инспекторе во вкладке Events и в параметр OnActivate пишу FormActivate Так всё просто отлично работает)) Нет ничего такого, чего ты не познал. Ты уже знаешь всё и в жизни идёт лишь повторение))
В событии OnCreate главной формы пиши Self.edInput.SetFocus
тоже самое выдаёт(( karuy, Спасибо разобрался)))
Добавлено (04.12.2009, 14:25) --------------------------------------------- Вот посмотри у мну совсем простая программка и я ни как не сделаю так чтобы при старте edInput в это поле автоматически перемещался курсор((
Добавлено (04.12.2009, 14:27) --------------------------------------------- Как файлы прикрепить? У меня не получается(( говорит недоступный формат изображения((
Добавлено (04.12.2009, 14:34) --------------------------------------------- Akyltist, Я недавно начал изучать программирование Делфи(да и в принципе программирование), можно попросить пояснить, я не понял.
Нет ничего такого, чего ты не познал. Ты уже знаешь всё и в жизни идёт лишь повторение))
Сообщение отредактировал Ineigo - Пятница, 04 Декабря 2009, 14:36
Так же назрел вопрос, мне надо чтобы при запуске моей маленькой программки автоматически передавался фокус ввода на поле ввода (компонент Edit вкладки Standart) я открываю свойства формы там вкладка Events и в параметр OnActivate пишу edInput.SetFocus - где еdInput имя этого поля. И у меня ничего не получается, вылетает ошибка: "'edInput.SetFocus' is not a valid identifier" - что я делаю не так?
Ну так сохрани её и открывай в любой момент. Ето сложно?
Не я хочу что бы она автоматически добавлялась в каждый новый проект, то есть было в хранилище а не где-то на компе Нет ничего такого, чего ты не познал. Ты уже знаешь всё и в жизни идёт лишь повторение))
Я создал форму и хочу, что бы в любой момент, как только мне понадобится, добавить её в свою программу. А то и заменить ей стандартную пустую форму тость чтобы по нажатии команды File > New > Application Создавался новёй модль(или что там создаётся) с моей формой, той которую сделал
Вот назрел вопрос по делфи 7. Создал простенькую форму, пытаюсь её сохранить(для помещения в хранилище) а он мне выдаёт : "OBJECT expected on line 1." Что я сделал не так или может пропустил чего? Нет ничего такого, чего ты не познал. Ты уже знаешь всё и в жизни идёт лишь повторение))
Ага. Вы все наверное это уже прошли? Где можно скинуть Делфи? Рабочий. Мне на диске приносили но он не пашеть((
Добавлено (03.12.2009, 17:00) --------------------------------------------- А можно в этой теме спрашивать про программирование(а их возникает очень много у самоучек)?
Нет ничего такого, чего ты не познал. Ты уже знаешь всё и в жизни идёт лишь повторение))
А вообще, я советую определиться - как далеко ты хочешь пойти в игрострое. Если хочешь делать игры на уровне коммерческих, то забудь про конструкторы (и желательно про игры вообще на какое-то время) и учись программированию. Если же хочешь делать игры "для себя", то конструкторы в зубы, и не трать время на то, что давно сделали за тебя.
Да я хочу делать игры на уровне коммерческих.
А на счёт программирования паскаль - для чего он игростроителю? (в познании данного языка я дошёл пока до графического модуля)
Нет ничего такого, чего ты не познал. Ты уже знаешь всё и в жизни идёт лишь повторение))
Способ 1. Учи ЯП Pascal, программируй, потом учи Delphi или C++ и делай игры))
ЯП Pascal - ??? А какой из способов приведёт к желаемом результату ближе и быстрее? Нет ничего такого, чего ты не познал. Ты уже знаешь всё и в жизни идёт лишь повторение))
Крайинжин делают Crytec, а не Epic, вы что-то путаете
Я пять минут назад установил этот движёк и в лиц соглашении было написано цитирую:
Quote (TrueIfrit)
Настоящее Лицензионное соглашение с конечным пользователем (здесь и далее «Соглашение») является юридическим соглашением, заключенным между Вами, если Вы являетесь физическим лицом, либо между юридическим лицом, представителем которого Вы являетесь (здесь и далее «Вы» и «Ваш»), и корпорацией Epic Games, Inc., зарегистрированной в штате Мэриленд и находящейся по адресу 620 Crossroads Boulevard, Cary, North Carolina, 27518, U.S.A (штат Северная Каролина, США) (здесь и далее «Epic»). Настоящая лицензия предоставляет Вам разрешение на использование комплекта разработки приложений (UDK) на платформе Unreal Engine 3 и любых обновлений этого комплекта, предоставляемых Epic (здесь и далее «UDK») на условиях, изложенных ниже. Если Вы не принимаете условия настоящего Соглашения, Вы не сможете использовать UDK.
Добавлено (03.12.2009, 16:16) --------------------------------------------- Хорошо. Пойдём путём от простого к сложному. TrueIfrit, давай тогда делись с чего начинать)) я немедленно начну))
Если не будет тех кто захочет(точнее заинтересуется этим), то да))
Quote (TrueIfrit)
Крайинжин платный
Немного с тобой не соглашусь я с офф сайта скачал бесплатно распространяемую версию, там идёт только одно ограничение крупные проекты придётся обсуждать с Эпик и конечно же класть им на лапу
Quote (TrueIfrit)
А вообще нужно начинать с простого!
Я предпочитаю с начало сложно а потом без проблем) Нет ничего такого, чего ты не познал. Ты уже знаешь всё и в жизни идёт лишь повторение))
Здравствуйте! У меня есть идея игры, но нет представления о том как её воплотить. Знаю многие начнут ругаться мол вот опять там пришли и спрашивают то что уже было описано выше. Вот, но я всё равно спрошу и постараюсь чётче изложить вопрос.
Я хочу создать игру смешанного жанра, а то есть начинается игра в жанре хардкорной RPG к пример Dragon Age: origins(сразу уточню я буду брать очень высокий уровень как графики так и техники, несмотря на предстоящие сложности))), далее допустим по сюжету игрок попадает в армию и получает некоторые звания и дослужился например до капитана, ему выделяют скажем отряд из 40 человек и он продолжает свою службу уже в жанре RTS, далее например он ходит в отставку и допустим хочет пожениться тут идёт переход на стимулятор пример Симс 2 или 3(в последний не играл) (но я ещё не знаю стоит ли это вводить или нет)) Допустим он проживает определённое количество времени и разрабатывают в мире игры например стрелковое оружие персонаж берёт это оружие идёт на монстров за славой охотиться в пещеру скажем и тут включается подобие шутера.
Вот приблизительный вариант моего смешанного жанра.
Посмотрев разные движки я склонился к CryEngine 3 или также бесплатный с названием UDK. Правильный ли выбор? Будет ли достаточно функционала? И кто может помочь с этим движком разобраться в "короткие сроки"? А также кто хочет помочь развить проект? Так как поставленная задача нереальна для одного человека))) О всём что вас интересует в том что я хочу создать задавайте вопросы отвечу естественно))
С уважением Михаил.
Нет ничего такого, чего ты не познал. Ты уже знаешь всё и в жизни идёт лишь повторение))