• Страница 1 из 1
  • 1
Система Оружия [Volle Seen]
Дмитрий Дата: Понедельник, 03.11.2014, 23:27 | Сообщение # 1 | Сообщить о нерабочей теме


Аватар для Дмитрий

Добрый день , вот решил выложить Интересную систему с 0
Автор : -Merlin-



Приступим.

К new добавим.
Код
new GunObjects[47] = {
     0,331,333,334,335,336,337,338,339,341,321,322,323,324,325,326,342,343,344,0,0,0,
     346,347,348,349,350,351,352,353,355,356,372,357,358,359,360,361,362,
     363,364,365,366,367,368,368,371
};
new Gun_name[47][] = {
     "Кастет", "Гольф клюшка", "Дубинка", "Нож", "Бита", "Лопата",
     "Кий", "Катана", "Katana", "Бензо пила", "Фалоэмитатор", "Фалоэмитатор",
     "Фалоэмитатор", "Вибратор", "Цветы", "Трость", "Взрывная граната", "Дымовая граната", "Коктель молотова","Error","Error","Error",
     "9mm", "Пистолет с глушителем", "Дигл", "Дробовик", "Обрез", "Дробовик", "Микро узи", "MP5", "AK-47", "M4", "Узи",
     "Рифл", "Снайперская винтовка", "Гранатомёт", "Гранатом", "Огнемёт", "Восьмистволка",
     "Липкая бомба", "Детонатор", "Спрей", "Огнетушитель", "Фотоаппарат", "Очки ночного виденья",
     "Очки ночного виденья", "Парашут"
};
enum GunEnum
{
Float:Ob_Pos[3],
     obI_jD,
     Ob_Dta[2]
};
new GunInfo[MAX_O][GunEnum];
new msg[256];  


в enum pInfo
Код
pGun[13],
        pGunAmmo[13],
     pAbletoGun,


В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
Код
if(newkeys == KEY_YES)
     {
         if((GetTickCount() - GetPVarInt(playerid,"Floodgun")) <= 2000)
         {
             SCM(playerid,COLOR_GREY,"Пожалуйста не флудите , уйдите на 1 метр.");
             return 0;
         }
         SetPVarInt(playerid,"Floodgun",GetTickCount());
         if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return 1;
          new GunIDEx = GetPlayerWeapon(playerid);
           new GunAmmoEx = GetPlayerAmmo(playerid);
            if(GunIDEx > 0 && GunAmmoEx != 0)
         {
             new f = MAX_O+1;
              for(new a = 0; a < MAX_O; a++)
               {
                 if(GunInfo[a][Ob_Pos][0] == 0.0)
                    {
                      f = a;
                        break;
                  }
                }
               RemovePlayerWeapon(playerid, GunIDEx);
                GunInfo[f][Ob_Dta][0] = GunIDEx;
             GunInfo[f][Ob_Dta][1] = GunAmmoEx;
             GetPlayerPos(playerid, GunInfo[f][Ob_Pos][0], GunInfo[f][Ob_Pos][1], GunInfo[f][Ob_Pos][2]);
             GunInfo[f][obI_jD] = CreateObject(GunObjects[GunIDEx], GunInfo[f][Ob_Pos][0], GunInfo[f][Ob_Pos][1], GunInfo[f][Ob_Pos][2]-1, 93.7, 120.0, 120.0);
             format(msg, 60, "[Оружие]: Было выкинута | {ffffff}%s", Gun_name[GunInfo[f][Ob_Dta][0]]);
             SCM(playerid, COLOR_TEXT, msg);
             return true;
         }
       }
     else if(newkeys == KEY_NO)
     {
         if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return 1;
         for(new a = 0; a < MAX_O; a++)
          {
              if(IsPlayerInRangeOfPoint(playerid, 1.5, GunInfo[a][Ob_Pos][0], GunInfo[a][Ob_Pos][1], GunInfo[a][Ob_Pos][2]))
             {
                 if((GetTickCount() - GetPVarInt(playerid,"Floodgun")) <= 2000)
                 {
                     SCM(playerid,COLOR_GREY,"Пожалуйста не флудите , уйдите на 1 метр.");
                     return 0;
                 }
                 SetPVarInt(playerid,"Floodgun",GetTickCount());
                  DestroyObject(GunInfo[a][obI_jD]);
                   GivePlayerWeapon(playerid, GunInfo[a][Ob_Dta][0], GunInfo[a][Ob_Dta][1]);
                    GunInfo[a][Ob_Dta][1] = 0;
                 GunInfo[a][Ob_Pos][0] = 0.0;
                 GunInfo[a][Ob_Pos][1] = 0.0;
                 GunInfo[a][Ob_Pos][2] = 0.0;
                    GunInfo[a][obI_jD] = -1;
                 format(msg, 60, "[Оружие]: Было подобранно | {ffffff}%s", Gun_name[GunInfo[a][Ob_Dta][0]]);
                 SCM(playerid, COLOR_TEXT, msg);
                 GunInfo[a][Ob_Dta][0] = 0;
             }
           }
            return true;
     }  


В конце мода ->
Код
forward RemovePlayerWeapon(playerid, weaponid);
public RemovePlayerWeapon(playerid, weaponid)
{
     new plyWeapons[12] = 0;
     new plyAmmo[12] = 0;
     for(new slot = 0; slot != 12; slot++)
     {
         new wep, ammo;
         GetPlayerWeaponData(playerid, slot, wep, ammo);

         if(wep != weaponid && ammo != 0)
         {
             GetPlayerWeaponData(playerid, slot, plyWeapons[slot], plyAmmo[slot]);
         }
     }
     ResetPlayerWeaponEx(playerid);
     for(new slot = 0; slot != 12; slot++)
     {
         if(plyAmmo[slot] != 0)
         {
             GivePlayerWeapon(playerid, plyWeapons[slot], plyAmmo[slot]);
         }
     }
     return true;
}
stock ResetPlayerWeaponEx(playerid)
{
     PlayerInfo[playerid][pAbletoGun] = 2;
     ResetPlayerWeapons(playerid);
     for(new i = 0; i < 13; i++)
     {
         PlayerInfo[playerid][pGun][i] = 0;
         PlayerInfo[playerid][pGunAmmo][i] = 0;
     }
     PlayerInfo[playerid][pAbletoGun] = 2;
     return true;
}  


Вот и все.
Прикрепления: 0591358.png (62.8 Kb)


From Russia With Love!
Дмитрий Дата: Понедельник, 03.11.2014, 23:30 | Сообщение # 2 | Сообщить о нерабочей теме


Аватар для Дмитрий

Если нужна команда на ZCMD То вот.
Код
CMD:givegun(playerid,params[])
{
     new giveplayerid,gunid,ammo;
     if(sscanf(params,"ddd",giveplayerid,gunid,ammo)) return SCM(playerid, COLOR_GREY, "Используйте: /givegun [ид] [ид оружия] [кол-во]");
     if(!IsPlayerConnected(giveplayerid)) return SCM(playerid, COLOR_GREY, "Этот игрок оффлайн!");
     GivePlayerWeapon(giveplayerid, gunid, ammo);
     SCM(playerid, COLOR_GREY, "Оружие выдано!");
     return true;
}  


Выкинуть "Y" Поднять "N"


From Russia With Love!
  • Страница 1 из 1
  • 1
Поиск: