 |
Xors3D Графический движок с поддержкой DirectX9 |
07.06.2013, 22:32
|
#646
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,030
Написано 2,316 полезных сообщений (для 5,355 пользователей)
|
Ответ: Xors3D
Как пользоваться скриптами хорса?
Старые примеры неактуальны. Нового ничего найти не удалось.
P. S. Использую Blitz3D.
|
(Offline)
|
|
07.06.2013, 23:16
|
#647
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,030
Написано 2,316 полезных сообщений (для 5,355 пользователей)
|
Ответ: Xors3D
Делаю скрипт так:
int main()
{
int cube = xCreateCube (int);
}
Подключаю так:
Include "xors3d.bb"
Include "xorsbind.bb"
xGraphics3D(800, 600, 32, False, True)
loadCub = xLoadScript("load.txt")
camera = xCreateCamera()
light = xCreateLight()
xExecuteScript(loadCub,"main")
xPositionEntity(cube, 0, 0, 10)
While Not xKeyHit(1)
xTurnEntity(cube, 0.1, 0.1, 0.1)
xRenderWorld()
xText(10, 10, "FPS: " + xGetFPS())
xFlip()
Wend
End
Получаю так:
Что я делаю не так?
|
(Offline)
|
|
07.06.2013, 23:34
|
#648
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Xors3D
Сообщение от Arton
Делаю скрипт так:
int main()
{
int cube = xCreateCube (int);
}
Подключаю так:
Include "xors3d.bb"
Include "xorsbind.bb"
xGraphics3D(800, 600, 32, False, True)
loadCub = xLoadScript("load.txt")
camera = xCreateCamera()
light = xCreateLight()
xExecuteScript(loadCub,"main")
xPositionEntity(cube, 0, 0, 10)
While Not xKeyHit(1)
xTurnEntity(cube, 0.1, 0.1, 0.1)
xRenderWorld()
xText(10, 10, "FPS: " + xGetFPS())
xFlip()
Wend
End
Получаю так:
Что я делаю не так?
|
Не знаю на каком языке скрипт, но по идее он должен был вернуть хэндл созданного куба и потом int это не переменная а тип данных какой смысл писать так "xCreateCube (int);"?
ну и в самом тексте блитца, откуда он блитц поймет что куб это вот тот куб созданный внутри скрипта?
|
(Offline)
|
|
07.06.2013, 23:42
|
#649
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,030
Написано 2,316 полезных сообщений (для 5,355 пользователей)
|
Ответ: Xors3D
Сообщение от dsd
Не знаю на каком языке скрипт, но по идее он должен был вернуть хэндл созданного куба и потом int это не переменная а тип данных какой смысл писать так "xCreateCube (int);"?
ну и в самом тексте блитца, откуда он блитц поймет что куб это вот тот куб созданный внутри скрипта?
|
Скрипты хорса основаны на AngelScript, "xCreateCube (int);" написал потому-что так объявляется функция для скриптов. То бишь:
xRegisterFunction("int xCreateCube(int)", xGetFunctionAddress("xCreateCube")) - заготовлено в файл специально для блица. И так было в старых примерах.
"C" синтаксис я не знаю.
|
(Offline)
|
|
07.06.2013, 23:49
|
#650
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Xors3D
Сообщение от Arton
"C" синтаксис я не знаю.
|
Ну так почитай, все вопросы и уйдут.
|
(Offline)
|
|
07.06.2013, 23:52
|
#651
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,030
Написано 2,316 полезных сообщений (для 5,355 пользователей)
|
Ответ: Xors3D
Сообщение от dsd
Ну так почитай, все вопросы и уйдут.
|
Не поможет.
Вот старый пример:
Include "headers\blitz3d\xorsbind.bb"
script = xLoadScript("pssm.txt")
xExecuteScript(script)
Это код блица, ничего не объявляется, получается движок сам всё находит.
В скрипте было следующие:

float CurveValue(float newvalue, float oldvalue, int increments)
{
if(increments > 1) oldvalue = oldvalue - (oldvalue - newvalue) / increments;
if(increments <= 1) oldvalue = newvalue;
return oldvalue;
}
int main()
{
// инициализация
string path = "PSSM Demo via xScript";
xAppTitle(path);
xGraphics3D(800, 600, 32, 0, 1);
xJoyDown(0, 1);
xCreateDSS(1024, 1024);
xSetTextureFiltering(6);
xAntiAlias(1);
// камера
int cam = xCreateCamera(0);
xPositionEntity(cam, 0, 20, -210, 1);
xCameraClsColor(cam, 190, 190, 190);
xCameraRange(cam, 0.5, 2000);
// инициализация PSSM
xPSSMInit(cam, "media\\PSSM.fx", 1024);
xPSSMLightTarget(0, -20, 0);
xPSSMLightZoom(0.1);
// мир
path = "media\\city.b3d";
int test = xLoadMesh(path, 0);
xPSSMSetEntity(test, 1, 1);
// пост-эффект для PSSM
int poly = xCreatePostEffectPoly(cam, 1);
int tex = xCreateTexture(800, 600, 1, 1);
int tex2 = xCreateTexture(800, 600, 1, 1);
int brushedmetal = xLoadFXFile("media\\Shadow_postEffect.fx");
xSetEntityEffect(poly, brushedmetal);
xSetEffectTechnique(poly, "Diffuse");
xSetEffectMatrixSemantic(poly, "MatWorldViewProj", 1);
xSetEffectTexture(poly, "tDiffuse", tex, 0);
xSetEffectTexture(poly, "tEmissive", tex2, 0);
// главный цикл
while(!xKeyDown(1))
{
// управление камерой
if(xKeyDown(17)) xMoveEntity(cam, 0, 0, 1, 0);
if(xKeyDown(31)) xMoveEntity(cam, 0, 0, -1, 0);
if(xKeyDown(30)) xMoveEntity(cam, -1, 0, 0, 0);
if(xKeyDown(32)) xMoveEntity(cam, 1, 0, 0, 0);
float mxs = CurveValue(xMouseXSpeed() * 0.5, mxs, 4.5);
float mys = CurveValue(xMouseYSpeed() * 0.5, mys, 4.5);
float camxa = camxa - mxs % 360;
float camya = camya + mys;
if(camya < -89) camya = -89;
if(camya > 89) camya = 89;
xMoveMouse(400,300);
xRotateEntity(cam, camya, camxa, 0, 0);
// обновление позиции и вращения источника света
xUpdateWorld(1.0);
xPSSMLightSource(-600, 450, 600);
float fLightRotation = float(timeGetTime() / 1500.0);
xPSSMLightSource(-600 * sin(fLightRotation), 450, 600 * cos(fLightRotation));
// рендер мира
xPSSMRender(cam, 0.85, 4, tex);
xSetBuffer(xTextureBuffer(tex2, 0));
xRenderWorld(1.0);
xSetBuffer(xBackBuffer());
xRenderPostEffect(poly);
// вывод на экран
xText(10, 10, "FPS: " + xGetFPS(), 0, 0);
xFlip();
}
return 1;
}
|
(Offline)
|
|
07.06.2013, 23:58
|
#652
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Xors3D
Так в скрипте то нормальный текст понятный хорсу из которого получается правильная последовательность команд не приводящая к фэйлу.
Там по сути из блитца только сам скрипт запускался, а дальше уже все шло внутри скрипта. А у тебя же наоборот все в блитце, а скрипт создает какой то куб, чей хэндл не присваивается никакой переменной. И потом внезапно ты в блитце пытаешься манипулировать объектом cube который не понятно что для блитца.
|
(Offline)
|
|
08.06.2013, 00:17
|
#653
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,030
Написано 2,316 полезных сообщений (для 5,355 пользователей)
|
Ответ: Xors3D
Блиц:
Include "xors3d.bb"
Include "xorsbind.bb"
loadCub = xLoadScript("load2.txt")
xExecuteScript(loadCub,"main")
Всё остальное запихал в скрипт:
int main()
{
xGraphics3D(800, 600, 32, False, True);
int camera = xCreateCamera(int);
int light = xCreateLight(int);
int Cube = xCreateCube(int);
xPositionEntity(cube, 0, 0, 10);
{
While Not xKeyHit(1);
xTurnEntity(cube, 0.1, 0.1, 0.1);
xRenderWorld();
xText(10, 10, "FPS: " + xGetFPS());
xFlip(xRenderWorld);
Wend;
End;
}
return 1;
}
Не понимаю.
|
(Offline)
|
|
08.06.2013, 00:25
|
#654
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Xors3D
int main() {
xGraphics3D(800, 600, 32, False, True);
int camera = xCreateCamera(); int light = xCreateLight();
int Cube = xCreateCube(); xPositionEntity(Сube, 0, 0, 10);
{ While Not xKeyHit(1); xTurnEntity(Сube, 0.1, 0.1, 0.1); xRenderWorld(); xText(10, 10, "FPS: " + xGetFPS()); xFlip(); Wend; End; } return 1; }
xCreateCamera(int) такого вида запись в справке всего лишь говорит о том какого типа переменую или число писать в аргументе функции.
Просто возьми и выучи синтаксис языка скрипта, это не сложней чем бейсик.
|
(Offline)
|
|
08.06.2013, 12:09
|
#655
|
Безумец
Регистрация: 14.11.2012
Сообщений: 63
Написано 9 полезных сообщений (для 13 пользователей)
|
Ответ: Xors3D
Артон, кажется, я начал понимать: тебе надо писать всю "игру" в скрипте Хорса. А в блице- только пару строк, запускающие этот скрипт. То есть ты променял Basic на C++ ))))
PS: если я до конца проснулся...
|
(Offline)
|
|
08.06.2013, 16:25
|
#656
|
Бывалый
Регистрация: 17.12.2011
Сообщений: 862
Написано 443 полезных сообщений (для 1,133 пользователей)
|
Ответ: Xors3D
Сообщение от Arton
Блиц:
[code]
Не понимаю.
|
Ну строй по образу и подобию
Я вот сейчас трезво на построения скрипта смотрю, и твой отличается
Ну например;
Типа правильный да?
while(!xKeyDown(1))
{
// управление камерой
if(xKeyDown(17)) xMoveEntity(cam, 0, 0, 1, 0);......
// обновление позиции и вращения источника света
xUpdateWorld(1.0);
xPSSMLightSource(-600, 450, 600);
float fLightRotation = float(timeGetTime() / 1500.0);
xPSSMLightSource(-600 * sin(fLightRotation), 450, 600 * cos(fLightRotation));
// рендер мира
xPSSMRender(cam, 0.85, 4, tex);
xSetBuffer(xTextureBuffer(tex2, 0));
xRenderWorld(1.0);
xSetBuffer(xBackBuffer());
xRenderPostEffect(poly);
// вывод на экран
xText(10, 10, "FPS: " + xGetFPS(), 0, 0);
xFlip();
}
return 1;
}
ну и твой да?
int main()
{
xGraphics3D(800, 600, 32, False, True);.......
{
While Not xKeyHit(1);
xTurnEntity(cube, 0.1, 0.1, 0.1);
xRenderWorld();
xText(10, 10, "FPS: " + xGetFPS());
xFlip(xRenderWorld);
Wend;
End;
}
return 1;
}
Хоть я и не вижу смысла, конкретно в этих скриптах  типа компилировать лень что-ли? 
|
(Offline)
|
|
08.06.2013, 20:46
|
#657
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,030
Написано 2,316 полезных сообщений (для 5,355 пользователей)
|
Ответ: Xors3D
Всё, фтопку скрипты! Сейчас они нафиг ненужны.
Да, Wegox, я заметил свои косяки, под конец взгляд замылился и я совсем перестал понимать что пишу.
Лучше шейдерами займусь, вот это действительно полезная вещь. Так что булчане ожидайте от меня в скором времени, много тупых вопросов.
Спасибо всем кто старался помочь мне.
|
(Offline)
|
|
07.09.2013, 23:25
|
#658
|
Оператор ЭВМ
Регистрация: 04.09.2013
Сообщений: 49
Написано 30 полезных сообщений (для 126 пользователей)
|
Ответ: Xors3D
http://area.xors3d.com/
hacked by dr.m1st3r
Как так? 
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо Bullet89 за это полезное сообщение:
|
|
07.09.2013, 23:35
|
#659
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Xors3D
Sic transit gloria mundi
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
08.09.2013, 08:38
|
#660
|
Мастер
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений (для 504 пользователей)
|
Ответ: Xors3D
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Xors3d wants YOU! |
.Squid |
Xors3D |
33 |
13.01.2013 23:34 |
Xors3D для D |
johnk |
Проекты C++ |
8 |
09.08.2009 14:18 |
Xors3D for .NET? |
johnk |
C++ |
7 |
06.08.2009 09:34 |
Xors3D |
ЛысыЙ_Чук-Иванчук |
Модули для BlitzMax |
145 |
18.06.2009 21:17 |
xors3d |
NitE |
3D-программирование |
9 |
02.04.2009 22:21 |
Часовой пояс GMT +4, время: 00:08.
|