Прикрепляется к любому, там первый аргумент - хэндл, но если поставить 0, то применется к окну созданному WindowIni
Вот оно! Вот и сделай по примеру минимальное окно, цикл обработки сообщений, и при появлении сообщения wm_create инициализируй движок, прикрепляя графику к своему окну...
Как я понимаю, Print выводит текст на окно? А лишний текст мешать не будет?.. Хотя, конечно, там может быть что-то полезное... Вообще-то надо читать документацию по движку, чтобы всё правильно сделать...
Quote (AGENTX001)
{запуск таймера}
А удалить?.. Хотя, кажется, Windows сама всё чистит...
SetTimer(FindWindow(nil,'Land Of Hero') {или переменная-указатель, если такую можно вытащить из движка}, idTimer {константа}, 20, @RenderLoop)
и тогда выкинуть MMSystem, т.к. это WinAPI-функция... Собственно, у мультимедиа-таймера есть несколько дополнительных возможностей, но тебе же нужен просто таймер. А вот на счёт различия в точности между ними не знаю... Теоретически, API-функции всегда лучше использовать, хотя иногда сложнее...
Quote (AGENTX001)
TimKruz, спасибо за время которое на меня потратил!)
Не знаю... В вайсити уровень воды во всём городе одинаков, исключение составляют бассейны. Кстати как редактировать waterpro.dat? Там какая-то билиберда!
А, да, он, похоже, не предназначен для свободного редактирования... Но наверняка есть специальный редактор... Кстати, если удалить этот и ещё один файлик (тоже water чего-то там), то, говорят, уровень воды будет минимальным (как я говорил - основной уровень воды), и типа можно поплавать под городом... Но у меня, кажется, ничего не получилось, или под город не везде можно заплыть...
Quote (Поварёнок)
Кто нибудь создавл полноценную игру на основе Вайс Сити? То есть со своим городом, контентом, сюжетом, HUD`ом.
Многие пытаются это сделать. Но чтобы это сделать, нужно всё переделать, разве что голый движок остаётся. Так что для этого нужна хорошая большая команда... Т.к. зарабатывать на таком моде нельзя, а энтузиастов не так много, поэтому такие глобальные моды быстро загибаются...
M1ghtMortal, боюсь, но подобное скорей всего уже есть... Реализовывать чужие идеи выгодно только тогда, когда вся или часть прибыли идёт к реализатору. А идеи, которые не принесут или вряд ли принесут прибыль, т.е. реализовывать которые могут только энтузиасты, обычно примитивны (оригинальные и гениальные идеи всегда приносят прибыль) и реализовывать их, скорей всего, ни кто не будет, тем более, что почти у всех энтузиастов есть свои идеи, и гораздо лучше реализовать свою идею, а не чужую. А уж тем более - творческие идеи, типа идеи игр, музыки, моделей и картин - их разрабатывают от души (если без денег). Так что, думаю, создавать целый сайт, посвящённый только идеям - заведомо провальная идея, хотя, вероятно, какое-то время просуществует...
Всем ещё раз привет.Нуббский вопрос: как сделать так что бы сделать типа некст рума(гамака)???
Ну всё зависит от того, что ты делаешь. Если игру - то просто, например, загружаешь файл с описанием второй комнаты, и рисуешь её. Если программа - то просто скрываешь не нужные компоненты (visible:=false) и показываешь нужные (visible:=true), а размещаешь их заранее.
P.S. "то просто", "то просто"... У меня всё просто...
***
Quote (LunarPixel)
Создаешь несколько форм, на первой, основной форме ставишь кнопку и по нажатию на неё пишешь, например: form1.visible:=false; form2.showmodal; И не забудь в uses объединить все unit-ы форм, хотя это должно произойти автоматически, появится соответствующее сообщение.
Ну, если реально не приходится делать несколько форм, то делать так плохо. Лучше всего, когда всё на одной форме - красивей, компактней, меньше ресурсов потребляет...
Сообщение отредактировал TimKruz - Суббота, 24 Декабря 2011, 19:21
*** Печально, но Tak.ru почему-то больше не хочет сливать мне свои денежки со мной работать:
Quote
Переход по рекламной ссылке был заблокирован. Сервисом оплачиваются только естественные переходы. Не оплачивается трафик из серфингов, клики из web-редакторов, копий web-страниц, размещенных на персональных компьютерах, клики через прокси, а также с сайтов из стоп-листа и т.д.
Хотя кликаю также, как обычно. Где же взять Е-Щ-Ё халявных денег?..
Сообщение отредактировал TimKruz - Суббота, 24 Декабря 2011, 19:28
Да ладно, любой современный язык поддерживает асинхронные сокеты. Delphi тоже. И что? Ну ладно, jiumx60rus, ты всех убедил, что асинхронное лучше, но разве для кого-то это было секретом? По-моему, это понятно любому, кто хоть раз работал с сетью. Но у них есть недостаток: нарушается структура программы, и отладка усложняется, а с синхронными программа линейна.
Windows XP SP3. Просто давно не менял, а Windows имеет обыкновение разваливаться после длительной эксплуатации.
Quote (TakBar)
А с железом все в порядке, какого века?
Ну, года три с половиной. Intel Core 2 Duo 2.333 Ghz, 2GB. Я просто думаю, что засрал свой компьютер, вот-с... Хотя скорость запуска блокнота и всего прочего как бы намекает, что не в моём компьютере дело.
Quote (TakBar)
Я книг не читал(в смысле по Delphi), но качественный получился, даже интерпретатор команд был небольшой.
Хм, а интерпретатор зачем? Впрочем, интерпретатор-то легко сделать, но они были полезны во времена DOS и командной строки.
Ссылочку на описание (не скачивание, а описание) не дашь?
Quote
ZBots умные, да
А что, нет, что ли? Это (инструкция там) я нашёл в комплекте с CS с торрента.
Quote
zBot 1.5 для Counter-Strike 1.6 ===============================
zBot — официальные боты фирмы Valve для Counter-Strike 1.6. Сделаны на заказ студией Turtle Rock Studios, которая вскоре была приобретена компанией Valve Corporation™. Боты zBot применяются в Counter-Strike: Condition Zero и Counter-Srtike: Source, считаются лучшими ботами для Counter-Strike 1.6.
Отличие и преимущество этих в том, что уровень их способностей достаточно точно отражает человеческий. Например, если Вы выбрали легкий уровень сложность (Easy), то сможете заметить что боты часто стреляют очередями или "зажимом" из положения стоя, но стоит Вам выбрать тяжелый уровень сложности (Hard), то они начинают стрелять одиночными пулями с применением стрейфа, стараясь убедиться в том что каждая выпущенная пуля попадет в Вас, а не пройдет мимо. Боты могут разговаривать по рации и у каждого свой оригинальный голос. Боты могут использовать щит, красться, кидать флэшки и взрывные гранаты, могут услышать Ваши шаги и поменять траекторию движения, стрелять через стены на слух и т.д.
zBot намного реалистичнее других ботов, их поведение и реакция на происходящее вокруг заставляют почувствовать, что вы играете с достойным противником, а не с племенем охотников за головами. Главной особенностью этих ботов является то что они сами делают вэйпоинты если их нет, тесть они автоматически анализируют карту и их не нужно программировать вручную под каждую карту.
Quote (TimKruz)
черная_тень, Duskly, ждите банан за распространение не лицензионного контента на GCUP. Потому что нельзя, т.к. контент защищён авторским правом, и его нарушение (распространение без ведома автора) - нарушение закона РФ, а это нарушение правил сайта...
Ну это я, наверное, погорячился, всё-таки это же просто сборка мода, а не "крякнутое" ПО.
Сообщение отредактировал TimKruz - Суббота, 24 Декабря 2011, 20:18
Как можно забыть название типа переменной? Ну а к строке тоже так обращаться можно, только нужно указывать, к какому символу конкретно (от 1 до длины строки), в квадратных скобках.
Понятно) Спасибо, а есть ли какая-то функция противоположная ord?
Т.е. возвращающая символ по номеру? Конечно, это chr(x:byte), возвращает char. *** ...Если быть точным, то
Quote (Ord)
Функция Ord возвращает целочисленное значение для любого перечислимого типа Arg. Это используется преимущественно, чтобы преобразовать символы или перечисления в их числовые эквиваленты.
Quote (Chr)
Функция Chr конвертирует целое число IntValue или в AnsiChar или в WideChar
*** Вот, тут можешь почитать описания и посмотреть примеры...
Сообщение отредактировал TimKruz - Суббота, 24 Декабря 2011, 22:27
Не компилируется. Ошибка: List index out of bounds (-1) Ругается на вот эту строку: s := lst1.Items[lst1.ItemIndex];
Потому что, когда ничего не выбрано, ItemIndex=-1 (первый элемент - 0). Вместо
Quote (masb8ly-GC)
s := lst1.Items[lst1.ItemIndex]; if (s='Ололошенька') then begin end;
Лучше
Quote
if lst1.Items[lst1.ItemIndex]='Ололошенька' then begin end;
На счёт комбобокса: тут тоже можно использовать не text, а конструкцию типа «combobox1.Items[combobox1.ItemIndex]='...'» или ещё лучше - «case combobox1.itemindex of», чтобы не проверять варианты, введённые пользователем вручную.
Quote (Stage)
Сравнивать лучше по индексу.
Он хочет, чтобы
Quote (RabbitNerd)
и ListBox приобретает Items характерные этому "Ололо"
Т.е. в зависимости от combobox.itemindex будут меняться пункты listbox'а. Но, если подумать, можно и индексом (если списки жёсткие).
***Добавлено*** RabbitNerd, можешь попробовать так. В файле/константе хранится значение listbox.items (список строк типа tstings) для каждого из значений combobox. Ну а для каждой строке соответствует свой файл. При изменении значения combobox (событие onChange) пишем:
Code
loadlistbox(combobox.itemindex);
Где loadlistbox(номер) - загружает из файла или копирует из константы содержимое listbox, предварительно очищая его содержимое процедурой clear. Например:
Code
procedure loadlistbox(n:byte); var i:byte; begin with form.listbox.items do begin clear; for i:=0 to 10 do add(str[n,i]); //добавляет десять пунктов listbox'а из константы-массива в соответствии с выбранным пунктом combobox'а (передаётся в n) end; end;
Далее, при нажатии на кнопку (или что-либо другое) пишем:
Code
loadmemo(listbox.items.itemindex);
А в loadmemo(номер), как не трудно догадаться, загружаем memo:
Code
procedure loadmemo(n:byte); begin with form.listbox.items do begin clear; memo.text:=str[n]; //загружает соответствующую строку из константы-массива end; end;
Как-то так.
Сообщение отредактировал TimKruz - Воскресенье, 25 Декабря 2011, 18:26
RabbitNerd, ну перед этим тупо проверяй значение itemindex, если не равно -1, то продолжать:
Code
if listbox.itemindex<>-1 then loadmemo(listbox.items.itemindex);
*Добавил:* Посмотрел я твой код (в ЛС скинул), это просто ужасно... Проверку listbox.itemindex делай в событии, например, onClick объекта listbox. Проверку combobox лучше вынеси в отдельную процедуру, т.к. ты её будешь использовать несколько раз. (в onCreate формы, в onChange самого бокса) Разве это так сложно?
Сообщение отредактировал TimKruz - Воскресенье, 25 Декабря 2011, 19:39