Сейчас 04:54:42 Суббота, 23 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
О создании команды -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
 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz