XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
WedeR00

offline
Опыт: 275
Активность:
HCL код
Нерабочий код:
Код:
function readhcl 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
      
          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
            
          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), h*0.11 + 0.55)
                  set command = command + SubString(chars, v, v+1)
              endif
              set i = i + 1
          endloop
endfunction

Переменная command в шапке global.
Запуск триггера по инициализации.

Проверка:
Код:
function botu1 takes nothing returns nothing
      call DisplayTextToForce( GetPlayersAll(), ( "Hcl is : " + command ) )
endfunction


Карта, в которой все работает.

Исходный код библиотеки:
Код:
///////////////////////////////////////////
/// HostBot Command Library
/// Last Modified: September 14, 2009
/// Authors: Strilanc,   
/// v1.01
///////////////////////////////////////////
/// Reads a command string transparently encoded into player handicaps by hostbots.
/// Allows at most one character from "abcdefghijklmnopqrstuvwxyz0123456789 -=,." per player.
/// Empty slots don't count towards the player count, but computers do.
///////////////////////////////////////////
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


Итог: при проверке выводит сообщение "Hcl is :". Проверяется на хост-боте, т.е. сам hcl установлен и на карте-примере он работает.

Где ошибка??? Часа полтора сижу и верчу скрипт.
Старый 28.06.2012, 22:50
Doc

offline
Опыт: 63,163
Активность:
Больше дебага.
Старый 28.06.2012, 22:54
WedeR00

offline
Опыт: 275
Активность:
Цитата:
Сообщение от Doc
Больше дебага.

эээ.. кого?
Старый 28.06.2012, 23:02
Doc

offline
Опыт: 63,163
Активность:
Отладки, отладочных сообщений.
Старый 28.06.2012, 23:12
WedeR00

offline
Опыт: 275
Активность:
Цитата:
Сообщение от Doc
Отладки, отладочных сообщений.

Где их взять?
Старый 29.06.2012, 10:02
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
Старый 29.06.2012, 10:16
adic3x

offline
Опыт: 108,439
Активность:
А у меня вообще впечатление, что оно должно падать в первом цикле на второй итерации из-за обращения к не инициализированной ячейке массива.
Старый 29.06.2012, 12:27
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 02:28.