←  Dodatki

AMXX.pl: Support AMX Mod X i SourceMod

»
Wklejka 131234193514709 dodana przez olek0017, 03.08.2011 04:25
Typ:


timeleft
131234193514709
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
    /* Plugin generated by AMXX-Studio */
 
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
 
#define PLUGIN "Ilosc rund do konca"
#define VERSION "1.0"
#define AUTHOR "Mochi"
 
new CT = 0
new TT = 0
 
new g_TimeSet[32][2]
new g_LastTime
new g_CountDown
new g_Switch
 
public plugin_init() 
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_clcmd("say timeleft","wys",0)
    register_clcmd("say_team timeleft","wys",0)    
    register_event("SendAudio", "t_win", "a", "2&%!MRAD_terwin")
    register_event("SendAudio", "ct_win", "a", "2&%!MRAD_ctwin")
    register_event("TextMsg", "restart_roundsnum", "a", "2&#Game_will_restart_in")
    register_event("HLTV", "Nowa_Runda", "a", "1=0", "2=0") 
    register_dictionary("timeleft.txt")
    register_cvar("amx_time_voice", "1")
    register_srvcmd("amx_time_display", "setDisplaying")
    register_cvar("amx_timeleft", "00:00", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_UNLOGGED|FCVAR_SPONLY)
    register_clcmd("say thetime", "sayTheTime", 0, "- displays current time")
    server_cmd("amx_cvar mp_maxrounds 15")
    set_task(0.8, "timeRemain", 8648458, "", 0, "b")
 
}
public ct_win()
{
    CT++
}
public t_win()
{
    TT++
}
 
public restart_roundsnum() 
{
    CT = 0 
    TT = 0
}
public wys(id)
{
    new suma = CT + TT
    new num = get_cvar_num("mp_maxrounds") - suma
    if(num == 3 || num == 2 || num == 4)
    {    
        ColorChat(0,GREY,"Pozostaly: %d rundy",num)
    }
    else if(num == 1)
    {
        ColorChat(0,GREY,"Pozostala: 1 runda")
    }
    else
    {
        ColorChat(0,GREY,"Pozostalo: %d rund",num)
    }
 
}
public Nowa_Runda()
{
    new suma = CT + TT;
    if(suma == 14)
    {
        new name[52]
        new red = random_num(0,255)
        new green = random_num(0,255)
        new blue = random_num(0,255)     
        get_cvar_string("amx_nextmap",name,51)
        set_hudmessage(red, green, blue, 0.1, 0.4)
        show_hudmessage(0, "Next map: %s", name)
        ColorChat(0,GREEN,"<<< OSTATNIA RUNDA >>>")
    }
}
public sayTheTime(id)
{
    if (get_cvar_num("amx_time_voice"))
    {
        new mhours[6], mmins[6], whours[32], wmins[32], wpm[6]
 
        get_time("%H", mhours, 5)
        get_time("%M", mmins, 5)
 
        new mins = str_to_num(mmins)
        new hrs = str_to_num(mhours)
 
        if (mins)
            num_to_word(mins, wmins, 31)
        else
            wmins[0] = 0
 
        if (hrs < 12)
            wpm = "am "
        else
        {
            if (hrs > 12) hrs -= 12
            wpm = "pm "
        }
 
        if (hrs) 
            num_to_word(hrs, whours, 31)
        else
            whours = "twelve "
 
        client_cmd(id, "spk ^"fvox/time_is_now %s_period %s%s^"", whours, wmins, wpm)
    }
 
    new ctime[64]
 
    get_time("%m/%d/%Y - %H:%M:%S", ctime, 63)
    client_print(0, print_chat, "%L:   %s", LANG_PLAYER, "THE_TIME", ctime)
 
    return PLUGIN_CONTINUE
}
setTimeText(text[], len, tmlf, id)
{
new secs = tmlf % 60
new mins = tmlf / 60
 
if (secs == 0)
    format(text, len, "%d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE")
    else if (mins == 0)
        format(text, len, "%d %L", secs, id, (secs > 1) ? "SECONDS" : "SECOND")
    else
        format(text, len, "%d %L %d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE", secs, id, (secs > 1) ? "SECONDS" : "SECOND")
}
setTimeVoice(text[], len, flags, tmlf)
{
new temp[7][32]
new secs = tmlf % 60
new mins = tmlf / 60
 
for (new a = 0;a < 7;++a) temp[a][0] = 0
 
 
if (secs > 0)
{
    num_to_word(secs, temp[4], 31)
 
    if (!(flags & 8)) temp[5] = "seconds "    /* there is no "second" in default hl */
}
 
if (mins > 59)
{
    new hours = mins / 60
 
    num_to_word(hours, temp[0], 31)
 
    if (!(flags & 8)) temp[1] = "hours "
 
    mins = mins % 60
}
 
if (mins > 0)
{
    num_to_word(mins, temp[2], 31)
 
    if (!(flags & 8)) temp[3] = "minutes "
}
 
if (!(flags & 4)) temp[6] = "remaining "
 
return format(text, len, "spk ^"vox/%s%s%s%s%s%s%s^"", temp[0], temp[1], temp[2], temp[3], temp[4], temp[5], temp[6])
}
findDispFormat(time)
{
for (new i = 0; g_TimeSet[i][0]; ++i)
{
if (g_TimeSet[i][1] & 16)
{
    if (g_TimeSet[i][0] > time)
    {
        if (!g_Switch)
        {
            g_CountDown = g_Switch = time
            remove_task(8648458)
            set_task(1.0, "timeRemain", 34543, "", 0, "b")
        }
 
        return i
    }
}
else if (g_TimeSet[i][0] == time)
{
    return i
}
}
 
return -1
}
 
public setDisplaying()
{
new arg[32], flags[32], num[32]
new argc = read_argc() - 1
new i = 0
 
while (i < argc && i < 32)
{
read_argv(i + 1, arg, 31)
parse(arg, flags, 31, num, 31)
 
g_TimeSet[i][0] = str_to_num(num)
g_TimeSet[i][1] = read_flags(flags)
 
i++
}
g_TimeSet[i][0] = 0
 
return PLUGIN_HANDLED
}
 
public timeRemain(param[])
{
new gmtm = get_timeleft()
new tmlf = g_Switch ? --g_CountDown : gmtm
new stimel[12]
 
format(stimel, 11, "%02d:%02d", gmtm / 60, gmtm % 60)
set_cvar_string("amx_timeleft", stimel)
 
if (g_Switch && gmtm > g_Switch)
{
remove_task(34543)
g_Switch = 0
set_task(0.8, "timeRemain", 8648458, "", 0, "b")
 
return
}
 
if (tmlf > 0 && g_LastTime != tmlf)
{
g_LastTime = tmlf
new tm_set = findDispFormat(tmlf)
 
if (tm_set != -1)
{
    new flags = g_TimeSet[tm_set][1]
    new arg[128]
 
    if (flags & 1)
    {
        new players[32], pnum
 
        get_players(players, pnum, "c")
 
        for (new i = 0; i < pnum; i++)
        {
            setTimeText(arg, 127, tmlf, players[i])
 
            if (flags & 16) set_hudmessage(255, 255, 255, -1.0, 0.85, 0, 0.0, 1.1, 0.1, 0.5, -1)
            else set_hudmessage(255, 255, 255, -1.0, 0.85, 0, 0.0, 3.0, 0.0, 0.5, -1)
 
            show_hudmessage(players[i], "%s", arg)
        }
    }
 
 
    if (flags & 2)
    {
        setTimeVoice(arg, 127, flags, tmlf)
        client_cmd(0, "%s", arg)
    }
}
}
}