1. x00peR Пользователь

    Регистрация:
    16.10.15
    Сообщения:
    300
    Симпатии:
    42
    Пол:
    Мужской
    Skype:
    x00peR
    ICQ:
    474751117
    Уже сбился со счета с этими парашютами. Перепробовал много. То ошибки, то зависание в полете, то для админов работает для вип нет.

    Собственно ищу плагин парашюта с моделью.
    Для админов и вип - бесплатно (флаг t).

    Для игроков покапка за $.
    Если цена 0, то бесплатно для всех, выдается автоматически.

    Не пинайте, если была подобная тема.
     
    happyQQ и maFFyoZZyk нравится это.
  2. mattguetta Пользователь

    Регистрация:
    10.08.15
    Сообщения:
    151
    Симпатии:
    46
    Пол:
    Мужской
    Не видел таких. Знаю что есть парашют за деньги для всех. А вот того что ты назвал не встречал.
     
  3. x00peR Пользователь

    Регистрация:
    16.10.15
    Сообщения:
    300
    Симпатии:
    42
    Пол:
    Мужской
    Skype:
    x00peR
    ICQ:
    474751117
    ты в предыдущей теме скидывал код парашюта, у меня был исходник этого же автора, если не ошибаюсь, и там был такой функционал.
    Но исходник был утерян давно.
     
  4. mattguetta Пользователь

    Регистрация:
    10.08.15
    Сообщения:
    151
    Симпатии:
    46
    Пол:
    Мужской
    Попробуй, может оно:
    Код (Unknown Language):
    1. #include <amxmodx>
    2. #include <amxmisc>
    3. #include <engine>
    4. #include <cstrike>
    5. #include <fun>
    6.  
    7. new bool:has_parachute[33]
    8. new para_ent[33]
    9. new gCStrike = 0
    10. new pDetach, pFallSpeed, pEnabled, pCost, pPayback
    11.  
    12. #define PARACHUTE_LEVEL ADMIN_LEVEL_A
    13.  
    14. public plugin_init()
    15. {
    16.     register_plugin("Parachute", "1.3", "KRoT@L/JTP10181")
    17.     pEnabled = register_cvar("sv_parachute", "1" )
    18.     pFallSpeed = register_cvar("parachute_fallspeed", "100")
    19.     pDetach = register_cvar("parachute_detach", "1")
    20.  
    21.     if (cstrike_running()) gCStrike = true
    22.  
    23.     if (gCStrike) {
    24.  
    25.         pCost = register_cvar("parachute_cost", "1000")
    26.         pPayback = register_cvar("parachute_payback", "75")
    27.  
    28.         register_concmd("amx_parachute", "admin_give_parachute", PARACHUTE_LEVEL, "<nick, #userid or @team>" )
    29.     }
    30.  
    31.     register_clcmd("say", "HandleSay")
    32.     register_clcmd("say_team", "HandleSay")
    33.  
    34.     register_event("ResetHUD", "newSpawn", "be")
    35.     register_event("DeathMsg", "death_event", "a")
    36.  
    37.     //Setup jtp10181 CVAR
    38.     new cvarString[256], shortName[16]
    39.     copy(shortName,15,"chute")
    40.  
    41.     register_cvar("jtp10181","",FCVAR_SERVER|FCVAR_SPONLY)
    42.     get_cvar_string("jtp10181",cvarString,255)
    43.  
    44.     if (strlen(cvarString) == 0) {
    45.         formatex(cvarString,255,shortName)
    46.         set_cvar_string("jtp10181",cvarString)
    47.     }
    48.     else if (contain(cvarString,shortName) == -1) {
    49.         format(cvarString,255,"%s,%s",cvarString, shortName)
    50.         set_cvar_string("jtp10181",cvarString)
    51.     }
    52. }
    53.  
    54. public plugin_natives()
    55. {
    56.     set_module_filter("module_filter")
    57.     set_native_filter("native_filter")
    58. }
    59.  
    60. public module_filter(const module[])
    61. {
    62.     if (!cstrike_running() && equali(module, "cstrike")) {
    63.         return PLUGIN_HANDLED
    64.     }
    65.  
    66.     return PLUGIN_CONTINUE
    67. }
    68.  
    69. public native_filter(const name[], index, trap)
    70. {
    71.     if (!trap) return PLUGIN_HANDLED
    72.  
    73.     return PLUGIN_CONTINUE
    74. }
    75.  
    76. public client_connect(id)
    77. {
    78.     parachute_reset(id)
    79. }
    80.  
    81. public client_disconnect(id)
    82. {
    83.     parachute_reset(id)
    84. }
    85.  
    86. public death_event()
    87. {
    88.     new id = read_data(2)
    89.     parachute_reset(id)
    90. }
    91.  
    92. parachute_reset(id)
    93. {
    94.     if(para_ent[id] > 0) {
    95.         if (is_valid_ent(para_ent[id])) {
    96.             remove_entity(para_ent[id])
    97.         }
    98.     }
    99.  
    100.     if (is_user_alive(id)) set_user_gravity(id, 1.0)
    101.  
    102.     has_parachute[id] = false
    103.     para_ent[id] = 0
    104. }
    105.  
    106. public newSpawn(id)
    107. {
    108.     if(para_ent[id] > 0) {
    109.         remove_entity(para_ent[id])
    110.         set_user_gravity(id, 1.0)
    111.         para_ent[id] = 0
    112.     }
    113.  
    114.     if (!gCStrike || access(id,PARACHUTE_LEVEL) || get_pcvar_num(pCost) <= 0) {
    115.         has_parachute[id] = true
    116.         //set_view(id, CAMERA_3RDPERSON)
    117.     }
    118. }
    119.  
    120. public HandleSay(id)
    121. {
    122.     if(!is_user_connected(id)) return PLUGIN_CONTINUE
    123.  
    124.     new args[128]
    125.     read_args(args, 127)
    126.     remove_quotes(args)
    127.  
    128.     if (gCStrike) {
    129.         if (equali(args, "buy_parachute")) {
    130.             buy_parachute(id)
    131.             return PLUGIN_HANDLED
    132.         }
    133.         else if (equali(args, "sell_parachute")) {
    134.             sell_parachute(id)
    135.             return PLUGIN_HANDLED
    136.         }
    137.         else if (containi(args, "give_parachute") == 0) {
    138.             give_parachute(id,args[15])
    139.             return PLUGIN_HANDLED
    140.         }
    141.     }
    142.  
    143.     if (containi(args, "parachute") != -1) {
    144.         if (gCStrike) client_print(id, print_chat, "[AMXX] команды Парашюта: buy_parachute, sell_parachute, give_parachute")
    145.         client_print(id, print_chat, "[AMXX], Чтобы использовать твой парашют нажимают и держат твою +use кнопку, падая")
    146.     }
    147.  
    148.     return PLUGIN_CONTINUE
    149. }
    150.  
    151. public buy_parachute(id)
    152. {
    153.     if (!gCStrike) return PLUGIN_CONTINUE
    154.     if (!is_user_connected(id)) return PLUGIN_CONTINUE
    155.  
    156.     if (!get_pcvar_num(pEnabled)) {
    157.         client_print(id, print_chat, "[AMXX] Плагин парашута отключен ")
    158.         return PLUGIN_HANDLED
    159.     }
    160.  
    161.     if (has_parachute[id]) {
    162.         client_print(id, print_chat, "[AMXX] У тебя уже есть парашют")
    163.         return PLUGIN_HANDLED
    164.     }
    165.  
    166.     new money = cs_get_user_money(id)
    167.     new cost = get_pcvar_num(pCost)
    168.  
    169.     if (money < cost) {
    170.         client_print(id, print_chat, "[AMXX] У тебя нет денег для парашюта - $ Затрат %i", cost)
    171.         return PLUGIN_HANDLED
    172.     }
    173.  
    174.     cs_set_user_money(id, money - cost)
    175.     client_print(id, print_chat, "[AMXX] Ты купил парашют. Чтобы использовать это, нажми +use.")
    176.     has_parachute[id] = true
    177.  
    178.     return PLUGIN_HANDLED
    179. }
    180.  
    181. public sell_parachute(id)
    182. {
    183.     if (!gCStrike) return PLUGIN_CONTINUE
    184.     if (!is_user_connected(id)) return PLUGIN_CONTINUE
    185.  
    186.     if (!get_pcvar_num(pEnabled)) {
    187.         client_print(id, print_chat, "[AMXX] Парашут выключен")
    188.         return PLUGIN_HANDLED
    189.     }
    190.  
    191.     if (!has_parachute[id]) {
    192.         client_print(id, print_chat, "[AMXX] У тебя нет парашюта, чтобы продать")
    193.         return PLUGIN_HANDLED
    194.     }
    195.  
    196.     if (access(id,PARACHUTE_LEVEL)) {
    197.         client_print(id, print_chat, "[AMXX] Ты не можешь продать свой свободный парашют admin")
    198.         return PLUGIN_HANDLED
    199.     }
    200.  
    201.     parachute_reset(id)
    202.  
    203.     new money = cs_get_user_money(id)
    204.     new cost = get_pcvar_num(pCost)
    205.  
    206.     new sellamt = floatround(cost * (get_pcvar_num(pPayback) / 100.0))
    207.     cs_set_user_money(id, money + sellamt)
    208.  
    209.     client_print(id, print_chat, "[AMX] Ты продал свой используемый парашют за $ %d", sellamt)
    210.  
    211.     return PLUGIN_CONTINUE
    212. }
    213.  
    214. public give_parachute(id,args[])
    215. {
    216.     if (!gCStrike) return PLUGIN_CONTINUE
    217.     if (!is_user_connected(id)) return PLUGIN_CONTINUE
    218.  
    219.     if (!get_pcvar_num(pEnabled)) {
    220.         client_print(id, print_chat, "[AMXX] Плагин парошют выключен")
    221.         return PLUGIN_HANDLED
    222.     }
    223.  
    224.     if (!has_parachute[id]) {
    225.         client_print(id, print_chat, "[AMXX] У тебя нет парашюта, чтобы дать")
    226.         return PLUGIN_HANDLED
    227.     }
    228.  
    229.     new player = cmd_target(id, args, 4)
    230.     if (!player) return PLUGIN_HANDLED
    231.  
    232.     new id_name[32], pl_name[32]
    233.     get_user_name(id, id_name, 31)
    234.     get_user_name(player, pl_name, 31)
    235.  
    236.     if(has_parachute[player]) {
    237.         client_print(id, print_chat, "[AMXX] У %s уже есть парашют.", pl_name)
    238.         return PLUGIN_HANDLED
    239.     }
    240.  
    241.     parachute_reset(id)
    242.     has_parachute[player] = true
    243.  
    244.     client_print(id, print_chat, "[AMXX] Ты дал свой парашют %s.", pl_name)
    245.     client_print(player, print_chat, "[AMXX] %s дал парашют тебе.", id_name)
    246.  
    247.     return PLUGIN_HANDLED
    248. }
    249.  
    250. public admin_give_parachute(id, level, cid) {
    251.  
    252.     if (!gCStrike) return PLUGIN_CONTINUE
    253.  
    254.     if(!cmd_access(id,level,cid,2)) return PLUGIN_HANDLED
    255.  
    256.     if (!get_pcvar_num(pEnabled)) {
    257.         client_print(id, print_chat, "[AMXX] Плагин выключен")
    258.         return PLUGIN_HANDLED
    259.     }
    260.  
    261.     new arg[32], name[32], name2[32], authid[35], authid2[35]
    262.     read_argv(1,arg,31)
    263.     get_user_name(id,name,31)
    264.     get_user_authid(id,authid,34)
    265.  
    266.     if (arg[0]=='@'){
    267.         new players[32], inum
    268.         if (equali("T",arg[1]))        copy(arg[1],31,"TERRORIST")
    269.         if (equali("ALL",arg[1]))    get_players(players,inum)
    270.         else                        get_players(players,inum,"e",arg[1])
    271.  
    272.         if (inum == 0) {
    273.             console_print(id,"No clients in such team")
    274.             return PLUGIN_HANDLED
    275.         }
    276.  
    277.         for(new a = 0; a < inum; a++) {
    278.             has_parachute[players[a]] = true
    279.         }
    280.  
    281.         switch(get_cvar_num("amx_show_activity"))    {
    282.             case 2:    client_print(0,print_chat,"ADMIN %s: Дал парашют ^"%s^" players",name,arg[1])
    283.             case 1:    client_print(0,print_chat,"ADMIN: Дал парашют ^"%s^" players",arg[1])
    284.         }
    285.  
    286.         console_print(id,"[AMXX] You gave a parachute to ^"%s^" players",arg[1])
    287.         log_amx("^"%s<%d><%s><>^" gave a parachute to ^"%s^"", name,get_user_userid(id),authid,arg[1])
    288.     }
    289.     else {
    290.  
    291.         new player = cmd_target(id,arg,6)
    292.         if (!player) return PLUGIN_HANDLED
    293.  
    294.         has_parachute[player] = true
    295.  
    296.         get_user_name(player,name2,31)
    297.         get_user_authid(player,authid2,34)
    298.  
    299.         switch(get_cvar_num("amx_show_activity")) {
    300.             case 2:    client_print(0,print_chat,"ADMIN %s: Дал парашют ^"%s^"",name,name2)
    301.             case 1:    client_print(0,print_chat,"ADMIN: Дал парашют ^"%s^"",name2)
    302.         }
    303.  
    304.         console_print(id,"[AMXX] You gave a parachute to ^"%s^"", name2)
    305.         log_amx("^"%s<%d><%s><>^" gave a parachute to ^"%s<%d><%s><>^"", name,get_user_userid(id),authid,name2,get_user_userid(player),authid2)
    306.     }
    307.     return PLUGIN_HANDLED
    308. }
    309.  
    310. public client_PreThink(id)
    311. {
    312.     //parachute.mdl animation information
    313.     //0 - deploy - 84 frames
    314.     //1 - idle - 39 frames
    315.     //2 - detach - 29 frames
    316.  
    317.     if (!get_pcvar_num(pEnabled)) return
    318.     if (!is_user_alive(id) || !has_parachute[id]) return
    319.  
    320.     new Float:fallspeed = get_pcvar_float(pFallSpeed) * -1.0
    321.     new Float:frame
    322.  
    323.     new button = get_user_button(id)
    324.     new oldbutton = get_user_oldbutton(id)
    325.     new flags = get_entity_flags(id)
    326.  
    327.     if (para_ent[id] > 0 && (flags & FL_ONGROUND)) {
    328.  
    329.         if (get_pcvar_num(pDetach)) {
    330.  
    331.             if (get_user_gravity(id) == 0.1) set_user_gravity(id, 1.0)
    332.  
    333.             if (entity_get_int(para_ent[id],EV_INT_sequence) != 2) {
    334.                 entity_set_int(para_ent[id], EV_INT_sequence, 2)
    335.                 entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
    336.                 entity_set_float(para_ent[id], EV_FL_frame, 0.0)
    337.                 entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
    338.                 entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
    339.                 entity_set_float(para_ent[id], EV_FL_framerate, 0.0)
    340.                 return
    341.             }
    342.  
    343.             frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 2.0
    344.             entity_set_float(para_ent[id],EV_FL_fuser1,frame)
    345.             entity_set_float(para_ent[id],EV_FL_frame,frame)
    346.  
    347.             if (frame > 254.0) {
    348.                 remove_entity(para_ent[id])
    349.                 para_ent[id] = 0
    350.             }
    351.         }
    352.         else {
    353.             remove_entity(para_ent[id])
    354.             set_user_gravity(id, 1.0)
    355.             para_ent[id] = 0
    356.         }
    357.  
    358.         return
    359.     }
    360.  
    361.     if (button & IN_USE) {
    362.  
    363.         new Float:velocity[3]
    364.         entity_get_vector(id, EV_VEC_velocity, velocity)
    365.  
    366.         if (velocity[2] < 0.0) {
    367.  
    368.             if(para_ent[id] <= 0) {
    369.                 para_ent[id] = create_entity("info_target")
    370.                 if(para_ent[id] > 0) {
    371.                     entity_set_string(para_ent[id],EV_SZ_classname,"parachute")
    372.                     entity_set_edict(para_ent[id], EV_ENT_aiment, id)
    373.                     entity_set_edict(para_ent[id], EV_ENT_owner, id)
    374.                     entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
    375.                     entity_set_int(para_ent[id], EV_INT_sequence, 0)
    376.                     entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
    377.                     entity_set_float(para_ent[id], EV_FL_frame, 0.0)
    378.                     entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
    379.                 }
    380.             }
    381.  
    382.             if (para_ent[id] > 0) {
    383.  
    384.                 entity_set_int(id, EV_INT_sequence, 3)
    385.                 entity_set_int(id, EV_INT_gaitsequence, 1)
    386.                 entity_set_float(id, EV_FL_frame, 1.0)
    387.                 entity_set_float(id, EV_FL_framerate, 1.0)
    388.                 set_user_gravity(id, 0.1)
    389.  
    390.                 velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
    391.                 entity_set_vector(id, EV_VEC_velocity, velocity)
    392.  
    393.                 if (entity_get_int(para_ent[id],EV_INT_sequence) == 0) {
    394.  
    395.                     frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 1.0
    396.                     entity_set_float(para_ent[id],EV_FL_fuser1,frame)
    397.                     entity_set_float(para_ent[id],EV_FL_frame,frame)
    398.  
    399.                     if (frame > 100.0) {
    400.                         entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
    401.                         entity_set_float(para_ent[id], EV_FL_framerate, 0.4)
    402.                         entity_set_int(para_ent[id], EV_INT_sequence, 1)
    403.                         entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
    404.                         entity_set_float(para_ent[id], EV_FL_frame, 0.0)
    405.                         entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
    406.                     }
    407.                 }
    408.             }
    409.         }
    410.         else if (para_ent[id] > 0) {
    411.             remove_entity(para_ent[id])
    412.             set_user_gravity(id, 1.0)
    413.             para_ent[id] = 0
    414.         }
    415.     }
    416.     else if ((oldbutton & IN_USE) && para_ent[id] > 0 ) {
    417.         remove_entity(para_ent[id])
    418.         set_user_gravity(id, 1.0)
    419.         para_ent[id] = 0
    420.     }
    421. }
    А не херня, не юзай. Это для модовых. Я не всмастривался в код когда кидал
     
  5. maFFyoZZyk Черный Жнец ^_^ Команда форума

    Регистрация:
    14.01.16
    Сообщения:
    1.233
    Симпатии:
    539
    Пол:
    Мужской
    Идея мне понравилась) И тут же родилось в мозгу еще больше вопросов
    Как покупают парашют пользователи, на кнопку или команду вводят?
    На сколько покупают, на раунд или на карту?
     
  6. x00peR Пользователь

    Регистрация:
    16.10.15
    Сообщения:
    300
    Симпатии:
    42
    Пол:
    Мужской
    Skype:
    x00peR
    ICQ:
    474751117
    maFFyoZZyk, say или say_team /bp
    Забиндить уже каждый может :)
    Даётся на время пока жив. Умер - потерял.
     
  7. Roman Пользователь

    Регистрация:
    09.02.16
    Сообщения:
    95
    Симпатии:
    15
    Пол:
    Мужской
    Есть парашют, дается на любой флаг, либо для всех пользователей. Можно отключить модель парашюта. Покупка парашюта за деньги, тем более на один раунд это фарш. Самый выгодный вариант был для меня..: поставил систему званий, после того как игрок достигает определенного звания, сервер выдает ему флаг ( указанный в парашюте) т.е получает беспатный парашют.
     
  8. x00peR Пользователь

    Регистрация:
    16.10.15
    Сообщения:
    300
    Симпатии:
    42
    Пол:
    Мужской
    Skype:
    x00peR
    ICQ:
    474751117
    Не на один раунд, на 1 жизнь.
    maFFyoZZyk, не возьмешься? :)
     
  9. maFFyoZZyk Черный Жнец ^_^ Команда форума

    Регистрация:
    14.01.16
    Сообщения:
    1.233
    Симпатии:
    539
    Пол:
    Мужской
    я ж миллион раз говорил, я не скриптер, могу что-то подшаманить,слепить из нескольких и тому подобное, самописы только Ванька делает)))
    а так в принципе, идея достойная, как и следующая после тебя.
    Но вторая больше подойдет для knife серверов)))
     
  10. maFFyoZZyk Черный Жнец ^_^ Команда форума

    Регистрация:
    14.01.16
    Сообщения:
    1.233
    Симпатии:
    539
    Пол:
    Мужской
    Можно попробовать, но нужно найти во-первых качественный плагин
    Во-вторых функцию которая проверит на пленту ты или нет
    Чтоб сделать так:
    1. Парашют можно было купить только на buyzone, нажав кнопку E
    2. Если ты на пленту дефузишь пачку, чтоб он дефузил, а не писал тебе, типа ты не в зоне закупки)
    Вот с таким добавками к твоей идее будет вообще зачет
     
  11. x00peR Пользователь

    Регистрация:
    16.10.15
    Сообщения:
    300
    Симпатии:
    42
    Пол:
    Мужской
    Skype:
    x00peR
    ICQ:
    474751117
    maFFyoZZyk, эта зачОт )))
    Погуглю, может чего нарою.