Проблема с таймером
| |
IceMeN
|
Дата: Суббота, 26.05.2012, 14:46:38 | Сообщение # 1 |
|
Сообщений: 47
Репутация: 5 [ +/- ]
|
|
_wS_, помоги пожалуйста! Проблема возникла с таймером.
Хочу сделать что типо отсчета... Так вот раунд начинается и через 20 секунд начинается отсчет. Но не работает. Уверен, что ошибка глупая и легконаходимая, но я не нашел)
Вот код: Code #pragma semicolon 1 #include <sourcemod> #include <sdktools>
new Handle:StartMusic_Timer; new Handle:MusicPlay_Timer;
public OnPluginStart() { HookEvent("round_start", Round_Start, EventHookMode_PostNoCopy); HookEvent("round_end", Round_End, EventHookMode_PostNoCopy); decl String:buffer[256]; new Handle:file = OpenFile("cfg/ZombieSound/ZombieSound.cfg", "r"); while(ReadFileLine(file, buffer, sizeof(buffer))) { new len = strlen(buffer); if(buffer[len-1] == '\n') buffer[--len] = '\0'; if(FileExists(buffer)) { AddFileToDownloadsTable(buffer); } if(IsEndOfFile(file)) break; } } public OnConfigsExecuted() { PrecacheSound("ZombieSound/10.wav", true); PrecacheSound("ZombieSound/9.wav", true); PrecacheSound("ZombieSound/8.wav", true); PrecacheSound("ZombieSound/7.wav", true); PrecacheSound("ZombieSound/6.wav", true); PrecacheSound("ZombieSound/5.wav", true); PrecacheSound("ZombieSound/4.wav", true); PrecacheSound("ZombieSound/3.wav", true); PrecacheSound("ZombieSound/2.wav", true); PrecacheSound("ZombieSound/1.wav", true); } public Round_Start(Handle:event, const String:name[], bool:dontBroadcast) { StartMusic_Timer = CreateTimer(19.0, StartMusic); } public Round_End(Handle:event, const String:name[], bool:dontBroadcast) { if(StartMusic_Timer != INVALID_HANDLE) { KillTimer(StartMusic_Timer); StartMusic_Timer = INVALID_HANDLE; } if(MusicPlay_Timer != INVALID_HANDLE) { KillTimer(MusicPlay_Timer); MusicPlay_Timer = INVALID_HANDLE; } } public Action:StartMusic(Handle:timer) { MusicPlay_Timer = CreateTimer(1.0, MusicPlay, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); StartMusic_Timer = INVALID_HANDLE; } public Action:MusicPlay(Handle:timer) { static x = 0; if (++x < 11) { if(x == 1) { EmitSoundToAll("ZombieSound/10.wav"); } if(x == 2) { EmitSoundToAll("ZombieSound/9.wav"); } if(x == 3) { EmitSoundToAll("ZombieSound/8.wav"); } if(x == 4) { EmitSoundToAll("ZombieSound/7.wav"); } if(x == 5) { EmitSoundToAll("ZombieSound/6.wav"); } if(x == 6) { EmitSoundToAll("ZombieSound/5.wav"); } if(x == 7) { EmitSoundToAll("ZombieSound/4.wav"); } if(x == 8) { EmitSoundToAll("ZombieSound/3.wav"); } if(x == 9) { EmitSoundToAll("ZombieSound/2.wav"); } if(x == 10) { EmitSoundToAll("ZombieSound/1.wav"); } return Plugin_Continue; } MusicPlay_Timer = INVALID_HANDLE; return Plugin_Stop; }
|
|
| |
_wS_
|
Дата: Суббота, 26.05.2012, 15:00:21 | Сообщение # 2 |
|
MusicPlay_Timer лишний, проигрывай звук прямо в 'public Action:StartMusic' В 'Round_Start' должно быть:
Code if (StartMusic_Timer != INVALID_HANDLE) KillTimer(StartMusic_Timer); StartMusic_Timer = CreateTimer(19.0, StartMusic); Да и другой код лишний есть, зачем усложняешь простую задачу.
|
|
| |
IceMeN
|
Дата: Суббота, 26.05.2012, 15:21:51 | Сообщение # 3 |
|
Сообщений: 47
Репутация: 5 [ +/- ]
|
|
Ясно. Спасибо... Буду пробывать...Добавлено (26.05.2012, 15:21:51) --------------------------------------------- А вот здесь где ошибка? Code #pragma semicolon 1 #include <sourcemod> #include <sdktools>
new Handle:StartMusic_Timer;
public Plugin:myinfo = { name = "ZombieSound", author = "IceMeN", version = "1.0.0", url = "http://icemenblog.ru/" }; public OnPluginStart() { HookEvent("round_start", Round_Start, EventHookMode_PostNoCopy); HookEvent("round_end", Round_End, EventHookMode_PostNoCopy); decl String:buffer[256]; new Handle:file = OpenFile("cfg/ZombieSound/ZombieSound.cfg", "r"); while(ReadFileLine(file, buffer, sizeof(buffer))) { new len = strlen(buffer); if(buffer[len-1] == '\n') buffer[--len] = '\0'; if(FileExists(buffer)) { AddFileToDownloadsTable(buffer); } if(IsEndOfFile(file)) break; } } public OnConfigsExecuted() { PrecacheSound("ZombieSound/10.wav", true); PrecacheSound("ZombieSound/9.wav", true); PrecacheSound("ZombieSound/8.wav", true); PrecacheSound("ZombieSound/7.wav", true); PrecacheSound("ZombieSound/6.wav", true); PrecacheSound("ZombieSound/5.wav", true); PrecacheSound("ZombieSound/4.wav", true); PrecacheSound("ZombieSound/3.wav", true); PrecacheSound("ZombieSound/2.wav", true); PrecacheSound("ZombieSound/1.wav", true); } public Round_Start(Handle:event, const String:name[], bool:dontBroadcast) { if (StartMusic_Timer != INVALID_HANDLE) KillTimer(StartMusic_Timer); StartMusic_Timer = CreateTimer(19.0, StartMusic, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); PrintCenterTextAll("До появления зомби 30 секунд"); } public Round_End(Handle:event, const String:name[], bool:dontBroadcast) { if(StartMusic_Timer != INVALID_HANDLE) { KillTimer(StartMusic_Timer); StartMusic_Timer = INVALID_HANDLE; } } public Action:StartMusic(Handle:timer) { static x = 0; if (++x < 31) { if(x == 20) { EmitSoundToAll("ZombieSound/10.wav"); PrintCenterTextAll("До появления зомби 10 секунд"); } else if(x == 21) { EmitSoundToAll("ZombieSound/9.wav"); PrintCenterTextAll("До появления зомби 9 секунд"); } else if(x == 22) { EmitSoundToAll("ZombieSound/8.wav"); PrintCenterTextAll("До появления зомби 8 секунд"); } else if(x == 23) { EmitSoundToAll("ZombieSound/7.wav"); PrintCenterTextAll("До появления зомби 7 секунд"); } else if(x == 24) { EmitSoundToAll("ZombieSound/6.wav"); PrintCenterTextAll("До появления зомби 6 секунд"); } else if(x == 25) { EmitSoundToAll("ZombieSound/5.wav"); PrintCenterTextAll("До появления зомби 5 секунд"); } else if(x == 26) { EmitSoundToAll("ZombieSound/4.wav"); PrintCenterTextAll("До появления зомби 4 секунд"); } else if(x == 27) { EmitSoundToAll("ZombieSound/3.wav"); PrintCenterTextAll("До появления зомби 3 секунд"); } else if(x == 28) { EmitSoundToAll("ZombieSound/2.wav"); PrintCenterTextAll("До появления зомби 2 секунд"); } else if(x == 29) { EmitSoundToAll("ZombieSound/1.wav"); PrintCenterTextAll("До появления зомби 1 секунд"); } else { PrintCenterTextAll("До появления зомби %d секунд", 30 - x); } return Plugin_Continue; } return Plugin_Stop; }
|
|
| |
Scarface_slv
|
Дата: Воскресенье, 27.05.2012, 17:59:29 | Сообщение # 4 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
так должно работать...
Гости не могут скачивать файлы
|
|
|
| |
Scarface_slv
|
Дата: Воскресенье, 27.05.2012, 18:10:20 | Сообщение # 5 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
ой не правильно...
Гости не могут скачивать файлы
|
|
|
| |
IceMeN
|
Дата: Воскресенье, 27.05.2012, 18:45:36 | Сообщение # 6 |
|
Сообщений: 47
Репутация: 5 [ +/- ]
|
|
Спасибо, Scarface_slv. Но я уже сам разобрался... Что то забыл здесь отписать...
Еще раз спасибо за помощь!Добавлено (27.05.2012, 18:45:36) --------------------------------------------- Кстати сейчас посмотрел твой пример... Зачем в конце раунда делать х = 0 ? Ведь все равно в начале раунда ты делаешь х = 30 ?
|
|
| |
Scarface_slv
|
Дата: Воскресенье, 27.05.2012, 19:41:11 | Сообщение # 7 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
незнай) я просто спешил=)
|
|
| |
rus123
|
Дата: Четверг, 31.07.2014, 19:31:00 | Сообщение # 8 |
|
Сообщений: 7
Репутация: 0 [ +/- ]
|
|
Хочу сделать чтобы после 10 9 8 7 6 5 4 3 2 1 играл звук 0 Как бы отсчет прошел и звук появления зомбака на всю карту будет четко но никак не могу понять( Доступно только для пользователей
Сообщение отредактировал rus123 - Пятница, 01.08.2014, 09:52:10 |
|
| |
Sallcom
|
Дата: Четверг, 25.09.2014, 00:36:31 | Сообщение # 9 |
|
Сообщений: 205
Репутация: 31 [ +/- ]
|
|
i++ -> сначала действие, потом i = i + 1. ++i -> сначала i = i + 1, потом действие.
Код #include <sourcemod> #include <sdktools>
new count;
public OnPluginStart(){ HookEvent("round_start", Event_RoundStart); HookEvent("round_end", Event_RoundEnd); }
public OnMapStart(){ PrecacheSound("eXtreme/z10.wav", true); PrecacheSound("eXtreme/z9.wav", true); PrecacheSound("eXtreme/z8.wav", true); PrecacheSound("eXtreme/z7.wav", true); PrecacheSound("eXtreme/z6.wav", true); PrecacheSound("eXtreme/z5.wav", true); PrecacheSound("eXtreme/z4.wav", true); PrecacheSound("eXtreme/z3.wav", true); PrecacheSound("eXtreme/z2.wav", true); PrecacheSound("eXtreme/z1.wav", true); PrecacheSound("eXtreme/z0.wav", true); }
public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast){ count = 29; CreateTimer(1.0, Timer_Music, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); }
public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast) count = -1;
public Action:Timer_Music(Handle:timer){ if(count == -1) return Plugin_Stop; decl String:sValue[16]; if(count-- <= 10){ Format(sValue, sizeof(sValue), "eXtreme/z%d.wav", count); EmitSoundToAll(sValue); } return Plugin_Continue; }
Сообщение отредактировал Sallmap - Четверг, 25.09.2014, 01:00:57 |
|
| |
|