Сейчас 22:53:59 Воскресенье, 28 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » HCL в карту
HCL в карту
WedeR00Дата: Четверг, 28 Июня 2012, 18:26:00 | Сообщение # 1
6 уровень
Группа: Проверенные
Сообщений: 162
Награды: 0
Репутация: 29
Блокировки:


Переданные данные используются в каждой карте по разному и в принципе не должны иметь одинаковые значения для разных карт. Предполагается что карты будут использовать HCL систему чтобы позволить боту устанавливать моды или другую "стартовую" информацию которая не должна указываться игроками. К примеру при автоматическом создании DotA игр желательно чтобы мод был установлен на боте а не указывался игроками.





HCL система работает посредством информации хандикапа игрока таким образом что после загрузки карты они восстанавливаются. Это означает что если вы попробуете установить HCL командную строку на карте не поддерживающей стандарт, бот радикально изменит хандикапы игроков. В любом случае карта не поддерживающая стандарт не восстановит оригинальные хандикапы и игра будет испорчена. Поэтому даже не пытайтесь установить HCL командную строку на карте которая не поддерживает HCL стандарт.




это процент форы для игрока - количество жизней воинов например, попробуй на карте поставить 2-х одинаковых героев для 2-х игроков и для одного игрока поставить гандикап на 1000 и увидишь что это такое



Код с какого-то буржуйского сайта:
Code
library HCL initializer init    
       globals    
           private string command = ""    
       endglobals    
           
       public function GetCommandString takes nothing returns string    
           return command    
       endfunction    
           
       private function init takes nothing returns nothing    
           local integer i    
           local integer j    
           local integer h    
           local integer v    
           local string chars = "abcdefghijklmnopqrstuvwxyz0123456789 -=,."    
           local integer array map    
           local boolean array blocked    

           //precompute mapping [have to avoid invalid and normal handicaps]    
           set blocked[0] = true    
           set blocked[50] = true    
           set blocked[60] = true    
           set blocked[70] = true    
           set blocked[80] = true    
           set blocked[90] = true    
           set blocked[100] = true    
           set i = 0    
           set j = 0    
           loop    
               if blocked[j] then    
                   set j = j + 1    
               endif    
               exitwhen j >= 256    
               set map[j] = i    
               set i = i + 1    
               set j = j + 1    
           endloop    
               
           //Extract command string from player handicaps    
           set i = 0    
           loop    
               exitwhen i >= 12    
               set h = R2I(100*GetPlayerHandicap(Player(i)) + 0.5)    
               if not blocked[h] then    
                   set h = map[h]    
                   set v = h/6    
                   set h = h-v*6    
                   call SetPlayerHandicap(Player(i), 0.5 + h/10.0)    
                   set command = command + SubString(chars, v, v+1)    
               endif    
               set i = i + 1    
           endloop    
       endfunction    
endlibrary


Эту штуку вообще реально добавить в карту? Уже час сижу гуглю и ничего толкового не нашел, лишь какой-то код...


Сообщение отредактировал WedeR00 - Четверг, 28 Июня 2012, 18:36:24
 

Ramazan(off)Дата: Четверг, 28 Июня 2012, 18:35:50 | Сообщение # 2
11 уровень
Группа: Проверенные
Сообщений: 1670
Награды: 1
Репутация: 765
Блокировки:
WedeR00, что тебе надо?
Динамичная система Хандикапа?
Хандикап одним действием для игрока устанавливается. Это очень легко. Другое дело то, что ТЫ хочешь получить от этого действия.
 

WedeR00Дата: Четверг, 28 Июня 2012, 19:02:12 | Сообщение # 3
6 уровень
Группа: Проверенные
Сообщений: 162
Награды: 0
Репутация: 29
Блокировки:
Quote (Ramazan(off))
ТЫ хочешь получить от этого действия.

Хочу чтобы Ghost++ писал моды в карте.

Добавлено (28 Июнь 2012, 19:02:12)
---------------------------------------------
В принципе, я более-менее понял. Нужно вставить буржуйский код в карту и после использовать call HCL_GetCommandString () для вызова данных о введенной строчке.
Но тут возникает два вопроса:
1. Куда вставлять этот код?
2. Как преобразовать отловленное сообщение в нужный мод?

УрА!! Я сильно продвинулся в этом деле. Через часик напишу решение проблемы.


Сообщение отредактировал WedeR00 - Четверг, 28 Июня 2012, 19:38:59
 

PUVerДата: Пятница, 29 Июня 2012, 01:05:03 | Сообщение # 4
Сухопутные крысы!
Группа: Модераторы
Сообщений: 4462
Награды: 8
Репутация: 1845
Блокировки:
WedeR00, чтобы сделать линию на бб кодах используй код
Code
[hr]

Результат

 

WedeR00Дата: Пятница, 29 Июня 2012, 10:12:40 | Сообщение # 5
6 уровень
Группа: Проверенные
Сообщений: 162
Награды: 0
Репутация: 29
Блокировки:
Quote (PUVer)
0, чтобы сделать линию на бб кодах используй код


Не понимаю зачем это мне.

По топику:
Если Ваша карта редактируется в World Editore, то для подключения в нее поддержки HCL (библиотека хост-бота) Вы можете скопировать весь скрипт с карты-примера.

Ссылка: http://rghost.ru/38932274

С внедрением в jass я разбираюсь в этой теме.

Тему можно закрыть.


Сообщение отредактировал WedeR00 - Пятница, 29 Июня 2012, 10:12:56
 

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

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