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)

Leowey 08.01.2011 23:16

Ответ: Вопрос-Ответ (для новичков)
 
[email protected]

Diffuse13 09.01.2011 13:19

Ответ: Вопрос-Ответ (для новичков)
 
optimus-stels at mail.ru мне тоже пожалуйста)))))

baton4ik 10.01.2011 00:02

Ответ: Вопрос-Ответ (для новичков)
 
Не знаю, вышлют ли вам заветный ключ, но количество спама, приходящего на ваши адреса, с каждым днём будет приумножаться. Очень неосмотрительно вот так в открытую выкладывать свои адреса. Спрятали бы под хайд или вместо "@" написали бы "at"

RegIon 10.01.2011 10:04

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

написали бы "at"
а нах так

Leowey 10.01.2011 11:24

Ответ: Вопрос-Ответ (для новичков)
 
Какой ключик??? Мы модели хотим!

Reks888 10.01.2011 16:57

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

Сообщение от Костян (Сообщение 175072)
а нах так

@=at
Тоесть [email protected] читается как Ololo at mail.ru.
Менять собачку на at в своем мыле нужно чтобы боты не нашли тебя через поисковик, что скорее всего приведет к спаму на твой почтовый ящик

SBJoker 10.01.2011 17:45

Ответ: Вопрос-Ответ (для новичков)
 
Хотя что мешает почтовым ботам воспринимать at как @ непонятно для меня ;)

HolyDel 10.01.2011 18:32

Ответ: Вопрос-Ответ (для новичков)
 
так пишите:
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 10 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

Trazzy 12.01.2011 15:32

Ответ: Вопрос-Ответ (для новичков)
 
Возможно такой вопрос уже подымался, но поиск ничего не дал.
Вот все знают как менять иконку исполняемого файла..
а как изменить иконку в запущеном окне?!

Halk-DS 12.01.2011 16:55

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

Ну а если по теме, я точно не знаю, но когда заходиш в корневую папку какойто игры видно файлы формата .ico с нарисованым значком ексешника. Думаю что мыслить надо в етом направлении и искать какуюто либу :(

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)

Ganociy 06.02.2011 00:23

Ответ: Вопрос-Ответ (для новичков)
 
нет, не камера ранч. Пробовал...

LLI.T.A.L.K.E.R. 06.02.2011 02:20

Ответ: Вопрос-Ответ (для новичков)
 
Вот похожая тема:
http://forum.boolean.name/showthread.php?t=12616

Быстрый вывод:
Цитата:

Сообщение от IGR (Сообщение 149053)
мне кажется это трабла самого блица !! Возможно блиц отсекает из рендера аниммеш когда исчезает из области видимости какойто главный пивот аниммеша по которому считается позиции и т.д. !!


SBJoker 06.02.2011 12:20

Ответ: Вопрос-Ответ (для новичков)
 
Задайте камера рэндж 0,001 - 100 и проверьте.

Ganociy 06.02.2011 16:54

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

Сообщение от SBJoker (Сообщение 178058)
Задайте камера рэндж 0,001 - 100 и проверьте.

К сожалению нет...

Ganociy 06.02.2011 17:00

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

Ganociy 06.02.2011 17:10

Ответ: Вопрос-Ответ (для новичков)
 
Ага, увидел название этой функции ->
MeshCullBox mesh,x#,y#,z#,width#,height#,depth#
А есть ли сама функция?

baton4ik 06.02.2011 17:13

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

Ganociy 06.02.2011 17:18

Ответ: Вопрос-Ответ (для новичков)
 
Она встроена в сам блиц или это отдельно написаная функция? Просто блиц не видит эту функцию.

baton4ik 06.02.2011 17:20

Ответ: Вопрос-Ответ (для новичков)
 
Обновления для кого делают? Функцию добавили в 1.97

Ganociy 06.02.2011 17:29

Ответ: Вопрос-Ответ (для новичков)
 
А если я через Xors?

baton4ik 06.02.2011 17:36

Ответ: Вопрос-Ответ (для новичков)
 
Тогда ищи аналоги в документации Xorsa. Хотя в нём, я думаю, вообще такой проблемы нету.

Ganociy 06.02.2011 17:46

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

Сообщение от baton4ik (Сообщение 178108)
Тогда ищи аналоги в документации Xorsa. Хотя в нём, я думаю, вообще такой проблемы нету.

К сожалению есть...

Ganociy 13.02.2011 21:52

Ответ: Вопрос-Ответ (для новичков)
 
Вот такая непонятка: допустим, я хочу что бы пуля летела не из центра камеры, а чуть левее. Применяю определённые параметры (смещаю на три левее). Но почему-то пуля не та как мне надо летит. При повороте камеры, её позиция (пули) меняется. Пример, чтобы знали о чём я:

Graphics3D 800,600,32,2
SetBuffer BackBuffer ()

light=CreateLight ()

cam=CreateCamera ()
PositionEntity cam,0,3,0

plane=CreatePlane ()
EntityColor plane,100,200,100

wall=CreateCube ()
PositionEntity wall,0,3,3
;ScaleEntity wall,5,3,0
EntityColor wall,200,100,100



Type Bullet
Field model
End Type

Function CreateBullet(parent%)
a.Bullet=New Bullet
a\model=CreateSphere (16)
PositionEntity a\model,EntityX(parent%)+3, EntityY(parent%), EntityZ(parent%)
RotateEntity a\model, EntityPitch(parent%), EntityYaw(parent%), EntityRoll(parent%)

;EntityParent a\model,parent%
End Function

Function UpdateBullet ()
For b.Bullet= Each Bullet
MoveEntity b\model,0,0,0.1
Next
End Function


Repeat

If MouseHit (1) Then CreateBullet(cam)


mxspd#=MouseXSpeed()*0.5
myspd#=MouseYSpeed()*0.5
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
campitch#=EntityPitch(cam)+myspd#
If campitch#<-89 Then campitch#=-89
If campitch#>89 Then campitch#=89
RotateEntity cam,campitch#,EntityYaw(cam)-mxspd#,EntityRoll(cam)

UpdateBullet ()

RenderWorld ()
Flip
Until KeyHit (1)

End

LLI.T.A.L.K.E.R. 13.02.2011 23:24

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

FireShot(Bpar\Model,Bpar\CuJIa)

Код:

Function FireShot(entity, CuJIa)
        nyJI9.nyJIu_Type = New nyJIu_Type
        nyJI9\Model = CopyEntity(Flame)
       
        PositionEntity nyJI9\Model,EntityX#(entity),EntityY#(entity),EntityZ#(entity)
        TurnEntity nyJI9\Model,EntityPitch#(entity),EntityYaw#(entity),EntityRoll#(entity)
        MoveEntity nyJI9\Model,-0.03,0.1,0.6        ; смещение вниз вправо (как-будто с правой руки)
        EntityRadius nyJI9\Model,.15
        EntityType nyJI9\Model,SolidBullet ; коллизия
       
        nyJI9\Light=CreateLight(2,nyJI9\Model) ; свечение пули
        LightRange nyJI9\Light,2.0
        PositionEntity nyJI9\Light,0,2.0,0
       
        nyJI9\Speed=0.5
        nyJI9\Active=1
        nyJIu_Bpem9=nyJIu_3ap9gka
       
        nyJI9\CuJIa=CuJIa
End Function

Код немного почистил, в отличии от моего оригинала.

В Repeat:
Код:

MoveEntity nyJI9\Model,0,0,nyJI9\Speed
; и т.д.

В [php] не отображается знак \

TpaHcJIuT! Привык я к нему и писать как бы по-русски.. Из CS 1.6 пошло так.
Bullet? :dry:
А Model это так - копипаст. Потом возможна замена на MogeJIb
С удовольствием бы писа'л на чистом Русском языке.

baton4ik 13.02.2011 23:35

Ответ: Вопрос-Ответ (для новичков)
 
Таких названий переменных я ещё не видел. Это издевательство!

Nex 14.02.2011 07:34

Ответ: Вопрос-Ответ (для новичков)
 
Блин это ппц :). Что так тяжело выучить пару англ. слов и использовать их, а не это извращение?

LLI.T.A.L.K.E.R. 14.02.2011 23:42

Ответ: Вопрос-Ответ (для новичков)
 
Новичкам! Предложение для упрощения создания мега-игры:
Пояснение новичкам:
пишите вопросы (предложения) по разделам (3D / 2D / и другие);

необязательно создавать новую тему с вашим личным вопросом (ищите похожее обсуждение);

вводите в поиске слово, о котором хотите узнать (например эффекты);

старайтесь не продолжать задавать вопросы в одной теме, не связанные с ней (например, сначала вопрос "как подсчитать", а потом "хотел бы так же узнать как найти", потом уже "а как анимировать?"

как-то так


~ ~ ~
По англ. я "ударник"...
Просто есть некое отвращение писа'ть почему-же на англ. языке.
(мне привычно читать cJIoBa Takue, думал тем кто не знает англ. язык будет легче... :-) :doof: )

A Boo6we He noHumaIO gpyrux, kak oHu He moryT npo4ecTb eToT TekcT,
no mogut prochest' ety chush'

FireOwl 17.02.2011 01:14

Ответ: Вопрос-Ответ (для новичков)
 
Прочитать это можно, но как, блин, набирать эти названия раз за разом пока программу пишешь? Да и читается не все.

З.Ы. Приведенные два примера равноценны по "чушестости", ИМХО. Оба плохо-читаемы.

Ganociy 17.02.2011 20:49

Ответ: Вопрос-Ответ (для новичков)
 
Function CreateBullet(parent%)
a.Bullet=New Bullet
a\model=CreateSphere (4)
a\pxbody=pxBodyCreateSphere (2,10)
pxBodySetRotation a\pxbody,EntityPitch#(parent%), EntityYaw#(parent%), EntityRoll#(parent%)
pxBodySetPosition a\pxbody,EntityX#(parent%), EntityY#(parent%), EntityZ#(parent%)
pxBodyAddForce(a\pxbody,0, 0, 100000, 1)
End Function

Всё таже пулька. Теперь вопрос не подскажите ли вы почему тело пульки не хочет принимать угол поворота родителя. Я что-то не так делаю (в команде pxBodySetRotation)? Позиция тела пульки соблюдается.

}{@KeR 17.02.2011 21:45

Ответ: Вопрос-Ответ (для новичков)
 
Можешь выложить весь код?

FireOwl 17.02.2011 21:54

Ответ: Вопрос-Ответ (для новичков)
 
А ты проверяешь, приняло ли тело нужный угол поворота, по направлению движения после придания ему импульса?
Не выйдет, pxBodyAddForce и ему подобные используют не относительные координаты тела а глобальные.
А угол тела там будь хоть каким.
Если хочешь послать тело в нужное направление, то придется используя данные о углах наклона родителя, вычислять силу по трем коорд. осям для AddForce. (Синусы\косинусы там всякие)

Имхо: физикс для простых пуль, которых и видно то не бывает во время выстрела - это слишком.

Ganociy 17.02.2011 22:31

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

Сообщение от FireOwl (Сообщение 179309)
А ты проверяешь, приняло ли тело нужный угол поворота, по направлению движения после придания ему импульса?
Не выйдет, pxBodyAddForce и ему подобные используют не относительные координаты тела а глобальные.
А угол тела там будь хоть каким.
Если хочешь послать тело в нужное направление, то придется используя данные о углах наклона родителя, вычислять силу по трем коорд. осям для AddForce. (Синусы\косинусы там всякие)

Имхо: физикс для простых пуль, которых и видно то не бывает во время выстрела - это слишком.

)) А ты проэкт Сортиры 2, Автомата, посмотри)). Ладно, спасибо за совет, займусь.

MucT 20.02.2011 13:19

Ответ: Вопрос-Ответ (для новичков)
 
Вложений: 1
Здравствуйте, хотел наложить на изображение маску но неполучается может подскажите в чём дело ( хотел чтобы был прозрачным серый цвет по центру
-----------------------------
Fon=LoadImage("Fon.jpg")
MaskImage Fon,184,191,209 (посотрел в фотошопе цвета)
-----------------------------
p.s. ещё хотле спросить на одно изображение можно накладывать несколько масок?)

baton4ik 20.02.2011 13:31

Ответ: Вопрос-Ответ (для новичков)
 
Не используй .jpg для маски. Используй bmp, png, tga.

MucT 20.02.2011 14:09

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

baton4ik 20.02.2011 14:15

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

Код:

Global loading=LoadImage("loading.bmp")
MaskImage(loading,255,255,255)
MidHandle(loading)
DrawImage(loading,GraphicsWidth()*.5,GraphicsHeight()*.5)
Flip()

И всё работает.

FireOwl 20.02.2011 15:43

Ответ: Вопрос-Ответ (для новичков)
 
Попробуй сохранить в PNG, в фотошопе, затереть стеркой для фона весь ненужный цвет и залить каким-нибудь розовым (все равно), потом загружать уже с маской для розового.

З.Ы. Нет нельзя. (Несколько масок)
З.З.Ы. JPG для изображений с маской использовать плохо. Из-за того что он сжимает картинки, всегда мусор всякий плавает..

RegIon 21.02.2011 11:21

Ответ: Вопрос-Ответ (для новичков)
 
Сотря для чего.........можно изображение положить на спрайт а потом несколько масок стянуть..

Nex 25.02.2011 17:53

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

FireOwl 25.02.2011 18:34

Ответ: Вопрос-Ответ (для новичков)
 
Ничего себе вопросик! :-D

Посчитай расстояние от курсора до центра круга и сравни с его радиусом!
И да поможет тебе Пифагор!

RegIon 26.02.2011 12:11

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

Как проверять пересечение курсора с кругом?
X^2+Y^2=R---Считай.....X и Y от центра..

RBK 26.02.2011 12:24

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

Сообщение от Костян (Сообщение 180679)
X^2+Y^2=R---Считай.....X и Y от центра..

X^2+Y^2=R^2

радиус тоже будет в квадрате

Ganociy 26.02.2011 12:36

Ответ: Вопрос-Ответ (для новичков)
 
Такой вопрос: как, по достижению последнего кадра анимационной тестуры остановить её анимацию? Сделать не зацикленной?

RegIon 26.02.2011 12:38

Ответ: Вопрос-Ответ (для новичков)
 
IF frame>=10 frame=10;где frame переменная анимации

Цитата:

X^2+Y^2=R^2
Спасиб...забыл

Ganociy 26.02.2011 12:48

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

moka 26.02.2011 18:37

Ответ: Вопрос-Ответ (для новичков)
 
If (Sqrt((CircleX-MouseX)^2+(CircleY-MouseY)^2)<CircleRadius)

Dream 26.02.2011 19:23

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

moka 27.02.2011 01:48

Ответ: Вопрос-Ответ (для новичков)
 
А корень технически сильно сложнее чем квадрат?

trion 27.02.2011 10:32

Ответ: Вопрос-Ответ (для новичков)
 
Да - очень жесткая операция.
Если есть потребность в коде проверять
if sqr(x)=12 then bla_bla_bla()
То лучше юзать:
if x=144 then bla_bla_bla()
Ведь результат нигде не выводится, а нужен только для системных целей... корень очень сложная операция...

кстати, оффтоп - просто так к слову - помимо квадратного корня можно делать x^0.5 и соответственно любые дробные значения.... Но эт еще жёще


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

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