Вжух и нет потока :D
Помню наткнулся на бесконечный луп, если после
GroupEnumUnitsInRange(g,GetUnitX(caster),GetUnitY(caster),400+75,null)
сразу не убирать caster'а из группы, то варик начинает бесконечно передобавлять кастера в эту группу
загонять ману в минус не оч гуд
лучше через предметный метод (с абилой. за раз отнимающей по 1 ману) сгонять ее ровно в 0 и так поддерживать
потому что ятп если как-то герою посчитать макс. ману, то оно и выдаст отрицательное, а не 0
а вдруг там например что-то дамажит по кол-ву макс. маны? надо будет 0, а оно продамажит как по -дохрена... или вдруг будет деление на количество макс. маны?
Ну если так подумать, то слишком костыльно получается.
Я ленив, поэтому думаю просто чекать мп через свою функцию, которая будет возвращать 0, если мп меньше нуля
Проверил, GetUnitState возвращает минусовое число :d
UPD:
Проверил ещё раз, вар обрубает поток при делении на ноль :d
Если ты пробуешь на кампаниях, то тебе нужно лезть в скрипт каждой миссии кампании и править всё это.
Но удачи в редактировании озвучки для соответствия с текстом.
Пошарив ещё немного, нашёл pjass.exe, поставил его в едитор и начал крашиться по кд.
Ребутнув пк и переоткрыв эдитор, всё магическим образом заработало =\
Если только своей системой атаки, через переменные.
либо если герой - то например базовая атака + основной стат * множитель
например - 5 + 2*20(аги) = 45 атаки
А так - мемхак чудеса...
Бордер, Открываете карту через WEX(он не подгружает скрипт), делаете экспорт всей даты (через РО-юниты/абилки/грейды/шмот), переводите их в текстовике - потом импортируете назад, все строки заменяются на ваши.
Cкрипт - отдельно, закидываете в карту через mpq эдитор.
Перевод скрипта - возможно только ручками c: 8gabriel8, со скриптом боролся с utfizer'ом под рукой :D
Пушистый, Ну вы что, думаете так легко я отдам вам свой план захвата мира, используя милых котиков? Сама карта и есть полигон со всеми системами, но делиться ими я пока не готов
Делать БД, занося стоимость юнита в ХТ, и юзая соответствующие поля при касте абилки.
пример:
Футмен - 80 голды, 30 дерева
в базе данных проверка:
Юнит, кастующий спелл продажи = Футмен (проверка по айди, или по имени, без разницы)
Проверяем игровой режим, и данные из ХТ
Допустим стоит 70% возвращение стоимости за юнита:
Читаем данные из ХТ, умножаем числа на 0.7, и возвращаем это кол-во золота и дерева игроку.
ClotPh, По идее, GetAbilityName(GetSpellAbilityId()) берёт строку из поля Name .
Поле Tip - использующееся в игре как название способности - остаётся нетронутым.
Так что в теории можно просто именовать абилки как Q,W,E,R и так далее (по хоткею например), а доп проверкой делать имя юнита.
Гарена Лан эмулирует локалку между игроками.
Т.е. если хост ливает из игры в гарене лан, или же закрывает сам лан геймс то игра прекращается мгновенно.
Eurobattle, Iccup, Battle.net работают по другому принципу:
Если ливает изначальный хост (при условии что игра создана не через /host, а через кнопку создать игру) то игра перебрасывается на следующего в списке игрока с открытыми портами.
Список - красный,синий,бирюзовый.. по цветам сверху вниз.
Если же игрок с открытыми портами не найден, то игра прекращается.
В вашей карте же просто указана система команд по типу хоста что выбирает моды.
Т.е. если красного нет в игре, то "хостом" становится синий, но даже при условии что настоящий хост сидит на розовом.
Т.е у вас - "хост" это просто игрок с повышенными правами на команды (кик, установка модов).
quq_CCCP, Что-то я не в ту сторону ушёл в плане станов.
Думал что через аурку торнадо оно будет работать, но (внезапно) понял что это просто баф, по которому уже триггерно нужно отлавливать действие.
Кстати, если допустим сделать молоток на 10 секунд стана, и спустя например 2 секунды убирать баф стана, то выйдет ли цель из под него?
Просто сейчас пробовал с вариантом - баш на 0.25 секунд, и каждые 0.2 секунды баш обновлялся кастом нового молотка, но выглядит это совсем не круто в спеллах, где нужен один но долгий стан.
quq_CCCP, Юнит жив и выделен мной (ибо тест мапа) Extremator, сек, проверю, ибо на первом скилле поле "Область воздействия" было на 600
(хоть сам скилл идёт в панельки лвл апа, и он не выучен, но мало ли)
Upd:
Что-то не так с моим юнитом, буду выяснять что именно.
Поставил рядом нового, и на нём не крашится.
Но вот стан почему-то работать не хочет...
Пойду ещё пошаманю.
Ну он будет подгружать скрипт всем игрокам, так что В теории всё должно быть нормально.
Пока возможности проверить нет, но мб ближе к вечеру время появится. Клятая работа
Из личного опыта понял, что замены файлов в mpq архивах просто нет, вместо этого старый файл просто исчезает, а новый появляется на его месте. Попробуйте "удалить" файл из архива - размер архива не изменится
Иногда даже новый файл не подхватывается, и приходится пересоздавать архив.
Скорее всего первое, ибо даже в "рамках" не особо использующей переменные доты, настакивание даммиков будет снижать фпс минуте к 120й, даже при условии того, что используются герои с максимальным кол-вом даммиков.
Да и даммики не особо будут заметны, ибо эта нагрузка целиком возлагается на проц, коих в текущем поколении достаточно. (i3 спокойно тянет всё это)
Помню работал с одной картой, так там чар настакивал дичайшее кол-во мусора после себя, в итоге у меня (как у игрока с самым слабым пк на то время) начинались дикие просадки даже после минуты 30й.
Но и при этом, при любом касте спелла там дёргалась половина возможного кода, и некоторые функции были тупо сделаны через одно место (можно было в разы проще сделать), и складывая всё это можно было получить дичайшие просадки в спеллах с кучей instance'ов урона.
Если интересно, могу скинуть эту карту.
function Trig_CW_Cast_Actions takes nothing returns nothing
local unit u = LoadUnitHandle( какая_нибудь_хештаблица, GetHandleId(GetExpiredTimer()), 0 )
local real x1 = GetUnitX( u ) //координаты кастера
local real y1 = GetUnitY( u )
local real from = 800
local real a = GetUnitFacing( u ) //угол поворота юнита
//local real S = 90 //Ширина угла
//local real angle = S/2 //Половина ширины угла
set udg_Angle = a
set udg_Caster = u
//set udg_X = angle
call BJDebugMsg("Угол поворота при касте: "+ R2S(a))
call GroupEnumUnitsInRange(bj_lastCreatedGroup,x1,y1,from, Condition(function TZZ))
//call ForGroup( bj_lastCreatedGroup, function TZZ )
call GroupClear(bj_lastCreatedGroup)
set u = null
endfunction
function TimerOff takes nothing returns nothing
local timer t = GetExpiredTimer()
local timer t2 = LoadTimerHandle( какая_нибудь_хештаблица, GetHandleId(t), 0 )
call FlushChildHashtable( какая_нибудь_хештаблица, GetHandleId(t) )
call FlushChildHashtable( какая_нибудь_хештаблица, GetHandleId(t2) )
call DestroyTimer( t )
call DestroyTimer( t2 )
set t = null
set t2 = null
endfunction
function Timer takes nothing returns nothing
local timer t = CreateTimer()
local timer t2 = CreateTimer()
local unit u = GetTriggerUnit()
call SaveUnitHandle( какая_нибудь_хештаблица, GetHandleId( t ), 0, u )
call TimerStart( t, /*Периодичность*/0.04, true, Trig_CW_Cast_Actions )
call SaveTimerHandle( какая_нибудь_хештаблица, GetHandleId(t2), 0, t )
call TimerStart( t2, /*Время которое будет работать таймер*/36, false, TimerOff )
set t = null
set t2 = null
set u = null
endfunction
//===========================================================================
function InitTrig_Cast takes nothing returns nothing
set gg_trg_Cast = CreateTrigger( )
set bj_lastCreatedGroup = CreateGroup()
call TriggerRegisterAnyUnitEventBJ( gg_trg_Cast, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Cast, Condition( function Trig_CW_Cast_Conditions ) )
call TriggerAddAction( gg_trg_Cast, function Trig_CW_Cast_Actions )
endfunction
блин, а я тут дописываю штуку чтобы в течении 36 секунд с любой периодичность вызывалось Trig_CW_Cast_Actions и юзало того самого кастера
Так мне доделывать или нет?
Прощу прощения за убитое вами время :c
Доделывать или нет - на ваше усмотрение :d
» WarCraft 3 / Убрать ману
Проверял так:
Помню наткнулся на бесконечный луп, если после
GroupEnumUnitsInRange(g,GetUnitX(caster),GetUnitY(caster),400+75,null)
сразу не убирать caster'а из группы, то варик начинает бесконечно передобавлять кастера в эту группу
» WarCraft 3 / Убрать ману
Я ленив, поэтому думаю просто чекать мп через свою функцию, которая будет возвращать 0, если мп меньше нуля
Проверил, GetUnitState возвращает минусовое число :d
Проверил ещё раз, вар обрубает поток при делении на ноль :d
» WarCraft 3 / авторский перевод WarCraft 3
Но удачи в редактировании озвучки для соответствия с текстом.
» WarCraft 3 / Мемхак
Ребутнув пк и переоткрыв эдитор, всё магическим образом заработало =\
» WarCraft 3 / Как узнать кол-во единиц атаки у юнита?
либо если герой - то например базовая атака + основной стат * множитель
например - 5 + 2*20(аги) = 45 атаки
А так - мемхак чудеса...
Ред. N1ghtSiren
» WarCraft 3 / Как сделать -zoom в карте?
Ред. N1ghtSiren
» WarCraft 3 / Перевод карты без предоставления исходников
Cкрипт - отдельно, закидываете в карту через mpq эдитор.
Перевод скрипта - возможно только ручками c:
8gabriel8, со скриптом боролся с utfizer'ом под рукой :D
» WarCraft 3 / Изменить информацию в реплее?
Replay explorer в помощь.
Попахивает какой-то подставой
» WarCraft 3 / Главное меню
Картинка высокого качества, превращённая в текстуры (png/tga -> blp)
» WarCraft 3 / Скилл под лупу (Утечки)
Сама карта и есть полигон со всеми системами, но делиться ими я пока не готов
» WarCraft 3 / Атакуемый юнит
Видимо пора завязывать с варом и идти спать :d
» WarCraft 3 / Способность на продажу юнита
пример:
Футмен - 80 голды, 30 дерева
в базе данных проверка:
Юнит, кастующий спелл продажи = Футмен (проверка по айди, или по имени, без разницы)
Проверяем игровой режим, и данные из ХТ
Допустим стоит 70% возвращение стоимости за юнита:
Читаем данные из ХТ, умножаем числа на 0.7, и возвращаем это кол-во золота и дерева игроку.
» WarCraft 3 / Скилл под лупу (Утечки)
Поле Tip - использующееся в игре как название способности - остаётся нетронутым.
Так что в теории можно просто именовать абилки как Q,W,E,R и так далее (по хоткею например), а доп проверкой делать имя юнита.
Ред. N1ghtSiren
» WarCraft 3 / Переброс игры при ливе хоста
Т.е. если хост ливает из игры в гарене лан, или же закрывает сам лан геймс то игра прекращается мгновенно.
Eurobattle, Iccup, Battle.net работают по другому принципу:
Если ливает изначальный хост (при условии что игра создана не через /host, а через кнопку создать игру) то игра перебрасывается на следующего в списке игрока с открытыми портами.
Список - красный,синий,бирюзовый.. по цветам сверху вниз.
Если же игрок с открытыми портами не найден, то игра прекращается.
Т.е. если красного нет в игре, то "хостом" становится синий, но даже при условии что настоящий хост сидит на розовом.
Т.е у вас - "хост" это просто игрок с повышенными правами на команды (кик, установка модов).
» WarCraft 3 / Краши (Баг?)
Думал что через аурку торнадо оно будет работать, но (внезапно) понял что это просто баф, по которому уже триггерно нужно отлавливать действие.
Кстати, если допустим сделать молоток на 10 секунд стана, и спустя например 2 секунды убирать баф стана, то выйдет ли цель из под него?
Просто сейчас пробовал с вариантом - баш на 0.25 секунд, и каждые 0.2 секунды баш обновлялся кастом нового молотка, но выглядит это совсем не круто в спеллах, где нужен один но долгий стан.
Ред. N1ghtSiren
» WarCraft 3 / Как сделать предмет подбираемым только одним игроком?
Взять хендл героя поднявшего предмет
Совпадает с хендлом на предмете - Оставить
Не совпадает - дропнуть
Ред. N1ghtSiren
» WarCraft 3 / Краши (Баг?)
Extremator, сек, проверю, ибо на первом скилле поле "Область воздействия" было на 600
(хоть сам скилл идёт в панельки лвл апа, и он не выучен, но мало ли)
Upd:
Что-то не так с моим юнитом, буду выяснять что именно.
Поставил рядом нового, и на нём не крашится.
Но вот стан почему-то работать не хочет...
Пойду ещё пошаманю.
» WarCraft 3 / Кастомный blizzard.j
Пока возможности проверить нет, но мб ближе к вечеру время появится.
Клятая работа
» WarCraft 3 / Выгрузка патча для редактирования
Попробуйте "удалить" файл из архива - размер архива не изменится
Иногда даже новый файл не подхватывается, и приходится пересоздавать архив.
Ред. N1ghtSiren
» WarCraft 3 / Как сделать, чтобы зданием могли пользоваться несколько игроков?
Ред. N1ghtSiren
» WarCraft 3 / Строка
Преобразование
R2S -> real to string
I2S -> integer to string
» WarCraft 3 / Неполадки в варкрафте
Самый действенный метод
Ред. N1ghtSiren
» WarCraft 3 / RemoveUnit или KillUnit?
Да и даммики не особо будут заметны, ибо эта нагрузка целиком возлагается на проц, коих в текущем поколении достаточно. (i3 спокойно тянет всё это)
Но и при этом, при любом касте спелла там дёргалась половина возможного кода, и некоторые функции были тупо сделаны через одно место (можно было в разы проще сделать), и складывая всё это можно было получить дичайшие просадки в спеллах с кучей instance'ов урона.
Если интересно, могу скинуть эту карту.
» WarCraft 3 / Помогите c триггером :c
Ред. N1ghtSiren
» WarCraft 3 / Помогите c триггером :c
Доделывать или нет - на ваше усмотрение :d