Скрипт движения игрока...
Лук будет валяться на земле (или у продавца), можно взять и стрелять только надо сделать модель лука и стрелы
камера для игр типа симс, диабло, фаллаут, или каких нибудь ртс
автор - Orange Brat, условия использования - фри
Скачать
пример выбора ближайших целей и движения к ним
автор - LunaticX, условия использования - фри
Скачать
уровень станции, куча симпатичных моделей поездов и несколько домиков.
автор - неизвестен, условия использования - неизвестно
Скачать
Пример использования bloom шейдера
автор - неизвестен, условия использования - неизвестно
Скачать
Код:
var walk_speed[3]; //скорость игрока
var jump_height = 30;//высота прыжка
var jump_time = 1; //время прыжка, каждый раз во время прыжка уменьшается от 1 до -1
var jump_enable = 1;//запрещает прыжки когда персонаж в воздухе
var crouch_timer;//для замедленного движения камеры когда персонаж приседает или встает
action player_move
{
var movement_speed = 10;
player = my;
//my.invisible = on;
my.skill40 = 100;
while (my.skill40 > 0)
{
player.pan -= 7 * mouse_force.x * time;
camera.tilt += 7 * mouse_force.y * time;
camera.x = player.x;
camera.y = player.y;
camera.z = player.z + 50;
camera.pan = player.pan;
vec_set (temp.x, my.x);
walk_speed.x = movement_speed * (key_w - key_s) * time;
walk_speed.y = movement_speed * (key_a - key_d) * 0.6 * time;
player_gravity();//опускает игрока на землю
if (key_space == 1 && jump_enable == 1)
{//если игрок не в воздухе и нажат пробел то прыгать
player_jump();
}
if (key_c == 1 && jump_enable == 1)
{//если игрок не в воздухе и нажата кнопка С то приседать
if(crouch_timer > -20){crouch_timer -= 5*time;}
//else{c_updatehull(my,1);}//если будешь сюда запихивать анимацию приседающего персонажа то это откорректирует bounding box по кадру анимации где он сидит. (1 замени на номер кадра где он сидит) это чтоб он не стукался тем местом где раньше была голова =)
camera.z+=crouch_timer;
}
else
{//если игрок сидит а ненадо то вставать
if(crouch_timer < 0){crouch_timer += 5*time;camera.z+=crouch_timer;}
//else{c_updatehull(my,1);}//1 замени на кадр где персонаж стоит
}
c_move (my, walk_speed.x, nullvector, ignore_passable | glide);
wait (1);
}
}
function player_gravity()
{
vec_set (temp, my.x);
temp.z -= 10000;
my.skill11 = c_trace (my.x, temp.x, ignore_me | ignore_passable | use_box);
if (my.skill11 > 5) //игрок в воздухе
{
walk_speed.z -= 2 * time;//опускать на землю
jump_enable = 0;//запретить прыжки
}
else
{
walk_speed.z = 0; //игрок на земле
jump_time = 1;//разрешить прыжки после коротких прыжков
jump_enable = 1;
}
if (my.skill11 <= 1)//игрок ушел под землю
{
walk_speed.z += 6 * time;//выталкивать на поверхность
}
}
function player_jump()
{
while (jump_time > -1)
{
if (key_space == 0) //разные прыжки в зависимости от того сколько времени был нажат пробел
{
return;
}
walk_speed.z = jump_height * jump_time * time;//скорость движения вверх = высота прыжка * время прыжка
jump_time -= 0.1 * time;//время прыжка уменьшается от 1 до -1
wait (1);
}
while (key_space == 1) {wait (1);} //ждать пока кнопка не будет отпущена
jump_time = 1; //разрешить прыгать опять
}
Лук будет валяться на земле (или у продавца), можно взять и стрелять только надо сделать модель лука и стрелы
Код:
function init_bowarrow();
function get_bow();
function move_arrow();
function hurt_you();
var arrow_fired = 0;
string arrow_mdl = <arrow.mdl>;
entity bow_entity
{
type = <bow.mdl>;
layer = 10;
view = camera;
x = 30;
y = 8;
z = -10;
}
action bow // attach this action to your bow & arrow model
{
my.enable_impact = me;
my.event = get_bow;
while (my != null) // rotates as long as it hasn't been picked up
{
my.pan += 3 * time;
wait (1);
}
}
function get_bow()
{
wait (1);
ent_remove (me);
bow_entity.frame = 2; // show the arrow
bow_entity.visible = on;
}
function init_bowarrow()
{
clip_size = 0; // show all the triangles for all the models
while (1)
{
if ((mouse_left == 1 || key_ctrl == 1) && bow_entity.frame < 7)
{
bow_entity.frame += 2 * time;
}
else
{
if (bow_entity.frame >= 7 && arrow_fired == 0) // we have to fire
{
while (mouse_left == 1 || key_ctrl == 1) {wait (1);} // disable autofire
vec_set (temp, player.pos);
temp.z += 20; // the arrow is fired 20 quants above player's origin
ent_create (arrow_mdl, temp, move_arrow);
arrow_fired = 1; // a single arrow
}
else // the player isn't shooting
{
arrow_fired = 0;
bow_entity.frame = 2;
}
}
wait (1);
}
}
function move_arrow()
{
wait (1);
my.enable_entity = on;
my.enable_block = on;
my.event = hurt_you;
my.passable = on;
my.pan = camera.pan;
my.tilt = camera.tilt;
my.skill12 = 50; // skill12, 13, 14 act like a var
my.skill13 = 0;
my.skill14 = 0;
my.skill12 *= time;
while (my.skill12 != 0) // moves until it hits something
{
if (vec_dist (my.x, player.x) < 100) {my.passable = on;}
// don't collide with the player
else {my.passable = off;}
ent_move (my.skill12, nullvector);
wait (1);
}
}
function hurt_you()
{
wait (1);
if (event_type == event_entity)
{
my.skill12 = 0; // stop moving
you._HEALTH -= 80; // damage = 80;
ent_remove (me);
}
if (event_type == event_block)
{
my.skill12 = 0; // stop the arrow
my.passable = on; // the arrow won't move from now on so it shouldn't stand in our way
}
}
камера для игр типа симс, диабло, фаллаут, или каких нибудь ртс
автор - Orange Brat, условия использования - фри
Скачать
пример выбора ближайших целей и движения к ним
автор - LunaticX, условия использования - фри
Скачать
уровень станции, куча симпатичных моделей поездов и несколько домиков.
автор - неизвестен, условия использования - неизвестно
Скачать
Пример использования bloom шейдера
автор - неизвестен, условия использования - неизвестно
Скачать