Solved VIP Extra Items Menu

Unpaid Requests, Public Plugins
Post Reply
BloodyPro
Member
Member
Palestine
Posts: 3
Joined: 2 years ago
Contact:

VIP Extra Items Menu

#1

Post by BloodyPro » 2 years ago

Hey,
is it possible to make VIP Extra items menu ?? , i need help how to make it and add items in it for free.

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#2

Post by Raheem » 2 years ago

Hello,

Here is an example:
    1. #include <zombie_escape>
    2.  
    3. native OpenVIPExtraItemsMenu(id)
    4. native GiveThanatos7(id)
    5.  
    6. public plugin_natives()
    7. {
    8.     register_native("OpenVIPExtraItemsMenu", "_OpenVIPExtraItemsMenu", 1)
    9. }
    10.  
    11. public plugin_init()
    12. {
    13.     register_plugin("VIP Extra Item", "1.0", "Raheem")
    14.    
    15.     register_clcmd("say /test", "test")
    16. }
    17.  
    18. public test(id)
    19. {
    20.     OpenVIPExtraItemsMenu(id)
    21. }
    22.  
    23. public _OpenVIPExtraItemsMenu(id)
    24. {
    25.     new iVIPExtraItemsMenu = menu_create("VIP Extra-Items Menu", "VIPExtraItemsMenuHandler")
    26.    
    27.     // Add any extra item name
    28.     menu_additem(iVIPExtraItemsMenu, "Thanatos-7", "", 0)
    29.    
    30.     // Show the menu
    31.     menu_display(id, DonateMenu, 0)
    32.    
    33.     return PLUGIN_HANDLED
    34. }
    35.  
    36. public VIPExtraItemsMenuHandler(id, menu, item)
    37. {
    38.     switch (item)
    39.     {
    40.         case 0:
    41.         {
    42.             if (ze_get_vip_flags(id) & VIP_A)
    43.             {
    44.                 GiveThanatos7(id)
    45.             }
    46.             else
    47.             {
    48.                 client_print_color(id, print_team_default, "^1[^4VIP Extra-Items Menu^1] ^3Sorry you don't have access^1!")
    49.             }
    50.         }
    51.     }
    52.  
    53.     menu_destroy(menu)
    54.     return PLUGIN_HANDLED
    55. }
He who fails to plan is planning to fail

BloodyPro
Member
Member
Palestine
Posts: 3
Joined: 2 years ago
Contact:

#3

Post by BloodyPro » 2 years ago

Ty, but how do i create natives for extra items plugins u guys have here ? so i can add it to this menu

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#4

Post by Raheem » 2 years ago

For example Frost M4A1, first remove code that make it extra item so it will be like:
    1. #include <zombie_escape>
    2.  
    3. new const V_M4A1_MODEL[] = "models/zombie_escape/v_frost_m4a1.mdl"
    4. new const P_M4A1_MODEL[] = "models/zombie_escape/p_frost_m4a1.mdl"
    5. new const W_M4A1_MODEL[] = "models/zombie_escape/w_frost_m4a1.mdl"
    6. new const W_OLD_M4A1_MODEL[] = "models/w_m4a1.mdl"
    7.  
    8. new /*g_iItemID,*/ g_iHudSync, g_iSpriteLaser, g_iFreezeDmg, g_iDmgMultiplier
    9. new bool:g_bHasFrostM4A1[33]
    10. new g_iDmg[33]
    11.  
    12. public plugin_init()
    13. {
    14.     register_plugin("[ZE] Extra Item: Frost M4A1", "1.0", "Raheem")
    15.    
    16.     // Cvars
    17.     g_iFreezeDmg = register_cvar("ze_freezing_m4a1_damage", "2000") // Damage Requried So Zombie got Frozen
    18.     g_iDmgMultiplier = register_cvar("ze_multiplier_m4a1_damage", "2") // Multiplie Weapon Damage
    19.  
    20.     // Message IDS
    21.     g_iHudSync = CreateHudSyncObj()
    22.    
    23.     // ITEM NAME & COST
    24.     // g_iItemID = ze_register_item("Frost M4A1", 30, 0) // It's cost 30 Ammo Pack
    25.    
    26.     // Events
    27.     register_event("WeapPickup", "CheckModel", "b", "1=19")
    28.     register_event("CurWeapon", "CurrentWeapon", "be", "1=1")
    29.    
    30.     // Forwards
    31.     register_forward(FM_SetModel, "Fw_SetModel")
    32.    
    33.     // HookChains
    34.     RegisterHookChain(RG_CBasePlayer_TakeDamage, "Fw_TakeDamage_Post", 1)
    35.    
    36.     // Hams
    37.     RegisterHam(Ham_TraceAttack, "player", "Fw_TraceAttack_Post", 1)
    38.     RegisterHam(Ham_TraceAttack, "worldspawn", "Fw_TraceAttack_Post", 1)
    39.     RegisterHam(Ham_Item_AddToPlayer, "weapon_m4a1", "Fw_AddFrostM4A1ToPlayer")
    40. }
    41.  
    42. public plugin_precache()
    43. {
    44.     // Models
    45.     precache_model(V_M4A1_MODEL)
    46.     precache_model(P_M4A1_MODEL)
    47.     precache_model(W_M4A1_MODEL)
    48.    
    49.     // Sprites
    50.     g_iSpriteLaser = precache_model( "sprites/Newlightning.spr")
    51. }
    52.  
    53. public client_disconnected(id)
    54. {
    55.     g_bHasFrostM4A1[id] = false
    56. }
    57.  
    58. /*public ze_select_item_pre(id, itemid)
    59. {
    60.     // Return Available and we will block it in Post, So it dosen't affect other plugins
    61.     if (itemid != g_iItemID)
    62.         return ZE_ITEM_AVAILABLE
    63.    
    64.     // Available for Humans only, So don't show it for zombies
    65.     if (ze_is_user_zombie(id))
    66.         return ZE_ITEM_DONT_SHOW
    67.    
    68.     return ZE_ITEM_AVAILABLE
    69. }
    70.  
    71. public ze_select_item_post(player, itemid)
    72. {
    73.     if (itemid != g_iItemID)
    74.         return
    75.  
    76.     g_bHasFrostM4A1[player] = true
    77.  
    78.     rg_remove_item(player, "weapon_m4a1")
    79.     rg_give_item(player, "weapon_m4a1", GT_APPEND)
    80.     rg_set_user_bpammo(player, WeaponIdType:get_weaponid("weapon_m4a1"), 90)
    81.    
    82.     new szName[32]
    83.     get_user_name(player, szName, charsmax(szName))
    84.    
    85.     set_hudmessage(random(255), random(255), random(255), -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
    86.     show_hudmessage(0, "%s Has bought Frost M4A1!", szName)
    87.    
    88.     ze_colored_print(player, "!tYou Have bought Frost M4A1!y!")
    89. }*/
    90.  
    91. public Fw_TraceAttack_Post(iEnt, iAttacker, Float:flDamage, Float:fDir[3], ptr, iDamageType)
    92. {
    93.     if(!is_user_alive(iAttacker))
    94.         return
    95.    
    96.     if(get_user_weapon(iAttacker) != CSW_M4A1 || !g_bHasFrostM4A1[iAttacker])
    97.         return
    98.    
    99.     set_hudmessage(34, 138, 255, -1.0, 0.17, 1, 0.0, 2.0, 1.0, 1.0, -1)
    100.     ShowSyncHudMsg(iAttacker, g_iHudSync, "Freeze Damage^n%d/%d", g_iDmg[iAttacker], get_pcvar_num(g_iFreezeDmg))
    101.    
    102.     new vec1[3], vec2[3]
    103.     get_user_origin(iAttacker, vec1, 1)
    104.     get_user_origin(iAttacker, vec2, 4)
    105.  
    106.     make_beam(vec1, vec2, g_iSpriteLaser, 0, 50, 200, 200)
    107. }
    108.  
    109. public ze_user_infected(infected)
    110. {
    111.     if (g_bHasFrostM4A1[infected])
    112.     {
    113.         g_bHasFrostM4A1[infected] = false
    114.     }
    115. }
    116.  
    117. public ze_user_humanized(id)
    118. {
    119.     g_bHasFrostM4A1[id] = false
    120.     g_iDmg[id] = 0
    121. }
    122.  
    123. public Fw_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, bitsDamageType)
    124. {
    125.     // Not Vaild Victim or Attacker
    126.     if (!is_user_connected(iVictim) || !is_user_connected(iAttacker))
    127.         return HC_CONTINUE
    128.    
    129.     if (g_bHasFrostM4A1[iAttacker] && (get_user_weapon(iAttacker) == CSW_M4A1))
    130.     {
    131.         SetHookChainArg(4 , ATYPE_FLOAT, fDamage * get_pcvar_num(g_iDmgMultiplier))
    132.     }
    133.    
    134.     if((get_user_weapon(iAttacker) == CSW_M4A1) && g_bHasFrostM4A1[iAttacker])
    135.     {
    136.         g_iDmg[iAttacker] += (floatround(fDamage) * get_pcvar_num(g_iDmgMultiplier))
    137.     }
    138.    
    139.     if((g_iDmg[iAttacker] >= get_pcvar_num(g_iFreezeDmg)) && (get_user_weapon(iAttacker) == CSW_M4A1) && g_bHasFrostM4A1[iAttacker])
    140.     {
    141.         new szName[32]
    142.         get_user_name(iVictim, szName, charsmax(szName))
    143.        
    144.         ze_set_frost_grenade(iVictim, true)
    145.        
    146.         g_iDmg[iAttacker] = 0
    147.        
    148.         set_dhudmessage(34, 138, 255, -1.0, 0.25, 2, 6.0, 3.0, 0.1, 1.5)
    149.         show_dhudmessage(iAttacker, "%s Has been Freezed!", szName)
    150.     }
    151.     return HC_CONTINUE
    152. }
    153.  
    154. public CheckModel(id)
    155. {
    156.     if (is_user_alive(id))
    157.     {
    158.         set_pev(id, pev_viewmodel2, V_M4A1_MODEL)
    159.         set_pev(id, pev_weaponmodel2, P_M4A1_MODEL)
    160.     }
    161.     return PLUGIN_CONTINUE
    162. }
    163.  
    164. public CurrentWeapon(id)
    165. {
    166.     if ((get_user_weapon(id) == CSW_M4A1) && g_bHasFrostM4A1[id] == true)
    167.     {
    168.         CheckModel(id)
    169.     }
    170.     else
    171.     {
    172.         ClearSyncHud(id, g_iHudSync)
    173.     }
    174.     return PLUGIN_CONTINUE
    175. }
    176.  
    177. make_beam(const origin2[3], const origin[3], sprite, red, green, blue, alpha)
    178. {
    179.     //BEAMENTPOINTS
    180.     message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
    181.     write_byte (0) //TE_BEAMENTPOINTS 0
    182.     write_coord(origin2[0])
    183.     write_coord(origin2[1])
    184.     write_coord(origin2[2])
    185.     write_coord(origin[0])
    186.     write_coord(origin[1])
    187.     write_coord(origin[2])
    188.     write_short(sprite) // sprite
    189.     write_byte(1) // framestart
    190.     write_byte(5) // framerate
    191.     write_byte(2) // life
    192.     write_byte(20) // width
    193.     write_byte(0) // noise
    194.     write_byte(red) // r, g, b
    195.     write_byte(green) // r, g, b
    196.     write_byte(blue) // r, g, b
    197.     write_byte(alpha) // brightness
    198.     write_byte(150) // speed
    199.     message_end()
    200. }
    201.  
    202. public Fw_SetModel(entity, model[])
    203. {
    204.    
    205.     if(!is_valid_ent(entity))
    206.         return FMRES_IGNORED
    207.  
    208.     if(!equali(model, W_OLD_M4A1_MODEL))
    209.         return FMRES_IGNORED
    210.  
    211.     new className[33]
    212.     entity_get_string(entity, EV_SZ_classname, className, 32)
    213.  
    214.     static iOwner, iStoredM4A1ID
    215.  
    216.     // Frost M4A1 Owner
    217.     iOwner = entity_get_edict(entity, EV_ENT_owner)
    218.  
    219.     // Get drop weapon index (Frost M4A1) to use in fw_FrostM4A1AddToPlayer forward
    220.     iStoredM4A1ID = find_ent_by_owner(-1, "weapon_m4a1", entity)
    221.  
    222.     // If Player Has Frost M4A1 and It's weapon_m4a1
    223.     if(g_bHasFrostM4A1[iOwner] && is_valid_ent(iStoredM4A1ID))
    224.     {
    225.         // Setting weapon options
    226.         entity_set_int(iStoredM4A1ID, EV_INT_impulse, 1997)
    227.  
    228.         // Rest Var
    229.         g_bHasFrostM4A1[iOwner] = false
    230.        
    231.         // Set weaponbox new model
    232.         entity_set_model(entity, W_M4A1_MODEL)
    233.         return FMRES_SUPERCEDE
    234.     }
    235.     return FMRES_IGNORED
    236. }
    237.  
    238. public Fw_AddFrostM4A1ToPlayer(FrostM4A1, id)
    239. {
    240.     // Make sure that this is M4A1
    241.     if(is_valid_ent(FrostM4A1) && is_user_connected(id) && entity_get_int(FrostM4A1, EV_INT_impulse) == 1997)
    242.     {
    243.         // Update Var
    244.         g_bHasFrostM4A1[id] = true
    245.  
    246.         // Reset weapon options
    247.         entity_set_int(FrostM4A1, EV_INT_impulse, 0)
    248.         return HAM_HANDLED
    249.     }
    250.     return HAM_IGNORED
    251. }
You may note that I commented it not removed it. Now you need to add the following anywhere:
    1. public plugin_natives()
    2. {
    3.     register_native("GiveFrostM4A1", "_GiveFrostM4A1", 1)
    4. }
So code will looks like:
    1. #include <zombie_escape>
    2.  
    3. new const V_M4A1_MODEL[] = "models/zombie_escape/v_frost_m4a1.mdl"
    4. new const P_M4A1_MODEL[] = "models/zombie_escape/p_frost_m4a1.mdl"
    5. new const W_M4A1_MODEL[] = "models/zombie_escape/w_frost_m4a1.mdl"
    6. new const W_OLD_M4A1_MODEL[] = "models/w_m4a1.mdl"
    7.  
    8. new /*g_iItemID,*/ g_iHudSync, g_iSpriteLaser, g_iFreezeDmg, g_iDmgMultiplier
    9. new bool:g_bHasFrostM4A1[33]
    10. new g_iDmg[33]
    11.  
    12. public plugin_natives()
    13. {
    14.     register_native("GiveFrostM4A1", "_GiveFrostM4A1", 1)
    15. }
    16.  
    17. public plugin_init()
    18. {
    19.     register_plugin("[ZE] Extra Item: Frost M4A1", "1.0", "Raheem")
    20.    
    21.     // Cvars
    22.     g_iFreezeDmg = register_cvar("ze_freezing_m4a1_damage", "2000") // Damage Requried So Zombie got Frozen
    23.     g_iDmgMultiplier = register_cvar("ze_multiplier_m4a1_damage", "2") // Multiplie Weapon Damage
    24.  
    25.     // Message IDS
    26.     g_iHudSync = CreateHudSyncObj()
    27.    
    28.     // ITEM NAME & COST
    29.     // g_iItemID = ze_register_item("Frost M4A1", 30, 0) // It's cost 30 Ammo Pack
    30.    
    31.     // Events
    32.     register_event("WeapPickup", "CheckModel", "b", "1=19")
    33.     register_event("CurWeapon", "CurrentWeapon", "be", "1=1")
    34.    
    35.     // Forwards
    36.     register_forward(FM_SetModel, "Fw_SetModel")
    37.    
    38.     // HookChains
    39.     RegisterHookChain(RG_CBasePlayer_TakeDamage, "Fw_TakeDamage_Post", 1)
    40.    
    41.     // Hams
    42.     RegisterHam(Ham_TraceAttack, "player", "Fw_TraceAttack_Post", 1)
    43.     RegisterHam(Ham_TraceAttack, "worldspawn", "Fw_TraceAttack_Post", 1)
    44.     RegisterHam(Ham_Item_AddToPlayer, "weapon_m4a1", "Fw_AddFrostM4A1ToPlayer")
    45. }
    46.  
    47. public plugin_precache()
    48. {
    49.     // Models
    50.     precache_model(V_M4A1_MODEL)
    51.     precache_model(P_M4A1_MODEL)
    52.     precache_model(W_M4A1_MODEL)
    53.    
    54.     // Sprites
    55.     g_iSpriteLaser = precache_model( "sprites/Newlightning.spr")
    56. }
    57.  
    58. public client_disconnected(id)
    59. {
    60.     g_bHasFrostM4A1[id] = false
    61. }
    62.  
    63. /*public ze_select_item_pre(id, itemid)
    64. {
    65.     // Return Available and we will block it in Post, So it dosen't affect other plugins
    66.     if (itemid != g_iItemID)
    67.         return ZE_ITEM_AVAILABLE
    68.    
    69.     // Available for Humans only, So don't show it for zombies
    70.     if (ze_is_user_zombie(id))
    71.         return ZE_ITEM_DONT_SHOW
    72.    
    73.     return ZE_ITEM_AVAILABLE
    74. }
    75.  
    76. public ze_select_item_post(player, itemid)
    77. {
    78.     if (itemid != g_iItemID)
    79.         return
    80.  
    81.     g_bHasFrostM4A1[player] = true
    82.  
    83.     rg_remove_item(player, "weapon_m4a1")
    84.     rg_give_item(player, "weapon_m4a1", GT_APPEND)
    85.     rg_set_user_bpammo(player, WeaponIdType:get_weaponid("weapon_m4a1"), 90)
    86.    
    87.     new szName[32]
    88.     get_user_name(player, szName, charsmax(szName))
    89.    
    90.     set_hudmessage(random(255), random(255), random(255), -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
    91.     show_hudmessage(0, "%s Has bought Frost M4A1!", szName)
    92.    
    93.     ze_colored_print(player, "!tYou Have bought Frost M4A1!y!")
    94. }*/
    95.  
    96. public Fw_TraceAttack_Post(iEnt, iAttacker, Float:flDamage, Float:fDir[3], ptr, iDamageType)
    97. {
    98.     if(!is_user_alive(iAttacker))
    99.         return
    100.    
    101.     if(get_user_weapon(iAttacker) != CSW_M4A1 || !g_bHasFrostM4A1[iAttacker])
    102.         return
    103.    
    104.     set_hudmessage(34, 138, 255, -1.0, 0.17, 1, 0.0, 2.0, 1.0, 1.0, -1)
    105.     ShowSyncHudMsg(iAttacker, g_iHudSync, "Freeze Damage^n%d/%d", g_iDmg[iAttacker], get_pcvar_num(g_iFreezeDmg))
    106.    
    107.     new vec1[3], vec2[3]
    108.     get_user_origin(iAttacker, vec1, 1)
    109.     get_user_origin(iAttacker, vec2, 4)
    110.  
    111.     make_beam(vec1, vec2, g_iSpriteLaser, 0, 50, 200, 200)
    112. }
    113.  
    114. public ze_user_infected(infected)
    115. {
    116.     if (g_bHasFrostM4A1[infected])
    117.     {
    118.         g_bHasFrostM4A1[infected] = false
    119.     }
    120. }
    121.  
    122. public ze_user_humanized(id)
    123. {
    124.     g_bHasFrostM4A1[id] = false
    125.     g_iDmg[id] = 0
    126. }
    127.  
    128. public Fw_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, bitsDamageType)
    129. {
    130.     // Not Vaild Victim or Attacker
    131.     if (!is_user_connected(iVictim) || !is_user_connected(iAttacker))
    132.         return HC_CONTINUE
    133.    
    134.     if (g_bHasFrostM4A1[iAttacker] && (get_user_weapon(iAttacker) == CSW_M4A1))
    135.     {
    136.         SetHookChainArg(4 , ATYPE_FLOAT, fDamage * get_pcvar_num(g_iDmgMultiplier))
    137.     }
    138.    
    139.     if((get_user_weapon(iAttacker) == CSW_M4A1) && g_bHasFrostM4A1[iAttacker])
    140.     {
    141.         g_iDmg[iAttacker] += (floatround(fDamage) * get_pcvar_num(g_iDmgMultiplier))
    142.     }
    143.    
    144.     if((g_iDmg[iAttacker] >= get_pcvar_num(g_iFreezeDmg)) && (get_user_weapon(iAttacker) == CSW_M4A1) && g_bHasFrostM4A1[iAttacker])
    145.     {
    146.         new szName[32]
    147.         get_user_name(iVictim, szName, charsmax(szName))
    148.        
    149.         ze_set_frost_grenade(iVictim, true)
    150.        
    151.         g_iDmg[iAttacker] = 0
    152.        
    153.         set_dhudmessage(34, 138, 255, -1.0, 0.25, 2, 6.0, 3.0, 0.1, 1.5)
    154.         show_dhudmessage(iAttacker, "%s Has been Freezed!", szName)
    155.     }
    156.     return HC_CONTINUE
    157. }
    158.  
    159. public CheckModel(id)
    160. {
    161.     if (is_user_alive(id))
    162.     {
    163.         set_pev(id, pev_viewmodel2, V_M4A1_MODEL)
    164.         set_pev(id, pev_weaponmodel2, P_M4A1_MODEL)
    165.     }
    166.     return PLUGIN_CONTINUE
    167. }
    168.  
    169. public CurrentWeapon(id)
    170. {
    171.     if ((get_user_weapon(id) == CSW_M4A1) && g_bHasFrostM4A1[id] == true)
    172.     {
    173.         CheckModel(id)
    174.     }
    175.     else
    176.     {
    177.         ClearSyncHud(id, g_iHudSync)
    178.     }
    179.     return PLUGIN_CONTINUE
    180. }
    181.  
    182. make_beam(const origin2[3], const origin[3], sprite, red, green, blue, alpha)
    183. {
    184.     //BEAMENTPOINTS
    185.     message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
    186.     write_byte (0) //TE_BEAMENTPOINTS 0
    187.     write_coord(origin2[0])
    188.     write_coord(origin2[1])
    189.     write_coord(origin2[2])
    190.     write_coord(origin[0])
    191.     write_coord(origin[1])
    192.     write_coord(origin[2])
    193.     write_short(sprite) // sprite
    194.     write_byte(1) // framestart
    195.     write_byte(5) // framerate
    196.     write_byte(2) // life
    197.     write_byte(20) // width
    198.     write_byte(0) // noise
    199.     write_byte(red) // r, g, b
    200.     write_byte(green) // r, g, b
    201.     write_byte(blue) // r, g, b
    202.     write_byte(alpha) // brightness
    203.     write_byte(150) // speed
    204.     message_end()
    205. }
    206.  
    207. public Fw_SetModel(entity, model[])
    208. {
    209.    
    210.     if(!is_valid_ent(entity))
    211.         return FMRES_IGNORED
    212.  
    213.     if(!equali(model, W_OLD_M4A1_MODEL))
    214.         return FMRES_IGNORED
    215.  
    216.     new className[33]
    217.     entity_get_string(entity, EV_SZ_classname, className, 32)
    218.  
    219.     static iOwner, iStoredM4A1ID
    220.  
    221.     // Frost M4A1 Owner
    222.     iOwner = entity_get_edict(entity, EV_ENT_owner)
    223.  
    224.     // Get drop weapon index (Frost M4A1) to use in fw_FrostM4A1AddToPlayer forward
    225.     iStoredM4A1ID = find_ent_by_owner(-1, "weapon_m4a1", entity)
    226.  
    227.     // If Player Has Frost M4A1 and It's weapon_m4a1
    228.     if(g_bHasFrostM4A1[iOwner] && is_valid_ent(iStoredM4A1ID))
    229.     {
    230.         // Setting weapon options
    231.         entity_set_int(iStoredM4A1ID, EV_INT_impulse, 1997)
    232.  
    233.         // Rest Var
    234.         g_bHasFrostM4A1[iOwner] = false
    235.        
    236.         // Set weaponbox new model
    237.         entity_set_model(entity, W_M4A1_MODEL)
    238.         return FMRES_SUPERCEDE
    239.     }
    240.     return FMRES_IGNORED
    241. }
    242.  
    243. public Fw_AddFrostM4A1ToPlayer(FrostM4A1, id)
    244. {
    245.     // Make sure that this is M4A1
    246.     if(is_valid_ent(FrostM4A1) && is_user_connected(id) && entity_get_int(FrostM4A1, EV_INT_impulse) == 1997)
    247.     {
    248.         // Update Var
    249.         g_bHasFrostM4A1[id] = true
    250.  
    251.         // Reset weapon options
    252.         entity_set_int(FrostM4A1, EV_INT_impulse, 0)
    253.         return HAM_HANDLED
    254.     }
    255.     return HAM_IGNORED
    256. }
Now define the native and add the following code anywhere:
    1. public _GiveFrostM4A1(id)
    2. {
    3.     g_bHasFrostM4A1[player] = true
    4.  
    5.     rg_remove_item(player, "weapon_m4a1")
    6.     rg_give_item(player, "weapon_m4a1", GT_APPEND)
    7.     rg_set_user_bpammo(player, WeaponIdType:get_weaponid("weapon_m4a1"), 90)
    8.    
    9.     new szName[32]
    10.     get_user_name(player, szName, charsmax(szName))
    11.    
    12.     set_hudmessage(random(255), random(255), random(255), -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
    13.     show_hudmessage(0, "%s Has bought Frost M4A1!", szName)
    14.    
    15.     ze_colored_print(player, "!tYou Have bought Frost M4A1!y!")
    16. }
So final code will be:
    1. #include <zombie_escape>
    2.  
    3. new const V_M4A1_MODEL[] = "models/zombie_escape/v_frost_m4a1.mdl"
    4. new const P_M4A1_MODEL[] = "models/zombie_escape/p_frost_m4a1.mdl"
    5. new const W_M4A1_MODEL[] = "models/zombie_escape/w_frost_m4a1.mdl"
    6. new const W_OLD_M4A1_MODEL[] = "models/w_m4a1.mdl"
    7.  
    8. new /*g_iItemID,*/ g_iHudSync, g_iSpriteLaser, g_iFreezeDmg, g_iDmgMultiplier
    9. new bool:g_bHasFrostM4A1[33]
    10. new g_iDmg[33]
    11.  
    12. public plugin_natives()
    13. {
    14.     register_native("GiveFrostM4A1", "_GiveFrostM4A1", 1)
    15. }
    16.  
    17. public plugin_init()
    18. {
    19.     register_plugin("[ZE] Extra Item: Frost M4A1", "1.0", "Raheem")
    20.    
    21.     // Cvars
    22.     g_iFreezeDmg = register_cvar("ze_freezing_m4a1_damage", "2000") // Damage Requried So Zombie got Frozen
    23.     g_iDmgMultiplier = register_cvar("ze_multiplier_m4a1_damage", "2") // Multiplie Weapon Damage
    24.  
    25.     // Message IDS
    26.     g_iHudSync = CreateHudSyncObj()
    27.    
    28.     // ITEM NAME & COST
    29.     // g_iItemID = ze_register_item("Frost M4A1", 30, 0) // It's cost 30 Ammo Pack
    30.    
    31.     // Events
    32.     register_event("WeapPickup", "CheckModel", "b", "1=19")
    33.     register_event("CurWeapon", "CurrentWeapon", "be", "1=1")
    34.    
    35.     // Forwards
    36.     register_forward(FM_SetModel, "Fw_SetModel")
    37.    
    38.     // HookChains
    39.     RegisterHookChain(RG_CBasePlayer_TakeDamage, "Fw_TakeDamage_Post", 1)
    40.    
    41.     // Hams
    42.     RegisterHam(Ham_TraceAttack, "player", "Fw_TraceAttack_Post", 1)
    43.     RegisterHam(Ham_TraceAttack, "worldspawn", "Fw_TraceAttack_Post", 1)
    44.     RegisterHam(Ham_Item_AddToPlayer, "weapon_m4a1", "Fw_AddFrostM4A1ToPlayer")
    45. }
    46.  
    47. public plugin_precache()
    48. {
    49.     // Models
    50.     precache_model(V_M4A1_MODEL)
    51.     precache_model(P_M4A1_MODEL)
    52.     precache_model(W_M4A1_MODEL)
    53.    
    54.     // Sprites
    55.     g_iSpriteLaser = precache_model( "sprites/Newlightning.spr")
    56. }
    57.  
    58. public client_disconnected(id)
    59. {
    60.     g_bHasFrostM4A1[id] = false
    61. }
    62.  
    63. /*public ze_select_item_pre(id, itemid)
    64. {
    65.     // Return Available and we will block it in Post, So it dosen't affect other plugins
    66.     if (itemid != g_iItemID)
    67.         return ZE_ITEM_AVAILABLE
    68.    
    69.     // Available for Humans only, So don't show it for zombies
    70.     if (ze_is_user_zombie(id))
    71.         return ZE_ITEM_DONT_SHOW
    72.    
    73.     return ZE_ITEM_AVAILABLE
    74. }
    75.  
    76. public ze_select_item_post(player, itemid)
    77. {
    78.     if (itemid != g_iItemID)
    79.         return
    80.  
    81.     g_bHasFrostM4A1[player] = true
    82.  
    83.     rg_remove_item(player, "weapon_m4a1")
    84.     rg_give_item(player, "weapon_m4a1", GT_APPEND)
    85.     rg_set_user_bpammo(player, WeaponIdType:get_weaponid("weapon_m4a1"), 90)
    86.    
    87.     new szName[32]
    88.     get_user_name(player, szName, charsmax(szName))
    89.    
    90.     set_hudmessage(random(255), random(255), random(255), -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
    91.     show_hudmessage(0, "%s Has bought Frost M4A1!", szName)
    92.    
    93.     ze_colored_print(player, "!tYou Have bought Frost M4A1!y!")
    94. }*/
    95.  
    96. public _GiveFrostM4A1(id)
    97. {
    98.     g_bHasFrostM4A1[player] = true
    99.  
    100.     rg_remove_item(player, "weapon_m4a1")
    101.     rg_give_item(player, "weapon_m4a1", GT_APPEND)
    102.     rg_set_user_bpammo(player, WeaponIdType:get_weaponid("weapon_m4a1"), 90)
    103.    
    104.     new szName[32]
    105.     get_user_name(player, szName, charsmax(szName))
    106.    
    107.     set_hudmessage(random(255), random(255), random(255), -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
    108.     show_hudmessage(0, "%s Has bought Frost M4A1!", szName)
    109.    
    110.     ze_colored_print(player, "!tYou Have bought Frost M4A1!y!")
    111. }
    112.  
    113. public Fw_TraceAttack_Post(iEnt, iAttacker, Float:flDamage, Float:fDir[3], ptr, iDamageType)
    114. {
    115.     if(!is_user_alive(iAttacker))
    116.         return
    117.    
    118.     if(get_user_weapon(iAttacker) != CSW_M4A1 || !g_bHasFrostM4A1[iAttacker])
    119.         return
    120.    
    121.     set_hudmessage(34, 138, 255, -1.0, 0.17, 1, 0.0, 2.0, 1.0, 1.0, -1)
    122.     ShowSyncHudMsg(iAttacker, g_iHudSync, "Freeze Damage^n%d/%d", g_iDmg[iAttacker], get_pcvar_num(g_iFreezeDmg))
    123.    
    124.     new vec1[3], vec2[3]
    125.     get_user_origin(iAttacker, vec1, 1)
    126.     get_user_origin(iAttacker, vec2, 4)
    127.  
    128.     make_beam(vec1, vec2, g_iSpriteLaser, 0, 50, 200, 200)
    129. }
    130.  
    131. public ze_user_infected(infected)
    132. {
    133.     if (g_bHasFrostM4A1[infected])
    134.     {
    135.         g_bHasFrostM4A1[infected] = false
    136.     }
    137. }
    138.  
    139. public ze_user_humanized(id)
    140. {
    141.     g_bHasFrostM4A1[id] = false
    142.     g_iDmg[id] = 0
    143. }
    144.  
    145. public Fw_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, bitsDamageType)
    146. {
    147.     // Not Vaild Victim or Attacker
    148.     if (!is_user_connected(iVictim) || !is_user_connected(iAttacker))
    149.         return HC_CONTINUE
    150.    
    151.     if (g_bHasFrostM4A1[iAttacker] && (get_user_weapon(iAttacker) == CSW_M4A1))
    152.     {
    153.         SetHookChainArg(4 , ATYPE_FLOAT, fDamage * get_pcvar_num(g_iDmgMultiplier))
    154.     }
    155.    
    156.     if((get_user_weapon(iAttacker) == CSW_M4A1) && g_bHasFrostM4A1[iAttacker])
    157.     {
    158.         g_iDmg[iAttacker] += (floatround(fDamage) * get_pcvar_num(g_iDmgMultiplier))
    159.     }
    160.    
    161.     if((g_iDmg[iAttacker] >= get_pcvar_num(g_iFreezeDmg)) && (get_user_weapon(iAttacker) == CSW_M4A1) && g_bHasFrostM4A1[iAttacker])
    162.     {
    163.         new szName[32]
    164.         get_user_name(iVictim, szName, charsmax(szName))
    165.        
    166.         ze_set_frost_grenade(iVictim, true)
    167.        
    168.         g_iDmg[iAttacker] = 0
    169.        
    170.         set_dhudmessage(34, 138, 255, -1.0, 0.25, 2, 6.0, 3.0, 0.1, 1.5)
    171.         show_dhudmessage(iAttacker, "%s Has been Freezed!", szName)
    172.     }
    173.     return HC_CONTINUE
    174. }
    175.  
    176. public CheckModel(id)
    177. {
    178.     if (is_user_alive(id))
    179.     {
    180.         set_pev(id, pev_viewmodel2, V_M4A1_MODEL)
    181.         set_pev(id, pev_weaponmodel2, P_M4A1_MODEL)
    182.     }
    183.     return PLUGIN_CONTINUE
    184. }
    185.  
    186. public CurrentWeapon(id)
    187. {
    188.     if ((get_user_weapon(id) == CSW_M4A1) && g_bHasFrostM4A1[id] == true)
    189.     {
    190.         CheckModel(id)
    191.     }
    192.     else
    193.     {
    194.         ClearSyncHud(id, g_iHudSync)
    195.     }
    196.     return PLUGIN_CONTINUE
    197. }
    198.  
    199. make_beam(const origin2[3], const origin[3], sprite, red, green, blue, alpha)
    200. {
    201.     //BEAMENTPOINTS
    202.     message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
    203.     write_byte (0) //TE_BEAMENTPOINTS 0
    204.     write_coord(origin2[0])
    205.     write_coord(origin2[1])
    206.     write_coord(origin2[2])
    207.     write_coord(origin[0])
    208.     write_coord(origin[1])
    209.     write_coord(origin[2])
    210.     write_short(sprite) // sprite
    211.     write_byte(1) // framestart
    212.     write_byte(5) // framerate
    213.     write_byte(2) // life
    214.     write_byte(20) // width
    215.     write_byte(0) // noise
    216.     write_byte(red) // r, g, b
    217.     write_byte(green) // r, g, b
    218.     write_byte(blue) // r, g, b
    219.     write_byte(alpha) // brightness
    220.     write_byte(150) // speed
    221.     message_end()
    222. }
    223.  
    224. public Fw_SetModel(entity, model[])
    225. {
    226.    
    227.     if(!is_valid_ent(entity))
    228.         return FMRES_IGNORED
    229.  
    230.     if(!equali(model, W_OLD_M4A1_MODEL))
    231.         return FMRES_IGNORED
    232.  
    233.     new className[33]
    234.     entity_get_string(entity, EV_SZ_classname, className, 32)
    235.  
    236.     static iOwner, iStoredM4A1ID
    237.  
    238.     // Frost M4A1 Owner
    239.     iOwner = entity_get_edict(entity, EV_ENT_owner)
    240.  
    241.     // Get drop weapon index (Frost M4A1) to use in fw_FrostM4A1AddToPlayer forward
    242.     iStoredM4A1ID = find_ent_by_owner(-1, "weapon_m4a1", entity)
    243.  
    244.     // If Player Has Frost M4A1 and It's weapon_m4a1
    245.     if(g_bHasFrostM4A1[iOwner] && is_valid_ent(iStoredM4A1ID))
    246.     {
    247.         // Setting weapon options
    248.         entity_set_int(iStoredM4A1ID, EV_INT_impulse, 1997)
    249.  
    250.         // Rest Var
    251.         g_bHasFrostM4A1[iOwner] = false
    252.        
    253.         // Set weaponbox new model
    254.         entity_set_model(entity, W_M4A1_MODEL)
    255.         return FMRES_SUPERCEDE
    256.     }
    257.     return FMRES_IGNORED
    258. }
    259.  
    260. public Fw_AddFrostM4A1ToPlayer(FrostM4A1, id)
    261. {
    262.     // Make sure that this is M4A1
    263.     if(is_valid_ent(FrostM4A1) && is_user_connected(id) && entity_get_int(FrostM4A1, EV_INT_impulse) == 1997)
    264.     {
    265.         // Update Var
    266.         g_bHasFrostM4A1[id] = true
    267.  
    268.         // Reset weapon options
    269.         entity_set_int(FrostM4A1, EV_INT_impulse, 0)
    270.         return HAM_HANDLED
    271.     }
    272.     return HAM_IGNORED
    273. }
To use the native in any other plugin, you must define it first as:
He who fails to plan is planning to fail

BloodyPro
Member
Member
Palestine
Posts: 3
Joined: 2 years ago
Contact:

#5

Post by BloodyPro » 2 years ago

Thx bro , now i can start working on it :))

Post Reply

Create an account or sign in to join the discussion

You need to be a member in order to post a reply

Create an account

Not a member? register to join our community
Members can start their own topics & subscribe to topics
It’s free and only takes a minute

Register

Sign in

Who is online

Users browsing this forum: No registered users and 8 guests