forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Xors3D (http://forum.boolean.name/showthread.php?t=6180)

Arton 07.06.2013 22:32

Ответ: Xors3D
 
Как пользоваться скриптами хорса?

Старые примеры неактуальны. Нового ничего найти не удалось.

P. S. Использую Blitz3D.

Arton 07.06.2013 23:16

Ответ: 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

Получаю так:



Что я делаю не так?

dsd 07.06.2013 23:34

Ответ: Xors3D
 
Цитата:

Сообщение от Arton (Сообщение 260830)
Делаю скрипт так:
Код:

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);"?

ну и в самом тексте блитца, откуда он блитц поймет что куб это вот тот куб созданный внутри скрипта?

Arton 07.06.2013 23:42

Ответ: Xors3D
 
Цитата:

Сообщение от dsd (Сообщение 260832)
Не знаю на каком языке скрипт, но по идее он должен был вернуть хэндл созданного куба и потом int это не переменная а тип данных какой смысл писать так "xCreateCube (int);"?

ну и в самом тексте блитца, откуда он блитц поймет что куб это вот тот куб созданный внутри скрипта?

Скрипты хорса основаны на AngelScript, "xCreateCube (int);" написал потому-что так объявляется функция для скриптов. То бишь:
xRegisterFunction("int xCreateCube(int)", xGetFunctionAddress("xCreateCube")) - заготовлено в файл специально для блица. И так было в старых примерах.

"C" синтаксис я не знаю.

dsd 07.06.2013 23:49

Ответ: Xors3D
 
Цитата:

Сообщение от Arton (Сообщение 260833)
"C" синтаксис я не знаю.

Ну так почитай, все вопросы и уйдут.

Arton 07.06.2013 23:52

Ответ: Xors3D
 
Цитата:

Сообщение от dsd (Сообщение 260834)
Ну так почитай, все вопросы и уйдут.

Не поможет.

Вот старый пример:

Код:

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;
}


dsd 07.06.2013 23:58

Ответ: Xors3D
 
Так в скрипте то нормальный текст понятный хорсу из которого получается правильная последовательность команд не приводящая к фэйлу.

Там по сути из блитца только сам скрипт запускался, а дальше уже все шло внутри скрипта. А у тебя же наоборот все в блитце, а скрипт создает какой то куб, чей хэндл не присваивается никакой переменной. И потом внезапно ты в блитце пытаешься манипулировать объектом cube который не понятно что для блитца.

Arton 08.06.2013 00:17

Ответ: 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;
}



Не понимаю.

dsd 08.06.2013 00:25

Ответ: Xors3D
 
PHP код:

int main()
{

   
xGraphics3D(80060032FalseTrue);

   
int camera xCreateCamera();
   
int light xCreateLight();

   
int Cube xCreateCube();
   
xPositionEntity(Сube0010);

   {
    While 
Not xKeyHit(1);
     
xTurnEntity(Сube0.10.10.1);
      
xRenderWorld();
       
xText(1010"FPS: " xGetFPS());
        
xFlip();
     
Wend;
   
End;
   }
   return 
1;


xCreateCamera(int) такого вида запись в справке всего лишь говорит о том какого типа переменую или число писать в аргументе функции.

Просто возьми и выучи синтаксис языка скрипта, это не сложней чем бейсик.

Maddourufu 08.06.2013 12:09

Ответ: Xors3D
 
Артон, кажется, я начал понимать: тебе надо писать всю "игру" в скрипте Хорса. А в блице- только пару строк, запускающие этот скрипт. То есть ты променял Basic на C++ ))))
PS: если я до конца проснулся...

Wegox 08.06.2013 16:25

Ответ: Xors3D
 
Цитата:

Сообщение от Arton (Сообщение 260838)
Блиц:
[code]



Не понимаю.

Ну строй по образу и подобию:)

Я вот сейчас трезво на построения скрипта смотрю, и твой отличается:P

Ну например;
Типа правильный да?
Код:

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;
}

Хоть я и не вижу смысла, конкретно в этих скриптах:-D типа компилировать лень что-ли?:crazy:

Arton 08.06.2013 20:46

Ответ: Xors3D
 
Всё, фтопку скрипты! Сейчас они нафиг ненужны.

Да, Wegox, я заметил свои косяки, под конец взгляд замылился и я совсем перестал понимать что пишу.

Лучше шейдерами займусь, вот это действительно полезная вещь. Так что булчане ожидайте от меня в скором времени, много тупых вопросов. :-)

Спасибо всем кто старался помочь мне.

Bullet89 07.09.2013 23:25

Ответ: Xors3D
 
http://area.xors3d.com/

hacked by dr.m1st3r

Как так?:(

impersonalis 07.09.2013 23:35

Ответ: Xors3D
 
Sic transit gloria mundi

LLI.T.A.L.K.E.R. 08.09.2013 08:38

Ответ: Xors3D
 
XORS3D engine developer SQUID contact e-mail ?

http://www.blitzbasic.com/Community/...p?topic=101100


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot