Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 3 из 3
  1. #1
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±

    Выброс гранат из транспортного средства

    Всем привет. Недавно Salvacore выкладывал скрипт, суть которого соответствует названию темы. Я немного решил "усовершенствовать" его.

    Сравнения с прошлой версией:
    • Гранаты летят плавно и взрываются тогда, когда достигнут своего падения.
    • Никаких таймеров, задействован только стандартный паблик OnObjectMoved.


    Ко всем глобальным переменным ( ко всем new ):
    PHP код:
    new
        
    grenade_obj[MAX_PLAYERS] = { INVALID_OBJECT_ID, ... }; 
    В public OnPlayerKeyStateChange:
    PHP код:
    if((newkeys KEY_FIRE) != && IsPlayerInAnyVehicle(playerid) && grenade_obj[playerid] == INVALID_OBJECT_ID)
    {
        new
            
    p_weaponid,
            
    p_ammo;

        
    GetPlayerWeaponData(playerid8p_weaponidp_ammo);
        if(
    p_weaponid == 16 && p_ammo != 0)
        {
            new
                
    veh_id GetPlayerVehicleID(playerid),
                
    Floatveh_pos_x,
                
    Floatveh_pos_y,
                
    Floatveh_pos_z,
                
    Floatveh_pos_a;

            
    GetVehiclePos(veh_idveh_pos_xveh_pos_yveh_pos_z);
            
    GetVehicleZAngle(veh_idveh_pos_a);

            
    veh_pos_x -= 1.0 floatsin(-(veh_pos_a 90.0), degrees);
            
    veh_pos_y -= 1.0 floatcos(-(veh_pos_a 90.0), degrees);

            
    grenade_obj[playerid] = CreateObject(342veh_pos_xveh_pos_yveh_pos_z 1.00.00.00.0);

            
    veh_pos_x += 3.0 floatsin(-(veh_pos_a 270.0), degrees);
            
    veh_pos_y += 3.0 floatcos(-(veh_pos_a 270.0), degrees);

            
    ApplyAnimation(playerid"PED""CAR_closedoor_LHS"4.1000001);

            
    MoveObject(grenade_obj[playerid], veh_pos_xveh_pos_yveh_pos_z 1.05.0);

            
    GivePlayerWeapon(playerid16, -1);
        }

    В public OnObjectMoved:
    PHP код:
    new
        
    GetMaxPlayers();

    do
    {
        if(
    objectid == grenade_obj[--i])
        {
            new
                
    Floatobj_pos_x,
                
    Floatobj_pos_y,
                
    Floatobj_pos_z;

            
    GetObjectPos(grenade_obj[i], obj_pos_xobj_pos_yobj_pos_z);
            
    DestroyObject(grenade_obj[i]);
            
    CreateExplosion(obj_pos_xobj_pos_yobj_pos_z010.0);
            
    grenade_obj[i] = INVALID_OBJECT_ID;

            break;
        }
    }
    while(
    i); 
     Видео



    Автор: Londlem

    Специально для: Pro-Pawn.Ru

    Копирование данной статьи без разрешения автора запрещено!
    Последний раз редактировалось L0ndl3m; 10.09.2014 в 22:56.

  2. 2 пользователя(ей) сказали cпасибо:
    MΛRŠ (06.12.2014) Reim (29.06.2015)
  3. #2
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±

  4. #3
    Аватар для Osetin
    •Администратор•

    Статус
    Оффлайн
    Регистрация
    26.03.2013
    Адрес
    ♔Osetia, Vladikavkaz♔
    Сообщений
    3,432
    Репутация:
    1093 ±
    Не плохая задумка, молодец.

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •