Input...
Вобщем при создании редактора с маленькой проблемой. Загрузку и сохранение файлов решил сделать через инпут. Нажимаю клавишу сохранить (или загрузить), в определенном месте на экране (напомню, что всё это происходит в 3д режиме) должно выходить сообщение SaveTo (или LoadFrom), после чего вводишь путь файла (загружает нормально и сохраняет тоже) . Но если я после сообщения save map to ничего не напишу , и нажму ентр, то он у меня вылетает с мавом. А как сделать так, что бы после этого save map to ничего не написал и нажал ентр не вылетал он, а выводил сообщение типа: " Enter file name", и дальше продолжаешь работу.
Знаю что это делается через команду RunTimeError, но больше ничего. ПОдскажите.:) |
Ответ: Input...
a$=Input("save map to:")
While Len(a$)=0 Print "Неправильно ты сохраняешь" a$=Input("Куда сохранить то?") Wend RuntimeError прерывает работу программы и выводит сообщение. Твои знания не глубоки. |
Ответ: Input...
Да, вот ещё вопрос. Когда я нажимаю несколько на клавишу сохранения , то после первого раза выхода сообщения "save map to:", выходит второй раз.
Например: F6, "save map to:", набираю путь сохранения, нажимаю ентр, сново выходит этоже сообщение "save map to:". То есть сколько раз нажму столько раз впоследствии оно и выйдит. Как это исключить? |
Ответ: Input...
Телепат в отпуске, а мои телепатические способности оставляют желать лучшего! Чтоб найти ошибку нужен код.
Скорее всего дело в логической ошибке. Допустим, есть переменная filesave, которая равна 1 пока идет набор имени файла на сохранение, а после нажатия клавиши <Enter>, ты забываешь ее обнулить. Или же сохранение идет в каком-нибудь цикле, который начинается выводом фразы "Input save path", а выход из цикла не предусмотрен. |
Ответ: 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 |
Ответ: Input...
Здесь все в порядке.
И, пардон, сразу не разобрался. Если несколько раз нажать кнопку, естественно, получится несколько событий KeyHit(64). Я думаю этого можно избегнуть если в конце блока сохранения поставить команду FlushKeys(). Эта команда чистит все "события" получаемые от клавиатуры. |
Ответ: Input...
вот ещё один вопрос. ЗАнялся процессом наложением текстур я.
вот кодик Код:
Function UpdateBlock() Код:
KeyHit(18) Then EntityTexture b\model,b\texture) программа вылетает. То есть: создаю кубик, пикаю на него, жму клавиши выборо текстур, всё нормально, (у меня 3 текстуры ) если в пикнутом состоянии объект находится, и при переключении диапозон текстур выходит за 3 или за 1(т.е. 0,-1 и т.д) то он вылетает. Так вот как сделать что бы он у меня не вылетал, а только предупреждал что такой текстуты нет. |
Ответ: Input...
Я знаю , что эту ахинею никто не читал.
Вобщем покапался я и нашёл такую команду FileType. Т.е что мне нужно... Мне нужно что бы если фаил с текстурой есть, то загружать, если нет его , то вывести сообщение об отсутствии файла, и дальше продолжать работу. Вот это надо поставить в этом коде: 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 |
Ответ: Input...
Насколько я понял твою проблему, все куда проще.
Если загрузить несуществующую текстуру, значение переменной в которую происходила загрузка останется равным нулю. То есть надо просто проверить, как-нибудь вроде: Код:
alfa=LoadTexture("ahineja.bmp") |
Ответ: 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 Выполняет нормально, то что я хотел. Но теперь как дальше продолжить работу, если это сообщение остаётся только на чёрном фоне. Т.Е. это должно быть так : если такой текстуры нет , то вывести на экран об отсутствии текстуры, затекстурировать модель существующей тестурой, и чере несколько секунд убрать сообщение об отсутствии текстуры, и продолжить работу. |
Ответ: Input...
Вот пример. Думаю дальше разберешься. Если не разберешься, то таймер в помощь...
Код:
Type TText |
Ответ: Input...
Да, и ещё , почему при текстурации объектов какие текстуры я им наложил такие и на них, а при загргрузке этой же карты текстуры на всех объектах одинаковы?
|
Ответ: Input...
Вот это мягко говоря плохо.
Код:
Insert m Before First TText ЗЫ. Могу свою дать консолько, потыкать. |
Ответ: Input...
Цитата:
|
Ответ: Input...
Эээ , лучше подскажите как кнопками правильно менять текстуры на объектах исходя из этого кода ...
Буду невероятно признателен |
Часовой пояс GMT +4, время: 23:25. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot