forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Вопрос-Ответ (для новичков) (http://forum.boolean.name/showthread.php?t=7886)

DeeJex 12.01.2011 18:09

Ответ: Вопрос-Ответ (для новичков)
 
Винапи погугли

baton4ik 12.01.2011 19:45

Ответ: Вопрос-Ответ (для новичков)
 
Halk-DS, что б устанавливать своим играм свои иконки.
2Fake, помогут ещё разные ресхакеры

Halk-DS 12.01.2011 22:13

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Сообщение от baton4ik (Сообщение 175404)
Halk-DS, что б устанавливать своим играм свои иконки.

Дык если я понимаю, он хочет менять иконку игры в процессе игры... А не во время ее компиляции в Блитце...

moka 14.01.2011 00:23

Ответ: Вопрос-Ответ (для новичков)
 
HolyDel, some-do-men ;)
..domain

Думаю придётся написать маленьку либу, с помощью которой нужно будет получить handle окна, и затем послать сообщение окну.
Функция для сообщения DefWindowProc.
Может можно и даже без дополнительной либки в decls прописать функцию для user32.dll, но хз как с посылкой данных - тут вам нада будет уже поиграться, я не делал подобного.

Trazzy 14.01.2011 16:58

Ответ: Вопрос-Ответ (для новичков)
 
Вложений: 1
Цитата:

Сообщение от Halk-DS (Сообщение 175373)
Смахивает на излишний выпендрёж. Непредставляю зачем мне например менять картинку в WarCraft.exe

Ау, блеять!! Посмотри где ты находишься!
Раз я пишу в разделе Blitz3D, то ясное дело я имею ввиду свою гаму.. мне тоже незачем менять иконку в чужой игре.
Цитата:

Сообщение от baton4ik (Сообщение 175404)
помогут ещё разные ресхакеры

Для смены иконки экзешника - да, для смены иконки окна в рантайме - нет!

2MoKa, ссылки на msdn не рабочие.. можно об этом подробней в личку?! Если получится сделать - выложу для всех!. думаю многим будет полезно))

Кто еще не понял о чем идет речь, вот:

DeeJex 14.01.2011 23:32

Ответ: Вопрос-Ответ (для новичков)
 
http://forum.boolean.name/attachment...3&d=1173863770

cancel 16.01.2011 03:37

Ответ: Вопрос-Ответ (для новичков)
 
Приветик.
У меня проблемы с entity.
Вот у меня тип в Delphi:

Код:

type
  TPed = record
          xpos: Single;
    ypos: Single;
    zpos: Single;
    rot: Single;
    id: Integer;        // Internal ID
                Handle: Integer; // For CopyEntity etc...
    state: TPEDState;        // IDLE, WALKING, RUNNING, etc...
  end;

Сделал массив из типа
Код:

allpeds: array[0..4] of TPed;
Первый объект allpeds[0] контролирую с указательными клавишами а остальные должны сами двигаться (AI).
Первый объект нормально двигается.


Но остальные почему то набирают скорость как машины и улетают за пределы всего экрана. Ну этого мне не надо. Скорость дольжна быть тоже самой что у объекта 0.

Юзаю Blitz3DSDK.pas в Delphi. Тоже самое в Blitz3D было.

Вот куски кода без медиа.
Код:

kuup:=CreateCube;
for i:=0 to 4 do
  begin
    allpeds[i].id:=CopyEntity(Kuup);
    allpeds[i].xpos:=Random(20);
    allpeds[i].zpos:=Random(20);
    allpeds[i].ypos:=0;
    allpeds[i].rot:=Random(360);
    PositionEntity(allpeds[i].id, allpeds[i].xpos, allpeds[i].ypos, allpeds[i].zpos );
    RotateEntity(allpeds[i].id,0, allpeds[i].rot,0);
    EntityColor(allpeds[i].id, 161,195,81);
    ScaleEntity(allPeds[i].id, 1.2, 0.01, 1.2);
    EntityFX(allPeds[i].id,4+32);
    EntityTexture(allpeds[i].id, PedTex,8);
  end;


Код:

while KeyHit(1)=0 do
  begin


 

// Вот тут я их двигаю... а они улетают.

    TmpX:=TmpX+0.001;

  for i:=1 to 4 do
  begin
    MoveEntity(allPeds[i].id, TmpX,0,0);
 
  end;
   
    RenderWorld;
    UpdateWorld;

...
Flip;
  end;


Если что-то еще надо пишите.

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

moka 16.01.2011 03:43

Ответ: Вопрос-Ответ (для новичков)
 
TmpX:=TmpX+0.001; - это у тебя постоянно нарастающая переменная.
А функция MoveEntity - двигает объект.
Получается с каждым циклом ты двигаешь объект на более высокое значение, т.к. TmpX нарастает постоянно.

Напиши так:
MoveEntity(allPeds[i].id,0.1,0,0);

Или другое число, и будет в порядке.

cancel 16.01.2011 03:50

Ответ: Вопрос-Ответ (для новичков)
 
Супер. Работает.

Мне надо поспать наверное.

cancel 16.01.2011 06:37

Ответ: Вопрос-Ответ (для новичков)
 
Еще вопрос.

У меня тут простой ИИ. Когда объект доходит до установленной границы (MAX X: 30) он поворачивает назад резко.

Хотелось бы чтобы он плавно начинал поворачивать не доходя до границы .
У меня идея такая. Поскольку я знаю размеры границы, то может быть там проверять, еслй там X уже 25 то начинать поворачивать.

Должно работать.

Ну как сделать чтобы поворот быль бы плавным??
Таймером как то?

Использую RotateEntity.

Reks888 16.01.2011 12:25

Ответ: Вопрос-Ответ (для новичков)
 
В который раз бросаю
http://www.mediafire.com/?hzn2cqc9t2x4g1o
Управление мышкой, нужно жать левой мышай куда хочешь идти. Внутри кода можно регулировать скорость поворота

cancel 16.01.2011 20:28

Ответ: Вопрос-Ответ (для новичков)
 
Как то и работает.
Вместо PickedX, PickedZ использую CollisionNX, CollisionNZ.

Использую коллизию Blitz (EntityCollided).

Но как теперь объектам сказать что вот раньще границы давай поворачивать.

Я же сам не могу сказать "EntityCollided" что коллизия уже было.


Значить коллизию самому делать или я что-то не понял?

moka 16.01.2011 21:55

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

... или я что-то не понял?
Ничего ты не понял ;)
Возьми листок бумаги, и нарисуй 3 картинки, до дистанции поворота, во время перехода в дистанцию повотора, и под конец поворачивания.
Затем рядом распиши что происходит на картинках, с более математической точки зрения.
Тебе явно не хватает логического мышления в плане кода, т.к. даже по функциям полный бардак, например CollisionNX - возвращает X трёхмерного вектора плоскости коллизии. А PickedX - возвращает точку, куда камера Pick'нула.
Читай справку, учи функции, наведёшь порядок, будет в разы проще. Не спеши писать мега что-то, всё требует времени, не забегай вперёд.
Лучше бы 2D игры начал бы делать.. Там больше математики и собственного кода для игры, который больше развивает.

Ganociy 05.02.2011 22:47

Ответ: Вопрос-Ответ (для новичков)
 
Вложений: 2
Как разрешить эту проблему. Камера вблизи - не отрисовывается, вдалеке-отрисовывается.

baton4ik 05.02.2011 23:07

Ответ: Вопрос-Ответ (для новичков)
 
CameraRange(min, max)


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

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