Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 17.01.2006, 23:28   #1
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Вот здесь наработки меню.

Пока что работаю над переключением режима экрана

клавишей 1,2,3,4 можно выбрать режим.
Затем жмем клавишу esc и...все работает.

NGIU я решил не использовать, по некоторым причинам

Вопросы

1) Достаточно ли этот метод хорош?
2) если нет, то как сделать лучше (оптимальнее)?

Не стоит думать что это ошибка то, что переключение 3D режимов я пишу в 2d разделе. Просто это только начальная стадия меню. Дальше будет работа в 2d.

Прошу помочь мне в данном вопросе.

Global a1=320; переменные для режимов графики 
Global a2=240
Global a3=32
Global a4=2


Graphics3D a1,a2,a3,a4; то, что переключать надо

fnmainmenu()

;--------------------------------------------------------------------------------------------------------
;Эти строки не важны. Мы не будем их использовать или изменять!!!!!!!!!!!!!
Global mesh_3ds=LoadAnimMesh( "makbot\mak_robotic.3ds" );anim seq 0
Global mesh_x=LoadAnimMesh( "makbot\mak_robotic.x" )	;anim seq 0
Global pivot=CreatePivot()
;Эти строки не важны. Мы не будем их использовать или изменять!!!!!!!!!!!!!
;--------------------------------------------------------------------------------------------------------

fnLoadscene(); это просто для проверки, что меню "пашет"
;ЦИКЛ!!!!!!!!!!!!!!!
While Not KeyHit(1)



fnfignya(); это просто для проверки, что меню "пашет"
UpdateWorld
RenderWorld
Flip
	
Wend
;ЦИКЛ!!!!!!!!!!!!!!!

End

Function fnmainmenu()
 fon=LoadImage("graphics\mainFont.jpg") 
DrawImage fon,0,0


Repeat

If KeyHit (2)=True; если нажали клавишу 1
ClearWorld; очистим мир от зла
a1=640; режим
a2=480
a3=32
a4=2
Graphics3D a1,a2,a3,a4; меняем графу
End If 


If KeyHit (3)=True; если нажали клавишу 2
ClearWorld
a1=800
a2=600
a3=32
a4=2
Graphics3D a1,a2,a3,a4; меняем графу
End If 

If KeyHit (4)=True; если нажали клавишу 3
ClearWorld
a1=1024
a2=768
a3=32
a4=2
Graphics3D a1,a2,a3,a4; меняем графу
End If 



Flip
RenderWorld
Until KeyHit(1)
End Function


;-------------------------------------------------------------------------------------------------------
;Эти функции не важны. Мы не будем их использовать или изменять!!!!!!!!!!!!!
Function fnLoadscene()
LoadAnimSeq mesh_3ds,"makbot\mak_running.3ds"	;anim seq 1
PositionEntity mesh_3ds,-15,-15,0
LoadAnimSeq mesh_x,"makbot\mak_running.x" ;anim seq 1
PositionEntity mesh_x,+15,-15,0
cam=CreateCamera( pivot )
PositionEntity cam,0,0,-100
lit=CreateLight()
RotateEntity lit,45,45,0
Animate mesh_3ds,2;start ping-pong anims...
Animate mesh_x, 2
trans=10
End Function
Function fnfignya()
If KeyHit(57)
trans=10-trans
EndIf
If KeyDown(28)
If AnimSeq(mesh_3ds)=0 Animate mesh_3ds,1,.5,1,trans
If AnimSeq(mesh_x )=0 Animate mesh_x, 1,.5,1,trans
Else
If AnimSeq(mesh_3ds)=1 Animate mesh_3ds,2,1,0,trans
If AnimSeq(mesh_x )=1 Animate mesh_x ,2,1,0,trans
EndIf
If KeyDown(30) MoveEntity cam,0,0,10
If KeyDown(44) MoveEntity cam,0,0,-10
If KeyDown(203) TurnEntity pivot,0,3,0
If KeyDown(205) TurnEntity pivot,0,-3,0
End Function 
;Эти функции не важны. Мы не будем их использовать или изменять!!!!!!!!!!!!!
;--------------------------------------------------------------------------------------------------------
(Offline)
 
Ответить с цитированием
Старый 17.01.2006, 23:35   #2
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
есть либа, причем очень хорошая... создать можно гуи как в windows

смотреть тут: http://community.boolean.name/index.php?showtopic=13
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 17.01.2006, 23:51   #3
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Originally posted by SubZer0@Jan 17 2006, 10:35 PM
есть либа, причем очень хорошая... создать можно гуи как в windows

смотреть тут: http://community.boolean.name/index.php?showtopic=13

К сожалению ссылка не работает на либу!

А как моё меню?
Стоит дорабатывать? Изменить что? А ссылка битая!(
(Offline)
 
Ответить с цитированием
Старый 18.01.2006, 00:11   #4
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
подправил ссылу...


я наверное неправильно тебя понял... посмотри либу, может тебе такое пригодится...
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Старый 18.01.2006, 00:17   #5
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Программа наверное супер! Но у меня example ее не запускается. Говорит, что фукнция ненайдена. Ну да ладно! У меня есть NGui

Но я не черз ГУИ а средствами блиц хочу!

2SubZer0

Ну как мой примерчик? мне очень важно знать мнение того, насколько он плох, и что нужно править? (упоси боже править все)
(Offline)
 
Ответить с цитированием
Старый 18.01.2006, 01:45   #6
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
ДА. я бы рекомендовал для игры NGUI.
Хотя, думаю, разобраться в нём будет сложновато (но не проще чем в других версиях ГУИ).

Не совсем корректно выражение:
Но я не черз ГУИ а средствами блиц хочу!
Все перечисленные здесь GUI на сколько мне известно полностью сконструированы на б3д (правда, alphaGUI имеет внешний редактор).
Или подразумевается - ты не хочешь зраниь установки ГУИ в отдельном файле?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 18.01.2006, 12:51   #7
Платон
Нуждающийся
 
Регистрация: 09.11.2005
Сообщений: 69
Написано одно полезное сообщение
Я бы посоветовал сделать все типами.
Тип кнопка
Тип скроллер
Тип флажок
Тип экран

потом описать их, причем функции обновления кнопок и про. гаджетов должны возвращать ИД(идентификационный номер) того гаджета который был активирован.

Все эти гаджеты размещаются в спец. группах - экранах.

Делаешь функцию обновления экрана, параметров которой евляется указатель на экран. Она будет обновлять все гаджеты которые расположены на этом экране.

А сам цикл меню можно при этом организовать так
MainEvent=MM_MAINSCREEN
;.....................................
;проверка переменной главного события
Select MainEvent
;если произошло событие - нажата кнопка "новая игра" главного экрана
;то обновляем экран с выбором сложности
	Case MM_NEWGAME
 event=UpdateScreen(ScreenChooseGame);обновление экрана выбора сложности
 If event Then
 	MainEvent=event
 End If
;Если произошло событие - нажата кнопка "опции" главного экрана
;То обновляем экран опций из которого можно выйти в главный экран
;кнопкой "Назад", при этом произойдет событие MM_MAINSCREEN
;которое вернет нас в главный экран
	Case MM_OPTIONS
 event=UpdateScreen(ScreenOptions);обновление экрана опций
 If event Then
 	MainEvent=event
 End If
;Ну а есл мы нажади кнопку "выход", то соответственно выполняется комманда выхода
	Case MM_QUIT
 End
;.........................................
;По умолчанию переменная события стоит на событии обновления главного
;экрана. На главном экране расположены к примеру кнопки "Новая игра"
;"опции" и "выход", соответственно к ним прикреплены соответствующие события
	Case MM_MAINSCREEN
 event=UpdateScreen(ScreenMainScreen)
 If event Then
 	MainEvent=event
 End If
End Select
Заранее описав константы событий(ИД гаджетов) можно переходить с одного экрана на другой и т.п.
Вобщем примерно так.
Если что непонятно - спрашивай.
(Offline)
 
Ответить с цитированием
Старый 18.01.2006, 14:36   #8
Платон
Нуждающийся
 
Регистрация: 09.11.2005
Сообщений: 69
Написано одно полезное сообщение
Вот, нарыл наконец-то исходник по работе с кнопками.
За орфографические ошибки, если есть, звиняюсь заранее - писал давно, неграмотный был
Тут все раскоментированно, думаю понятно будет )
Graphics 640,480,16,2
SetBuffer BackBuffer()

SetFont(LoadFont("Arial Cyr",22))

Global MX=0,MY=0,Mdown1=False

Function UpdateMouse()
	MX=MouseX()
	MY=MouseY()
	MDown1=MouseDown(1)
End Function

;тип кнопка
Type TButtons
;позиция начала и позиция конца
	Field x,y,x2,y2
;текст кнопки
	Field Title$
;ИД номер или номер события закрепленного за этой нопкой
	Field id
;группа или экран к которому относится эта кнопка
	Field group
;цвет текста кнопки(нужно для эффектов) 
	Field col
;переменная фокуса, нужна чтобы кнопка срабатывала только после отжатия.
;Например нажал на кнопку и передумал - просто неотжимая кнопку убрать
;с нее указатель мыши, и она не сработает.
	Field focuse
End Type

;функция для создания новой кнопки. Тип функции указываем как тип Кнопка, так как мы будем возвращать обьект кнопка с таким типом
;параметры функции:
;номер события или ИД номер
;Текст кнопки
;позиция на экране
;группа(или экран) к которой(ому) будет относиться кнопка
Function NewButton.TButtons(id,Title$,x,y,group=0)
;создаем новый объект кнопка в памяти
	But.TButtons=New TButtons
;инициализируем его поля
	But\id=id
	But\Title=Title
	But\x=x
	But\y=y
	but\group=group
	but\col=0
	but\focuse=False
;позиция конца отсчитывается от позиции начала и зависит от длины текста кнопки
	But\x2=x+StringWidth(title)
	But\y2=y+StringHeight(title)
;возвращаем обьект из функции
;Нужно например для работы с индивидуальной кнопкой
	Return but
End Function

;функция обновления кнопок
;Параметры функции:
;группа (или экран) кнопок которую(ый) надо обновить.
;По умолчанию эта нулевая группа.
Function UpdateButtons(group=0)
;переменная нужная для хранения результата обновления кнопок.
;Нужна для того чтобы результат можно было возвратить в конце функции, не прервав
;обновления кнопок
	Local out=0
;перебираем весь список кнопок
	For But.TButtons=Each TButtons
	;если у текущей кнопки из списка группа равна указанной в параметрах функции
	;то обновляем ее
 If but\group=group Then
 ;проверяем позицию указателя мыши и позицию кнопки
 ;Если указатель мыши дальше чем начало кнопки и ближе чем конец кнопки
 ;(вспомним что координаты начинаются с левого верхнего угла)
 ;то указатель находится над кнопкой
 	If (MX>But\x) And (MX<but\x2) And (MY>but\y) And (MY<but\y2) Then
 	;далее проверяем, если при этом кнопка мыши нажата(т.е мы нажали на кнопку)
  If Mdown1 Then
  ;активируем флаг кнопки - фокус
  ;раз мы на нее нажали, значит мы сфокусировались :) на этой кнопке и
  ;надо ей это сообщить
  	But\Focuse=True
  Else
  ;если кнопку отжали или еще не нажимали, то
  ;увеличиваем "цвет"(но правильнее сказать - интенсивность цвета)
  ;Увеличиваться он будет до тех пор пока любой из цветовых компонент
  ;не достигнет максимального - 255.
  	If but\col<155 Then but\col=but\col+5
  ;если на кнопке был установлен фокус (тоесть мы ее уже нажимали)
  	If But\focuse Then
  	;записываем ИД номер кнопки в переменную результата
   out=but\id
  	;сбрасываем цвет, иначе после перехода на другой экран
  	;(обновления другой группы кнопок), у этой кнопки останется 
  	;цвет активации, и мы это увидим начав обновлять эту кнопку заного
   but\col=0
  	End If
  End If
 	Else
 	;ну а если мы убрали мышь с кнопки то обнуляем фокус кнопки
 	;тем самым говоря что мы не хотим чтобы кнопка сработала, или просто убрали
  But\Focuse=False
 	;уменьшаем "цвет" кнопки до нуля, создавая эффект плавного гашения
  If but\col>0 Then but\col=but\col-5
 	End If
 ;а пока все эти события происходят или не происходят
 ;устанавливаем цвет по умолчанию и прорисовываем текст
 ;кнопки. Сюда можно так же добавить прорисовку картинки кнопки
 ; и проч. мишуры :)
 	Color 100+but\col,100+but\col,100
 	Text but\x,but\y,but\title
 End If
	Next
;ну и когда бы пробежались по списку, возвращаем из функции результат
;Если бы мы сразу (как только произошла активация кнопки) возвращали результат
;то оператор return вышел ыб из функции не давая возможности нарисоваться и обновиться
; остальным кнопкам, которые находятся дальше по списку
	Return out
End Function

;Функция обновления индивидуальной кнопки, точно такая же как и предыдущая, 
;только пробегаться по списку тут мы не будем, ведь у нас уже есть ссылка на нужную кнопку,
;передаваемая через параметры функции. Поэтому рассматривать я ее не буду.
Function UpdateButton(but.TButtons)
	Local out=0
	If MX>But\x And MX<but\x2 And MY>but\y And MY<but\y2 Then
 	If Mdown1 Then
  But\Focuse=True
 	Else
  If but\col<155 Then but\col=but\col+5
  If But\focuse Then
  	but\col=0
  	but\focuse=False
  	Return True
  End If
 	End If
	Else
 but\focuse=False
 If but\col>0 Then but\col=but\col-5
	End If
	Color 100+but\col,100+but\col,100
	Text but\x,but\y,but\title
	Return False
End Function

;ну а эта функция-заглушка, вместо нее может быть что угодно.
Function DrawEnything()
	Color 100,100,100
	Rect 10,10,615,400,0
End Function

;Здесь идуду константы событий или ИД номера кнопок.
Const MM_MAIN=0;главное событие, когда обновляются все кнопки нулевой группы
Const MM_NEWGAME=1;событие обновления экрана "новая игра"
Const MM_OPTIONS=2;событие обновления экрана "опции"
Const MM_ABOUT=3;событие обновления экрана "о программе"
Const MM_QUIT=4;событие выхода из программы
  	
;Почему у следующих констант такие странные номера?
;Потому что эти события описаные этими константами относятся к событию вызова экрана опции
;у которого номер события равен 2. И воспользовавшись структурой многоуровнего списка
;( Word все знаем?:) ) я поименовал эти константы как подконстанты. Так удобнее.
Const MM_GRAPHS=21;событие обновления подэкрана графика, экрана опции
Const MM_SOUNDS=22;событие обновления подэкрана звуки, экрана опции
Const MM_CTRLS=23;событие обновления подэкрана управление, экрана опции
;##########################################
;Пришло время создавать наши кнопки
;Думаю из названия понятно какие кнопки к чему относятся
;Обратите внимание на кнопки которым проставлены номера групп (последний параметр)
NewButton(MM_NEWGAME,"Новая игра",60,200)
NewButton(MM_OPTIONS,"Опции",60,220)
	;эта кнопка не будет обновляться в главном экране
;так как ее группа 2, а главный экран это нулевая группа
;(которую кстате не обязательно указывать так как она по умолчанию)
	NewButton(MM_GRAPHS,"Графика",200,200,2)
	;эта кнопка тоже
	NewButton(MM_SOUNDS,"Звуки",200,220,2)
	;и эта кнопка
	NewButton(MM_CTRLS,"Управление",200,240,2)
NewButton(MM_ABOUT,"О программе",60,240)
NewButton(MM_QUIT,"Выход",60,260)

;кнопка назад будет использоватся в нескольких экранах и не относиться
;к конкретной группе кнопок, потому поставим ей группу номер 1, еще никем не использованную.
;А так же сохраняем эту кнопку в переменной, для того чтобы обновлять ее отдельно от остальных кнопок
;ИД номер (или номер события) в таком случае не имеет значения, лишь бы он был отличен от нуля
;Ведь как известно булевское значение true это значение отличное от нуля, а false это нуль.
;А нам нужна только проверка - была нажата эта кнопкак или нет.
ButBack.TButtons=NewButton(1,"Назад",560,440,1)
;##########################################
;ну и гоавный цикл конечно, где находиться основная логика работы меню
While Not KeyDown(1)
Cls
;читаем мышь, чтоб знать где находиться указатель мыши. Кстате
;в эту функцию можно поместить прорисовку собственного указателя
;но при этом е следует поместить в самом конце, чтобы указатель прорисовывался
;самым последним и был поверх всех кнопок.
UpdateMouse()

;Тут мы проверям переменную главных событий
Select MainEvent
;по умолчанию функция обновления кнопок возвращает нуль, поэтому
;мы "повесили" событие обновления главного экрана на константу равную нулю
	Case MM_MAIN
	;обновляем все кнопки нулевой группы, соответственно на экране
	;будут рисоваться только они, и если мы нажали на какую-нибудь
	;кнопку то вункция возвратить значение отличное от нуля, и равное
	;значению ИД номера прикрепленного к этой кнопке.
 MainEvent=UpdateButtons()
;если это значение равно константе обновления экрана "новая игра"
	Case MM_NEWGAME
	;рисуем что-нибудь. Это что-нибудь может быть еще одним экраном
	;(группой кнопок) с выбором уровня сложности. Достаточно создать
	;дополнительную константу хранящуюю номер этого события, создать
	;кнопки с нужным текстом и нужно группой и добавить обработку
	;сюда, в новую ветку оператора select
 DrawEnything()
	;обновляем кнопку "назад", чтобы можно было возвратиться обратно.
	;в данном случае мы возвращаемся обратно на главный экран (ведь
	;от него мы ушли всего на один экран). Для этого достаточно обнулить
	;или присвоить значение константы события обновления главного экрана
	;переменной хранящей все происходящие события. При этом оператор
	;Select сам перейдет к выполению нужно ветки.
 If UpdateButton(ButBack) Then MainEvent=MM_MAIN
;если произошло событие - нажата кнопка "опции"
	Case MM_OPTIONS
	;обновляем кнопки принадлежащие группе (экрану) "опции"
	;и результат записываем во временную переменную.
	;Это нужно чтобы возвращаемое по умолчанию функцией обновления кнопкок
	;значение нуля, не затерло значение события хранимого переменной событий.
	;Иначе мы бы сразу возвратились на обновление главного меню, ведь нуль это
	;как-раз таки это событие
 event=UpdateButtons(MM_OPTIONS)
	;если промежуточная переменная не равна нулю, тоесть мы нажали на какую-то
	;кнопку на экране "опции", то мы записываем это событие.
 If event Then 
 	MainEvent=event
 End If
	;так же не забываем обновлять кнопку "назад"
 If UpdateButton(ButBack) Then MainEvent=MM_MAIN
;тут аналогично экрану "новая игра"
	Case MM_ABOUT
 DrawEnything()
 If UpdateButton(ButBack) Then MainEvent=MM_MAIN
;если происходит событие - нажата кнопка "Выход"
;вызываем оператор exit который выходит из главного цикла
;и таким образом завершается работа меню
	Case MM_QUIT
 Exit
;аналогично экрану "новая игра"
	Case MM_GRAPHS
 	DrawEnything()
 	If UpdateButton(ButBack) Then MainEvent=MM_OPTIONS
;тоже самое
	Case MM_SOUNDS
 	DrawEnything()
 	If UpdateButton(ButBack) Then MainEvent=MM_OPTIONS
;ну и тут тоже
	Case MM_CTRLS
 	DrawEnything()
 	If UpdateButton(ButBack) Then MainEvent=MM_OPTIONS
End Select

Flip
Wend
End
Если будет время, то накатаю про остальную работу с меню.
(Offline)
 
Ответить с цитированием
Старый 18.01.2006, 16:32   #9
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
to platon:
ВЕЩЬ
(Offline)
 
Ответить с цитированием
Старый 18.01.2006, 16:38   #10
jimon
 
Сообщений: n/a
а что собствено мешало ето самому написать ?
 
Ответить с цитированием
Старый 18.01.2006, 17:24   #11
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Originally posted by jimon@Jan 18 2006, 03:38 PM
а что собствено мешало ето самому написать ?
Опыт, друг мой!

Буду сегодня вечером понимать и осмысливать код Платона

2Платон

Посмотрел...на вид - супер. Еще не разбирался! Но меню офигенное!

Люююди! Вы издеваетесь

)
ну как переключение режимов хоть работает! Никто его так и не оценил!
Само переключение граф. режимов плииз!
(Offline)
 
Ответить с цитированием
Старый 18.01.2006, 18:59   #12
Платон
Нуждающийся
 
Регистрация: 09.11.2005
Сообщений: 69
Написано одно полезное сообщение
2Платон
Посмотрел...на вид - супер. Еще не разбирался! Но меню офигенное!
Это не меню, это просто работа с кнопками. До меню там еще как до луны
Но это лучше чем переключать разрешение клавишами
А так - точно так же делаются скроллеры, переключатели и прочая хрень.
Я как-то пробывал писать меню, если найду исходник (у меня тут такой бардак что черт ногу сломит ) - закомментирую и на форум выложу.
(Offline)
 
Ответить с цитированием
Старый 18.01.2006, 19:35   #13
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Понятно-понятно!
Если найдешь, но будет неплохо, если выложешь (если время будет)
А так я сам постараюсь написать! Как умею, а если ступор(или проверить) то на форум! Тут я знаю, всегда помогут кодом или одскажут так, что 100% дойдет

Так и все-таки! Как мое переключение граф. режимов!? Сам принцип работы изменения графики?

боооже...ну почему никто не видит этот мой вопрос по графе!

правильно ли я так переключаю разрешение?
(Offline)
 
Ответить с цитированием
Старый 18.01.2006, 22:13   #14
jimon
 
Сообщений: n/a
fant - я же тебе подробно обяснил как работает ето
в чем проблема ?
 
Ответить с цитированием
Старый 18.01.2006, 22:40   #15
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Originally posted by jimon@Jan 18 2006, 09:13 PM
fant - я же тебе подробно обяснил как работает ето
в чем проблема ?
Выше я уже написал код по твоему подробному объяснению! Мне нужно что бы ты сказал, правильно ли я все выполнил. Т.е. правильно ли я переключаю режимы. Вот пока и все, что я хочу услышать. А если неправильно, то как и что подправить
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как программно узнать имя пункта меню который был выбран (Обычное/стандартные меню)? Richik Основной форум 5 25.05.2009 23:20
Меню... KeipL Основной форум 11 26.07.2008 22:02
Меню AndruXa Blitz3D 18 05.10.2007 21:44
Меню S2k Основной форум 1 31.08.2007 23:53


Часовой пояс GMT +4, время: 01:07.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com