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

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

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

Ответ
 
Опции темы
Старый 23.04.2010, 21:08   #1
Ganociy
Разработчик
 
Аватар для Ganociy
 
Регистрация: 02.06.2009
Адрес: Город Герой Ленинград
Сообщений: 392
Написано 33 полезных сообщений
(для 74 пользователей)
Input...

Вобщем при создании редактора с маленькой проблемой. Загрузку и сохранение файлов решил сделать через инпут. Нажимаю клавишу сохранить (или загрузить), в определенном месте на экране (напомню, что всё это происходит в 3д режиме) должно выходить сообщение SaveTo (или LoadFrom), после чего вводишь путь файла (загружает нормально и сохраняет тоже) . Но если я после сообщения save map to ничего не напишу , и нажму ентр, то он у меня вылетает с мавом. А как сделать так, что бы после этого save map to ничего не написал и нажал ентр не вылетал он, а выводил сообщение типа: " Enter file name", и дальше продолжаешь работу.
Знаю что это делается через команду RunTimeError, но больше ничего.
ПОдскажите.
__________________
Самый первый и самый великий программист - это Бог.
(Offline)
 
Ответить с цитированием
Старый 23.04.2010, 21:13   #2
Reks888
Дэвелопер
 
Аватар для Reks888
 
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений
(для 1,985 пользователей)
Ответ: Input...

a$=Input("save map to:")
While Len(a$)=0
Print "Неправильно ты сохраняешь"
a$=Input("Куда сохранить то?")
Wend

RuntimeError прерывает работу программы и выводит сообщение. Твои знания не глубоки.
__________________
>type C:\MyProj\*
www.sypiac.weebly.com
>
(Offline)
 
Ответить с цитированием
Старый 24.04.2010, 17:22   #3
Ganociy
Разработчик
 
Аватар для Ganociy
 
Регистрация: 02.06.2009
Адрес: Город Герой Ленинград
Сообщений: 392
Написано 33 полезных сообщений
(для 74 пользователей)
Ответ: Input...

Да, вот ещё вопрос. Когда я нажимаю несколько на клавишу сохранения , то после первого раза выхода сообщения "save map to:", выходит второй раз.
Например: F6, "save map to:", набираю путь сохранения, нажимаю ентр, сново выходит этоже сообщение "save map to:". То есть сколько раз нажму столько раз впоследствии оно и выйдит. Как это исключить?
__________________
Самый первый и самый великий программист - это Бог.
(Offline)
 
Ответить с цитированием
Старый 24.04.2010, 17:39   #4
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Input...

Телепат в отпуске, а мои телепатические способности оставляют желать лучшего! Чтоб найти ошибку нужен код.
Скорее всего дело в логической ошибке.
Допустим, есть переменная filesave, которая равна 1 пока идет набор имени файла на сохранение, а после нажатия клавиши <Enter>, ты забываешь ее обнулить.
Или же сохранение идет в каком-нибудь цикле, который начинается выводом фразы "Input save path", а выход из цикла не предусмотрен.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 24.04.2010, 18:11   #5
Ganociy
Разработчик
 
Аватар для Ganociy
 
Регистрация: 02.06.2009
Адрес: Город Герой Ленинград
Сообщений: 392
Написано 33 полезных сообщений
(для 74 пользователей)
Ответ: Input...

If KeyHit(64) And ts=1 Then
SetFont fontA
Sd$=Input$(" Save map to: ")
While Len(sd$)=0
Locate 400, 100
Print "Enter File Name"
Locate 100, 200
sd$=Input(" Save map to: ")
Cls
Wend
WriteMap(Sd$)
EndIf
__________________
Самый первый и самый великий программист - это Бог.
(Offline)
 
Ответить с цитированием
Старый 24.04.2010, 18:45   #6
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Input...

Здесь все в порядке.
И, пардон, сразу не разобрался. Если несколько раз нажать кнопку, естественно, получится несколько событий KeyHit(64). Я думаю этого можно избегнуть если в конце блока сохранения поставить команду FlushKeys(). Эта команда чистит все "события" получаемые от клавиатуры.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо FireOwl за это полезное сообщение:
baton4ik (24.04.2010), Reks888 (26.04.2010)
Старый 25.04.2010, 12:17   #7
Ganociy
Разработчик
 
Аватар для Ganociy
 
Регистрация: 02.06.2009
Адрес: Город Герой Ленинград
Сообщений: 392
Написано 33 полезных сообщений
(для 74 пользователей)
Ответ: Input...

вот ещё один вопрос. ЗАнялся процессом наложением текстур я.
вот кодик
Function UpdateBlock()
For b.Block=Each Block

If KeyHit(18) Then
tn=tn+1
EndIf

If KeyHit(16) Then
tn=tn-1
EndIf 

If b\picked=1 Then
b\texture=LoadTexture (tn+".jpg")
EntityTexture b\model,b\texture
EntityColor b\model,255,0,0 
EndIf

If b\picked=0 Then 
EntityColor b\model,255,255,255
EndIf 
Next
End Function 

в главном цикле 

If MouseHit (1) Then
pick=CameraPick(cam,MouseX(),MouseY())
If pick=terrain
CreateBlock(PickedX(),PickedY()+1,PickedZ(),0,0,0,1,1,1)
EndIf  

For c.Block=Each Block
If pick=c\model Then 
c\picked=1-c\picked
EndIf 
Next
EndIf
всё происходит нормально с наложение текстур. Ну мне по крайней мере нравятся. Но как всегда есть проблема. При смене текстур(If
KeyHit(18) Then
tn=tn+1
EndIf

If KeyHit(16) Then
tn=tn-1
EndIf
если текстуры такой нету(b\texture=LoadTexture (tn+".jpg")
EntityTexture b\model,b\texture) программа вылетает. То есть:
создаю кубик, пикаю на него, жму клавиши выборо текстур, всё нормально, (у меня 3 текстуры ) если в пикнутом состоянии объект находится, и при переключении диапозон текстур выходит за 3 или за 1(т.е. 0,-1 и т.д) то он вылетает.
Так вот как сделать что бы он у меня не вылетал, а только предупреждал что такой текстуты нет.
__________________
Самый первый и самый великий программист - это Бог.

Последний раз редактировалось SBJoker, 25.04.2010 в 12:32. Причина: волшебный тег code
(Offline)
 
Ответить с цитированием
Старый 25.04.2010, 17:20   #8
Ganociy
Разработчик
 
Аватар для Ganociy
 
Регистрация: 02.06.2009
Адрес: Город Герой Ленинград
Сообщений: 392
Написано 33 полезных сообщений
(для 74 пользователей)
Ответ: Input...

Я знаю , что эту ахинею никто не читал.
Вобщем покапался я и нашёл такую команду FileType.
Т.е что мне нужно... Мне нужно что бы если фаил с текстурой есть, то загружать, если нет его , то вывести сообщение об отсутствии файла, и дальше продолжать работу.
Вот это надо поставить в этом коде:
Function UpdateBlock()
For b.Block=Each Block

If KeyHit(1 Then
tn=tn+1
EndIf

If KeyHit(16) Then
tn=tn-1
EndIf

If b\picked=1 Then
b\texture=LoadTexture (tn+".jpg")
EntityTexture b\model,b\texture
EntityColor b\model,255,0,0
EndIf

If b\picked=0 Then
EntityColor b\model,255,255,255
EndIf
Next
End Function
__________________
Самый первый и самый великий программист - это Бог.
(Offline)
 
Ответить с цитированием
Старый 26.04.2010, 01:06   #9
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Input...

Насколько я понял твою проблему, все куда проще.
Если загрузить несуществующую текстуру, значение переменной в которую происходила загрузка останется равным нулю.
То есть надо просто проверить, как-нибудь вроде:
alfa=LoadTexture("ahineja.bmp")
if alfa=0 then 
   RuntimeError("Нет такого файла!!!")
else
   EntityTexture mesh,alfa
endif
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 26.04.2010, 15:41   #10
Ganociy
Разработчик
 
Аватар для Ganociy
 
Регистрация: 02.06.2009
Адрес: Город Герой Ленинград
Сообщений: 392
Написано 33 полезных сообщений
(для 74 пользователей)
Ответ: Input...

Нет, вы не поняли. Вот код

Type Block
Field Model
Field TP$
...
End Type

Function UpdateBlock()
For b.Block=Each Block

If KeyHit(1 Then
tn=tn+1
EndIf

If KeyHit(16) Then
tn=tn-1
EndIf

TP$=tn+".jpg"

If b\picked=1 Then
b\texture=LoadTexture (TP$)
EntityTexture b\model,b\texture
EntityColor b\model,255,0,0
EndIf

If b\picked=0 Then
EntityColor b\model,255,255,255
EndIf
Next
End Function

в главном цикле

If MouseHit (1) Then
pick=CameraPick(cam,MouseX(),MouseY())
If pick=terrain
CreateBlock(PickedX(),PickedY()+1,PickedZ(),0,0,0, 1,1,1)
EndIf

For c.Block=Each Block
If pick=c\model Then
c\picked=1-c\picked
EndIf
Next
EndIf

Посмотрите его внимательней...
Я впринципе реализовал возможность того, если текстуры такой нет то показать сообщение НЕТ ТЕКСТУРЫ.
Сделал я это так в функции (UpdateBlock) :
While FileType(TP$)=0 Then
Print "No texture!"
Wend

Выполняет нормально, то что я хотел. Но теперь как дальше продолжить работу, если это сообщение остаётся только на чёрном фоне.
Т.Е. это должно быть так : если такой текстуры нет , то вывести на экран об отсутствии текстуры, затекстурировать модель существующей тестурой, и чере несколько секунд убрать сообщение об отсутствии текстуры, и продолжить работу.
__________________
Самый первый и самый великий программист - это Бог.
(Offline)
 
Ответить с цитированием
Старый 26.04.2010, 16:19   #11
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Input...

Вот пример. Думаю дальше разберешься. Если не разберешься, то таймер в помощь...
Type TText 
	Field msg$
	Field amount
End Type

Function iMessage (msg$)
	m.TText = New TText
		m\msg$ = msg$
		Insert m Before First TText
End Function

Function RenderMessage (x,y)
		y = y
		y = y +FontHeight()*2
		amount = 0
	For m.TText = Each TText
		If amount<36 Then
			Text_ (x,y,m\msg$,0,0,0)
				y = y+FontHeight()+5
				amount = amount+1
			Else
				Delete m
		EndIf	 
	Next
End Function
з.ы. данная функция выводит определенное колличество сообщение (строк).
(Offline)
 
Ответить с цитированием
Старый 26.04.2010, 16:36   #12
Ganociy
Разработчик
 
Аватар для Ganociy
 
Регистрация: 02.06.2009
Адрес: Город Герой Ленинград
Сообщений: 392
Написано 33 полезных сообщений
(для 74 пользователей)
Ответ: Input...

Да, и ещё , почему при текстурации объектов какие текстуры я им наложил такие и на них, а при загргрузке этой же карты текстуры на всех объектах одинаковы?
__________________
Самый первый и самый великий программист - это Бог.
(Offline)
 
Ответить с цитированием
Старый 26.04.2010, 17:23   #13
EvilChaotic
Мастер
 
Аватар для EvilChaotic
 
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений
(для 3,006 пользователей)
Ответ: Input...

Вот это мягко говоря плохо.
		Insert m Before First TText
Сортировать строки нужно ручным способом. Хотя если тебе нужны провисы в игре перед каждым сообщением то сойдет.

ЗЫ. Могу свою дать консолько, потыкать.

__________________

EvilChaotic About
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо EvilChaotic за это полезное сообщение:
Amatsu (26.04.2010), Nex (27.04.2010)
Старый 27.04.2010, 08:17   #14
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Input...

ЗЫ. Могу свою дать консолько, потыкать.
Лучше объяснить например в аське некоторые вещи или лучше всего напиши пару статей на темы которые очень хорошо знаешь что бы у людей возникало меньше вопросов.
(Offline)
 
Ответить с цитированием
Старый 27.04.2010, 19:09   #15
Ganociy
Разработчик
 
Аватар для Ganociy
 
Регистрация: 02.06.2009
Адрес: Город Герой Ленинград
Сообщений: 392
Написано 33 полезных сообщений
(для 74 пользователей)
Ответ: Input...

Эээ , лучше подскажите как кнопками правильно менять текстуры на объектах исходя из этого кода ...
Буду невероятно признателен
__________________
Самый первый и самый великий программист - это Бог.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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