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

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

Ответ
 
VenusWatcher

offline
Опыт: 172
Активность:
Время возрождения героя
Подскажите, пожалуйста, каким образом в доте реализован подсчет времени возрождения героя в зависимости от левела? С помощью игровых констант или триггерно? Пробовал редактировать ReviveBaseFactor, ReviveLevelFactor, ReviveMaxFactor, ReviveMaxTimeFactor, ReviveTimeFactor в игровых константах, но от этого вообще ничего не изменилось...
Старый 04.08.2008, 06:26
akkolt

offline
Опыт: 13,826
Активность:
Реализовано там всё триггерно по формуле 3 + N*LEVEL OF UNIT извини, точныых цифр не помню. Скачай прогу по доте (не помню названия), здесь на сайте она есть. Там описаны все формулы, действующие в игре.
Старый 04.08.2008, 06:31
Strayiker
Warcraft Forever
offline
Опыт: 3,406
Активность:
Помоему там лвл*4-1

Strayiker добавил:
Сам когда-то вычислял =)
Старый 04.08.2008, 08:08
Alta

offline
Опыт: 235
Активность:
Цитата:
каким образом в доте

Бррр...
Замучали с дотой. Ну сделай систему другую.
Например здоровье(макс) героя/60
Или сумму ловкости, интеллекта и силы
Старый 04.08.2008, 11:22
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
VenusWatcher
Фишка в том, что "ревайв" в доте сделан триггерно. По сути это "после смерти ждать N времени, триггерно ревайв героя". А константы, которые ты менял, они лият только на возрождение в алтаре.
Старый 04.08.2008, 11:33
VenusWatcher

offline
Опыт: 172
Активность:
akkolt,Strayiker,DFlyer
Спасибо за ответы!

Теперь у меня возник еще один вопрос. Нашел я этот скрипт (в DotA Open Objects v6.41), отвечающий за возрождение героя (извиняюсь, что так, не нашел как сделать спойлер):
Код:
// DEBUG Trigger Number : 125
function gIgI takes unit pgj,real pxx,real pyy returns nothing
local string lf5=H2Tx(GetOwningPlayer(pgj))
local unit lgg=GetUnit(lf5,"Kobold0")
local unit lgG=GetUnit(lf5,"Kobold1")
local unit lgh=GetUnit(lf5,"Kobold2")
local unit lgH=GetUnit(lf5,"Kobold3")
local unit lgi
set lgi=lgg
if lgi!=null and pgj!=lgi then
call ReviveHero(lgi,pxx,pyy,false)
call SetUnitX(lgi,pxx)
call SetUnitY(lgi,pyy)
call gDgD(lgi)
call SetUnitPathing(lgi,true)
endif
set lgi=lgG
if lgi!=null and pgj!=lgi then
call ReviveHero(lgi,pxx,pyy,false)
call SetUnitX(lgi,pxx)
call SetUnitY(lgi,pyy)
call gDgD(lgi)
call SetUnitPathing(lgi,true)
endif
set lgi=lgh
if lgi!=null and pgj!=lgi then
call ReviveHero(lgi,pxx,pyy,false)
call SetUnitX(lgi,pxx)
call SetUnitY(lgi,pyy)
call gDgD(lgi)
call SetUnitPathing(lgi,true)
endif
set lgi=lgH
if lgi!=null and pgj!=lgi then
call ReviveHero(lgi,pxx,pyy,false)
call SetUnitX(lgi,pxx)
call SetUnitY(lgi,pyy)
call gDgD(lgi)
call SetUnitPathing(lgi,true)
endif
endfunction

function Trig_ReviveHero_Actions takes nothing returns nothing
local unit lfo=GetTriggerUnit()
local player lEk=GetOwningPlayer(lfo)
local real lxx
local real lyy
if PlayerIsSentinel(GetOwningPlayer(lfo))then
set lxx=GetRectCenterX(gg_rct_SentinelHeroSpawn)
set lyy=GetRectCenterY(gg_rct_SentinelHeroSpawn)
else
set lxx=GetRectCenterX(gg_rct_ScourgeHeroSpawn)
set lyy=GetRectCenterY(gg_rct_ScourgeHeroSpawn)
endif
call PanCameraToTimedForPlayer(lEk,lxx,lyy,0)
call ClearSelectionForPlayer(lEk)
call SelectUnitAddForPlayer(lfo,lEk)
set udg_iA_DTAX_revive_time[GetPlayerId(lEk)]=0
if gege(lfo)then
call gIgI(lfo,lxx,lyy)
endif
call SetUnitX(lfo,lxx)
call SetUnitY(lfo,lyy)
call gDgD(lfo)
call SetUnitPathing(lfo,true)
endfunction

function StartTrigger_ReviveHero takes nothing returns nothing
set gg_trg_ReviveHero=CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(gg_trg_ReviveHero,EVENT_PLAYER_HERO_REVIVE_FINISH)  
call TriggerAddAction(gg_trg_ReviveHero,function Trig_ReviveHero_Actions)
endfunction

function InitTrig_ReviveHero takes nothing returns nothing
endfunction

Поскольку в jass не разбираюсь, подскажите где именно в этом коде идет применение формулы 4*lvl-1? Заранее хочу сказать, что мне нужно сделать так, чтобы время возрождения героя было 30 секунд вне зависимости от левела. Как это сделать с помощью триггеров я знаю, но когда полностью удалил вышеприведенный скрип и создал свой триггер, то при загрузке карты вар вылетел в окна с ошибкой

Отредактировано VenusWatcher, 04.08.2008 в 14:43.
Старый 04.08.2008, 14:38
vit
кааааррл
offline
Опыт: 3,586
Активность:
VenusWatcher, эмм здесь этой формулы нету) это триггер отвечающий за респавн героя в определенном месте
Смотри: создаешь триггер с действием Юнит умирает
проверяешь твой ли это герой и в действиях ждешь 30 секунд и создаешь опять этого героя) в определенной точке)
Старый 04.08.2008, 14:42
Strayiker
Warcraft Forever
offline
Опыт: 3,406
Активность:
VenusWatcher если нужно то могу дать возрождение героя как в доте.

Strayiker добавил:
только без мультиборда
Старый 04.08.2008, 14:49
VenusWatcher

offline
Опыт: 172
Активность:
sdwVit, спасибо, тока я уже писал, что знаю как сделать триггер возрождения :Р

Strayiker, давай, но еще лучше просто скажи мне название триггера, в котором идет применение этой формулы (4*lvl-1)
Старый 04.08.2008, 15:03
Strayiker
Warcraft Forever
offline
Опыт: 3,406
Активность:
VenusWatcher я не знаю название этого триггера, эту формулу я сам вычислял...
Прикрепленные файлы
Тип файла: w3x RessHero.w3x (21.3 Кбайт, 32 просмотров )
Старый 04.08.2008, 15:14
VenusWatcher

offline
Опыт: 172
Активность:
Strayiker
Спасибо за пример.

А как мне сделать чтобы в 53 доте время возрожденя было 30 секунд? Карта запротекчена, как в нее можно добавить или изменить скрипт? Открывал файл скриптов через MPQ Master, но там они совершенно в нечетабельном виде :( Помогите, пожалуйста...
Старый 04.08.2008, 16:11
akkolt

offline
Опыт: 13,826
Активность:
VenusWatcher, только если распротектить. Лучше забей, ибо дота отстой и не стоит этого. (дороботок всяких)

akkolt добавил:
Кстати, странно, у меня mpq master большинство файлов читает, даже в протектах, ну кроме доты только. А жаль =(
Старый 04.08.2008, 16:14
vit
кааааррл
offline
Опыт: 3,586
Активность:
VenusWatcher, дота это такое гнуссное создание редактора(а в точности отмороженной жабы), что можно не удивляться...это как ты создал карту 32х32 сделал рельеф скудненький, запротектил и кинул на форум тему с этой картой "Зацените какая у меня прикольная карта"
я бы не удивился если бы за каждую тему что касается доты давали 3 минуса) ну это так, мечта)
Старый 04.08.2008, 16:24
Strayiker
Warcraft Forever
offline
Опыт: 3,406
Активность:
VenusWatcher если хочешь изменять чюжие карты то лучше забей на маппинг ибо в такие карты никто играть не будет. И отзывы о них будут примерно такие: "Чё за бред", "Какой смысл менять чужое".

Strayiker добавил:
Делай своё. У каждого есть свои идеи которые он хочет воплотить в варе, вдруг твои идеи понравятся народу ;)
Старый 04.08.2008, 16:57
vit
кааааррл
offline
Опыт: 3,586
Активность:
VenusWatcher, товарищ Strayiker правильно говорит: форум Наработки в твоем роспоряжении
Старый 04.08.2008, 17:07
VenusWatcher

offline
Опыт: 172
Активность:
Изначально я хотел изменить максимальный уровень героя (в 53 доте) на более высокий. Я уже проводил такой эксперимент с открытой 41 версией, хостил на батлнете, никаких высказываний вроде "Чё за бред", "Какой смысл менять чужое" не было, все получили фан от игры и остались довольны. Но 41 дота уже давно устарела. К тому же во время игры выявился большой недостаток: на высоких левелах слишком большое время возрождения после смерти, например на 100 левеле приходилось ждать почти 7 минут. Так вот, изменить максимальный левел героев в 53 версии получилось без особых трудностей, отредактировав файл игровых констант. Но вот с изменением времени возрождения проблема, как быть? :(
Старый 04.08.2008, 17:09
vit
кааааррл
offline
Опыт: 3,586
Активность:
VenusWatcher, опендота после пересохранения не грузщится в варе! прошу задуматься над тем что написал. Да не может такого быть!: в опен доте указано МАКСимальное время ожидания ревью героя 160 (+-20) секунд...никаких 7 минут не может быть!
еще раз говорю не стоит делать этого...
Старый 04.08.2008, 17:16
ScorpioT1000
Работаем
offline
Опыт: отключен
VenusWatcher функция Trig_ReviveHero_Actions вызывает нестанд. ф-ции gDgD и gIgI а также проверяет нест. функцию gege(берет юнита). Ты дал код, отображающий только gIgI. Найди gDgD и дай ее код тоже.

ScorpioT1000 добавил:
з.ы. я в доту не играл
Код:
local unit lgg=GetUnit(lf5,"Kobold0")
local unit lgG=GetUnit(lf5,"Kobold1")
local unit lgh=GetUnit(lf5,"Kobold2")
local unit lgH=GetUnit(lf5,"Kobold3")

че за кобольды?
Старый 04.08.2008, 17:20
vit
кааааррл
offline
Опыт: 3,586
Активность:
ScorpioT1000, чтото явно ложное (может там как временная переменная, в плане обьекта)) или прикол от айса)
Старый 04.08.2008, 17:23
ScorpioT1000
Работаем
offline
Опыт: отключен
Код:
function gDgD takes unit pfU returns nothing
call UnitRemoveAbility(pfU,'A0AZ')
call UnitRemoveAbility(pfU,'A09J')
call UnitRemoveAbility(pfU,'A0KT')
call UnitRemoveAbility(pfU,'A0NW')
call UnitRemoveAbility(pfU,'A0NU')
call UnitRemoveAbility(pfU,'A0OW')
call UnitRemoveAbility(pfU,'A0OV')
call UnitRemoveAbility(pfU,'A0OX')
call UnitRemoveAbility(pfU,'A0OY')
call UnitRemoveAbility(pfU,'A0P0')
endfunction

Хм походу она просто ремовит абилы)

ScorpioT1000 добавил:
хм в воскрешении эвент EVENT_PLAYER_HERO_REVIVE_FINISH значит это он уже завершает воскрешение, это не то

ScorpioT1000 добавил:
Вот нашел:
Код:
if udg_b_DTAX_is_deathmatch_mode==false then
if lia then
set udg_iA_DTAX_revive_time[GetPlayerId(lHw)]=GetHeroLevel(lgE)*1
else
set udg_iA_DTAX_revive_time[GetPlayerId(lHw)]=GetHeroLevel(lgE)*4
endif
loop
call PolledWait(1.85)
set udg_iA_DTAX_revive_time[GetPlayerId(lHw)]=udg_iA_DTAX_revive_time[GetPlayerId(lHw)]-2
exitwhen udg_iA_DTAX_revive_time[GetPlayerId(lHw)]<1
endloop

Разгребай дальше сам. udg_iA_DTAX_revive_time[номер игрока] - время воскрешения(в массиве номера игрока)
Старый 04.08.2008, 17:34
Ответ

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

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

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

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



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