FAQ по B3D
полазев по форуму, и обнаружив, что у новичков возникают в основном одни и теже вопросы, решил вот написать FAQ по Blitz3D, дабы люди не засоряли форум постами из-за одного простенького вопроса, а нашли все нужное здесь. все мы когда-то были зелеными новичками и не знали как сделать то или иное...
я не считаю себя таким уж профессионалом в Blitz3D, я тоже продолжаю учиться и узнавать много нового про этот замечательный язык, но, думаю я вполне достиг того уровня, когда могу ответить людям на их вопросы. все материалы и вопросы взяты с форума и головы автора. большинство из приведенных здесь функций написаны либо мной либо взяты из стандартных хелпов блица, которые к сожалению не все могут читать... если у вас возникают вопросы, то пишите их сюда, только в краткой форме. время от времени я буду на них отвечать, когда наберется побольше. а пока, вот: |
Re: FAQ по B3D
ПРОГРАММНАЯ ЛОГИКА И ОБЩИЕ ВОПРОСЫ
н: как сделать в программе выбор из нескольких вариантов? avel:удобнее всего пользоваться структурой Select: Код:
Select переменная avel: воспользуйтесь AND'ом: IF условие1 And условие2 Then н: как быстро поменять значение переменной-флага? avel: m = Not m н: как задать бесконечный цикл и выйти из него? avel: Repeat ... If условие_выхода Then Exit Forever н: как изменить шаг в цикле? avel: используй команду Step н: как сделать, чтобы функция возвращала что-либо? avel: в функции: Return что_возвращать при вызове: куда_возвращать=имя_функции() н: как переместиться в определенную часть программы? avel: удобнее всего воспользоваться метками и командой Goto: .имя_метки ... Goto имя_метки н: чем отличается Gosub от Goto? avel: Gosub предполагает, что возможно будет возврат к предыдущей части программы с помощью команды Return н: как перебирать все элементы типа? avel: используй цикл: for имя_элемента.имя_типа = Each имя_типа ... Next н: как создать\удалить элемент типа? avel: создать: имя_элемента.имя_типа = New имя_типа удалить: Delete имя_элемента не забудьте сначала удалить все объекты этого элемента командой FreeEntity н: как создать массив типа и работать с ним? avel: 1) создаем тип стандартным способом. 2) создаем массив: Dim имя_массива.имя_типа(кол-во_элементов) 3) создаем элементы типа: имя_массива(номер_элемента) = New имя_типа 4) обращаемся так: имя_массива(номер_элемента)\параметр_типа параметр_типа - это то, что стоит после Field. н: как подключить какой-либо файл *.bb к программе? avel: используй команду Include "имя_файла.bb" н: как перевести число в целочисленный тип? avel: Int(число) н: генератор случайных чисел выдает одни и теже значения. что делать? avel: используй зависимость генерации от таймера, т. е. поставь вначале вот это: SeedRnd Millisecs() н: как избежать ошибки при написании строковых значений в различных регистрах? avel: используй команду Upper, она конвертирует все к верхнему регистру. н: как выводить текст команды Print или Input в определенном месте? avel: поставь перед выводом команду Locate x,y н: условие KeyHit() срабатывает раньше, чем надо. почему? avel: видимо надо использовать "очистку" нажатий клавиш: FlushKeys |
Re: FAQ по B3D
РАБОТА С ФАЙЛАМИ
н: как сохранять в файл? avel: Код:
avel: Код:
avel: вот так: If FileType("имя_файла") = 1 Then ... н: как "просканировать" некую директорию на наличие файлов? avel: это делается циклом: Код:
myDir=ReadDir("имя_директории") |
Re: FAQ по B3D
ВИДЕО И ЗВУК
н: как загрузить *.Gif файл? avel: в качестве текстуры никак, но можно его проиграть как видео-файл командой DrawMovie н: как проиграть видеоролик? avel: я пользуюсь такой вот функцией: Код:
Function screen(name$,keylog,fs=1,x=0,y=0) avel: можно так: Код:
sndWave=LoadSound("имя_файла") avel: есть несколько способов: Код:
;1 способ |
Re: FAQ по B3D
РАЗНОЕ
н: как работать с таймером? avel: примерно так: Код:
;в цикле пишешь: avel: используй HidePointer\ShowPointer н: как запустить другой файл из программы? avel: ExecFile("имя_файла") н: как включить каркасный просмотр? avel: If KeyHit(wire_key) Then wLog=Not wLog WireFrame wLog н: как создать равномерное освещение? avel: AmbientLight r,g,b н: как создать мерцающий свет (как от костра)? avel: Код:
avel: примерно так: water=CreatePlane() EntityColor water,10,60,200 EntityAlpha water,0.6 н: как сделать воду с волнами? avel: делается загрузкой меша или террайна: Код:
;создаем тип avel: используй CameraViewport н: как заставить спрайт не поворачиваться к камере? avel: SpriteViewMode имя_спрайта,2 н: как "снимать" скриншоты? avel: вот функция: Код:
Function screenshot() avel: используй команды работы с камерой: Код:
camera = CreateCamera() |
Re: FAQ по B3D
Цитата:
Цитата:
for m = 0 to n Step 1 ... next Остальное еще не прочитал... |
Re: FAQ по B3D
малаца! надо тока чтобы тему сразу видно было.
|
Re: FAQ по B3D
Р-Е-С-П-Е-К-Т-!!!
|
Re: FAQ по B3D
Хм, думаю ещё такой пунктик будет полезен:
вопрос: Как возвращать функцией не только целое число? ответ: За именем функции при создании ставить соответствующий оператор: Function ФункцияОператор() Return End Function Операторы могут быть 3 и более видов: # % или $. Ну чтото в этом роде добавь ;) Цитата:
Цитата:
Цитата:
Цитата:
ответ: Использовать комманду AmbientLight R,G,B. Цитата:
И ещё, ты извени но имхо, FAQ лучше оформлять так: Вопрос: Ответ: |
Re: FAQ по B3D
ВОт про мерцание света(так лучше чем через рандом, ПИШУ все как было):
ВОПРОС : Мне надо чтоб свет мигал ,более реалистичние. Сейчас я делаю так [LightRange light,Rnd(5,15)] ОТВЕТ: А зачем менять расстояние освещения, когда нужно скрывать\показывать свет: Задаешь время работы и время паузы: Код:
PauseTime = 100;Время паузы в миллисекундах Отклонение времени можно и не делать (убрать Rand'омы из кода), но так прикольнее ПС Этим кодом можно сделать и огонь и мерцающуюю лампу , да много что ... ППС Оригинальный код писал Platon |
Re: FAQ по B3D
все исправления и предложения принимаются. если я где-то что-то не совсем корректно описал, то прошу прощенья, возможно для новичков и впрямь не все так понятно... но за счет ваших поправок они думаю разберуться. а самим новичкам еще раз напомню, что они могут писать сюда свои вопросы и я время от времени буду на них отвечать.
|
Re: FAQ по B3D
прикольно, теперь соберите все это вместе, добавьте еще че-нить создайте отдельную тему и сразу ее закройте (чтоб мусором не засоряли)
|
Re: FAQ по B3D
ВОПРОС : так как же все-таки загрузить gif картинку как анимационную ленту?
ОТВЕТ: можно так: Код:
; Animated Gif file loader by Peter Scheutz 2003.03.13 ОТВЕТ: нужно нажать на кнопку ввиде домика на главной панели и вы попадете на главную страницу helpa , далее жмем Command Reference . Теперь на панели слева будут надписи Scancodes и Scancodes picker. Нажав на первую надпись вы попадете на страницу где бедет записаны все сканкоды клавиш в виде " Key - scancode". Нажав на другой надписи перед вами появится изображение клавиатуры. Нажав на нужную вам клавишу в верхнем поле с надписью Scan Code появится число, которое и является сканкодом выбранной клавиши. ВОПРОС : как узнать сколько треугольников в текущем фрейме? ОТВЕТ:для этого есть команда TrisRendered(), которая возвращает число треугольников попавших в камеру. Посмотреть можно так: Text 10,10,trisRendered() ВОПРОС : что делать если мне надо в типе сделать массив, например для элемета patrons? ОТВЕТ: Для этого просто впишите следующую строку в тип : Field patrons[100] Теперь обращатся к этому массиву можно так: указатель\patrons[13] = zaklinit_pistolet() ВОПРОС : У меня есть переменная. Она у меня должна вызываться в разных функциях, но этого не происходит.В чем может быть проблема? ОТВЕТ: Раз у вас переменная вызывается в разных функциях, то ее нужно обзывать как глобальную, тогда она будет доступна в любой части кода. Обзывать ее можно перед главным циклом, сразу после инициализации графики( после строчки graphics....), вот так: global имя_переменной |
Re: FAQ по B3D
|
Re: FAQ по B3D
Цитата:
|
Re: FAQ по B3D
нет не подсвечивается
|
Re: FAQ по B3D
ВОПРОС : подскажите, как бы мне сделать небо в моей игре?
ОТВЕТ: есть разные способы: 1) Можно просто создать плоскость(CreatePlane()) , натянуть на него текстуру и поднять на уровень облаков. Но такой способ предпочтителен лишь когда у вас камера направлена вверх, потому что по бокам неба просто не будет, так как это плоскость. 2) Можно создать сферу(CreateSphere()) , и так же натянуть на нее текстуру. только Сфера ,внутри которой мы будем находится не будет видна, потому что изначально объекты видны лишь с внешней стороны, но это можно исправить либо флипнув меш и тем самым у нас поменяются внешняя с внутренней стороной местами(FlipMesh меш), либо поставив, если нужно чтоб меш был виден с обоих сторон, флаг 16 (EntityFX меш, 16). Теперь надо привязать наше небо к камере, потому что иначе игрок может спокойно пересечь границу неба и увидеть что это всего-лишь объект с текстурой(а нам ведь нужно чтоб было как можно реалистичнее), или в таком случае нужно заранее отмасштабировать объект небо так чтоб игрок не смог этого сделать. А привязать небо к камере нам поможет следующий код: Код:
dxsky#=EntityX( camera,True )-EntityX( sky ) просто вставьте этот код в главный цикл. Естественно, замените навзания camera и sky на ваши. 3)Этот способ самый распространненый. Код:
Function MakeSkyBox() |
Re: FAQ по B3D
Цитата:
|
Re: FAQ по B3D
H@NON, это же не фак, а мини туторы у тебя ;) Тут речь Совсем о нюбаях, и лучше хлебом не кормить, а дать начальные знания, а дальше пусть сам, чтобы опыт Сам набирал, а не копи-пастеров ростить очередных.
|
Re: FAQ по B3D
IGR, ну это не меняет сути. Факт что он сам не додумался до этого т.к. ему дали уже готовый код.
|
Re: FAQ по B3D
H@NON, Респект! Продолжай Дальше!
|
Re: FAQ по B3D
To Мока:
Ну какой же это копи/паст?ведь я привел функцию создания неба, которой многие пользуются, в том числе и я. Зачем нам очередной велосипед? А остальное я в виде описания сделал, че да как. |
Re: FAQ по B3D
тема полезная !!
но большинство кто приходит на форум что-то спросить не читают факи, а создают новые темы со своими вопросами !! |
Re: FAQ по B3D
Надо просто хорошенько раздел FAQ прорекламировать. Лучше сделать ее заглавной страницей.
|
Re: FAQ по B3D
ВОПРОС : Как открыть уже существующий файл и записать в его конец информацию (сам долго думал)
ОТВЕТ: Файл можно открыть командой OpenFile. Действительно, при открытии файла позиция записи устанавливается в его начало. Устранить это можно двумя способами. Ламерским: сначала считать из файла всю потом записать с учетом новой инфы (можно, кстати, и так: While not(eof(Your_File)) Readline$ your_File Wend потом записываете вашу инфу) Или простым (как обычно, все гениальное просто), вот так: Код:
filename$="имя_вашего_файла" |
Re: FAQ по B3D
2Moka&JohnK предлагаю вам вынести ваши "разборки" за рамки поста, дабы не засорять его. лично я уважаю вас обоих и не понимаю чего вы спорите. что же касается моего мнения, то если у опытных людей возникает желание писать сюда свои дополнения и замечания, то я только рад. по поводу размера сообщений, конечно они должны быть небольшими, однако приведение готовых функций и участков кода вполне допустимо. даже в профессиональных FAQ имеются специальные разделы с расширенными ответами и по собственному опыту, скажу, что они бывают весьма полезны.
2всем было предложение закрыть тему, но она пополняется ценной инфой и новички, как я уже писал выше, могут писать сюда свои вопросы, поэтому закрывать ее, думаю нестоит. поэтому прошу всех не флудить и не забивать пост пустой болтовней. по поводу того, чтобы тему "было видно" я обращусь к администрации. по поводу собирания материала в одном месте, можно сделать архивчик со всеми вопросами\ответами и поместить его сюда. |
Re: FAQ по B3D
вот еще немного полезной информации:
вопрос: у меня не работает какая-либо стандартная функция и выдается сообщение: function not found ответ: на это может быть несколько причин: 1) проверьте правильность написания функции, например все ли буквы английские. 2) возможно ваша версия блица устарела и не поддерживает эту функцию. посмотреть версию своего блица вы можете в меню: ( help -> about Blitz3D ), а в файле versions.txt вы можете посмотреть какая команда с какой версией была добавлена. к примеру команда OpenMovie появилась с версией 1.71 вопрос: как сделать, чтобы скорость движения объекта набиралась\сбавлялась постепенно? ответ: для этого нужно ввести переменную, например speed# и прописать в главном цикле: Код:
if KeyDown(клавиша_увеличения_скорости) then ответ: смотри вопрос выше + добавь строчку: speed#=speed#*0.99 0.99 - это скорость сбрасывания скорости, чем она ближе к единице, тем медленнее будет этот процесс. вопрос: при использовании команды Animate объект начинает двигаться ни тогда, когда нажата клавиша, а когда она отпускается. почему? ответ: когда ты пишешь в главном цикле if KeyDown(...) Animate ... блиц запускает эту команду постоянно, когда ты нажимаешь клавишу, а надо ее запустить один раз. решение: используй KeyHit(), либо введи переменну-флаг. примерно так: Код:
If speed#=0 Then Animate меш,0 ответ: используй функции MouseZ и MouseZSpeed |
Re: FAQ по B3D
Код:
if KeyDown(клавиша_увеличения_скорости) then |
Re: FAQ по B3D
классны фак, всем спасибо - для себя очень много нового узнал )) 2MoKa, я-бы с твоей подписью промолчал-бы про копи/паст...
|
Re: FAQ по B3D
|
Re: FAQ по B3D
вот еще кое-что из совсем элементарного:
вопрос: как изменить размеры текстуры? ответ: использовать команду ScaleTexture не забывайте, что ее надо прописывать перед командой EntityTexture. вопрос: как сделать спидометр со стрелкой (часы)? ответ: для этого нужно загрузить два спрайта: фоновый и с изображением стрелки. после чего в главном цикле поворачивать спрайт со стрелкой в зависимости от скорости (времени). чтобы спрайты всегда были на виду, надо их привязать к камере. пример можно посмотреть здесь. вопрос: как загрузить спрайт, чтобы он не был полупрозрачным? ответ: при загрузке спрайта нужно поставить флаг 4: spr=LoadSprite("...",4) вопрос: как определить порядок видимости объектов? ответ: используй команду EntityOrder вопрос: что делает команда EntityFX ? ответ: она отвечает за различные визуальные эффукты в основном связанные с освещением. вопрос: как поворачивать спрайт? ответ: вот так: RotateSprite спрайт, угол |
Re: FAQ по B3D
Вложений: 2
вот, сбросил все в архивчик и отредактировал слегка.
берите, пользуйтесь.Вложение 4803 |
Re: FAQ по B3D
"нет не подсвечивается"
Это значит, что скорей всего у тебя достаточно старая версия Blitz (или крайне урезанная). Сейчас (06.10.2007) самая последняя версия, которая мне встретилась и которую я пользую - 1.98. Вообще встречал еще такой глюк. Дело было так: я писал гульку с другом. Я писал на 1.98, у него была еще 1.96 вроде-бы. И когда я прислал ему свою новонаписанную функцию - у него она незаработала! Там были вечные ошибки с подгрузкой мешей. Но после установки очередного обновления все заработало... так что советую пользовать самые последние версии, которые сможете найти... |
Re: FAQ по B3D
|
Re: FAQ по B3D
вопрос: как изменить размеры текстуры?
ответ: использовать команду ScaleTexture не забывайте, что ее надо прописывать перед командой EntityTexture. неправильный ответ, садись, два. |
Re: FAQ по B3D
вопрос: как переместить объект?
ответ: Moveentity lol,1,0,0 |
Re: FAQ по B3D
|
Re: FAQ по B3D
2Leito давай не будем доходить до абсурда. с этим думаю народ и сам разберется.
|
Re: FAQ по B3D
я имею ввиду, что без разницы, до, или посел EntityTexture, проводить манипуляции с текстурой. Потомучто EntityTexture всеголишь указывает что етот объект должен текстуриться такой то текстурой.
|
Re: FAQ по B3D
To AVEL. Э-э-э. Не надо на меня оффтопить! Я всю тему просмотрел. Единственное, что было отвечено на данный вопрос это был встречный вопрос от IGOR:
"какая версия Блица ??" И все! Так что все правильно я сделал! Единственное в чем меня можно обвинить - это в том, что свой пост я оформил достаточно по-ламерски и все! P.S. Правильно Люк, а не лук! P.P.S. Выше исправлю свое "ламерство". |
Вопрос: Как изменить иконку (пиктограмму) у *.exe – файла, созданного в Blitz3D?
Ответ: Нужно воспользоваться редактором ресурсов exe-шника, например, ResHack’ером, XNResourceEditor’ом или Restorator’ом. В ResHacker это делается так: Action->Replace Icon…->Open with new icon…->Replace. Скачать ResHacker можно здесь: http://boolean.name/archive/files/reshack.rar Вопрос: У меня не подсвечивается/неправильно работает/не работает стандартная функция в Blitz3D. Что делать? Ответ: Попробуйте обновить свою версию Blitz3D, до максимально новой. ( На 08.10.2007 - это 1.99 ). Вопрос: Где можно скачать русскую справку к Blitz3D? Ответ: В сети доступна для скачки справка к Blitz3D ПОЛНОСТЬЮ переведенная на русский язык, а с недавнего времени скачать ее можно БЕСПЛАТНО! Ссылка: http://blitz-coder.narod.ru/help/help.rar Пароль к архиву: "Blitz3D the best" (без кавычек). Вопрос: Как можно заставить Blitz3D работать с DirectX9? Ответ: Единственный известный мне способ использование сторонней dll-библиотеки, например, этой: http://blitz.pp.ru/forum/showthread....&pagenumber=50 Вопрос: Как использовать сторонние библиотеки? Ответ: Нужно просто забросить файлы нужной библиотеки в папку "userlibs" Blitz3D. Важно! У библиотеки обязательно должен быть файл Имя_Библиотеки.decls - или какой-нибудь похожий с описанием всех функций нашей библиотеки (его мы обязательно кидаем в папку "userlibs", а потом и в папку нашего проекта). Файл(ы) Имя_библиотеки.dll можно кидать и в папку "bin" Blitz3D (но не нужно забывать, так же, копировать их в папку нашего проекта, при их использовании). |
Re: FAQ по B3D
половина ответов есть в справке !!
|
Re: FAQ по B3D
Цитата:
|
Re: FAQ по B3D
Цитата:
|
Re: FAQ по B3D
Цитата:
http://oldkorvet.narod.ru/1.html Кстати, смотрите мои Чаво ниже(выше - как у вас настройки) - добавил еще немного... |
Re: FAQ по B3D
Цитата:
|
Re: FAQ по B3D
MoKa, 1.8x корректо скалил, поворачивал, перемещал текстуру в не зависимости от места вызова соотвествующей команды.
ЗЫ. А что за странная моде пошла на удаление текстуры, нанесенной на бъект, кто нибудь объяснит мне пользу от сего действия? |
Re: FAQ по B3D
Цитата:
Когда текстура наносится на объект, зоздается браш с этой текстурой. Если не нужно больше совершать манипуляции с текстурой - ее нужно удалить. Я проверял - память действительно освобождалась. |
Re: FAQ по B3D
Оформляйте, пожалуйста, свои вопросы и ответы так:
Вопрос: Какая польза от удаления текстуры, нанесенной на бъект? Ответ: Освобождение памяти. Когда текстура наносится на объект, создается (модефицируется) браш с этой текстурой. Если не нужно больше совершать манипуляции с текстурой - ее нужно удалить. От этого действительно освобождается память. |
Re: FAQ по B3D
LUK, Брашь не создаётся, он модифицируется.
|
Re: FAQ по B3D
Цитата:
и потом закрасить брашем нужный обьект ?? Как думаете ?? |
Re: FAQ по B3D
Вопрос: Сделал поект, скомпилировал, попытался запустить на другом компьютере, а там ошибка: "Unable to create 3D scene". Ошибка точно ни в несовместимости разрешениий - я сделал возможность смены разрешения. Может проблема в том что я использовал include и даже 2 раза?
Ответ: Точно не из-за инклудов. Такое бывает если попытаться запустить 2 проги использующие 3д режим. Например такое может быть, если запустить твою прогу всместе с 3д-максом. |
Re: FAQ по B3D
Luk: завязывай с подсматриванием. Пока на этот вопрос не так много претензий так что его можно и не относить к часто-задаваемым вопросам. Лучше ищи в поисковике наиболее распространненые вопросы и выкладывай сюда ответы, раз уж хочешь так помочь теме!
|
Re: FAQ по B3D
Ok, я просто подумал, что это достаточно серьезный вопрос и его стоит выложить здесь... вообще хотелось бы выложить по-больше постов с вопросами по-поводу ошибок в блице, т.к. это самые "сердитые" ошибки...
|
Re: FAQ по B3D
2LUK ну, смотрел тему ты плохо. потому что большинство твоих ответов\вопросов в той или иной форме уже освещены плюс много оффтопишь. однако за энтузиазм и помощь в развитии темы спасибо. пожелание: старайся отвечать на те вопросы, которые реально возникают у новичков, а не на все подрят. и больше соответствуй теме. потому что то, как поменять иконку в экзешнике - это не так уж и важно, да и способов для этого гораздо больше.
|
Re: FAQ по B3D
У меня вопрос, не хотел создовать еще темы и решил написать тут.
Вообщем я создал глоб. переменную движения мыши Global mx=MouseX() Global my=MouseY() потом эту же переменную использую в фунции по движению мышки Function cursor() HidePointer DrawImage cursor,mxьн MaskImage cursor,0,0,0 End Function вставляю эту функцию в главный цикл... и не работает :''(( А вот если в этой фунции вместо mx и my поставить MouseX() и MouseY() то все работает :dontknow: Такая же трабла с переменной нажатия кнопки мыши. :"( |
Re: FAQ по B3D
Bagration, все правильно что у тебя не работает. Ты глобально объявил 2 переменные присвоил им значения координат мыши. Теперь они ВСЕГДА одни и те же! А в главном цикле ты мышь двигаешь, координаты меняются, а ты используешь все те же переменные со старыми, не меняющимися координатами мыши.
Код:
mx=MouseX() ; берем новые(изменившиеся) координаты |
Re: FAQ по B3D
2Bagration совершенно правильно поступил, что запостил свой вопрос сюда, а не стал новый пост создавать! все бы так делали! на вопрос тебе уже ответили, добавлю только, что функция твоя будет выглядеть так:
Function cursor() mx=MouseX() ; берем новые(изменившиеся) координаты my=MouseY() DrawImage cursor,mx, my MaskImage cursor,0,0,0 End Function а команду HidePointer в цикле ставить не надо, достаточно один раз при инициализации. |
Re: FAQ по B3D
Еще забыли о MaskImage, его тоже при инициализации картинки ставишь один раз. Ну это если тебе динамически не нужно менять цвет маски=).
|
Re: FAQ по B3D
avel, учитывай, что использование за цикл больше одного раза, функции получения координат и скорости курсора - приводят к дёргам и неправельным результатам чисел.
|
Re: FAQ по B3D
У меня вопрос по FastImage, на счет команды RectsOverlap, пашет то она пашет, но увы коряво. Просто паловина изображение по x координате просто не проверяется... что делать? Или у FastImage есть свои способы проверки столкновения имеджов. ImageRectOverlap не пашет. Так как, как я понел тип изображений FastImage не поддерживается этой командой.
Заранее спасибо! |
Re: FAQ по B3D
половина... хм.. это наводит на мысль что x и y координаты- это центр имаджа.
|
Re: FAQ по B3D
Цитата:
RectsOverlap(mx,my,1,1,x,y,257,47) mx и my координаты курсора, 1,1 ширина и длина курсора, x,y коодинаты рисунка, 257,47 ширина и длина, просто с обычными имажами проблем нет, а вот FastImage... :( |
Re: FAQ по B3D
У тебя картинка похоже создана с флагом автоматического центрирования. ПОэтому у тебя координаты кортинки не в в левом верхнем углу, а в центре. Просто подставь значения правильные.
|
Часовой пояс GMT +4, время: 04:56. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot