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

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

Ответ
 
влад10011

offline
Опыт: 2,337
Активность:
GetPlayerId возвращает 0!
Не могу понять в чём проблема, GetPlayerId всегда возвращает 0:
Код:
void CreateMinion(unit u,integer id,real x,real y) {
integer i=GetPlayerId(GetOwningPlayer(u))
  if CM[i]<=MaxMinion {
    up(CM[i])
    U=u
    Min[i][CM[i]]=CreateUnit(Player(i),id,x,y,0.)
else
    DisplayTimedTextToPlayer(Player(i),0.,0.,15.,S2)
}
}

private void Create() {
unit u=GetTrainedUnit()
integer ii=GetPlayerId(GetOwningPlayer(u)),i
if HaveSavedInteger(Hash,GetUnitTypeId(u),nil)==true {
   i=LoadInteger(Hash,GetUnitTypeId(u),nil)

if(i==nil and J[ii]>nil){down(J[ii])}elseif \
(i==0x01 and JRed[ii]>nil){down(JRed[ii])}elseif(i==0x02 and JBlue[ii]>nil{down(JBlue[ii])}\
elseif(i==0x03 and JGreen[ii]>nil){down(JGreen[ii])}else{RemoveUnit(u);u=null;DisplayTimedTextToPlayer(Player(i),0.,0.,15.,S);retu  rn}

   CreateMinion(Overlord[ii],GetUnitTypeId(u),GetUnitX(u),GetUnitY(u))
   RemoveUnit(u)
}
u=null
}

Функция Create вызывается при завершении постройки юнита, всё работает нормально, но только для игрока №0 тк GetPlayerId возвращает всегда 0, в чём проблема?
Старый 14.11.2012, 19:08
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
1-й плеер имеет нулевой ид. не вижу отладочных сообщений, может там юнит == null.
Старый 14.11.2012, 19:18
влад10011

offline
Опыт: 2,337
Активность:
Я знаю что плеер 1 имеет индекс 0
Я проверил на отладочном сообщении и попробовал добавить бота на слот 1рого игрока, меня удивило то, что GetPlayerId не возвращает 0 и если 1ый игрок не играет, то на другого игрока эта система не работает(их всего 2)если только 2ой игрок то система отказывается работать
мб я как то неправильно инициализирую "хозяинов миньонов":
Код:
if GetPlayerSlotState(Player(0))==PLAYER_SLOT_STATE_PLAYING {
  Overlord[0]=CreateUnit(Player(0),'Udea',-4632.8,-5033.5,0.)
}
if GetPlayerSlotState(Player(1))==PLAYER_SLOT_STATE_PLAYING {
  Overlord[1]=CreateUnit(Player(1),'Udea',4753.8,4505.5,0.)
}
Старый 14.11.2012, 19:55
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
а вы в хеш то сохранили что нужно?
Старый 14.11.2012, 21:19
DioD

offline
Опыт: 45,134
Активность:
без отладки давай досвиданья
Старый 15.11.2012, 11:10
Ответ

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

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

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

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



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