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

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

Ответ
 
Forsaken
has left the game
offline
Опыт: 3,404
Активность:
что такое массивы и как их использовать
Всем привет. Появился некий вопрос. Я создал триггер, при котором в начале карты для игрока будет создаваться юнит на базе, если игрок играет. Записал юнита в локалку. Теперь создал такой триггер, который должен вместо ловкости писать текущую скорость именно этого юнита, но когда я обращаюсь к этой переменной ничего не робит. Глобалки не предлагать, ибо очень многое придется переписывать. Способы ГУИ или Jass, без разницы. Просто подробно. Спасибо.
[+] замечание от DioD: название темы не отражает сути вопроса
Старый 20.01.2011, 10:03
ShamaN26

offline
Опыт: 9,546
Активность:
Forsaken, блин, ты не в курсе что локалки живут только в области своей функции а потом умирают оО
Старый 20.01.2011, 10:16
Forsaken
has left the game
offline
Опыт: 3,404
Активность:
ShamaN26, окей. И что? Только глобалками?
Старый 20.01.2011, 10:19
ShamaN26

offline
Опыт: 9,546
Активность:
Forsaken, еще ХЭШ есть, но я не знаю как его юзать))) а чем тебе глобалки не угодили?
Старый 20.01.2011, 10:23
Forsaken
has left the game
offline
Опыт: 3,404
Активность:
ShamaN26, много переписывать придется =(
Старый 20.01.2011, 10:25
ShamaN26

offline
Опыт: 9,546
Активность:
Forsaken, оО например что? надо создать глобалку, а в твоём коде просто добавить приставку udg_(имя глобалки)
Старый 20.01.2011, 10:26
Forsaken
has left the game
offline
Опыт: 3,404
Активность:
ShamaN26, знаю.
Forsaken добавил:
Ладно, а одним триггером можно сделать для 4-х игроков? (героев)
Старый 20.01.2011, 10:31
ShamaN26

offline
Опыт: 9,546
Активность:
Forsaken, Что сделать? одним тригером занести в массив? оО
Старый 20.01.2011, 10:37
Klop
Папа римский
offline
Опыт: 13,006
Активность:
local unit u = CreateUnit(...)
...
call SaveUnitHandle(hash,1,1,u)
set u = null
ну а затем
local unit u = LoadUnitHandle(hash,1,1)
...
set u = null
Старый 20.01.2011, 10:52
Dreii
define{name=Dreii age=17}
offline
Опыт: 5,246
Активность:
Цитата:
Сообщение от Forsaken
Ладно, а одним триггером можно сделать для 4-х игроков?

Код:
local integer i=0
loop
exitwhen i==4
call CreateUnit(Player(i),'h000',x,y,bj_UNIT_FACING)
set i=i+1
endloop

насчет глобалок,можно и не писать приставку udg_
Достаточно иметь JNGP,и в самом начале кода(сверху) дописать
Код:
globals
constant hashtable Hash
endglobals

Где hashtable- тип переменной ,Hash-имя ,constant-если переменная создается 1 раз за игру
Старый 20.01.2011, 13:15
Hanabishi
COOL STATUS
offline
Опыт: отключен
Достаточно иметь JNGP,и в самом начале кода(сверху) дописать
необязательно сверху, блок глобалс можно пихать в любое место (вне функций)
Старый 20.01.2011, 14:15
Dreii
define{name=Dreii age=17}
offline
Опыт: 5,246
Активность:
Hanabishi, ну я навсякий сферху,чтоб легко редактирвоать^_^
Старый 20.01.2011, 14:19
Forsaken
has left the game
offline
Опыт: 3,404
Активность:
Так, с этим разобрался.
Но вот еще код:
((код jass
function Speed_Actions takes nothing returns nothing
local integer I = 0
local real R
loop
exitwhen I > 8
set R = GetUnitMoveSpeed(udg_P[I])
call ModifyHeroStat(bj_HEROSTAT_AGI, udg_P[I], bj_MODIFYMETHOD_SET, R2I(R))
set I = I + 1
endloop
endfunction
===========================================================================
function InitTrig_Speed takes nothing returns nothing
set gg_trg_Speed = CreateTrigger()
call TriggerRegisterTimerEventPeriodic(gg_trg_Speed, 0.01)
call TriggerAddAction(gg_trg_Speed, function Speed_Actions)
endfunction
))
Почему то работает только для одного юнита, для юнита красного игрока.
В чем косяк?
И не надо поливать меня грязью, как это делают некоторые. Просто я только учусь.

Отредактировано Forsaken, 21.01.2011 в 15:18.
Старый 21.01.2011, 14:49
Hanabishi
COOL STATUS
offline
Опыт: отключен
function Trig_Speed_Actions takes nothing returns nothing
local integer I = 0
local real R
loop
exitwhen I > 8
set R = GetUnitMoveSpeed(udg_P[I])
call ModifyHeroStat(bj_HEROSTAT_AGI, udg_P[I], bj_MODIFYMETHOD_SET, R2I(R))
set I = I + 1
endloop
endfunction
===========================================================================
function InitTrig_Speed takes nothing returns nothing
set gg_trg_Speed = CreateTrigger()
call TriggerRegisterTimerEventPeriodic(gg_trg_Speed, 0.01)
call TriggerAddAction(gg_trg_Speed, function Trig_Speed_Actions)
endfunction
Старый 21.01.2011, 14:51
Forsaken
has left the game
offline
Опыт: 3,404
Активность:
Hanabishi, сорри. Я не полностью выявил свою мысль. То, что я сделал работает. Но при покупке ботинка, информация обновляется только у героя красного игрока, а у остальных нет.
Старый 21.01.2011, 14:53
Hanabishi
COOL STATUS
offline
Опыт: отключен
я исправил читай внимательнее
Старый 21.01.2011, 14:57
Forsaken
has left the game
offline
Опыт: 3,404
Активность:
Hanabishi, я сначала так и делал, просто скопировал старый код. Все равно не робит.
Старый 21.01.2011, 15:02
ShamaN26

offline
Опыт: 9,546
Активность:
Forsaken, Вопрос с массивом исчерпан? или нет?
Старый 21.01.2011, 15:03
Forsaken
has left the game
offline
Опыт: 3,404
Активность:
ShamaN26, да =) Щас вот над этим малек мужусь.
Forsaken добавил:
В общем буду рад любой помощи.
Forsaken добавил:
Все, работает. Надо было карту перезапустить =\ Всем спасибо за отзывы.
Тему клос
Forsaken добавил:
Хотя нет, постойте. Не удобно просить, но вот еще мелкая загвоздка.
Мне надо, чтобы при смерти крипа к киллеру добавлялось +1 к силе. Вот код:
((код jass
function Creeps_Conditions takes nothing returns boolean
if(not(IsUnitType(GetDyingUnit(), UNIT_TYPE_HERO) == false))then
return false
endif
return true
endfunction
===========================================================================
function Creeps_Actions takes nothing returns nothing
local integer I = 0
local unit array P
local real R
set P[I] = GetKillingUnitBJ()
loop
exitwhen I > 8
set R = I2R(GetHeroStatBJ(bj_HEROSTAT_STR, P[I], false))
call ModifyHeroStat(bj_HEROSTAT_STR, P[I], bj_MODIFYMETHOD_SET, (R2I(R) + 1))
set I = I + 1
endloop
set P[I] = null
endfunction
===========================================================================
function InitTrig_Creeps takes nothing returns nothing
set gg_trg_Creeps = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(gg_trg_Creeps, EVENT_PLAYER_UNIT_DEATH)
call TriggerAddCondition(gg_trg_Creeps, Condition(function Creeps_Conditions))
call TriggerAddAction(gg_trg_Creeps, function Creeps_Actions)
endfunction
===========================================================================
))
Forsaken добавил:
работает только на синего игрока.
Старый 21.01.2011, 16:43
reALien

offline
Опыт: 29,211
Активность:
Вариант на в/с джасс подойдет?
Старый 21.01.2011, 17:06
Ответ

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

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

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

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



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