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

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±

    Как забрать у игрока конкретное оружие?

    Здравствуйте, сделал команду, чтобы игрок выбрасывал оружие, которое в данный момент находится в руке, выбрасывается только то оружие, у которых есть кол-во, дигл, 9мм, М4 и т.д., что касаемо дубинки, лопаты, цветов и т.д.., Они остаются на руках. Подскажите как можно сделать?

    PHP код:
    CMD:dw(playeridparams[])
    {
        if(!
    player_is_authorized{playerid})
            return 
    SendClientMessage(playeridCOLOR_GREY, !"Вы не авторизировались.");
            
         new 
    string[50+MAX_PLAYER_NAME];
        
        switch(
    GetPlayerWeapon(playerid))
        {
            case 
    1:
            {
                
    SetPlayerAmmo(playerid10);
                
    format(stringsizeof string"%s выбросил%s кастет в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
              case 
    2:
            {
                
    SetPlayerAmmo(playerid20);
                
    format(stringsizeof string"%s выбросил%s клюшку в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    3:
            {
                
    GivePlayerWeapon(playerid00);
                
    format(stringsizeof string"%s выбросил%s дубинку в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    4:
            {
                
    SetPlayerAmmo(playerid40);
                
    format(stringsizeof string"%s выбросил%s нож в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    5:
            {
                
    SetPlayerAmmo(playerid50);
                
    format(stringsizeof string"%s выбросил%s бейсбольную биту в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    6:
            {
                
    SetPlayerAmmo(playerid60);
                
    format(stringsizeof string"%s выбросил%s лопату в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    7:
            {
                
    SetPlayerAmmo(playerid70);
                
    format(stringsizeof string"%s выбросил%s кий в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    8:
            {
                
    SetPlayerAmmo(playerid80);
                
    format(stringsizeof string"%s выбросил%s катану в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    9:
            {
                
    SetPlayerAmmo(playerid90);
                
    format(stringsizeof string"%s выбросил%s бензопилу в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    10:
            {
                
    SetPlayerAmmo(playerid100);
                
    format(stringsizeof string"%s выбросил%s дилдо в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    11:
            {
                
    SetPlayerAmmo(playerid110);
                
    format(stringsizeof string"%s выбросил%s вибратор в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    12:
            {
                
    SetPlayerAmmo(playerid120);
                
    format(stringsizeof string"%s выбросил%s вибратор в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    13:
            {
                
    SetPlayerAmmo(playerid130);
                
    format(stringsizeof string"%s выбросил%s фаллоимитатор в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    14:
            {
                
    SetPlayerAmmo(playerid140);
                
    format(stringsizeof string"%s выбросил%s цветы в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    15:
            {
                
    SetPlayerAmmo(playerid150);
                
    format(stringsizeof string"%s выбросил%s трость в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    16:
            {
                
    SetPlayerAmmo(playerid160);
                
    format(stringsizeof string"%s выбросил%s гранату в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    17:
            {
                
    SetPlayerAmmo(playerid170);
                
    format(stringsizeof string"%s выбросил%s дымовую гранату в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    18:
            {
                
    SetPlayerAmmo(playerid180);
                
    format(stringsizeof string"%s выбросил%s коктейль молотова в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    22:
            {
                
    SetPlayerAmmo(playerid220);
                
    format(stringsizeof string"%s выбросил%s 9мм в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    23:
            {
                
    SetPlayerAmmo(playerid230);
                
    format(stringsizeof string"%s выбросил%s silenced pistol в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    24:
            {
                
    SetPlayerAmmo(playerid240);
                
    format(stringsizeof string"%s выбросил%s desert eagle в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    25:
            {
                
    SetPlayerAmmo(playerid250);
                
    format(stringsizeof string"%s выбросил%s shotgun в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    26:
            {
                
    SetPlayerAmmo(playerid260);
                
    format(stringsizeof string"%s выбросил%s sawn-off shotgun в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    27:
            {
                
    SetPlayerAmmo(playerid270);
                
    format(stringsizeof string"%s выбросил%s combat shotgun в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    28:
            {
                
    SetPlayerAmmo(playerid280);
                
    format(stringsizeof string"%s выбросил%s узи в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    29:
            {
                
    SetPlayerAmmo(playerid290);
                
    format(stringsizeof string"%s выбросил%s Mp5 в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    30:
            {
                
    SetPlayerAmmo(playerid300);
                
    format(stringsizeof string"%s выбросил%s Ак74 в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    31:
            {
                
    SetPlayerAmmo(playerid310);
                
    format(stringsizeof string"%s выбросил%s М4 в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    32:
            {
                
    SetPlayerAmmo(playerid320);
                
    format(stringsizeof string"%s выбросил%s Tec 9 в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    33:
            {
                
    SetPlayerAmmo(playerid330);
                
    format(stringsizeof string"%s выбросил%s ружье в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    34:
            {
                
    SetPlayerAmmo(playerid340);
                
    format(stringsizeof string"%s выбросил%s снайперскую винтовку в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    35:
            {
                
    SetPlayerAmmo(playerid350);
                
    format(stringsizeof string"%s выбросил%s РПГ в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    36:
            {
                
    SetPlayerAmmo(playerid360);
                
    format(stringsizeof string"%s выбросил%s heat seeking rocket в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    37:
            {
                
    SetPlayerAmmo(playerid370);
                
    format(stringsizeof string"%s выбросил%s огнемет в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    38:
            {
                
    SetPlayerAmmo(playerid380);
                
    format(stringsizeof string"%s выбросил%s миниган в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    39:
            {
                
    SetPlayerAmmo(playerid390);
                
    format(stringsizeof string"%s выбросил%s сумку с тротилом в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    40:
            {
                
    SetPlayerAmmo(playerid400);
                
    format(stringsizeof string"%s выбросил%s детонатор в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    41:
            {
                
    SetPlayerAmmo(playerid410);
                
    format(stringsizeof string"%s выбросил%s балончик в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    42:
            {
                
    SetPlayerAmmo(playerid420);
                
    format(stringsizeof string"%s выбросил%s огнетушитель в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    43:
            {
                
    SetPlayerAmmo(playerid430);
                
    format(stringsizeof string"%s выбросил%s камеру в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    44:
            {
                
    SetPlayerAmmo(playerid440);
                
    format(stringsizeof string"%s выбросил%s прибор ночного видения в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    45:
            {
                
    SetPlayerAmmo(playerid450);
                
    format(stringsizeof string"%s выбросил%s прибор тепловизор в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
            case 
    46:
            {
                
    SetPlayerAmmo(playerid460);
                
    format(stringsizeof string"%s выбросил%s парашют в сторону."pInfo[playerid][pName], pInfo[playerid][pSex] == ? ("") : ("а"));
                
    SendClientMessage(playerid,COLOR_PURPLEstring);
            }
        }
        return 
    1;


  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Самый простой и надёжный вариант:
    1) Сохраняешь всё оружие через GetPlayerWeaponData (только патроны не забывай проверять, игнорируя то оружие, у которого 0 патрон)
    2) Удаляешь всё оружие через ResetPlayerWeapons
    3) По новой выдаёшь всё оружие, пропуская лишь выкинутое
    Всё это оборачиваешь в функцию и не испытываешь проблем.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. Пользователь сказал cпасибо:
    Skyline (10.07.2018)
  4. #3
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Самый простой и надёжный вариант:
    1) Сохраняешь всё оружие через GetPlayerWeaponData (только патроны не забывай проверять, игнорируя то оружие, у которого 0 патрон)
    2) Удаляешь всё оружие через ResetPlayerWeapons
    3) По новой выдаёшь всё оружие, пропуская лишь выкинутое
    Всё это оборачиваешь в функцию и не испытываешь проблем.
    Ну я думаю для всех оружий нет смысла такого делать? Только по типу дубинок, трости, лопаты...?

  5. #4
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Skyline Посмотреть сообщение
    Ну я думаю для всех оружий нет смысла такого делать? Только по типу дубинок, трости, лопаты...?
    Всё сугубо от твоего желания зависит :)
    С SetPlayerAmmo ты 100% будешь ловить "баг" с функцией GetPlayerWeaponData, которая будет показывать наличие оружия у игрока, и придётся постоянно проверять количество патрон дополнительно (хотя это стоит делать в любом случае). С удалением такое, вроде как, бывает реже (хотя я могу тут ошибаться, ибо никогда особо не отслеживал это).

    Я сам никогда не пользоваться SetPlayerAmmo с указанием 0 в качестве числа патрон (просто не пришла в голову такая идея), поэтому не могу ничего говорить за этот вариант. Но если он не вызывает каких-то багов, которые нельзя зафиксить без костылей, то почему бы и не воспользоваться таким вариантом?
    Правда я бы тогда советовал всё же сделать одну общую функцию, дабы сделать код более опрятным, которая бы "удаляла" оружие с конкретного слота, в которой уже сделал бы проверку на слоты и для огнестрела использовал бы SetPlayerAmmo, а для остального оружия уже описанный выше метод заюзал.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  6. Пользователь сказал cпасибо:
    Skyline (10.07.2018)
  7. #5
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    В интернете нашел такую вот функцию, но как понимаю, она не будет работать, а будет выбрасывать все равно все оружие:
    PHP код:
    stock B_RemovePlayerWeapon(playeridb_weapon

        new 
    b_weaponammo[13][2]; 
        for(new 
    s!= 13s++) GetPlayerWeaponData(playeridsb_weaponammo[s][0], b_weaponammo[s][1]); 
        
    ResetPlayerWeapons(playerid); 
        for(new 
    g!= 13g++) 
        { 
            if(
    b_weaponammo[g][0] == b_weapon || b_weaponammo[g][1] <= 0) continue; 
            
    GivePlayerWeapon(playeridb_weaponammo[g][0], b_weaponammo[g][1]); 
            break; 
        } 
        return 
    true


  8. #6
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Ну так просто прикрути проверку на слоты и добавь действие для огнестрельного оружия. В остальном, как можешь заметить, принцип работы точно такой же, какой я описал ранее. Хотя не совсем понятно зачем там break, ибо с таким циклом будет выдано только одно оружие, а не все.

    Короче, как-то так:
    1. stock RemovePlayerWeapon(playerid, slot)
    2. {
    3. switch(slot)
    4. {
    5. case слоты_огнестрела:
    6. {
    7. SetPlayerAmmo(playerid, slot, 0);
    8. }
    9. default:
    10. {
    11. new weap_info[13][2],
    12. s = 0;
    13.  
    14. for(; s != sizeof(weap_info); s++)
    15. {
    16. if(s == slot)
    17. continue;
    18. GetPlayerWeaponData(playerid, s, weap_info[s][0], weap_info[s][1]);
    19. }
    20.  
    21. ResetPlayerWeapons(playerid);
    22.  
    23. for(s = 0; s != sizeof(weap_info); s++)
    24. {
    25. if(weap_info[s][1] < 1)
    26. continue;
    27. GivePlayerWeapon(playerid, weap_info[s][0], weap_info[s][1]);
    28. }
    29. }
    30. }
    31. return 1;
    32. }
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  9. 2 пользователя(ей) сказали cпасибо:
    punkochel (28.07.2020) Skyline (10.07.2018)
  10. #7
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Очень сильно благодарен
    Спасибо.

 

 

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

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

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

Ваши права

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