Сейчас 06:43:13 Пятница, 26 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Мультимод (внутри подробнее)
Мультимод
oleg_best_olegДата: Воскресенье, 05 Февраля 2012, 17:20:53 | Сообщение # 1
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
Что делать если в карте имеет много модов, а по одному вводить их безсмыслено ? Скриншот, если вы не понял о чем я.

Просто если модов больше 5, надо будет вводить много if/then/else, вроде:
Code
-em
-bfem
-embf
-hmbf
-bfhm
-apemhm
-bfaphm
-bfapem

И для каждого варианта мода делать Если/То/Иначе, можно ли как-то это упростить ?


Сообщение отредактировал oleg_best_oleg - Воскресенье, 05 Февраля 2012, 17:21:04
 

[stebashka]Дата: Воскресенье, 05 Февраля 2012, 18:02:21 | Сообщение # 2
пути и нити разными бывают
Группа: Библиотекари
Сообщений: 4719
Награды: 5
Блокировки:
подстрока

 

Novice998Дата: Воскресенье, 05 Февраля 2012, 18:07:05 | Сообщение # 3
8 уровень
Группа: Проверенные
Сообщений: 693
Награды: 0
Репутация: 86
Блокировки:
oleg_best_oleg, можно попробовать читать по две буквы.И вводить мод так
-блаблабла%
По % отслеживай конец строки.Просто я нуб и незнаю как отследить другим способом ;)


Nyan
Я в Знай наших
Уже на форум не захожу, варкрафт перестал интересовать (


Сообщение отредактировал Novice998 - Воскресенье, 05 Февраля 2012, 18:07:47
 

oleg_best_olegДата: Воскресенье, 05 Февраля 2012, 18:09:55 | Сообщение # 4
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
Quote (|stebashka|)
подстрока

И как именно ? Циклом проверять каждые 2 буквы ?

Добавлено (05 Февраль 2012, 18:09:55)
---------------------------------------------
Novice998, твой способ не понял... Мод сокращено и так пишется в 2 буквы, т.е: Boss Fight - bf...

 

[stebashka]Дата: Воскресенье, 05 Февраля 2012, 18:10:41 | Сообщение # 5
пути и нити разными бывают
Группа: Библиотекари
Сообщений: 4719
Награды: 5
Блокировки:
Quote (oleg_best_oleg)
Циклом проверять каждые 2 буквы ?

yep


 

SirNikolasДата: Воскресенье, 05 Февраля 2012, 18:11:34 | Сообщение # 6
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (oleg_best_oleg)
Мод сокращено и так пишется в 2 буквы
Всегда в две? Тогда еще проще.
Сначала проверяешь первые две буквы. Если они - мод, то сдвигаешь выделение на две позиции, иначе на одну. Проверяешь снова и т. д., пока не дойдешь до конца строки.


 

oleg_best_olegДата: Воскресенье, 05 Февраля 2012, 18:30:52 | Сообщение # 7
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
Quote (|stebashka|)
yep

???
Quote (SirNikolas)
Всегда в две? Тогда еще проще.
Сначала проверяешь первые две буквы. Если они - мод, то сдвигаешь выделение на две позиции, иначе на одну. Проверяешь снова и т. д., пока не дойдешь до конца строки.

А можно по-подробнее ? Допустим, вод мод:

-bfemdo

Здесь три мода: bf, em и do.
 

SirNikolasДата: Воскресенье, 05 Февраля 2012, 18:33:24 | Сообщение # 8
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (oleg_best_oleg)
???
Yes.

Могу написать функцию.


 

oleg_best_olegДата: Воскресенье, 05 Февраля 2012, 18:47:53 | Сообщение # 9
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
Quote (SirNikolas)
Могу написать функцию.

Буду благодарен. Но модов будет больше 3-ех, и у каждого разная функция.
 

DreiiДата: Воскресенье, 05 Февраля 2012, 19:06:55 | Сообщение # 10
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Code
function Trig_Mods_Actions takes nothing returns nothing
local integer i=1   
local integer i1=3   
local string s=""   
local string sm="Выбран мод: "
local string s1=SubString(GetEventPlayerChatString(),0,StringLength(GetEventPlayerChatString()))
loop   
      exitwhen i==21
       set s=SubString(s1,i,i1)   
        if s=="de" then   
          
set sm=sm+"|cFF0A60FF Double Experience|r"+"/"
        endif   
        if s=="ar" then   

        endif   
if s=="ap" then   

set sm=sm+"|cFF0A60FF All Pick|r"+"/"
        endif   
        if s=="om" then   

set sm=sm+"|cFF0A60FF Only Mid|r"+"/"
endif   
        if s=="od" then   

set sm=sm+"|cFF0A60FF Only Down|r /"
endif   
        if s=="ou" then   

set sm=sm+"|cFF0A60FF Only Up|r"+"/"
endif   
       set i=i+2   
       set i1=i1+2
endloop
call DisplayTextToPlayer(GetLocalPlayer(),.0,.0,SubString(sm,0,StringLength(sm)-1))
call DisableTrigger(GetTriggeringTrigger())
endfunction


НО это убогий пример есть пару багов. просто примерный алгоритм




Сообщение отредактировал Dreii - Воскресенье, 05 Февраля 2012, 19:07:07
 

oleg_best_olegДата: Воскресенье, 05 Февраля 2012, 19:38:27 | Сообщение # 11
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
Спасибо, попробую.
Quote (Dreii)
пару багов

Какие например ?
 

Novice998Дата: Воскресенье, 05 Февраля 2012, 19:40:04 | Сообщение # 12
8 уровень
Группа: Проверенные
Сообщений: 693
Награды: 0
Репутация: 86
Блокировки:
oleg_best_oleg,
Quote (SirNikolas)
Сначала проверяешь первые две буквы. Если они - мод, то сдвигаешь выделение на две позиции, иначе на одну. Проверяешь снова и т. д., пока не дойдешь до конца строки.

Я просто хотел обозначить конец строки символом %


Nyan
Я в Знай наших
Уже на форум не захожу, варкрафт перестал интересовать (
 

oleg_best_olegДата: Воскресенье, 05 Февраля 2012, 19:45:53 | Сообщение # 13
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
Dreii, а что дальше с этой функцией делать ? Просто я не плохо разбираюсь в джассе.
 

DreiiДата: Воскресенье, 05 Февраля 2012, 19:49:51 | Сообщение # 14
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (oleg_best_oleg)
Какие например ?

Если напсиать -bf sadasdasdasdas dsaldkasdklasldk em то срабоатет ем и бф


 

Novice998Дата: Воскресенье, 05 Февраля 2012, 19:50:53 | Сообщение # 15
8 уровень
Группа: Проверенные
Сообщений: 693
Награды: 0
Репутация: 86
Блокировки:
oleg_best_oleg, при каждом моде где иф просто сделай то, что тебе нужно

Nyan
Я в Знай наших
Уже на форум не захожу, варкрафт перестал интересовать (


Сообщение отредактировал Novice998 - Воскресенье, 05 Февраля 2012, 19:53:49
 

SirNikolasДата: Воскресенье, 05 Февраля 2012, 20:04:44 | Сообщение # 16
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Code
//! zinc
library ParseModes {
     boolean Mode[ ];

     public function ModeChecked(integer index) -> boolean {
         return Mode[index];
     }

     public function ParseGameModes(string input, string dict) {
         string m[ ], s1 = SubString(input, 0, 1);
         integer count = 0, i = 1, j = 0, l = StringLength(dict);
         while (count + count < l) {
             m[count] = SubString(dict, count + count, count + count + 2);
             count = count + 1;
         }
         while (j < count) {
             Mode[j] = false;
             j = j + 1;
         }
         l = StringLength(input);
         while (i < l) {
             dict = SubString(input, i, i + 1);
             for (0 <= j < count) {
                 if (s1 + dict == m[j]) {
                     Mode[j] = true;
                     i = i + 1;
                     dict = SubString(input, i, i + 1);
                     break;
                 }
             }
             s1 = dict;
             i = i + 1;
         }
     }
}
//! endzinc
Code
call ParseGameModes(GetEventPlayerChatString(), "emfrapdu")
if ModeChecked(0) then
     call BJDebugMsg("Easy mode")
endif
if ModeChecked(1) then
     call BJDebugMsg("Fast respawn")
endif
if ModeChecked(2) then
     call BJDebugMsg("All pick")
endif
if ModeChecked(3) then
     call BJDebugMsg("Dupplicate mode")
endif
После //! endzinc нужно поставить пустую строку. Ну, или не пустую, главное, чтобы она была.


 

oleg_best_olegДата: Воскресенье, 05 Февраля 2012, 20:08:01 | Сообщение # 17
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
SirNikolas, первый код надо в шапку вставить ? Просто я плохо разбираюсь в джассе, я плохо знаю что куда нужно вставлять...

 

Novice998Дата: Воскресенье, 05 Февраля 2012, 20:09:40 | Сообщение # 18
8 уровень
Группа: Проверенные
Сообщений: 693
Награды: 0
Репутация: 86
Блокировки:
Quote (oleg_best_oleg)
5+ вариантов мода, могу быть написаны в любом порядке = 25+ if/then/else и триггер будет очень длинным...

И что?А кто тебе сказал, что тебе нужно 25+ ифоф...5 ифоф и цикл.


Nyan
Я в Знай наших
Уже на форум не захожу, варкрафт перестал интересовать (


Сообщение отредактировал Novice998 - Воскресенье, 05 Февраля 2012, 20:10:00
 

SirNikolasДата: Воскресенье, 05 Февраля 2012, 20:10:42 | Сообщение # 19
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Dreii)
Если напсиать -bf sadasdasdasdas dsaldkasdklasldk em, то срабоатет ем и бф
Это не баг. А вот то, что если написать "xbfem", то не сработает ни тот, ни другой, является багом.


 

oleg_best_olegДата: Воскресенье, 05 Февраля 2012, 20:12:30 | Сообщение # 20
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
Novice998, представь что мод может быть от:
-em...
-bfem...

до

-apembf...
-bfaphm...

Добавлено (05 Февраль 2012, 20:12:30)
---------------------------------------------
SirNikolas и Dreii, скажите что мне делать с этими функциями ?

 

SirNikolasДата: Воскресенье, 05 Февраля 2012, 20:13:56 | Сообщение # 21
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Первую закинуть куда-нибудь в карту, неважно, куда именно. Вторая - пример использования. Ах да, нужен JNGP.

 

oleg_best_olegДата: Воскресенье, 05 Февраля 2012, 20:17:22 | Сообщение # 22
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
Ошибка.
 

Novice998Дата: Воскресенье, 05 Февраля 2012, 20:23:52 | Сообщение # 23
8 уровень
Группа: Проверенные
Сообщений: 693
Награды: 0
Репутация: 86
Блокировки:
oleg_best_oleg,
Quote (oleg_best_oleg)
Novice998, представь что мод может быть от:
-em...
-bfem...

до

-apembf...
-bfaphm...

...
Quote (Novice998)
5 ифоф и цикл.

В цикле отслеживаешь мод(2 символа) делаешь что-то.Идёшь дальше по строчке...Отслеживаешь мод(2 символа) делаешь что-то.Идёшь дальше по строчке...

Quote (SirNikolas)
А вот то, что если написать "xbfem", то не сработает ни тот, ни другой, является багом.

+ ещё такой баг "-apapapapapapapap" много раз засчитает ap


Nyan
Я в Знай наших
Уже на форум не захожу, варкрафт перестал интересовать (


Сообщение отредактировал Novice998 - Воскресенье, 05 Февраля 2012, 20:25:10
 

oleg_best_olegДата: Воскресенье, 05 Февраля 2012, 20:26:13 | Сообщение # 24
Группа: Заблокированные
Сообщений: 1726
Награды: 0
Репутация: 654
Блокировки:
Quote (Novice998)
5 ифоф и цикл.

Ок, докажи, покажи пример, вот возможные моды: -em, -bf, -do, -ex, -id
 

SirNikolasДата: Воскресенье, 05 Февраля 2012, 20:26:43 | Сообщение # 25
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
oleg_best_oleg,
Quote (SirNikolas)
После //! endzinc нужно поставить пустую строку. Ну, или не пустую, главное, чтобы она была.


 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Мультимод (внутри подробнее)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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