Результаты поиска
| |
Lightsoft | Дата: Среда, 01 Мая 2013, 18:12 | Сообщение # 21 | Тема: Переменные в имени создаваемого файла |
частый гость
Сейчас нет на сайте
| Код s = string(worldX) + "," + string(worldY) + ".map";
|
|
| |
Lightsoft | Дата: Среда, 24 Апреля 2013, 15:06 | Сообщение # 22 | Тема: Помогите в создании программы (нубам в другую сторону) |
частый гость
Сейчас нет на сайте
| parameter_string(1) , где 1 - номер параметра
|
|
| |
Lightsoft | Дата: Понедельник, 28 Января 2013, 01:02 | Сообщение # 23 | Тема: Sora Graphics Engine |
частый гость
Сейчас нет на сайте
| Цитата (Lord_Zeon) Для начала что нужно реализовать: Инициализация окна, что лучше использовать для этого? Кроссплатформенный FreeGlut как вариант, или все же писать свою обертку под winapi? Инициализация OpenGL. Если брать глут то это отпадает. Я считаю, что лучше написать свою обертку, так как это может облегчить жизнь если надо будет что-то изменить в инициализации окна, не придется разбираться с чужим кодом. Управление таймером, перерисовкой и другими сообщениями будет своё.
Цитата (Lord_Zeon) Реализовать вывод текста: Пока склоняюсь к стандартным функциям. Как можно другими способами? Обычно шрифты делают через загрузку подготовленного изображения с символами, а текст выводят выбором символа по текстурным координатам.
Заметка по архитектуре: Если память выделяется в процедуре, то лучше сделать освобождение памяти текстуры тоже отдельной процедурой: Код LoadTexture(&spr, "src_01.png", 160, 32);
|
|
| |
Lightsoft | Дата: Пятница, 25 Января 2013, 23:56 | Сообщение # 24 | Тема: Внедрение мультиплеера |
частый гость
Сейчас нет на сайте
| Цитата (Nanotech_ua) Можно поподробнее? Что для этого нужно изучать, чтобы сделать например простое подключение игроков? Рассмотрим на примере SA:MP:
В gta:sa есть пул объектов класса CPed, каждый объект класса в этом пуле - бот в игре. В каждом объекте своя информация о позиции, оружие, здоровье и др. Для того чтобы сделать подключение надо залезть в движок игры и сделать так, чтобы создавались не игровые боты, а боты, которые управляются подключенными игроками (позиция, здоровье, ...). Для этого надо писать DLL библиотеку, которая будет подгружаться в процесс gtasa.exe, будет создавать в пуле объекты CPed и менять информацию в них, которая была получена от других игроков.
Т.е. подключается к серверу клиент, всем подключенным клиентам отправляется информация что нужно создать в пуле новый объект класса CPed. Дальше игрок управляет персонажем, все данные передаются на сервер, а с сервера всем подключенным клиентам кроме своего.
Сообщение отредактировал Lightsoft - Пятница, 25 Января 2013, 23:58 |
|
| |
Lightsoft | Дата: Понедельник, 12 Марта 2012, 21:27 | Сообщение # 25 | Тема: Мои вопросы GML |
частый гость
Сейчас нет на сайте
| TheFlowOfFun, Зачем такое городить?
Можно проще сделать же:
Code if(show_question("Question")){ // если - да } else { // если - нет }
|
|
| |
Lightsoft | Дата: Понедельник, 20 Февраля 2012, 01:11 | Сообщение # 26 | Тема: Вопросы по созданию RPG |
частый гость
Сейчас нет на сайте
| Quote (Kto_Ya) Это получается что надо будет на каждый уровень!? Да. Нужно просто указывать сколько xp для следующего уровня нужно
Можешь формулу сделать:
Code if (global.xp >= global.next_level_xp){ global.level += 1; global.live = 64; global.money += 25; global.next_level_xp = global.level * 120; }
и тогда с каждым уровнем кол-во необходимого опыта будет увеличиваться
Сообщение отредактировал Lightsoft - Понедельник, 20 Февраля 2012, 01:16 |
|
| |
Lightsoft | Дата: Суббота, 18 Февраля 2012, 23:34 | Сообщение # 27 | Тема: Вопросы по созданию RPG |
частый гость
Сейчас нет на сайте
| в Create пишешь:
Code global.next_level_xp = 120;
в step проверяешь
Code if (global.xp >= global.next_level_xp){ global.level += 1; global.live = 64; global.money += 25; global.next_level_xp += 120; }
Сообщение отредактировал Lightsoft - Суббота, 18 Февраля 2012, 23:34 |
|
| |
Lightsoft | Дата: Суббота, 18 Февраля 2012, 17:08 | Сообщение # 28 | Тема: И снова ИИ |
частый гость
Сейчас нет на сайте
| Чтоб начинал стрелять, проверяй дистанцию между объектами:
Code distance = point_distance(self.x, self.y, player.x, player.y);
Чтоб начал следовать за игроком, можешь за шаг вычитать или прибавлять координаты
пример для x координаты:
Code
// self - танк // tank_step - шаг танка в пикселях // distance - минимальная дистанция для начала движения танка
if((self.x > player.x) and ((self.x - player.x) > distance)){ self.x -= tank_step; } else if((self.x < player.x) and ((player.x - self.x) > distance)) { self.x += tank_step; } else { self.x = player.x; }
Сообщение отредактировал Lightsoft - Суббота, 18 Февраля 2012, 17:13 |
|
| |
Lightsoft | Дата: Суббота, 18 Февраля 2012, 16:42 | Сообщение # 29 | Тема: Очередь объектов |
частый гость
Сейчас нет на сайте
| Подскажите алгоритм для решения следующей задачи: Имеется игрок. Его окружают зомби со всех сторон и строятся в очередь за другими зомби. Если ближайших зомби убить, то остальные должны занять их место, т.е. должна двигаться очередь. Я делал через события коллизиий.
Проблема: Если срабатывало событие коллизий одного зомби с другими, то зомби не могли двигаться к игроку, и, если переместить игрока то они останутся на своем месте не сдвигаясь (из-за коллизий).
|
|
| |
Lightsoft | Дата: Понедельник, 17 Января 2011, 21:28 | Сообщение # 30 | Тема: Вопрос по Delphi |
частый гость
Сейчас нет на сайте
| Да, обращайся. Рад помочь.
|
|
| |
Lightsoft | Дата: Понедельник, 17 Января 2011, 21:22 | Сообщение # 31 | Тема: Вопрос по Delphi |
частый гость
Сейчас нет на сайте
| readln() - это используется пользователем для ввода с клавиатуры значения в консольном приложении. В моем коде он заполняет каждый элемент массива в цикле. Т.е. ты вводишь N-е кол-во раз число и и это число сохраняется в элементе массива. Так заполняется весь массив с клавиатуры... writeln() - это для вывода в окно консоли в данном случае. В твоем случае VCL приложение и тебе использовать эти функции не надо.
|
|
| |
Lightsoft | Дата: Понедельник, 17 Января 2011, 21:12 | Сообщение # 32 | Тема: Вопрос по Delphi |
частый гость
Сейчас нет на сайте
| Quote (EXP0) я ввожу данные в стриггрид и нажимаю выполнить, т.е получается, что данные считываются с stringgrid? а полученное значение выводится в memo? Да, именно так.
|
|
| |
Lightsoft | Дата: Понедельник, 17 Января 2011, 21:04 | Сообщение # 33 | Тема: Вопрос по Delphi |
частый гость
Сейчас нет на сайте
| Quote (EXP0) не понял твой последний комментарий Если я тебя правильно понял то тебе надо перед этим кодом сначала заполнить массив теми данными, что в таблице, либо прямо из таблицы их брать не используя массив и в конце уже сравнивать тем кодом, который выше. Это уже как тебе удобней.
|
|
| |
Lightsoft | Дата: Понедельник, 17 Января 2011, 20:56 | Сообщение # 34 | Тема: Вопрос по Delphi |
частый гость
Сейчас нет на сайте
| Quote (EXP0) хорошо, а в начале программы нужно описывать сам StringGrid? можно массив заполнить данными из StringGrid, либо переделать код чтоб он сразу значения из StringGrid брал
|
|
| |
Lightsoft | Дата: Понедельник, 17 Января 2011, 20:51 | Сообщение # 35 | Тема: Вопрос по Delphi |
частый гость
Сейчас нет на сайте
| EXP0, Code program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
const N = 6; // Кол-во элементов в массиве var arr: array [1..N] of Integer; var i, c: integer; begin for I := 1 to N do // { В цикле заполняем массив readln(arr[i]); // } c := 0; // Начальное кол-во элементов = 0 for I := 2 to N do // { Сравниваем первый элемент с остальными в цикле if arr[I] > arr[1] then // } inc(c); // Увеличиваем счетчик (+1) writeln(c); // Выводим кол-во элементов readln; // Ожидаем нажатия Enter для закрытия консоли end.
|
|
| |
Lightsoft | Дата: Понедельник, 17 Января 2011, 19:53 | Сообщение # 36 | Тема: BolgenOS |
частый гость
Сейчас нет на сайте
| Ребят, вы это посмотрите: раз два три
|
|
| |
|