Навигация по блогу

четверг, 14 апреля 2011 г.

Мои не реализованые идеи

Здравствуйте, на связи Crazy ака Сергей. В сегодняшнем посте я хочу рассказать вам о моих некоторых идеях, которые я пытался или хотел воплотить в МТА. В начале я хотел-бы рассказать вам о карте для Race-режима "math-race" (математическая гонка, хотя скорее арифметическая, но это не столь важно). Суть карты состоит в том, чтобы на экране "гонщиков" появлялось какая-нибудь арифметическая операция(напр. 2+2=?) а внизу экрана 4 варианта ответа, и нужно нажать нужную клавишу на клавиатуре, чтобы дать ответ, и если он правильный, то задаем машине гонщика некую скорость. Ну и так, покаместь гонщик не доедет до конца трассы. Данную идею я уже начал реализовывать, но дело далеко не ушло. Трудностей то никаких нет, все довольно легко, но для хорошего генератора случайных операций, нужно потратить немного времени, чего у меня, к сожалению, не всегда очень много.


3D Inventory System

Данную идею я хотел реализовать, после просмотра данного видео:
Но я не хотел делать все как на видео, я хотел сделать вместо HUD'а оружия, само оружие, которое бы вращалось вокруг своей оси. Располагалось бы оно на месте стандартного HUD'a, но вместо него был-бы реальный обьект оружия. Я уже реализовал отрисовку модели на месте HUD, и даже смену его модели, при смене оружия игрока, все-бы хорошо, но я столкнулся с одной проблемой. Когда игрок начинает двигаться, то модель оружия начинает дергаться, и хотя я ставлю позицию модели на событии onClientPreRender (это событие срабатывает перед тем как отрисовать кадр) ничего не выходит. Но я думаю на днях попробовать использовать функцию attachElements, но я еще не знаю как я буду считать относитальные координаты игрока от расположение камеры. Вот скриншот:


На нем Shotgun расположен не там где надо из-за того, что я еще не изменял координаты на те, в которых расположен HUD и это не составит труда, но вот решить тресение объекта, мне покаместь не удалось. Если кому-то надо, вот исходный код этого скрипта на сегодняшний день(клиентский):
Weapons = {
[1]=331,
[2]=333,
[3]=334,
[4]=335,
[5]=336,
[6]=337,
[7]=338,
[8]=339,
[9]=341,
[22]=346,
[23]=347,
[24]=348,
[25]=349,
[26]=350,
[27]=351,
[28]=352,
[29]=353,
[30]=372,
[31]=355,
[33]=356,
[34]=357,
[35]=358,
[36]=359,
[37]=360,
[38]=361,
[16]=362,
[17]=342,
[18]=343,
[39]=344,
[41]=363,
[42]=365,
[43]=366,
[10]=367,
[11]=321,
[12]=322,
[13]=323,
[14]=325,
[15]=326,
[44]=368,
[45]=369,
[46]=371,
[40]=364  }

height,width = guiGetScreenSize()

CurrentWeapon = nil

Rotation = 0

function initialize()
    if getPedWeapon(getLocalPlayer()) ~= 0 then
        CurrentWeapon = createObject(Weapons[getPedWeapon(getLocalPlayer())],0,0,0)
    end
end

function setPosition()
    if CurrentWeapon then
        local x,y,z = getWorldFromScreenPosition(height*0.8,width*0.5,3)
        setElementPosition(CurrentWeapon,x,y,z)
        Rotation = Rotation + 1
        setObjectRotation(CurrentWeapon,0,0,Rotation)
    end
end

function onSwitch()
    if CurrentWeapon then
        destroyElement(CurrentWeapon)
    end
    if getPedWeapon(getLocalPlayer()) ~= 0 then
        CurrentWeapon = createObject(Weapons[getPedWeapon(getLocalPlayer())],0,0,0)
    else
        CurrentWeapon = nil
    end
end

addEventHandler("onClientResourceStart",getResourceRootElement(getThisResource()),initialize)
addEventHandler("onClientPreRender",getRootElement(),setPosition)
addEventHandler("onClientPlayerWeaponSwitch",getRootElement(),onSwitch)

На этом все, следите за обновлениями блога, комментируйте, спрашивайте. На что смогу, на то отвечу. С вами был Crazy, до свидания!

Комментариев нет:

Отправить комментарий