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; }
|
|
| |