Статус темы:
Закрыта.
  1. Le$hiy VIP user

    Регистрация:
    13.06.15
    Сообщения:
    578
    Симпатии:
    151
    Пол:
    Мужской
    VKcom:
    leshiy_bannikoff
    Описание плагина (может кому сгодится и такой):
    Никаких меню оружия и прочей дряни.
    В 1-ом раунде VIP-игроку ничего не выдается, чтоб не было ещё на 1-ом раунде дисбаланса, ведь простые игроки тоже имеют право на сбалансированную игру, т.е. в 1 раунде должны быть все равны.
    Со 2-го раунда начинаются выдаваться VIP-игроку (флаг t) шлем и броня.
    С 3-го раунда и т.д. выдаются шлем, броня, все гранаты, дигл (с патронами) + бонусные $500 (настраивается в исходнике). При этом предусмотрено, чтоб не было дисбаланса из-за VIP-игроков в раскидывании оружия знакомым, VIP-игроку не будут начисляться бонусные $500 до тех пор, если у него больше $8000 (настраивается в исходнике).
    В TAB-таблице VIP не отображается (видимо для снижения нагрузки).
    Предусмотрено, что когда на сервере произойдёт рестарт раунда, то отсчет раундов начнется с этого момента.

    А теперь вопрос:
    Можно ли как-то сделать, чтобы дигл выдавался не дополнительно, а вместо основного пистолета?

    Код (Unknown Language):
    1. #include <amxmodx>
    2. #include <fakemeta>
    3. #include <hamsandwich>
    4.  
    5. #pragma semicolon 1
    6.  
    7. #define MONEY_NUM_ADD 500 // Сколько выдавать денег при спавне.
    8. #define MONEY_MIN_ADD 8000 // Если у игрока на счету больше чем значение данного макроса, то ему выдаваться деньги не будут.
    9.  
    10. #define PDATA_SAFE 2
    11. #define MSG_SAY_TEXT 76
    12. #define m_iAccount 115
    13.  
    14. new g_iRoundNum, g_iMaxPlayers;
    15.  
    16. public plugin_init()
    17. {
    18.     register_plugin("Vip public", "v0.1", "Freedo.m");
    19.     register_logevent("LogEvent_Restart", 2, "1=Game_Commencing", "1&Restart_Round_");
    20.     register_event("HLTV", "Event_HLTV", "a", "1=0", "2=0");
    21.     RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1);
    22.     register_clcmd("say /vips", "ClCmd_Vips");
    23.     register_clcmd("say_team /vips", "ClCmd_Vips");
    24.     g_iMaxPlayers = get_maxplayers();
    25. }
    26.  
    27. public LogEvent_Restart() g_iRoundNum = 0;
    28. public Event_HLTV() g_iRoundNum++;
    29.  
    30. public Ham_PlayerSpawn_Post(id)
    31. {
    32.     if(is_user_alive(id) && get_user_flags(id) & ADMIN_LEVEL_H)
    33.     {
    34.         switch(g_iRoundNum)
    35.         {
    36.             case 0: return;
    37.             case 1: return;
    38.             case 2:
    39.             {
    40.                 fm_give_item(id, "item_assaultsuit");
    41.             }
    42.             default:
    43.             {
    44.                 new iMoney = fm_get_user_money(id);
    45.                 if(iMoney < MONEY_MIN_ADD) fm_set_user_money(id, iMoney + MONEY_NUM_ADD);
    46.                 fm_give_item(id, "item_assaultsuit");
    47.                 fm_give_item(id, "weapon_hegrenade");
    48.                 fm_give_item(id, "weapon_flashbang");
    49.                 fm_give_item(id, "weapon_flashbang");
    50.                 fm_give_item(id, "weapon_smokegrenade");
    51.                 fm_give_item(id, "weapon_deagle");
    52.                 fm_give_item(id, "ammo_50ae");
    53.                 fm_give_item(id, "ammo_50ae");
    54.                 fm_give_item(id, "ammo_50ae");
    55.                 fm_give_item(id, "ammo_50ae");
    56.                 fm_give_item(id, "ammo_50ae");
    57.             }
    58.         }
    59.     }
    60. }
    61.  
    62. public ClCmd_Vips(id)
    63. {
    64.     new szMessage[256], szName[32], iNum;
    65.     formatex(szMessage, charsmax(szMessage), "!gVIP Online:!y");
    66.     for(new i = 1; i <= g_iMaxPlayers; i++)
    67.     {
    68.         if(is_user_connected(i) && (get_user_flags(i) & ADMIN_LEVEL_H))
    69.         {
    70.             iNum++;
    71.             get_user_name(i, szName, charsmax(szName));
    72.             formatex(szMessage, charsmax(szMessage), "%s %s,", szMessage, szName);
    73.         }
    74.     }
    75.     PrintChat(id, "%s", szMessage);
    76.     return PLUGIN_HANDLED;
    77. }
    78.  
    79. fm_get_user_money(id)
    80. {
    81.     if(pev_valid(id) != PDATA_SAFE) return -1;
    82.     return get_pdata_int(id, m_iAccount);
    83. }
    84.  
    85. fm_set_user_money(id, iNum)
    86. {
    87.     if(pev_valid(id) != PDATA_SAFE) return 0;
    88.     set_pdata_int(id, m_iAccount, iNum);
    89.     return 1;
    90. }
    91.  
    92. fm_give_item(id, const szItem[])
    93. {
    94.     if(!equal(szItem, "weapon_", 7) && !equal(szItem, "ammo_", 5) && !equal(szItem, "item_", 5) && !equal(szItem, "tf_weapon_", 10)) return 0;
    95.     new iEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, szItem));
    96.     if(!pev_valid(iEntity)) return 0;
    97.     new Float:fOrigin[3];
    98.     pev(id, pev_origin, fOrigin);
    99.     set_pev(iEntity, pev_origin, fOrigin);
    100.     set_pev(iEntity, pev_spawnflags, pev(iEntity, pev_spawnflags) | SF_NORESPAWN);
    101.     dllfunc(DLLFunc_Spawn, iEntity);
    102.     new iSolid = pev(iEntity, pev_solid);
    103.     dllfunc(DLLFunc_Touch, iEntity, id);
    104.     if(pev(iEntity, pev_solid) == iSolid)
    105.     {
    106.         engfunc(EngFunc_RemoveEntity, iEntity);
    107.         return -1;
    108.     }
    109.     return iEntity;
    110. }
    111.  
    112. PrintChat(const id, const szMessage[], any:...)
    113. {
    114.     if(!is_user_connected(id)) return;
    115.     new szBuffer[190];
    116.     vformat(szBuffer, charsmax(szBuffer), szMessage, 3);
    117.     while(replace(szBuffer, charsmax(szBuffer), "!y", "^1")) {}
    118.     while(replace(szBuffer, charsmax(szBuffer), "!t", "^3")) {}
    119.     while(replace(szBuffer, charsmax(szBuffer), "!g", "^4")) {}
    120.     message_begin(MSG_ONE, MSG_SAY_TEXT, _, id);
    121.     write_byte(id);
    122.     write_string(szBuffer);
    123.     message_end();
    124. }
     
  2. Phantom Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.685
    Симпатии:
    791
    Пол:
    Мужской
    Telegram:
    ph4nt0m
    Код (Unknown Language):
    1. plugin_init
    2. {
    3.     register_message(get_user_msgid("ScoreAttrib"), "msgScoreAttrib");
    4. }
    5.  
    6. public msgScoreAttrib(msg_id, msg_dest, receiver)
    7. {
    8.     if(get_user_flags(get_msg_arg_int(1)) & ADMIN_IMMUNITY)
    9.     set_msg_arg_int(2, ARG_BYTE, get_msg_arg_int(2) | (1 << 2))
    10. }
    11.  
     
    Le$hiy нравится это.
  3. Le$hiy VIP user

    Регистрация:
    13.06.15
    Сообщения:
    578
    Симпатии:
    151
    Пол:
    Мужской
    VKcom:
    leshiy_bannikoff
    Phantom, это код для отображения "VIP" в меню Tab?
     
  4. Phantom Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.685
    Симпатии:
    791
    Пол:
    Мужской
    Telegram:
    ph4nt0m
    Да
    --- добавлено 02.07.15 ---
     
    Le$hiy нравится это.
  5. Le$hiy VIP user

    Регистрация:
    13.06.15
    Сообщения:
    578
    Симпатии:
    151
    Пол:
    Мужской
    VKcom:
    leshiy_bannikoff
    Phantom, это конечно хорошо, но отображение VIP в TAB меня не интересует. Хочется, чтобы у випа не было 2х пистолетов? Может кто-то видел такой плагин, чтобы юсп (глок) заменялся на дигл? Может быть можно просто в код вставить, чтобы у випа сначала пистолет дропался при респавне, а потом давался дигл?
     
  6. Phantom Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.685
    Симпатии:
    791
    Пол:
    Мужской
    Telegram:
    ph4nt0m
    Код (Unknown Language):
    1. #include <amxmodx>
    2. #include <fakemeta>
    3. #include <hamsandwich>
    4.  
    5. #pragma semicolon 1
    6.  
    7. #define MONEY_NUM_ADD 500 // Сколько выдавать денег при спавне.
    8. #define MONEY_MIN_ADD 8000 // Если у игрока на счету больше чем значение данного макроса, то ему выдаваться деньги не будут.
    9.  
    10. #define PDATA_SAFE 2
    11. #define MSG_SAY_TEXT 76
    12. #define m_iAccount 115
    13.  
    14. new g_iRoundNum, g_iMaxPlayers;
    15.  
    16. public plugin_init()
    17. {
    18.     register_plugin("Vip public", "v0.1", "Freedo.m");
    19.     register_logevent("LogEvent_Restart", 2, "1=Game_Commencing", "1&Restart_Round_");
    20.     register_event("HLTV", "Event_HLTV", "a", "1=0", "2=0");
    21.     RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1);
    22.     register_clcmd("say /vips", "ClCmd_Vips");
    23.     register_clcmd("say_team /vips", "ClCmd_Vips");
    24.     g_iMaxPlayers = get_maxplayers();
    25. }
    26.  
    27. public LogEvent_Restart() g_iRoundNum = 0;
    28. public Event_HLTV() g_iRoundNum++;
    29.  
    30. public Ham_PlayerSpawn_Post(id)
    31. {
    32.     if(is_user_alive(id) && get_user_flags(id) & ADMIN_LEVEL_H)
    33.     {
    34.         switch(g_iRoundNum)
    35.         {
    36.             case 0: return;
    37.             case 1: return;
    38.             case 2:
    39.             {
    40.                 fm_give_item(id, "item_assaultsuit");
    41.             }
    42.             default:
    43.             {
    44.                 new iMoney = fm_get_user_money(id);
    45.                 if(iMoney < MONEY_MIN_ADD) fm_set_user_money(id, iMoney + MONEY_NUM_ADD);
    46.                 if(user_has_weapon(id, CSW_USP)) engclient_cmd(id, "drop", "weapon_usp");
    47.                 else if(user_has_weapon(id, CSW_GLOCK18)) engclient_cmd(id, "drop", "weapon_glock18");
    48.                 fm_give_item(id, "weapon_deagle");
    49.                 fm_give_item(id, "item_assaultsuit");
    50.                 fm_give_item(id, "weapon_hegrenade");
    51.                 fm_give_item(id, "weapon_flashbang");
    52.                 fm_give_item(id, "weapon_flashbang");
    53.                 fm_give_item(id, "weapon_smokegrenade");
    54.                 fm_give_item(id, "ammo_50ae");
    55.                 fm_give_item(id, "ammo_50ae");
    56.                 fm_give_item(id, "ammo_50ae");
    57.                 fm_give_item(id, "ammo_50ae");
    58.                 fm_give_item(id, "ammo_50ae");
    59.             }
    60.         }
    61.     }
    62. }
    63.  
    64. public ClCmd_Vips(id)
    65. {
    66.     new szMessage[256], szName[32], iNum;
    67.     formatex(szMessage, charsmax(szMessage), "!gVIP Online:!y");
    68.     for(new i = 1; i <= g_iMaxPlayers; i++)
    69.     {
    70.         if(is_user_connected(i) && (get_user_flags(i) & ADMIN_LEVEL_H))
    71.         {
    72.             iNum++;
    73.             get_user_name(i, szName, charsmax(szName));
    74.             formatex(szMessage, charsmax(szMessage), "%s %s,", szMessage, szName);
    75.         }
    76.     }
    77.     PrintChat(id, "%s", szMessage);
    78.     return PLUGIN_HANDLED;
    79. }
    80.  
    81. fm_get_user_money(id)
    82. {
    83.     if(pev_valid(id) != PDATA_SAFE) return -1;
    84.     return get_pdata_int(id, m_iAccount);
    85. }
    86.  
    87. fm_set_user_money(id, iNum)
    88. {
    89.     if(pev_valid(id) != PDATA_SAFE) return 0;
    90.     set_pdata_int(id, m_iAccount, iNum);
    91.     return 1;
    92. }
    93.  
    94. fm_give_item(id, const szItem[])
    95. {
    96.     if(!equal(szItem, "weapon_", 7) && !equal(szItem, "ammo_", 5) && !equal(szItem, "item_", 5) && !equal(szItem, "tf_weapon_", 10)) return 0;
    97.     new iEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, szItem));
    98.     if(!pev_valid(iEntity)) return 0;
    99.     new Float:fOrigin[3];
    100.     pev(id, pev_origin, fOrigin);
    101.     set_pev(iEntity, pev_origin, fOrigin);
    102.     set_pev(iEntity, pev_spawnflags, pev(iEntity, pev_spawnflags) | SF_NORESPAWN);
    103.     dllfunc(DLLFunc_Spawn, iEntity);
    104.     new iSolid = pev(iEntity, pev_solid);
    105.     dllfunc(DLLFunc_Touch, iEntity, id);
    106.     if(pev(iEntity, pev_solid) == iSolid)
    107.     {
    108.         engfunc(EngFunc_RemoveEntity, iEntity);
    109.         return -1;
    110.     }
    111.     return iEntity;
    112. }
    113.  
    114. PrintChat(const id, const szMessage[], any:...)
    115. {
    116.     if(!is_user_connected(id)) return;
    117.     new szBuffer[190];
    118.     vformat(szBuffer, charsmax(szBuffer), szMessage, 3);
    119.     while(replace(szBuffer, charsmax(szBuffer), "!y", "^1")) {}
    120.     while(replace(szBuffer, charsmax(szBuffer), "!t", "^3")) {}
    121.     while(replace(szBuffer, charsmax(szBuffer), "!g", "^4")) {}
    122.     message_begin(MSG_ONE, MSG_SAY_TEXT, _, id);
    123.     write_byte(id);
    124.     write_string(szBuffer);
    125.     message_end();
    126. }
     
    Le$hiy нравится это.
  7. ex3m777 Пользователь

    Регистрация:
    27.02.15
    Сообщения:
    761
    Симпатии:
    334
    Пол:
    Мужской
    VKcom:
    ex3m777
    Skype:
    ex3m777
    использовать fm_get_user_money не лучшая затея, потому что hud денег не обновляется.. тут либо cs_set_user_money
    либо
    PHP:
    1. fm_get_user_money(id)
    2. {
    3.     if(pev_valid(id) != PDATA_SAFE) return -1;
    4.     return get_pdata_int(id, m_iAccount);
    5. }
    6.  
    7. fm_set_user_money(id, iNum)
    8. {
    9.     if(pev_valid(id) != PDATA_SAFE) return 0;
    10.     set_pdata_int(id, m_iAccount, iNum);
    11.     return 1;
    12. }
    PHP:
    1. if(iMoney < MONEY_MIN_ADD) fm_set_user_money(id, iMoney + MONEY_NUM_ADD);
    заменить этим

    PHP:
    1. fm_get_user_money(id)
    2. {
    3.     if(pev_valid(id) != PDATA_SAFE) return -1;
    4.     return get_pdata_int(id, m_iAccount);
    5. }
    6.  
    7. fm_set_user_money(id, iNum, iFlash)
    8. {
    9.     if(pev_valid(id) != PDATA_SAFE) return 0;
    10.     set_pdata_int(id, m_iAccount, iNum);
    11.     message_begin(MSG_ONE, MsgId_Money, _, id);
    12.     write_long(iNum);
    13.     write_byte(iFlash);
    14.     message_end();
    15.     return 1;
    16. }
    PHP:
    1. if(iMoney < MONEY_MIN_ADD) fm_set_user_money(id, iMoney + MONEY_NUM_ADD, 1);
    добавить ко всем define
    PHP:
    1. #define MsgId_Money 102
    по нагрузке не знаю что лучше будет, fm_get_user_money или cs_set_user_money, тут наверное вопрос знатокам...
     
    Последнее редактирование: 02.07.15
    Le$hiy нравится это.
  8. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.584
    Симпатии:
    4.154
    Пол:
    Мужской
    причем тут HUD и GET?
     
  9. ex3m777 Пользователь

    Регистрация:
    27.02.15
    Сообщения:
    761
    Симпатии:
    334
    Пол:
    Мужской
    VKcom:
    ex3m777
    Skype:
    ex3m777
    HUD денег не обновляется, обновлялся только после покупки чего-то
     
  10. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.584
    Симпатии:
    4.154
    Пол:
    Мужской
    ex3m777, ска...
    GET причем?!
     
  11. ex3m777 Пользователь

    Регистрация:
    27.02.15
    Сообщения:
    761
    Симпатии:
    334
    Пол:
    Мужской
    VKcom:
    ex3m777
    Skype:
    ex3m777
    чё приебался? Перепутал там вверху
    не обратил внимание
     
  12. Le$hiy VIP user

    Регистрация:
    13.06.15
    Сообщения:
    578
    Симпатии:
    151
    Пол:
    Мужской
    VKcom:
    leshiy_bannikoff
    Phantom, Большое спасибо, работает! Возникла мысль. Нужно, наверное, прописать, чтобы и остальные пистолеты дропались. Иначе вип может взять (поднять или купить) какой-то другой пистолет (кроме дигла, юспа и глока), а в следующем раунде у него снова станет 2 пистолета. И тут встает вопрос: вписывать все пистолеты или это можно заменить какой-то одной фразой типа secondary_weapon или pistols? Не пинайте, в скриптинге я полный 0.
    ex3m777, спасибо за идею, как-то не замечал... Полезная вещь!
    Есть еще попутное предложение. Худ гранат и дигла тоже не появляется. В принципе, это не критично и возможно даже снижает нагрузку. Но стоял старый плагин випа - там было видно, что тебе в начале раунда даются вип-привилегии. А сейчас я просто знаю, что у меня это есть, но на экране в начале раунда не отображается.
    P.S. Раньше стоял такой плагин
    Код (Unknown Language):
    1.     #include <amxmodx>
    2.     #include <amxmisc>
    3.     #include <cstrike>
    4.     #include <fun>
    5.     #include <hamsandwich>
    6.  
    7. static const COLOR[] = "^x04" //green
    8. static const CONTACT[] = ""
    9. new maxplayers
    10. new gmsgSayText
    11.  
    12.     public plugin_init()
    13.     {
    14.         register_plugin("Admins VIP", "1.0", "UNREAL")
    15.         register_event("ResetHUD", "ResetHUD", "be")
    16.    
    17.     //
    18.     maxplayers = get_maxplayers()
    19.     gmsgSayText = get_user_msgid("SayText")
    20.     register_clcmd("say", "handle_say")
    21.     register_cvar("amx_contactinfo", CONTACT, FCVAR_SERVER)
    22.    
    23.     //
    24.     }
    25.  
    26.     public ResetHUD(id)
    27.     {
    28.         set_task(0.5, "VIP", id + 6910)
    29.         return PLUGIN_CONTINUE
    30.     }
    31.  
    32.     //
    33.     public handle_say(id) {
    34.     new said[192]
    35.     read_args(said,192)
    36.     if( ( containi(said, "who") != -1 && containi(said, "admin") != -1 ) || contain(said, "/vip") != -1 )
    37.         set_task(0.1,"print_adminlist",id)
    38.     return PLUGIN_CONTINUE
    39. }
    40.  
    41. public print_adminlist(user)
    42. {
    43.     new adminnames[33][32]
    44.     new message[256]
    45.     new contactinfo[256], contact[112]
    46.     new id, count, x, len
    47.    
    48.     for(id = 1 ; id <= maxplayers ; id++)
    49.         if(is_user_connected(id))
    50.             if(get_user_flags(id) & ADMIN_LEVEL_H)
    51.                 get_user_name(id, adminnames[count++], 31)
    52.  
    53.     len = format(message, 255, "%s V.I.P: ОНЛАЙН: ",COLOR)
    54.     if(count > 0) {
    55.         for(x = 0 ; x < count ; x++) {
    56.             len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
    57.             if(len > 96 ) {
    58.                 print_message(user, message)
    59.                 len = format(message, 255, "%s ",COLOR)
    60.             }
    61.         }
    62.         print_message(user, message)
    63.     }
    64.     else {
    65.         len += format(message[len], 255-len, "НЕТ V.I.P ОНЛАЙН")
    66.         print_message(user, message)
    67.     }
    68.    
    69.     get_cvar_string("amx_contactinfo", contact, 63)
    70.     if(contact[0])  {
    71.         format(contactinfo, 111, "%s Контакт администратора -- %s", COLOR, contact)
    72.         print_message(user, contactinfo)
    73.     }
    74. }
    75.  
    76. print_message(id, msg[]) {
    77.     message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id)
    78.     write_byte(id)
    79.     write_string(msg)
    80.     message_end()
    81. }
    82.  
    83.     //
    84.    
    85.     public VIP(id)
    86.     {
    87.         id -= 6910
    88.        
    89.  
    90.     if (get_user_flags(id) & ADMIN_LEVEL_H)
    91.         {
    92.             message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
    93.             write_byte(id)
    94.             write_byte(4)
    95.             message_end()
    96.             give_item(id,"weapon_hegrenade")
    97.             give_item(id,"weapon_flashbang")
    98.             give_item(id,"weapon_flashbang")
    99.             give_item(id,"weapon_smokegrenade")
    100.             give_item(id,"item_assaultsuit")
    101.             give_item(id, "weapon_deagle")
    102.             give_item(id, "ammo_50ae")
    103.             give_item(id, "ammo_50ae")
    104.             give_item(id, "ammo_50ae")
    105.             give_item(id, "ammo_50ae")
    106.             give_item(id, "ammo_50ae")
    107.             cs_set_user_money(id, min(cs_get_user_money(id) + 500, 16000))
    108.         }
    109.         return PLUGIN_HANDLED
    110.     }
    111.  
     
    Последнее редактирование: 03.07.15
  13. Phantom Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.685
    Симпатии:
    791
    Пол:
    Мужской
    Telegram:
    ph4nt0m
    Le$hiy, проверки на наличие запасного оружия вроде нет. Ну я попробую сейчас что-нибудь сделать
     
  14. Phantom Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.685
    Симпатии:
    791
    Пол:
    Мужской
    Telegram:
    ph4nt0m
    За данный участок кода спасибо Gudaus, который был взят с его плагина
    Код (Unknown Language):
    1.  
    2. #include <amxmodx>
    3. #include <fakemeta>
    4. #include <fun>
    5. #include <cstrike>
    6. #include <hamsandwich>
    7.  
    8. #pragma semicolon 1
    9.  
    10. #define MONEY_NUM_ADD 500 // Сколько выдавать денег при спавне.
    11. #define MONEY_MIN_ADD 8000 // Если у игрока на счету больше чем значение данного макроса, то ему выдаваться деньги не будут.
    12.  
    13. #define PDATA_SAFE 2
    14. #define MSG_SAY_TEXT 76
    15. #define m_iAccount 115
    16.  
    17. new g_iRoundNum, g_iMaxPlayers;
    18.  
    19. public plugin_init()
    20. {
    21.     register_plugin("Vip public", "v0.1", "Freedo.m");
    22.     register_logevent("LogEvent_Restart", 2, "1=Game_Commencing", "1&Restart_Round_");
    23.     register_event("HLTV", "Event_HLTV", "a", "1=0", "2=0");
    24.     RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1);
    25.     register_clcmd("say /vips", "ClCmd_Vips");
    26.     register_clcmd("say_team /vips", "ClCmd_Vips");
    27.     g_iMaxPlayers = get_maxplayers();
    28. }
    29.  
    30. public LogEvent_Restart() g_iRoundNum = 0;
    31. public Event_HLTV() g_iRoundNum++;
    32.  
    33. public Ham_PlayerSpawn_Post(id)
    34. {
    35.     if(is_user_alive(id) && get_user_flags(id) & ADMIN_LEVEL_H)
    36.     {
    37.         switch(g_iRoundNum)
    38.         {
    39.             case 0: return;
    40.             case 1: return;
    41.             case 2: fm_give_item(id, "item_assaultsuit");
    42.             default:
    43.             {
    44.                 new iMoney = fm_get_user_money(id);
    45.                 if(iMoney < MONEY_MIN_ADD) fm_set_user_money(id, iMoney + MONEY_NUM_ADD);
    46.                 get_player_deagle(id);
    47.                 fm_give_item(id, "item_assaultsuit");
    48.                 fm_give_item(id, "weapon_hegrenade");
    49.                 fm_give_item(id, "weapon_flashbang");
    50.                 fm_give_item(id, "weapon_flashbang");
    51.                 fm_give_item(id, "weapon_smokegrenade");
    52.                 fm_give_item(id, "ammo_50ae");
    53.                 fm_give_item(id, "ammo_50ae");
    54.                 fm_give_item(id, "ammo_50ae");
    55.                 fm_give_item(id, "ammo_50ae");
    56.                 fm_give_item(id, "ammo_50ae");
    57.             }
    58.         }
    59.     }
    60. }
    61.  
    62. public get_player_deagle(id)
    63. {
    64.     const dropped_weapons = (1 << CSW_USP)|(1 << CSW_GLOCK18);
    65.     static iWeapons[32], iNum, i;
    66.     iNum = 0;
    67.     get_user_weapons(id, iWeapons, iNum);
    68.     for(i = 0; i < iNum; i++)
    69.     {
    70.         if((1 << iWeapons[i]) & dropped_weapons)
    71.         {
    72.             switch(iWeapons[i])  
    73.             {
    74.                 case CSW_GLOCK18:
    75.                 {
    76.                     engclient_cmd(id, "drop", "weapon_glock18");
    77.                     give_item(id, "weapon_deagle");
    78.                     cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    79.                 }
    80.                 case CSW_USP:
    81.                 {
    82.                     engclient_cmd(id, "drop", "weapon_usp");
    83.                     give_item(id, "weapon_deagle");
    84.                     cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    85.                 }
    86.                 case CSW_P228:
    87.                 {
    88.                     engclient_cmd(id, "drop", "weapon_p228");
    89.                     give_item(id, "weapon_deagle");
    90.                     cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    91.                 }
    92.                 case CSW_ELITE:
    93.                 {
    94.                     engclient_cmd(id, "drop", "weapon_elite");
    95.                     give_item(id, "weapon_deagle");
    96.                     cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    97.                 }
    98.                 case CSW_FIVESEVEN:
    99.                 {
    100.                     engclient_cmd(id, "drop", "weapon_fiveseven");
    101.                     give_item(id, "weapon_deagle");
    102.                     cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    103.                 }
    104.             }
    105.         }
    106.     }
    107. }
    108.  
    109. public ClCmd_Vips(id)
    110. {
    111.     new szMessage[256], szName[32], iNum;
    112.     formatex(szMessage, charsmax(szMessage), "^4VIP Online:^1");
    113.     for(new i = 1; i <= g_iMaxPlayers; i++)
    114.     {
    115.         if(is_user_connected(i) && (get_user_flags(i) & ADMIN_LEVEL_H))
    116.         {
    117.             iNum++;
    118.             get_user_name(i, szName, charsmax(szName));
    119.             formatex(szMessage, charsmax(szMessage), "%s %s,", szMessage, szName);
    120.         }
    121.     }
    122.     PrintChat(id, "%s", szMessage);
    123.     return PLUGIN_HANDLED;
    124. }
    125.  
    126. fm_get_user_money(id)
    127. {
    128.     if(pev_valid(id) != PDATA_SAFE) return -1;
    129.     return get_pdata_int(id, m_iAccount);
    130. }
    131.  
    132. fm_set_user_money(id, iNum)
    133. {
    134.     if(pev_valid(id) != PDATA_SAFE) return 0;
    135.     set_pdata_int(id, m_iAccount, iNum);
    136.     return 1;
    137. }
    138.  
    139. fm_give_item(id, const szItem[])
    140. {
    141.     if(!equal(szItem, "weapon_", 7) && !equal(szItem, "ammo_", 5) && !equal(szItem, "item_", 5) && !equal(szItem, "tf_weapon_", 10)) return 0;
    142.     new iEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, szItem));
    143.     if(!pev_valid(iEntity)) return 0;
    144.     new Float:fOrigin[3];
    145.     pev(id, pev_origin, fOrigin);
    146.     set_pev(iEntity, pev_origin, fOrigin);
    147.     set_pev(iEntity, pev_spawnflags, pev(iEntity, pev_spawnflags) | SF_NORESPAWN);
    148.     dllfunc(DLLFunc_Spawn, iEntity);
    149.     new iSolid = pev(iEntity, pev_solid);
    150.     dllfunc(DLLFunc_Touch, iEntity, id);
    151.     if(pev(iEntity, pev_solid) == iSolid)
    152.     {
    153.         engfunc(EngFunc_RemoveEntity, iEntity);
    154.         return -1;
    155.     }
    156.     return iEntity;
    157. }
    158.  
    159. PrintChat(const id, const szMessage[], any:...)
    160. {
    161.     if(!is_user_connected(id)) return;
    162.     new szBuffer[190];
    163.     vformat(szBuffer, charsmax(szBuffer), szMessage, 3);
    164.  
    165.     message_begin(MSG_ONE, MSG_SAY_TEXT, _, id);
    166.     write_byte(id);
    167.     write_string(szBuffer);
    168.     message_end();
    169. }
    170.  
    Если ты применил поправки ex3m777'а, примени их еще раз
     
    Le$hiy нравится это.
  15. Le$hiy VIP user

    Регистрация:
    13.06.15
    Сообщения:
    578
    Симпатии:
    151
    Пол:
    Мужской
    VKcom:
    leshiy_bannikoff
    Phantom, При таком коде юсп и глок меняются на дигл, а вот остальные пистолеты - нет. Т.е. дигл не дается, если в руках другой пистолет (кроме юспа и глока).
     
  16. Phantom Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.685
    Симпатии:
    791
    Пол:
    Мужской
    Telegram:
    ph4nt0m
    Ой блин, забыл деталь одну, сейчас поправлю
    --- добавлено 03.07.15 ---
    Код (Unknown Language):
    1.  
    2. #include <amxmodx>
    3. #include <fakemeta>
    4. #include <fun>
    5. #include <cstrike>
    6. #include <hamsandwich>
    7.  
    8. #pragma semicolon 1
    9.  
    10. #define MONEY_NUM_ADD 500 // Сколько выдавать денег при спавне.
    11. #define MONEY_MIN_ADD 8000 // Если у игрока на счету больше чем значение данного макроса, то ему выдаваться деньги не будут.
    12.  
    13. #define PDATA_SAFE 2
    14. #define MSG_SAY_TEXT 76
    15. #define m_iAccount 115
    16.  
    17. new g_iRoundNum, g_iMaxPlayers;
    18.  
    19. public plugin_init()
    20. {
    21.     register_plugin("Vip public", "v0.1", "Freedo.m");
    22.     register_logevent("LogEvent_Restart", 2, "1=Game_Commencing", "1&Restart_Round_");
    23.     register_event("HLTV", "Event_HLTV", "a", "1=0", "2=0");
    24.     RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1);
    25.     register_clcmd("say /vips", "ClCmd_Vips");
    26.     register_clcmd("say_team /vips", "ClCmd_Vips");
    27.     g_iMaxPlayers = get_maxplayers();
    28. }
    29.  
    30. public LogEvent_Restart() g_iRoundNum = 0;
    31. public Event_HLTV() g_iRoundNum++;
    32.  
    33. public Ham_PlayerSpawn_Post(id)
    34. {
    35.     if(is_user_alive(id) && get_user_flags(id) & ADMIN_LEVEL_H)
    36.     {
    37.         switch(g_iRoundNum)
    38.         {
    39.             case 0: return;
    40.             case 1: return;
    41.             case 2: fm_give_item(id, "item_assaultsuit");
    42.             default:
    43.             {
    44.                 new iMoney = fm_get_user_money(id);
    45.                 if(iMoney < MONEY_MIN_ADD) fm_set_user_money(id, iMoney + MONEY_NUM_ADD);
    46.                 get_player_deagle(id);
    47.                 fm_give_item(id, "item_assaultsuit");
    48.                 fm_give_item(id, "weapon_hegrenade");
    49.                 fm_give_item(id, "weapon_flashbang");
    50.                 fm_give_item(id, "weapon_flashbang");
    51.                 fm_give_item(id, "weapon_smokegrenade");
    52.                 fm_give_item(id, "ammo_50ae");
    53.                 fm_give_item(id, "ammo_50ae");
    54.                 fm_give_item(id, "ammo_50ae");
    55.                 fm_give_item(id, "ammo_50ae");
    56.                 fm_give_item(id, "ammo_50ae");
    57.             }
    58.         }
    59.     }
    60. }
    61.  
    62. public get_player_deagle(id)
    63. {
    64.     const dropped_weapons = (1 << CSW_GLOCK18)|(1 << CSW_USP)|(1 << CSW_P228)|(1 << CSW_ELITE)|(1 << CSW_FIVESEVEN);
    65.     static iWeapons[32], iNum, i;
    66.     iNum = 0;
    67.     get_user_weapons(id, iWeapons, iNum);
    68.     for(i = 0; i < iNum; i++)
    69.     {
    70.         if((1 << iWeapons[i]) & dropped_weapons)
    71.         {
    72.             switch(iWeapons[i])
    73.             {
    74.                 case CSW_GLOCK18:
    75.                 {
    76.                     engclient_cmd(id, "drop", "weapon_glock18");
    77.                     give_item(id, "weapon_deagle");
    78.                     cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    79.                 }
    80.                 case CSW_USP:
    81.                 {
    82.                     engclient_cmd(id, "drop", "weapon_usp");
    83.                     give_item(id, "weapon_deagle");
    84.                     cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    85.                 }
    86.                 case CSW_P228:
    87.                 {
    88.                     engclient_cmd(id, "drop", "weapon_p228");
    89.                     give_item(id, "weapon_deagle");
    90.                     cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    91.                 }
    92.                 case CSW_ELITE:
    93.                 {
    94.                     engclient_cmd(id, "drop", "weapon_elite");
    95.                     give_item(id, "weapon_deagle");
    96.                     cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    97.                 }
    98.                 case CSW_FIVESEVEN:
    99.                 {
    100.                     engclient_cmd(id, "drop", "weapon_fiveseven");
    101.                     give_item(id, "weapon_deagle");
    102.                     cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    103.                 }
    104.             }
    105.         }
    106.     }
    107. }
    108.  
    109. public ClCmd_Vips(id)
    110. {
    111.     new szMessage[256], szName[32], iNum;
    112.     formatex(szMessage, charsmax(szMessage), "^4VIP Online:^1");
    113.     for(new i = 1; i <= g_iMaxPlayers; i++)
    114.     {
    115.         if(is_user_connected(i) && (get_user_flags(i) & ADMIN_LEVEL_H))
    116.         {
    117.             iNum++;
    118.             get_user_name(i, szName, charsmax(szName));
    119.             formatex(szMessage, charsmax(szMessage), "%s %s,", szMessage, szName);
    120.         }
    121.     }
    122.     PrintChat(id, "%s", szMessage);
    123.     return PLUGIN_HANDLED;
    124. }
    125.  
    126. fm_get_user_money(id)
    127. {
    128.     if(pev_valid(id) != PDATA_SAFE) return -1;
    129.     return get_pdata_int(id, m_iAccount);
    130. }
    131.  
    132. fm_set_user_money(id, iNum)
    133. {
    134.     if(pev_valid(id) != PDATA_SAFE) return 0;
    135.     set_pdata_int(id, m_iAccount, iNum);
    136.     return 1;
    137. }
    138.  
    139. fm_give_item(id, const szItem[])
    140. {
    141.     if(!equal(szItem, "weapon_", 7) && !equal(szItem, "ammo_", 5) && !equal(szItem, "item_", 5) && !equal(szItem, "tf_weapon_", 10)) return 0;
    142.     new iEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, szItem));
    143.     if(!pev_valid(iEntity)) return 0;
    144.     new Float:fOrigin[3];
    145.     pev(id, pev_origin, fOrigin);
    146.     set_pev(iEntity, pev_origin, fOrigin);
    147.     set_pev(iEntity, pev_spawnflags, pev(iEntity, pev_spawnflags) | SF_NORESPAWN);
    148.     dllfunc(DLLFunc_Spawn, iEntity);
    149.     new iSolid = pev(iEntity, pev_solid);
    150.     dllfunc(DLLFunc_Touch, iEntity, id);
    151.     if(pev(iEntity, pev_solid) == iSolid)
    152.     {
    153.         engfunc(EngFunc_RemoveEntity, iEntity);
    154.         return -1;
    155.     }
    156.     return iEntity;
    157. }
    158.  
    159. PrintChat(const id, const szMessage[], any:...)
    160. {
    161.     if(!is_user_connected(id)) return;
    162.     new szBuffer[190];
    163.     vformat(szBuffer, charsmax(szBuffer), szMessage, 3);
    164.  
    165.     message_begin(MSG_ONE, MSG_SAY_TEXT, _, id);
    166.     write_byte(id);
    167.     write_string(szBuffer);
    168.     message_end();
    169. }
    170.  
     
    Le$hiy нравится это.
  17. Le$hiy VIP user

    Регистрация:
    13.06.15
    Сообщения:
    578
    Симпатии:
    151
    Пол:
    Мужской
    VKcom:
    leshiy_bannikoff
    Phantom, все тип-топ. Огромное спасибо!!!
     
  18. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.584
    Симпатии:
    4.154
    Пол:
    Мужской
    PHP:
    1.  
    2. public get_player_deagle(id)
    3. {
    4.     const dropped_weapons = (1 << CSW_GLOCK18)|(1 << CSW_USP)|(1 << CSW_P228)|(1 << CSW_ELITE)|(1 << CSW_FIVESEVEN);
    5.     static iWeapons[32], iNum, i;
    6.     iNum = 0;
    7.     get_user_weapons(id, iWeapons, iNum);
    8.     for(i = 0; i < iNum; i++)
    9.     {
    10.         if((1 << iWeapons[i]) & dropped_weapons)
    11.         {
    12.             switch(iWeapons[i])
    13.             {
    14.                 case CSW_GLOCK18:
    15.                 {
    16.                     engclient_cmd(id, "drop", "weapon_glock18");
    17.                     give_item(id, "weapon_deagle");
    18.                     cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    19.                 }
    20.                 case CSW_USP:
    21.                 {
    22.                     engclient_cmd(id, "drop", "weapon_usp");
    23.                     give_item(id, "weapon_deagle");
    24.                     cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    25.                 }
    26.                 case CSW_P228:
    27.                 {
    28.                     engclient_cmd(id, "drop", "weapon_p228");
    29.                     give_item(id, "weapon_deagle");
    30.                     cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    31.                 }
    32.                 case CSW_ELITE:
    33.                 {
    34.                     engclient_cmd(id, "drop", "weapon_elite");
    35.                     give_item(id, "weapon_deagle");
    36.                     cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    37.                 }
    38.                 case CSW_FIVESEVEN:
    39.                 {
    40.                     engclient_cmd(id, "drop", "weapon_fiveseven");
    41.                     give_item(id, "weapon_deagle");
    42.                     cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    43.                 }
    44.             }
    45.         }
    46.     }
    47. }
    ---->
    PHP:
    1.  
    2. public get_player_deagle(id)
    3. {
    4.     const dropped_weapons = (1 << CSW_GLOCK18)|(1 << CSW_USP)|(1 << CSW_P228)|(1 << CSW_ELITE)|(1 << CSW_FIVESEVEN);
    5.     static sWpName[32], iWeapons[32], iNum, i;
    6.     get_user_weapons(id, iWeapons, iNum);
    7.     for(i = 0; i < iNum; i++)
    8.     {
    9.         if((1 << iWeapons[i]) & dropped_weapons)
    10.         {
    11.             get_weaponname(iWeapons[i], sWpName, charsmax(sWpName));
    12.             engclient_cmd(id, "drop", sWpName);
    13.         }
    14.     }
    15.     give_item(id, "weapon_deagle");
    16.     cs_set_user_bpammo(id, CSW_DEAGLE, 35);
    17. }  
    18.  
     
    Le$hiy и Phantom нравится это.
  19. Phantom Команда форума

    Регистрация:
    27.02.15
    Сообщения:
    1.685
    Симпатии:
    791
    Пол:
    Мужской
    Telegram:
    ph4nt0m
    Спасибо за корректировку
     
  20. Le$hiy VIP user

    Регистрация:
    13.06.15
    Сообщения:
    578
    Симпатии:
    151
    Пол:
    Мужской
    VKcom:
    leshiy_bannikoff
    Спасибо всем, кто помог. Тему можно закрыть.
     
Статус темы:
Закрыта.