Вроде все верно но почему то дает 256 еду если я указал 5 еду ломал голову вроде очишаем юнитов в группе потом сверяем наибольший или равен то создаем юнит.
Как видите все верно, но где ошибка то?
globals
constant integer xe_MAX_PLAYERS = 7
// Контроль еды
constant integer xe_COUNT_FOOD = 8
constant integer xe_RAWCODE_FOOD = 'zxFa'
endglobals
struct Food
private static group array groups[xe_MAX_PLAYERS]
private static integer array powers[xe_COUNT_FOOD]
private static method onInit takes nothing returns nothing
local integer i = 1
set thistype.powers[0] = 1
loop
exitwhen i == xe_COUNT_FOOD + 1
set thistype.powers[i] = thistype.powers[i - 1] * 2
set i = i + 1
endloop
set i = 0
loop
exitwhen i == xe_MAX_PLAYERS
set thistype.groups[i] = CreateGroup()
set i = i + 1
endloop
endmethod
public static method operator []= takes player p, integer i returns nothing
local integer count = xe_COUNT_FOOD - 1
local group g = thistype.groups[GetPlayerId(p)]
local unit u = FirstOfGroup(g)
loop
exitwhen u == null
call RemoveUnit(u)
call GroupRemoveUnit(g, u)
set u = FirstOfGroup(g)
endloop
loop
exitwhen i == 0
if i >= thistype.powers[count] then
call GroupAddUnit(g, CreateUnit(p, xe_RAWCODE_FOOD - count, 0., 0., 0.))
set i = i - thistype.powers[count]
else
set count = count - 1
endif
endloop
set u = null
set g = null
endmethod
endstruct
Принятый ответ
Причину нашел что раньше было "xe_RAWCODE_FOOD *-* count" поэтому давали не правильно, но путем поиска нашел причину и исправил на *+*
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
pro100master
6 лет назад
0
Причину нашел что раньше было "xe_RAWCODE_FOOD *-* count" поэтому давали не правильно, но путем поиска нашел причину и исправил на *+*
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.