|
|
|
|
О создании команды -music
|
|
[DUОS] | Дата: Среда, 10 Марта 2010, 21:13:11 | Сообщение # 1 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Ув. картостроители Инфо, обращаюсь к вам с просьбой помочь сделать MUI-команду -music, как в Доте (хоть и заезженное слово =-\). Суть в том, что игрок вводит -music <имя трека>, а ему потом играется этот трек. Вопрос - как сделать его повторение и тоже для определённого игрока, который ранее ввёл этот трек? Предоставляю опенсурс моего кода. Code function Trig_music_Actions takes nothing returns nothing local player p = GetTriggerPlayer() local integer id = GetPlayerId(p) local string cs = GetEventPlayerChatString() local integer last = StringLength(cs) local string s = SubString(cs,7,last) local real r if s == "human1" then if GetLocalPlayer() == p then set udg_mus[id] = "Sound\\Music\\mp3Music\\Human1.mp3" endif elseif s == "human2" then if GetLocalPlayer() == p then set udg_mus[id] = "Sound\\Music\\mp3Music\\Human2.mp3" endif elseif s == "human3" then if GetLocalPlayer() == p then set udg_mus[id] = "Sound\\Music\\mp3Music\\Human3.mp3" endif elseif s == "humanx1" then if GetLocalPlayer() == p then set udg_mus[id] = "Sound\\Music\\mp3Music\\HumanX1.mp3" endif elseif s == "elf1" then if GetLocalPlayer() == p then set udg_mus[id] = "Sound\\Music\\mp3Music\\NightElf1.mp3" endif elseif s == "elf2" then if GetLocalPlayer() == p then set udg_mus[id] = "Sound\\Music\\mp3Music\\NightElf2.mp3" endif elseif s == "elf3" then if GetLocalPlayer() == p then set udg_mus[id] = "Sound\\Music\\mp3Music\\NightElf3.mp3" endif elseif s == "elfx1" then if GetLocalPlayer() == p then set udg_mus[id] = "Sound\\Music\\mp3Music\\NightElfX1.mp3" endif elseif s == "orc1" then if GetLocalPlayer() == p then set udg_mus[id] = "Sound\\Music\\mp3Music\\Orc1.mp3" endif elseif s == "orc2" then if GetLocalPlayer() == p then set udg_mus[id] = "Sound\\Music\\mp3Music\\Orc2.mp3" endif elseif s == "orc3" then if GetLocalPlayer() == p then set udg_mus[id] = "Sound\\Music\\mp3Music\\Orc3.mp3" endif elseif s == "orcx1" then if GetLocalPlayer() == p then set udg_mus[id] = "Sound\\Music\\mp3Music\\OrcX1.mp3" endif elseif s == "undead1" then if GetLocalPlayer() == p then set udg_mus[id] = "Sound\\Music\\mp3Music\\Undead1.mp3" endif elseif s == "undead2" then if GetLocalPlayer() == p then set udg_mus[id] = "Sound\\Music\\mp3Music\\Undead2.mp3" endif elseif s == "undead3" then if GetLocalPlayer() == p then set udg_mus[id] = "Sound\\Music\\mp3Music\\Undead3.mp3" endif elseif s == "undeadx1" then if GetLocalPlayer() == p then set udg_mus[id] = "Sound\\Music\\mp3Music\\UndeadX1.mp3" endif elseif s == "test1" then if GetLocalPlayer() == p then set udg_mus[id] = "Sound\\Music\\mp3Music\\NightElfVictory.mp3" endif else call DisplayTimedTextToPlayer(p,0,0,20,"Using of -music.") call DisplayTimedTextToPlayer(p,0,0,20,"-music <name of track> Example:") call DisplayTextToPlayer(p,0,0," ") call DisplayTimedTextToPlayer(p,0,0,20,"-music orc1") call DisplayTextToPlayer(p,0,0," ") call DisplayTimedTextToPlayer(p,0,0,20,"Supporting themes: human1, human2, human3, humanx1, orc1, orc2, orc3, orcx1, elf1, elf2, elf3, elfx1, undead1, undead2, undead3, undeadx1.") return endif if GetLocalPlayer() == p then call StopMusic(true) endif call PlayThematicMusic(udg_mus[id]) set p = null endfunction
//=========================================================================== function InitTrig_music takes nothing returns nothing set gg_trg_music = CreateTrigger() call TriggerRegisterPlayerChatEvent(gg_trg_music,Player(0),"-music",false) call TriggerRegisterPlayerChatEvent(gg_trg_music,Player(1),"-music",false) call TriggerRegisterPlayerChatEvent(gg_trg_music,Player(2),"-music",false) call TriggerRegisterPlayerChatEvent(gg_trg_music,Player(3),"-music",false) call TriggerRegisterPlayerChatEvent(gg_trg_music,Player(4),"-music",false) call TriggerRegisterPlayerChatEvent(gg_trg_music,Player(5),"-music",false) call TriggerRegisterPlayerChatEvent(gg_trg_music,Player(6),"-music",false) call TriggerRegisterPlayerChatEvent(gg_trg_music,Player(7),"-music",false) call TriggerRegisterPlayerChatEvent(gg_trg_music,Player(8),"-music",false) call TriggerRegisterPlayerChatEvent(gg_trg_music,Player(9),"-music",false) call TriggerRegisterPlayerChatEvent(gg_trg_music,Player(10),"-music",false) call TriggerRegisterPlayerChatEvent(gg_trg_music,Player(11),"-music",false) call TriggerAddAction(gg_trg_music,function Trig_music_Actions) endfunction Пробовал сейвить через ID игрока по хештаблу, но таймер не ловит ID даже циклом...
|
|
|
|
Бюллетень | Дата: Среда, 10 Марта 2010, 22:16:58 | Сообщение # 2 |
6 уровень
Группа: Проверенные
Сообщений: 160
Награды: 0
Репутация: 21
Блокировки:
| Quote (|DUОS|) Вопрос - как сделать его повторение и тоже для определённого игрока Лупом проигрывать для всех, если нулл то будет играть стандарт Code local integer i set i = 0 loop exitwhen i >= 12 if GetLocalPlayer() == Player(i) then call PlayThematicMusic("udg_mus[i]") set i = i + 1 endif endloop
[ ZorDe] Ф бой Тускарцы, вы мега %)
|
|
|
|
[DUОS] | Дата: Четверг, 11 Марта 2010, 00:40:25 | Сообщение # 3 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Бюллетень, Ты не так меня понял. Нужно, чтобы по прошествии песни она же и повторяась.
|
|
|
|
DoctorGester | Дата: Четверг, 11 Марта 2010, 00:49:53 | Сообщение # 4 |
6 уровень
Группа: Проверенные
Сообщений: 209
Награды: 0
Репутация: 50
Блокировки:
| Я не вижу проблемы. Запускаем таймер. Проигрываем музыку еще раз. Вероятно тебе нужно локально запускать музыку, а не устанавливать путь.
|
|
|
|
[DUОS] | Дата: Пятница, 12 Марта 2010, 00:23:33 | Сообщение # 5 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| DoctorGester, Quote (DoctorGester) Запускаем таймер. Проигрываем музыку еще раз. Мне нужно проиграть последнюю заданную игроком музыку. ЗЫ: Таймер не ловит события триггера.
|
|
|
|
DoctorGester | Дата: Пятница, 12 Марта 2010, 08:59:36 | Сообщение # 6 |
6 уровень
Группа: Проверенные
Сообщений: 209
Награды: 0
Репутация: 50
Блокировки:
| А забить в переменную?
|
|
|
|
[DUОS] | Дата: Пятница, 12 Марта 2010, 15:51:58 | Сообщение # 7 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| DoctorGester, Команду любой игрок в любое время может вводить, хоть синхронно с другим. До окончания длительности одной песни может начаться вторая и сбиться переменная. По Player ID забивать бесполезно, не отловишь потом...
|
|
|
|
DoctorGester | Дата: Пятница, 12 Марта 2010, 15:54:26 | Сообщение # 8 |
6 уровень
Группа: Проверенные
Сообщений: 209
Награды: 0
Репутация: 50
Блокировки:
| Ну как же не отловишь. Все прекрасно работает.
|
|
|
|
[DUОS] | Дата: Пятница, 12 Марта 2010, 16:27:02 | Сообщение # 9 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| DoctorGester, GetTriggerPlayer() ловится в функции ТАЙМЕРА?! Который не ловит реакцию на событие?
|
|
|
|
windrunner | Дата: Пятница, 12 Марта 2010, 17:16:53 | Сообщение # 10 |
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды: 0
Репутация: 218
Блокировки:
| Кароче это можно сделать щас попробую З.Ы зайди в асю! и напиши мне=)
И в правду мир сошел с ума... И до тех пор пока нас не обесточат Пока не догорит аварийных фонарей заряд Мы будем жечь тут электричество что есть мочи Русский мапмейкинг - бессмысленный и беспощадный.xD
|
|
|
|
DoctorGester | Дата: Пятница, 12 Марта 2010, 17:48:53 | Сообщение # 11 |
6 уровень
Группа: Проверенные
Сообщений: 209
Награды: 0
Репутация: 50
Блокировки:
| Брутфорс массива таймеров чем не вариант?
|
|
|
|
[DUОS] | Дата: Пятница, 12 Марта 2010, 19:36:15 | Сообщение # 12 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (DoctorGester) Брутфорс массива таймеров чем не вариант? DoctorGester, Цикловой брут я пробовал ))
|
|
|
|
DoctorGester | Дата: Пятница, 12 Марта 2010, 20:43:25 | Сообщение # 13 |
6 уровень
Группа: Проверенные
Сообщений: 209
Награды: 0
Репутация: 50
Блокировки:
| Ну и... Лично у меня такой способ используется и прекрасно работает.
|
|
|
|
windrunner | Дата: Пятница, 12 Марта 2010, 21:28:49 | Сообщение # 14 |
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды: 0
Репутация: 218
Блокировки:
| [DUОS], Я же тебе выдал вроде пример погляди
И в правду мир сошел с ума... И до тех пор пока нас не обесточат Пока не догорит аварийных фонарей заряд Мы будем жечь тут электричество что есть мочи Русский мапмейкинг - бессмысленный и беспощадный.xD
|
|
|
|
|
|
|
|
|
|
|