MENU
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Смена оружия в автомобиле
Chev_cheliosДата: Понедельник, 25-Июн-2012, 22:44 | Сообщение # 1
Уважаемый человек
Сообщений: 104
Награды: 0
Репутация: 63
Статус:
Описание: Оружие в ТС меняется на любое доступное для стрельбы, кулак - сесть обратно в машину (порой не садится, а просто убирается прицел и оружие при смене на кулак, но всеравно фича будет функционировать нормально, но анимка остается). Еще один маленький минус - возможных видов оружия для стрельбы 5 + кулак, так вот, если у Вас например 2 оружия: дигл, м4, то Вам нужно будет еще менять 3 раза на дробовик, пистолет-пулемет, винтовку, т.к. их нет, то будет кулак, т.е. так: кулак, дигл, кулак, кулак, м4, кулак и по новой.

Примечание: Данная фича будет работать только на серверах SA-MP 0.3c RC4+

Создадим одномерный массив, который упорядочит смену оружия в ТС для каждого игрока в верху кода:
Code
new InCarWeaponChange[MAX_PLAYERS];

Далее перейдем в паблик OnPlayerStateChange и сделаем, чтобы когда игрок менял статус (пешеход/водитель/пассажир) нашему массиву присваивалось значение, делается это для того же упорядочивания выбора оружия:
Code
public OnPlayerStateChange(playerid, newstate, oldstate)  
{  
     if(GetPlayerWeapon(playerid) >= 0 && GetPlayerWeapon(playerid) <= 21 || GetPlayerWeapon(playerid) <= 35  
     && GetPlayerWeapon(playerid) <= 46)  
     {  
         InCarWeaponChange[playerid] = 0;  
     }  
     else  
     {  
     if(GetPlayerWeapon(playerid) >= 22  && GetPlayerWeapon(playerid) <= 24)  
     {  
         InCarWeaponChange[playerid] = 1;  
     }  
     if(GetPlayerWeapon(playerid) >= 25  && GetPlayerWeapon(playerid) <= 27)  
     {  
         InCarWeaponChange[playerid] = 2;  
     }  
     if(GetPlayerWeapon(playerid) == 28 || GetPlayerWeapon(playerid) == 29 || GetPlayerWeapon(playerid) == 32)  
     {  
         InCarWeaponChange[playerid] = 3;  
     }  
     if(GetPlayerWeapon(playerid) == 30 || GetPlayerWeapon(playerid) == 31)  
     {  
         InCarWeaponChange[playerid] = 3;  
     }  
     if(GetPlayerWeapon(playerid) == 33 || GetPlayerWeapon(playerid) == 34)  
     {  
         InCarWeaponChange[playerid] = 4;  
     }  
     }  
     return 1;  
}  

Затем переходим в паблик OnPlayerKeyStateChange, чтобы назначить на клавиши "газ" и "тормоз" смену оружия для пассажира в нужной нам последовательности:
Code
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)  
{  
     if(newkeys == 8)  
     {  
         if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER)  
         {  
             if(InCarWeaponChange[playerid] == 0)  
             {  
                 SetPlayerArmedWeapon(playerid, 22);  
                 InCarWeaponChange[playerid] = 1;  
                 return 1;  
             }  
             if(InCarWeaponChange[playerid] == 1)  
             {  
                 SetPlayerArmedWeapon(playerid, 25);  
                 InCarWeaponChange[playerid] = 2;  
                 return 1;  
             }  
             if(InCarWeaponChange[playerid] == 2)  
             {  
                 SetPlayerArmedWeapon(playerid, 28);  
                 InCarWeaponChange[playerid] = 3;  
                 return 1;  
             }  
             if(InCarWeaponChange[playerid] == 3)  
             {  
                 SetPlayerArmedWeapon(playerid, 30);  
                 InCarWeaponChange[playerid] = 4;  
                 return 1;  
             }  
             if(InCarWeaponChange[playerid] == 4)  
             {  
                 SetPlayerArmedWeapon(playerid, 33);  
                 InCarWeaponChange[playerid] = 0;  
                 return 1;  
             }  
         }  
     }  
     if(newkeys == 32)  
     {  
         if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER)  
         {  
             if(InCarWeaponChange[playerid] == 0)  
             {  
                 SetPlayerArmedWeapon(playerid, 33);  
                 InCarWeaponChange[playerid] = 1;  
                 return 1;  
             }  
             if(InCarWeaponChange[playerid] == 1)  
             {  
                 SetPlayerArmedWeapon(playerid, 30);  
                 InCarWeaponChange[playerid] = 2;  
                 return 1;  
             }  
             if(InCarWeaponChange[playerid] == 2)  
             {  
                 SetPlayerArmedWeapon(playerid, 28);  
                 InCarWeaponChange[playerid] = 3;  
                 return 1;  
             }  
             if(InCarWeaponChange[playerid] == 3)  
             {  
                 SetPlayerArmedWeapon(playerid, 25);  
                 InCarWeaponChange[playerid] = 4;  
                 return 1;  
             }  
             if(InCarWeaponChange[playerid] == 4)  
             {  
                 SetPlayerArmedWeapon(playerid, 22);  
                 InCarWeaponChange[playerid] = 0;  
                 return 1;  
             }  
         }  
     }  
     return 1;  
}  


 
  • Страница 1 из 1
  • 1
Поиск: