[Вопрос] GetLocalPlayer()
wetalq Дата: Понедельник, 13 Февраля 2012, 23:54:36 | Сообщение # 1
8 уровень
Группа: Проверенные
Сообщений: 550
Награды:
0
Репутация:
117
Блокировки:
Код вызывает десинхи, помогите исправить, плз конверт из гуи, если что)
Code
function Trig_Spell_Actions takes nothing returns nothing local player p=GetOwningPlayer(GetTriggerUnit()) if(Trig_Spell_Func002C())then if(GetLocalPlayer()==p)then call ShowUnit(udg_Taverna[1],false) call ShowUnit(udg_Taverna[2],true) call SelectUnit(udg_Taverna[2],true) endif else endif if(Trig_Spell_Func003C())then if(GetLocalPlayer()==p)then call ShowUnit(udg_Taverna[1],true) call ShowUnit(udg_Taverna[2],false) call SelectUnit(udg_Taverna[1],true) endif else endif endfunction
Code
function Trig_Taverna_Init_Actions takes nothing returns nothing local integer i=0 set udg_Taverna[1]=gg_unit_n000_0001 set udg_Taverna[2]=gg_unit_n001_0000 loop if(GetLocalPlayer()==Player(i))then call ShowUnit(udg_Taverna[2],false) endif set i=i+1 exitwhen i==12 endloop endfunction
Сообщение отредактировал wetalq - Понедельник, 13 Февраля 2012, 23:56:29
Ty3uK Дата: Вторник, 14 Февраля 2012, 07:53:28 | Сообщение # 2
Группа: Ветераны
Сообщений: 6125
Награды:
2
Репутация:
1617
Блокировки:
Посмотрев на код не заметил ничего ужасного. Я локально показывал юнитов- десинх обходил стороной. Поэтому попробуй сначала скрыть всех, а потом локально показать (хотя это вряд ли поможет). Кстати, вместо GetOwningPlayer(GetTriggerUnit) можно использовать GetTriggeringPlayer(), ты тогда один вызов экономишь. Хотя стоп, я как обычно начал советовать... -_-
FkoFF Дата: Вторник, 14 Февраля 2012, 08:01:16 | Сообщение # 3
Группа: Заблокированные
Сообщений: 4356
Награды:
1
Репутация:
1413
Блокировки:
wetalq , лучше просто убирай юнитов из таверн (разрешить\запретить строительство\найм юнитов). А то и не красиво, и, как видишь, глючит )
Ty3uK Дата: Вторник, 14 Февраля 2012, 08:05:56 | Сообщение # 4
Группа: Ветераны
Сообщений: 6125
Награды:
2
Репутация:
1617
Блокировки:
Не, локальный показ юнитов не глючит. У меня на этом херопик работает. Мб это из-за отдельной функции для иф зен? Гуи же
wetalq Дата: Вторник, 14 Февраля 2012, 12:36:08 | Сообщение # 5
8 уровень
Группа: Проверенные
Сообщений: 550
Награды:
0
Репутация:
117
Блокировки:
Ty3uK , ща тогда сделаю на Jass'е Quote (FkoFF )
wetalq, лучше просто убирай юнитов из таверн (разрешить\запретить строительство\найм юнитов). А то и не красиво, и, как видишь, глючит )
ты о том что бы менять не таверну, а юнитов в таверне ? если не сработает вариант 1 попробую твой)Добавлено (14 Февраль 2012, 12:36:08) ---------------------------------------------
Code
function Trig_Spell_Actions takes nothing returns nothing local player p = GetTriggerPlayer() if GetItemTypeId(GetManipulatedItem()) == 'I000' then if (GetLocalPlayer() == p) then call ShowUnit(udg_Taverna[1], false) call ShowUnit(udg_Taverna[2], true) call SelectUnit(udg_Taverna[2], true) endif endif if GetItemTypeId(GetManipulatedItem()) == 'I001' then if (GetLocalPlayer() == p) then call ShowUnit(udg_Taverna[1], true) call ShowUnit(udg_Taverna[2], false) call SelectUnit(udg_Taverna[1], true) endif endif set p = null endfunction //=========================================================================== function InitTrig_Spell takes nothing returns nothing local trigger t = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_PICKUP_ITEM ) call TriggerAddAction( t, function Trig_Spell_Actions ) endfunction
Вот на Jass перевел, эффект тот же(
SirNikolas Дата: Вторник, 14 Февраля 2012, 13:10:25 | Сообщение # 6
Группа: Модераторы
Сообщений: 6729
Награды:
1
Репутация:
1867
Блокировки:
Quote (wetalq )
Code
loop if(GetLocalPlayer()==Player(i))then call ShowUnit(udg_Taverna[2],false) endif set i=i+1 exitwhen i==12 endloop
Зачем так усложнять?Code
call ShowUnit(udg_Tavern[2], false)//Для всех сразу
Ty3uK Дата: Вторник, 14 Февраля 2012, 13:12:18 | Сообщение # 7
Группа: Ветераны
Сообщений: 6125
Награды:
2
Репутация:
1617
Блокировки:
Может быть дело в том, что нельзя скрывать триггерно юнитов, которые уже есть на карте? Я так понял, что в переменных именно такие юнитыДобавлено (14 Февраль 2012, 13:12:18) --------------------------------------------- Про это и говорил в начале
SirNikolas Дата: Вторник, 14 Февраля 2012, 13:15:24 | Сообщение # 8
Группа: Модераторы
Сообщений: 6729
Награды:
1
Репутация:
1867
Блокировки:
Quote (SirNikolas )
call ShowUnit(udg_Tavern[2], false)//Для всех сразу
Или, если тебе надо для первых двенадцати, то вот так:Code
call ShowUnit(udg_Tavern[2], GetPlayerId(GetLocalPlayer()) > 11)
Добавлено (14 Февраль 2012, 13:15:24) ---------------------------------------------
Quote (Ty3uK )
Может быть, дело в том, что нельзя скрывать триггерно юнитов, которые уже есть на карте?
С чего бы? Хотя проверить все-таки надо...
Ty3uK Дата: Вторник, 14 Февраля 2012, 13:17:59 | Сообщение # 9
Группа: Ветераны
Сообщений: 6125
Награды:
2
Репутация:
1617
Блокировки:
Ну созданные триггерно юниты при локальном скрытии не десинхают. Проверял лично
wetalq Дата: Вторник, 14 Февраля 2012, 13:38:19 | Сообщение # 10
8 уровень
Группа: Проверенные
Сообщений: 550
Награды:
0
Репутация:
117
Блокировки:
Создал таверны триггерно, но за 3 проверки, синий игрок вылетал только после покупки первого предмета(
SirNikolas Дата: Вторник, 14 Февраля 2012, 13:42:20 | Сообщение # 11
Группа: Модераторы
Сообщений: 6729
Награды:
1
Репутация:
1867
Блокировки:
Проверь другие триггеры с тем же событием, а также с "Юнит продает предмет (из лавки)".
wetalq Дата: Вторник, 14 Февраля 2012, 14:09:28 | Сообщение # 12
8 уровень
Группа: Проверенные
Сообщений: 550
Награды:
0
Репутация:
117
Блокировки:
хм, нашел чуть другой метод как сделать, без функции GetLocalPlayer() создать таверну на таверне, и сделать так что бы 1 таверна была нормальная, а вторая маленькая. можно как нибудь сделать так что бы таверну нельзя было выбрать игроку, а она выбиралась только в случае если используют переключатель у таверны ?
SirNikolas Дата: Вторник, 14 Февраля 2012, 14:38:28 | Сообщение # 13
Группа: Модераторы
Сообщений: 6729
Награды:
1
Репутация:
1867
Блокировки:
Тогда действительно, создавай таверну для каждого игрока и локально устанавливай им прозрачность на 100%.
wetalq Дата: Воскресенье, 19 Февраля 2012, 01:55:17 | Сообщение # 14
8 уровень
Группа: Проверенные
Сообщений: 550
Награды:
0
Репутация:
117
Блокировки:
Quote (SirNikolas )
Тогда действительно, создавай таверну для каждого игрока и локально устанавливай им прозрачность на 100%.
а смысл ? выбрать их же будет можно
SirNikolas Дата: Воскресенье, 19 Февраля 2012, 11:38:35 | Сообщение # 15
Группа: Модераторы
Сообщений: 6729
Награды:
1
Репутация:
1867
Блокировки:
А, точно. Тогда размер локально на 0%.
Borodach Дата: Воскресенье, 19 Февраля 2012, 13:23:13 | Сообщение # 16
9 уровень
Группа: Проверенные
Сообщений: 930
Награды:
0
Репутация:
422
Блокировки:
Я думаю проблема все ж в другом... ты создай только эту функцию на карте и проверь на дессинк
Karamba
wetalq Дата: Понедельник, 20 Февраля 2012, 01:25:36 | Сообщение # 17
8 уровень
Группа: Проверенные
Сообщений: 550
Награды:
0
Репутация:
117
Блокировки:
Quote (Borodach )
ты создай только эту функцию на карте и проверь на дессинк
я и создал только одну функцию, вылетает именно при первой смене таверны
Dreii Дата: Понедельник, 20 Февраля 2012, 19:12:32 | Сообщение # 18
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды:
0
Репутация:
603
Блокировки:
wetalq , создавай таверны. скрывай циклом (НЕЛОКАЛЬНО) локально показывай нужную
wetalq Дата: Понедельник, 20 Февраля 2012, 22:07:48 | Сообщение # 19
8 уровень
Группа: Проверенные
Сообщений: 550
Награды:
0
Репутация:
117
Блокировки:
Quote (Dreii )
скрывай циклом (НЕЛОКАЛЬНО)
зачем ? нелокально же будет так: скрыть таверну 12 рас щас попробую
Ty3uK Дата: Вторник, 21 Февраля 2012, 08:52:36 | Сообщение # 20
Группа: Ветераны
Сообщений: 6125
Награды:
2
Репутация:
1617
Блокировки:
Поэтому циклом и скрывай. Да и вообще, если не локально скрывать, то это нужно сделать всего один раз:Code
call ShowUnit(u, false)
wetalq Дата: Четверг, 23 Февраля 2012, 22:54:40 | Сообщение # 21
8 уровень
Группа: Проверенные
Сообщений: 550
Награды:
0
Репутация:
117
Блокировки:
Тему можна закрывать. Проблема решил так: Перед тем как скрыть таверну, я снимал выбор со всех юнитов. Всем спасибо кто пытался помочь