Approved VIP System

Gameplay Addons
User avatar
SexY DeviL CJ
Mod Tester
Mod Tester
Posts: 73
Joined: 1 Year Ago
Has thanked: 1 time
Been thanked: 10 times
Contact:

Re: VIP System

#81

Post by SexY DeviL CJ » 1 Year Ago

Bro include machine guns for vip
......Devil Was Here......

User avatar
Raheem
Mod Developer
Mod Developer
Egypt
Posts: 1962
Joined: 2 Years Ago
Location: Egypt
Has thanked: 32 times
Been thanked: 108 times
Age: 21
Contact:

#82

Post by Raheem » 1 Year Ago

Already done in another plugin bro so use it, not must to be included in the main plugin. For example speed for VIPs is already done in separate plugin and so on.
You don't know? Learn and you will know.

User avatar
geriiiiii
Member
Member
Bosnia & Herzegovina
Posts: 4
Joined: 1 Year Ago
Has thanked: 0
Been thanked: 0
Contact:

#83

Post by geriiiiii » 1 Year Ago

good job

User avatar
DarkZombie
Member
Member
Hungary
Posts: 69
Joined: 1 Year Ago
Donation: 1x donated in total €6.00
Has thanked: 16 times
Been thanked: 0
Contact:

#84

Post by DarkZombie » 1 Year Ago

Vip system not working for me. Write this error massage.
L 08/29/2018 - 20:38:33: [AMXX] Plugin "ze_vip_system.amxx" failed to load: Plugin uses an unknown function (name "ze_give_user_parachute") - check your modules.ini.

User avatar
Raheem
Mod Developer
Mod Developer
Egypt
Posts: 1962
Joined: 2 Years Ago
Location: Egypt
Has thanked: 32 times
Been thanked: 108 times
Age: 21
Contact:

#85

Post by Raheem » 1 Year Ago

You must install parachute plugin, find it here: viewtopic.php?f=15&t=45 (3- Parachute)
These users thanked the author Raheem for the post:
DarkZombie (1 Year Ago)
You don't know? Learn and you will know.

User avatar
DarkZombie
Member
Member
Hungary
Posts: 69
Joined: 1 Year Ago
Donation: 1x donated in total €6.00
Has thanked: 16 times
Been thanked: 0
Contact:

#86

Post by DarkZombie » 1 Year Ago

Raheem wrote:
1 Year Ago
You must install parachute plugin, find it here: viewtopic.php?f=15&t=45 (3- Parachute)
Thank you, boss. :D

User avatar
DarkZombie
Member
Member
Hungary
Posts: 69
Joined: 1 Year Ago
Donation: 1x donated in total €6.00
Has thanked: 16 times
Been thanked: 0
Contact:

#87

Post by DarkZombie » 1 Year Ago

Vip model can somehow be added? I mean who VIP is getting another model.

User avatar
Raheem
Mod Developer
Mod Developer
Egypt
Posts: 1962
Joined: 2 Years Ago
Location: Egypt
Has thanked: 32 times
Been thanked: 108 times
Age: 21
Contact:

#88

Post by Raheem » 1 Year Ago

You can use this plugin: viewtopic.php?f=15&t=32 or viewtopic.php?f=15&t=3154

These plugins will require simple edits, you can post in these plugins topics and it's author will help you.
You don't know? Learn and you will know.

User avatar
Mark
Senior Member
Senior Member
United States of America
Posts: 281
Joined: 1 Year Ago
Location: Des Moines/USA
Donation: 1x donated in total €10.00
Has thanked: 6 times
Been thanked: 21 times
Age: 33
Contact:

#89

Post by Mark » 1 Year Ago

When date for expire is added i do not have VIP anymore like its not reading the line

Nevermind fixed it
  1. #include <zombie_escape>
  2. #include <ze_vip>
  3.  
  4. // Defines - Comment MULTIJUMP or PARACHUTE, so you don't need to run multijump/parachute plugin.
  5. #define VIP_MESSAGES    VIP_A
  6. #define SCOREBOARD      VIP_A
  7. #define MULTIJUMP       VIP_B
  8. #define PARACHUTE       VIP_B
  9. #define DAMAGE          VIP_C
  10. #define NON_VIP         VIP_Z
  11.  
  12. #if defined PARACHUTE
  13.     #include <ze_parachute>
  14. #endif
  15.  
  16. #if defined MULTIJUMP
  17.     #include <ze_multijump>
  18. #endif
  19.  
  20. // Variables
  21. new g_szPasswordKey[65],
  22.     g_szPassword[65],
  23.     bool:g_bIsUserVIP[33],
  24.     bool:g_bSetVIP[33],
  25.     g_iFlags[33],
  26.     bool:g_bIsHappyHour,
  27.     g_iMaxPlayers
  28.  
  29. // Const.
  30. static const g_szLocalFile[] = "addons/amxmodx/configs/ze_vips.ini"
  31.  
  32. new const szCommands[][] =
  33. {
  34.     "say /vip",
  35.     "say /vips",
  36.     "say_team /vip",
  37.     "say_team /vips"
  38. }
  39.  
  40. // Cvars
  41. new g_pCvarVIPScoreboard,
  42.     g_pCvarConnectMessage,
  43.     g_pCvarAdminContact,
  44.     g_pCvarEnableHappyHours,
  45.     g_pCvarHappyHours,
  46.     g_pCvarHappyHoursFlags,
  47.     g_pCvarDamage
  48.  
  49. #if defined PARACHUTE
  50.     new g_pCvarParachute
  51. #endif
  52.  
  53. #if defined MULTIJUMP
  54.     new g_pCvarMultijump
  55. #endif
  56.  
  57. public plugin_natives()
  58. {
  59.     register_native("ze_get_vip_flags", "native_ze_get_vip_flags", 1)
  60.     register_native("ze_set_vip_flags", "native_ze_set_vip_flags", 1)
  61.     register_native("ze_is_user_vip", "native_ze_is_user_vip", 1)
  62. }
  63.  
  64. public plugin_init()
  65. {
  66.     register_plugin("[ZE] Zombie Escape VIP", VIP_VERSION, AUTHORS)
  67.    
  68.     // Hookchain
  69.     RegisterHookChain(RG_CBasePlayer_TakeDamage, "Fw_TakeDamage_Pre", 0)
  70.    
  71.     // Cvars
  72.     g_pCvarConnectMessage = register_cvar("ze_connect_message", "1")
  73.     g_pCvarAdminContact = register_cvar("ze_admin_contact", "Admin Name")
  74.     g_pCvarVIPScoreboard = register_cvar("ze_show_vip_scoreboard", "1")
  75.     g_pCvarEnableHappyHours = register_cvar("ze_enable_happy_hours", "1")
  76.     g_pCvarHappyHours = register_cvar("ze_vip_happy_hours", "9-12")
  77.     g_pCvarHappyHoursFlags = register_cvar("ze_happy_hours_vip_flags", "abcd")
  78.     g_pCvarDamage = register_cvar("ze_vip_multiply_damage", "1.2")
  79.     #if defined MULTIJUMP
  80.         g_pCvarMultijump = register_cvar("ze_give_vip_multijump", "1")
  81.     #endif
  82.     #if defined PARACHUTE
  83.         g_pCvarParachute = register_cvar("ze_give_vip_parachute", "1")
  84.     #endif
  85.    
  86.     register_cvar("ze_vip_version", VIP_VERSION, FCVAR_SERVER|FCVAR_SPONLY)
  87.     set_cvar_string("ze_vip_version", VIP_VERSION)
  88.    
  89.     // Commands
  90.     for (new i = 0; i < charsmax(szCommands); i++)
  91.         register_clcmd(szCommands[i], "CmdVIP")
  92.  
  93.     register_clcmd("say /getvip", "CmdMotd")
  94.     register_clcmd("say_team /getvip", "CmdMotd")
  95.    
  96.     // Get Password Key
  97.     get_cvar_string("amx_password_field", g_szPasswordKey, charsmax(g_szPasswordKey))
  98.    
  99.     // Initialize Arrays
  100.     arrayset(g_bIsUserVIP, false, 32)
  101.     arrayset(g_bSetVIP, false, 32)
  102.    
  103.     // Get max players
  104.     g_iMaxPlayers = get_member_game(m_nMaxPlayers)
  105. }
  106.  
  107. public plugin_cfg()
  108. {
  109.     // Get our configiration file and Execute it
  110.     new szCfgDir[64]
  111.     get_localinfo("amxx_configsdir", szCfgDir, charsmax(szCfgDir))
  112.     server_cmd("exec %s/ze_vip.cfg", szCfgDir)
  113. }
  114.  
  115. public Fw_TakeDamage_Pre(iVictim, iInflictor, iAttacker, Float:flDamage, bitsDamageType)
  116. {
  117.     if (!is_user_alive(iVictim) || !is_user_alive(iAttacker))
  118.         return HC_CONTINUE
  119.    
  120.     if (!(ze_get_vip_flags(iAttacker) & DAMAGE) || get_pcvar_num(g_pCvarDamage) == 0)
  121.         return HC_CONTINUE
  122.  
  123.     SetHookChainArg(4, ATYPE_FLOAT, flDamage * get_pcvar_float(g_pCvarDamage))
  124.    
  125.     return HC_CONTINUE
  126. }
  127.  
  128. public client_putinserver(id)
  129. {
  130.     if (ze_get_vip_flags(id) & VIP_MESSAGES)
  131.     {
  132.         if (get_pcvar_num(g_pCvarConnectMessage) != 0)
  133.         {
  134.             new szName[32]
  135.             get_user_name(id, szName, charsmax(szName))
  136.             ze_colored_print(0, "!tVIP !g%s !thas connected to the server!y.", szName)
  137.         }
  138.     }
  139. }
  140.  
  141. public CmdMotd(id)
  142. {
  143.     show_motd(id, "ze_vip.txt", "Zombie Escape VIP")
  144. }
  145.  
  146. public CmdVIP(id)
  147. {
  148.     set_task(0.1, "Print_List")
  149. }
  150.  
  151. public Print_List()
  152. {
  153.     Print_VIP_List()
  154. }
  155.  
  156. public Print_VIP_List()
  157. {
  158.     new szVIPName[33][32], szMessage[700], szContact[256]
  159.    
  160.     new iPlayer, i, iVIPCount = 0, iLen = 0;
  161.    
  162.     for (iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++)
  163.     {
  164.         if (!is_user_connected(iPlayer))
  165.             continue
  166.        
  167.         if (ze_get_vip_flags(iPlayer) & VIP_MESSAGES)
  168.         {
  169.             get_user_name(iPlayer, szVIPName[iVIPCount], charsmax(szVIPName))
  170.             iVIPCount++
  171.         }
  172.     }
  173.    
  174.     iLen = formatex(szMessage, charsmax(szMessage), "^4VIPs ONLINE^1: ")
  175.    
  176.     if (iVIPCount > 0)
  177.     {
  178.         for (i = 0; i <= iVIPCount; i++)
  179.         {
  180.             iLen += formatex(szMessage[iLen], charsmax(szMessage) - iLen, "^3%s^1%s^3", szVIPName[i], (i < (iVIPCount - 1)) ? ", " : "")
  181.         }
  182.     }
  183.     else
  184.     {
  185.         szMessage = "^4No VIPs online^1."
  186.     }
  187.    
  188.     client_print_color(0, print_team_default, szMessage)
  189.    
  190.     get_pcvar_string(g_pCvarAdminContact, szContact, charsmax(szContact))
  191.    
  192.     if (szContact[0])
  193.     {
  194.         client_print_color(0, print_team_default, "^1- ^4Contact Server Admin ^1-- ^3%s", szContact)
  195.     }
  196. }
  197.  
  198. public ze_user_humanized(id)
  199. {
  200.     if (!is_user_alive(id))
  201.         return
  202.    
  203.     Happy_Hours()
  204.    
  205.     if (g_bIsHappyHour == true && get_pcvar_num(g_pCvarEnableHappyHours) != 0)
  206.     {
  207.         new szFlags[VIP_MAX_FLAGS]
  208.         get_pcvar_string(g_pCvarHappyHoursFlags, szFlags, charsmax(szFlags))
  209.         ze_set_vip_flags(id, read_flags(szFlags))
  210.     }
  211.    
  212.     #if defined MULTIJUMP
  213.         if (ze_get_vip_flags(id) & MULTIJUMP)
  214.         {
  215.             if (get_pcvar_num(g_pCvarMultijump) != 0)
  216.             {
  217.                 ze_give_user_multijump(id)
  218.             }
  219.         }
  220.     #endif
  221.    
  222.     #if defined PARACHUTE
  223.         if (ze_get_vip_flags(id) & PARACHUTE)
  224.         {
  225.             if (get_pcvar_num(g_pCvarParachute) != 0)
  226.             {
  227.                 ze_give_user_parachute(id)
  228.             }
  229.         }
  230.     #endif
  231.  
  232.     set_task(0.1, "Update_Attribute", id, _, _, "a", 10)
  233. }
  234.  
  235. public ze_roundend(WinTeam)
  236. {
  237.     for (new i = 0; i < get_member_game(m_nMaxPlayers); i++)
  238.     {
  239.         g_bSetVIP[i] = false
  240.     }
  241. }
  242.  
  243. public Update_Attribute(id)
  244. {
  245.     if ((ze_get_vip_flags(id) & SCOREBOARD) && get_pcvar_num(g_pCvarVIPScoreboard) != 0)
  246.     {
  247.         message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"), {0, 0, 0}, id)
  248.         write_byte(id)
  249.         write_byte(4)
  250.         message_end()
  251.     }
  252. }
  253.  
  254. public native_ze_get_vip_flags(id)
  255. {
  256.     // Our file exists?
  257.     if (file_exists(g_szLocalFile))
  258.     {
  259.         /*
  260.         *   We can't use new file system here, because if file opened it can not be deleted.
  261.         *   Old system provide the suitable way for doing it simply. That's a reason.
  262.         */
  263.  
  264.         // Declare some useful variables
  265.         new iMaxLines, szLineToRead[129], szParse[4][65], szName[32], szSteamID[36], iTextLen
  266.        
  267.         // Get max lines number in the file
  268.         iMaxLines = file_size(g_szLocalFile, FSOPT_LINES_COUNT)
  269.        
  270.         // Get our player name and steamid
  271.         get_user_authid(id, szSteamID, charsmax(szSteamID))
  272.         get_user_name(id, szName, charsmax(szName))
  273.        
  274.         // Loop through the whole file
  275.         for (new iLine = 0; iLine < iMaxLines; iLine++)
  276.         {
  277.             // Read line by line
  278.             read_file(g_szLocalFile, iLine, szLineToRead, charsmax(szLineToRead), iTextLen)
  279.            
  280.             // Remove any space, useful to remove blank lines which only contain spaces
  281.             trim(szLineToRead)
  282.            
  283.             // Check if string empty or starting with ; or // ignore the line
  284.             if (strlen(szLineToRead) == 0 || szLineToRead[0] == ';' || (szLineToRead[0] == '/' && szLineToRead[1] == '/'))
  285.                 continue
  286.            
  287.             // Split our line by spaces to 4 parts: name or steam, password, flags, expire date
  288.             parse(szLineToRead, szParse[0], charsmax(szParse[]), szParse[1], charsmax(szParse[]), szParse[2], charsmax(szParse[]), szParse[3], charsmax(szParse[]))
  289.            
  290.             // Remove all "" from our 4 parts
  291.             remove_quotes(szParse[0])
  292.             remove_quotes(szParse[1])
  293.             remove_quotes(szParse[2])
  294.             remove_quotes(szParse[3])
  295.            
  296.             // Check expire date for this steam/name (Steam/Name unique to check with)
  297.             CheckDate(szParse[3], szParse[0])
  298.            
  299.             // Check if user in file is same who we check
  300.             if (equali(szSteamID, szParse[0]) || equali(szName, szParse[0]))
  301.             {
  302.                 // Player exists in the file, this means he is VIP
  303.                 g_bIsUserVIP[id] = true
  304.                 copy(g_szPassword, charsmax(g_szPassword), szParse[1])
  305.                
  306.                 // Return his flags
  307.                 return read_flags(szParse[2])
  308.             }
  309.         }
  310.     }
  311.     else
  312.     {
  313.         // File not exists, then create it (Here we can use new file system without problems)
  314.         new iFileHandler = fopen(g_szLocalFile, "wt")
  315.        
  316.         fputs(iFileHandler, "; Zombie Escape VIP^n^n")
  317.         fputs(iFileHandler, ";Flags:^n^n")
  318.         fputs(iFileHandler, "; a -- Connect Message and VIP List^n")
  319.         fputs(iFileHandler, "; b -- Multi-Jump^n")
  320.         fputs(iFileHandler, "; c -- Parachute^n")
  321.         fputs(iFileHandler, "; d -- Scoreboard Attrib.^n")
  322.         fputs(iFileHandler, "; e -- VIP Damage^n^n")
  323.         fputs(iFileHandler, ";Usage Example:^n^n")
  324.         fputs(iFileHandler, "; ^"Steam/Nick^" ^"Password^" ^"Flags^" ^"ExpireDate^"")
  325.  
  326.         fclose(iFileHandler)
  327.     }
  328.    
  329.     g_bIsUserVIP[id] = false
  330.    
  331.     if (g_bSetVIP[id] == true)
  332.     {
  333.         return g_iFlags[id]
  334.     }
  335.     else
  336.     {
  337.         return NON_VIP
  338.     }
  339. }
  340.  
  341. public native_ze_set_vip_flags(id, Flags)
  342. {
  343.     g_bSetVIP[id] = true
  344.     g_iFlags[id] = Flags
  345.     ze_get_vip_flags(id)
  346. }
  347.  
  348. public native_ze_is_user_vip(id)
  349. {
  350.     if (ze_get_vip_flags(id) & VIP_Z)
  351.         return false
  352.    
  353.     return true
  354. }
  355.  
  356. /*
  357. *   Dedicated stock for our plugin, to delete expired lines.
  358. *   You should give it the expire date, and key.
  359. *   Key should be unique like steam or name, so we can in another stock detect this line and delete it.
  360. */
  361. stock CheckDate(const szEndDate[], const szKey[])
  362. {
  363.     new szCurrentDate[64],
  364.         szFormatedEndDate[64],
  365.         szCurrentDay[32],
  366.         szCurrentMonth[32],
  367.         szCurrentYear[32],
  368.         szEndDay[32],
  369.         szEndMonth[32],
  370.         szEndYear[32]
  371.        
  372.     copy(szFormatedEndDate, charsmax(szFormatedEndDate), szEndDate)
  373.     get_time("%m-%d-%Y", szCurrentDate, charsmax(szCurrentDate))
  374.    
  375.     for (new ch = 0; ch <= charsmax(szFormatedEndDate); ch++)
  376.     {
  377.         if (szFormatedEndDate[ch] == '-')
  378.             szFormatedEndDate[ch] = ' '
  379.     }
  380.    
  381.     for (new ch = 0; ch <= charsmax(szCurrentDate); ch++)
  382.     {
  383.         if (szCurrentDate[ch] == '-')
  384.             szCurrentDate[ch] = ' '
  385.     }
  386.  
  387.     parse(szCurrentDate, szCurrentMonth, charsmax(szCurrentMonth), szCurrentDay, charsmax(szCurrentDay), szCurrentYear, charsmax(szCurrentYear))
  388.     parse(szFormatedEndDate, szEndMonth, charsmax(szEndMonth), szEndDay, charsmax(szEndDay), szEndYear, charsmax(szEndYear))
  389.    
  390.     if (str_to_num(szFormatedEndDate) == 0)
  391.         return
  392.    
  393.     new iCurrentMonth,
  394.         iCurrentDay,
  395.         iCurrentYear,
  396.         iEndDay,
  397.         iEndMonth,
  398.         iEndYear
  399.    
  400.     iCurrentMonth = str_to_num(szCurrentMonth)
  401.     iCurrentDay   = str_to_num(szCurrentDay)
  402.     iCurrentYear  = str_to_num(szCurrentYear)
  403.  
  404.     iEndMonth = str_to_num(szEndMonth) 
  405.     iEndDay   = str_to_num(szEndDay)
  406.     iEndYear  = str_to_num(szEndYear)
  407.    
  408.     // Just a check, maybe useless
  409.     if ((!iCurrentMonth && !iCurrentDay && !iCurrentYear) || (!iEndMonth && !iEndDay && !iEndYear))
  410.         return
  411.    
  412.     /*
  413.     *   Check expire date algorithm idea:
  414.     *  
  415.     *   If current year > Expire year -- This means it's already expired so delete this line.
  416.     *
  417.     *   If Same year then check by month:
  418.     *   If current month > expire month -- Expired delete the line.
  419.     *
  420.     *   If same month then check by day:
  421.     *   If current day > expire date -- Expired detete the line.
  422.     */
  423.    
  424.     if (iEndYear < iCurrentYear)
  425.     {
  426.         Delete_Line(g_szLocalFile, szKey)
  427.     }
  428.     else if (iEndYear == iCurrentYear)
  429.     {
  430.         if (iEndMonth < iCurrentMonth)
  431.         {
  432.             Delete_Line(g_szLocalFile, szKey)
  433.         }
  434.         else if (iEndMonth == iCurrentMonth)
  435.         {
  436.             if (iEndDay < iCurrentDay)
  437.             {
  438.                 Delete_Line(g_szLocalFile, szKey)
  439.             }
  440.         }
  441.     }
  442. }
  443.  
  444. /*
  445. *   Stock used to delete line in file, based on key.
  446. *   Key is steamid or name.
  447. *   For some purposes we can't use new file system here.
  448. */
  449. stock Delete_Line(const szFile[], const szKey[])
  450. {
  451.     // Check if file there or not
  452.     if (file_exists(szFile))
  453.     {
  454.         // Get max lines in the file
  455.         new iMaxLines = file_size(szFile, FSOPT_LINES_COUNT)
  456.        
  457.         // Some variables
  458.         new Array:szFileLines, szLineToRead[400], iTextLen, szParse[4][65]
  459.        
  460.         // Create dynamic array to handle all lines in our file (every line will be in element)
  461.         szFileLines = ArrayCreate(400)
  462.        
  463.         // Loop through whole file
  464.         for (new iLine = 0; iLine < iMaxLines; iLine++)
  465.         {
  466.             // Read line by line
  467.             read_file(szFile, iLine, szLineToRead, charsmax(szLineToRead), iTextLen)
  468.            
  469.             // Just split our line so we get the steamid or name and compare with key
  470.             parse(szLineToRead, szParse[0], charsmax(szParse[]), szParse[1], charsmax(szParse[]), szParse[2], charsmax(szParse[]), szParse[3], charsmax(szParse[]))
  471.            
  472.             // Remove any ""
  473.             remove_quotes(szParse[0])
  474.             remove_quotes(szParse[1])
  475.             remove_quotes(szParse[2])
  476.             remove_quotes(szParse[3])
  477.            
  478.             // If steamid or name is same as one we need to delete, then don't copy to our array
  479.             if (equal(szParse[0], szKey))
  480.                 continue
  481.            
  482.             // Push all lines to our array except one we need to delete
  483.             ArrayPushString(szFileLines, szLineToRead)
  484.         }
  485.        
  486.         // Delete the file
  487.         delete_file(szFile)
  488.        
  489.         // Recreate the file and print all data to it
  490.         for (new iLine = 0; iLine < ArraySize(szFileLines); iLine++)
  491.         {
  492.             // Get strings in our array
  493.             ArrayGetString(szFileLines, iLine, szLineToRead, charsmax(szLineToRead))
  494.            
  495.             // Write them to our file
  496.             write_file(szFile, szLineToRead)
  497.         }
  498.        
  499.         // Destroy this array and free it's memory
  500.         ArrayDestroy(szFileLines)
  501.     }
  502. }
  503.  
  504. stock Happy_Hours()
  505. {
  506.     new szTime[3], szHappyHours[32], szHappyHours_Start[32], szHappyHours_End[32]
  507.     get_time("%H", szTime, charsmax(szTime))
  508.    
  509.     get_pcvar_string(g_pCvarHappyHours, szHappyHours, charsmax(szHappyHours))
  510.    
  511.     for (new ch = 0; ch <= charsmax(szHappyHours); ch++)
  512.     {
  513.         if (szHappyHours[ch] == '-')
  514.             szHappyHours[ch] = ' '
  515.     }
  516.    
  517.     parse(szHappyHours, szHappyHours_Start, charsmax(szHappyHours_Start), szHappyHours_End, charsmax(szHappyHours_End))
  518.    
  519.     new iTime, iHappyHourStart, iHappyHourEnd
  520.    
  521.     iTime = str_to_num(szTime)
  522.     iHappyHourStart = str_to_num(szHappyHours_Start)
  523.     iHappyHourEnd = str_to_num(szHappyHours_End)
  524.    
  525.     if(iHappyHourEnd > iTime >= iHappyHourStart)
  526.     {
  527.         g_bIsHappyHour = true
  528.     }
  529.     else
  530.     {
  531.         g_bIsHappyHour = false
  532.     }
  533. }
  534.  

User avatar
Raheem
Mod Developer
Mod Developer
Egypt
Posts: 1962
Joined: 2 Years Ago
Location: Egypt
Has thanked: 32 times
Been thanked: 108 times
Age: 21
Contact:

#90

Post by Raheem » 1 Year Ago

What the problem?
You don't know? Learn and you will know.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest