Последняя иконка из последнего пака выше что-то раздражать стала, какая-то пыльная, что ли (это не вина иконщика, претензий к нему не имею).
В общем, вот новая, просто шик:
Простое задание, прошу покрасить в голубой wc3-maps.ru/load/modeli_dlja_warcraft_3/modeli_ehffektov/svjashh...
/////////////
Честно, жутко раздражает невыполнение простых заданий с неясностью насчет того, будут ли они сделаны когда-нибудь или нет.
Может заказчик сделать сам или нет - это его проблемы. Когда я мороженое прихожу покупать, мне не интересно знать, как его готовят, я хавать быстрее хочу.
Реально, почему бы биржу не замутить уже с оплатой и комиссионными администрации. Мной бы уже были сунуты 50 рублей, только сделайте этот гребаный реколор. Там ведь текстуры поменять и все. Меня реально жутко бесит в мпкью лишний раз копошиться и в редакторах, когда и так приходится постоянно ежемесячно это делать.
По-хорошему, если серьезный проект, то вообще не на гуи делать нужно.
И вообще не в отдельных триггерах, а ВЕСЬ в кастом коде, у меня вот уже в следующем году максимум точно все или практически в кастом коде будет, отдельные триггеры умрут окончательно. Все новое уже пишется только в кастом код.
А мб даже, как бы это странно от меня ни звучало, не на варкрафте. =)
Просто свое-то уже привыкло развиваться именно там, и сменить так же сложно, как место жительства, и т. к. главные понты - количественные, плюс именно для вара до фига моделек откуда бы то ни было, там и остаётся...
Ну а простенькое можно хоть где и хоть как делать.
Мне сейчас сложно это раскурить, т. к. лично код пишу и мозги болят, но, по-моему, так: многократного срабатывания событий в том, что выше, действительно не будет, но фактически дофига ненужных событий добавляется, и это теоретически не так уж хорошо и может оказать пусть практически незаметное, но влияние на производительность.
Т. е. не первой важности проблема, но лучше бы всё-таки исправить.
Могу ошибаться.
(А как проблемы избежать, подсказали уже в самом начале треда)
Maniac_91, если и отдаётся, то как-то так, что комбинация событие-условие "unit отдал приказ без указания цели, условие приказ stop" его не ловит. Иначе бы у меня пассивка переключалась постоянно, а такого вовсе не наблюдается.
Так-так! Ты, кстати, учитывай, что приказ отставить ТОЧНО сам по себе отдаётся при каких-то негативных враждебных воздействиях (станах, что ли, не помню, но просто у меня есть герой, у которого пассивка переключается нажатием stop, так вот она иногда сама по себе в сражениях переключается).
Так что стоит подумать, насколько разумная система, потому что придется еще обходные костыли пилить.
Делай все баффы и дебаффы и давай триггерно разные на основе ауры торнадо, она стакается разная
Только для пурджей всяких тоже бд писать, но тут уж ничего не поделаешь
А по вопросу - любой код так или иначе влияет на производительность, но в хорошем коде это влияние будет практически незаметным
Empyreal, а можно вот буквально 24 или 25 числа быстренько сделать к последней второй паре реколоров огненного купола такие же реколоры Магмы? ОЧЕНЬ бы пригодились.
Andrey33, его в глобальных GUI событиях нету
Короче, воля твоя, имхо проще все-таки через маркер, сбрасываемый через полсекунды, сделать, не сильно хуже, а намного легче реализовывается
Andrey33, ну если сложно, запили ты там шмотку себе какую-нить с разоружением недорогую и/или сделай так, чтобы абуз этой способности не был особенно полезным (ведь основная атака тогда не проходит).
Или вот тебе вариант намного проще того, что сказано выше. Когда твой юнит атакует, давай ему абилу-пустышку без иконки и без эффектов, ничего не делающую, а через 0.5 секунды убирай обратно. А в условиях триггера пропиши, что он срабатывает, только если этой пустышки нет.
Ige, спс.
Да в принципе нужно, но не очень, равкод я при выучивании могу поймать.
DracoL1ch, у меня с тобой десинхронизация какая-то
каких строк?
Мои функции выше безопасны?
Пока гоняю в тест-карте, проблем не обнаруживаю, поля исправно переписываются туда и обратно и абилы учатся
ОХ, лол. Хм. Ща Мегамен забрал чародейскую ауру ладдерного архимага, работает и бафф дает вроде нормальный, но почему-то визуально отображается как "доспехи веры". То ли это у меня импорт такой и уже забыто, то ли допереписывалось (это уже XX была геройская способность, которые были переписыванием полей одному герою впихнуты и все через выучивание). Но других побочных эффектов пока не видно.
Лол набор: выучены 4 все свои абилы (но там не отображаются пассивки, специально же расчет на то, что гер абилы тырит), от чародея крови астрал, огонь и феня и от архимага буран, дух воды и аура, вот аура уже даже благополучно на панель не влезла.
///////////
DracoL1ch, а, дошло!!! Т. е. ты говоришь не брать значения из строки при записи в поле?
Ок, не буду, прямо из одного поля в другое, да и не планировалось.
DracoL1ch, ну песец, а на что я тогда трачу сегодняшний день =/
Может мне кто-нить тогда хоть посоветовать, как правдами и неправдами с мемхаком и без словить абилу и пропихнуть ее выучивание герою??? Мне нужно, чтобы он чужие абилы мог тырить и обязательно через выучивание, иначе будет ппц геморройная бд
просто у меня другие скиллы многие регают свои триггеры только через выучивание конкретно для выучившего
для оптимизации
т. е. если абилу просто дать, она ниче делать не будет
//////
так, тем временем у меня уже строка ловится и не фаталит (по "классическому" мемхаку уже, не люблю слово "старый", да, у меня там небольшая путаница с конвертхэндл функцией была, они ж для старого и нового мх разные, откат сделан).
1095263859
так, id2string все равно достает не понятно что, не равкод, а какие-то
\x00000041...
sic!!! Ну так или иначе прорыв.
ТАК. Ну вот для начала. Вот ДЕЙСТВУЮЩИЕ (!!!) функции для "классического" мемхака. Все-таки это какая-никакая, а победа ))) Равкод не отловить, но меняют абилу исправно.
function GetHeroAbilityFromList takes unit uHero, integer list returns integer
set LastConvertedHandle = ConvertHandle( uHero )
if IsUnitType( uHero, UNIT_TYPE_HERO ) and LastConvertedHandle > 1 and list > 0 then
return ReadMemory( ReadMemory( LastConvertedHandle + 496 ) + 240 + 4 * list )
endif
return 0
endfunction
function SetHeroAbilityFromList takes unit uHero, integer list, integer abi returns nothing
set LastConvertedHandle = ConvertHandle( uHero )
if IsUnitType( uHero, UNIT_TYPE_HERO ) and LastConvertedHandle > 1 and list > 0 then
call WriteMemory( ReadMemory( LastConvertedHandle + 496 ) + 240 + 4 * list, abi )
endif
endfunction
//////////////
Теперь чо там про фаталы... Лично потестирую... Фаталы ведь ловились в "новом" мемхаке? Тупость, но может быть, это влияет?
А если я быстренько махну поле выучиваемых абил, сразу выучу одну и сразу обратно перепишу поле?
quq_CCCP, это мне не понятно
У меня там в какой-то момент вроде выводилось целочисленной в текст на экране что-то, но вместо равкода абилки какая-то хня из многих цифр, я хочу равкод выкопать
quq_CCCP, так-так, а, конверты хэндла в мемхаках же разные, один для функций другого не подходит? Мб именно сейчас дело в этом...
Я пока для начала просто уже прочесть абилку пытаюсь и вывести результат на экран...
quq_CCCP, так, жопа. Почему-то при попытке воспользоваться возникает фатал.
Задаю рандомной переменной, например
set i = GetHeroAbilityFromList(u6,1)
и сразу фатал еррор.
Пробовалось и через функцию под "старый" мемхак, и через новый (RMem и WMem вроде уже импортированы).
Кстати, когда u6 - НЕ герой, всё равно фатал, хотя по идее должен был бы быть ноль...
Так, срочно копошусь, пытаюсь переписать функции чтения и записи полей абил героев на "старый" мемхак
Есть где ошибки?
function GetHeroAbilityFromList takes unit uHero, integer list returns integer
set LastConvertedHandle = ConvertHandle( uHero )
if IsUnitType( uHero, UNIT_TYPE_HERO ) and LastConvertedHandle > 1 and list > 0 then
return ReadMemory[(LastConvertedHandle + 496 ) + 240 + 4 * list )/4]
endif
return 0
endfunction
Это пока в блокноте пишу
/////////
Или там разные части отдельно на 4 делить? Ну ща проверю
Хотя какая разница-то по идее, лол
ТАК, вот, короче, что пока скомпилировалось, но что оно и откуда куда читать и писать будет и будет ли, один Господь знает:
//ПЕРЕЗАПИСЬ И ЧТЕНИЕ ПОЛЕЙ СПОСОБНОСТЕЙ
function GetHeroAbilityFromList takes unit uHero, integer list returns integer
local integer LastConvertedHandle = ConvertHandle( uHero )
if IsUnitType( uHero, UNIT_TYPE_HERO ) and LastConvertedHandle > 1 and list > 0 then
return Memory[((LastConvertedHandle + 496 ) + 240 + 4 * list )/4]
endif
return 0
endfunction
function SetHeroAbilityFromListToAbilityOtherHero takes unit uHero, integer list, integer abireadedfromlist returns nothing
local integer LastConvertedHandle = ConvertHandle( uHero )
if IsUnitType( uHero, UNIT_TYPE_HERO ) and IsUnitType( uHero, UNIT_TYPE_HERO ) and LastConvertedHandle > 1 and list > 0 then
set Memory[((LastConvertedHandle + 496 ) + 240 + 4 * list )/4] = abireadedfromlist
endif
endfunction
//ПЕРЕЗАПИСЬ И ЧТЕНИЕ ПОЛЕЙ СПОСОБНОСТЕЙ - ЗАКРЫТО.
Ну и че это за ерь?... Ничего оно никуда не пишет, а если пишет, то хз что хз куда.
*************!!!!
А так благополучно фаталит...
ПЕРЕЗАПИСЬ И ЧТЕНИЕ ПОЛЕЙ СПОСОБНОСТЕЙ
function GetHeroAbilityFromList takes unit uHero, integer list returns integer
local integer LastConvertedHandle = ConvertHandle( uHero )
if IsUnitType( uHero, UNIT_TYPE_HERO ) and LastConvertedHandle > 1 and list > 0 then
return Memory[((LastConvertedHandle + 496 )/4 + (240 + 4 * list ))/4]
endif
return 0
endfunction
function SetHeroAbilityFromListToAbilityOtherHero takes unit uHero, integer list, integer abireadedfromlist returns nothing
local integer LastConvertedHandle = ConvertHandle( uHero )
if IsUnitType( uHero, UNIT_TYPE_HERO ) and IsUnitType( uHero, UNIT_TYPE_HERO ) and LastConvertedHandle > 1 and list > 0 then
set Memory[((LastConvertedHandle + 496 )/4 + (240 + 4 * list ))/4] = abireadedfromlist
endif
endfunction ПЕРЕЗАПИСЬ И ЧТЕНИЕ ПОЛЕЙ СПОСОБНОСТЕЙ - ЗАКРЫТО.
//////////
ладно, ну ее к... матери, ща по-другому сделаю
ладно, действительно гребаное издевательство, чтоб еще когда-нибудь так морочиться
//////////
так, а если вот так
это еще если удастся этот гребаный новый мемхак затащить
ПЕРЕЗАПИСЬ И ЧТЕНИЕ ПОЛЕЙ СПОСОБНОСТЕЙ
function GetHeroAbilityFromList takes unit uHero, integer list returns integer
set LastConvertedHandle = ConvertHandle( uHero )
if IsUnitType( uHero, UNIT_TYPE_HERO ) and LastConvertedHandle > 1 and list > 0 then
return RMem( RMem( LastConvertedHandle + 496 ) + 240 + 4 * list )
endif
return 0
endfunction
function SetHeroAbilityFromList takes unit uHero, integer list, integer ability
set LastConvertedHandle = ConvertHandle( uHero )
if IsUnitType( uHero, UNIT_TYPE_HERO ) and LastConvertedHandle > 1 and list > 0 then
WMem( RMem( LastConvertedHandle + 496 ) + 240 + 4 * list ), ability)
endif
8gabriel8, ага, только если у тебя XXXX способностей и XXX персонажей с XXX аватарами, XXX предметами, талантами и еще овердофига чем, каждая милипусечька оптимизации ппц как важна...
8gabriel8, ага, то-то мне говорят в других темах, что безумно трачу свои силы
когда кучу времени сидишь в редакторе, прикинь, желание делать даже мелкие и простые задачи сильно пропадает
это как после сверхутомительной физкультуры на следующий день ложку только двумя руками держишь
Мне бтв вообще вот прямо сейчас раскуривать в мемхаке, как поле изучения способностей по старому мемхаку редактировать
Прикинь, перепроверять какие-то сетки, которые тем более не нужны в данном случае оказались, желания нет вообще
» WarCraft 3 / Нужна модель? - Вам сюда!
» WarCraft 3 / Иконки на заказ
В общем, вот новая, просто шик:
» WarCraft 3 / Нужна модель? - Вам сюда!
/////////////
Честно, жутко раздражает невыполнение простых заданий с неясностью насчет того, будут ли они сделаны когда-нибудь или нет.
Может заказчик сделать сам или нет - это его проблемы. Когда я мороженое прихожу покупать, мне не интересно знать, как его готовят, я хавать быстрее хочу.
Реально, почему бы биржу не замутить уже с оплатой и комиссионными администрации. Мной бы уже были сунуты 50 рублей, только сделайте этот гребаный реколор. Там ведь текстуры поменять и все. Меня реально жутко бесит в мпкью лишний раз копошиться и в редакторах, когда и так приходится постоянно ежемесячно это делать.
» WarCraft 3 / Проверьте, пожалуйста, триггеры!
о том и тема
» WarCraft 3 / Проверьте, пожалуйста, триггеры!
» WarCraft 3 / Проверьте, пожалуйста, триггеры!
» WarCraft 3 / Приказ отcтавить (S)
» WarCraft 3 / Приказ отcтавить (S)
Так что стоит подумать, насколько разумная система, потому что придется еще обходные костыли пилить.
» Heaven's Gallery / Реколор эффектов
» WarCraft 3 / Таргетные способности с таймером
Только для пурджей всяких тоже бд писать, но тут уж ничего не поделаешь
А по вопросу - любой код так или иначе влияет на производительность, но в хорошем коде это влияние будет практически незаметным
» Heaven's Gallery / Реколор эффектов
» WarCraft 3 / Как создать пожар и тушение?
» WarCraft 3 / Баг какой то
Короче, воля твоя, имхо проще все-таки через маркер, сбрасываемый через полсекунды, сделать, не сильно хуже, а намного легче реализовывается
» WarCraft 3 / Баг какой то
» WarCraft 3 / Баг какой то
» WarCraft 3 / Хак на память Warcraft3
Да в принципе нужно, но не очень, равкод я при выучивании могу поймать.
каких строк?
Мои функции выше безопасны?
Пока гоняю в тест-карте, проблем не обнаруживаю, поля исправно переписываются туда и обратно и абилы учатся
ОХ, лол. Хм. Ща Мегамен забрал чародейскую ауру ладдерного архимага, работает и бафф дает вроде нормальный, но почему-то визуально отображается как "доспехи веры". То ли это у меня импорт такой и уже забыто, то ли допереписывалось (это уже XX была геройская способность, которые были переписыванием полей одному герою впихнуты и все через выучивание). Но других побочных эффектов пока не видно.
Лол набор: выучены 4 все свои абилы (но там не отображаются пассивки, специально же расчет на то, что гер абилы тырит), от чародея крови астрал, огонь и феня и от архимага буран, дух воды и аура, вот аура уже даже благополучно на панель не влезла.
///////////
Ок, не буду, прямо из одного поля в другое, да и не планировалось.
» WarCraft 3 / Как сделать 3-ой, 4-ой (n-ой) удар?
Ред. Кет
» WarCraft 3 / Хак на память Warcraft3
просто у меня другие скиллы многие регают свои триггеры только через выучивание конкретно для выучившего
для оптимизации
т. е. если абилу просто дать, она ниче делать не будет
//////
так, id2string все равно достает не понятно что, не равкод, а какие-то
\x00000041...
sic!!! Ну так или иначе прорыв.
А если я быстренько махну поле выучиваемых абил, сразу выучу одну и сразу обратно перепишу поле?
» WarCraft 3 / Хак на память Warcraft3
Ок, сейчас хоть цифры попробую снова... жопа =/
А, во, понятно, ок
» WarCraft 3 / Хак на память Warcraft3
У меня там в какой-то момент вроде выводилось целочисленной в текст на экране что-то, но вместо равкода абилки какая-то хня из многих цифр, я хочу равкод выкопать
» WarCraft 3 / Хак на память Warcraft3
Я пока для начала просто уже прочесть абилку пытаюсь и вывести результат на экран...
» WarCraft 3 / Хак на память Warcraft3
Задаю рандомной переменной, например
Кстати, когда u6 - НЕ герой, всё равно фатал, хотя по идее должен был бы быть ноль...
Ред. ClotPh
» WarCraft 3 / Хак на память Warcraft3
/////////
Или там разные части отдельно на 4 делить? Ну ща проверю
Хотя какая разница-то по идее, лол
ТАК, вот, короче, что пока скомпилировалось, но что оно и откуда куда читать и писать будет и будет ли, один Господь знает:
*************!!!!
function GetHeroAbilityFromList takes unit uHero, integer list returns integer
local integer LastConvertedHandle = ConvertHandle( uHero )
if IsUnitType( uHero, UNIT_TYPE_HERO ) and LastConvertedHandle > 1 and list > 0 then
return Memory[((LastConvertedHandle + 496 )/4 + (240 + 4 * list ))/4]
endif
endfunction
local integer LastConvertedHandle = ConvertHandle( uHero )
if IsUnitType( uHero, UNIT_TYPE_HERO ) and IsUnitType( uHero, UNIT_TYPE_HERO ) and LastConvertedHandle > 1 and list > 0 then
set Memory[((LastConvertedHandle + 496 )/4 + (240 + 4 * list ))/4] = abireadedfromlist
endif
ПЕРЕЗАПИСЬ И ЧТЕНИЕ ПОЛЕЙ СПОСОБНОСТЕЙ - ЗАКРЫТО.
//////////
ладно, ну ее к... матери, ща по-другому сделаю
ладно, действительно гребаное издевательство, чтоб еще когда-нибудь так морочиться
//////////
это еще если удастся этот гребаный новый мемхак затащить
set LastConvertedHandle = ConvertHandle( uHero )
if IsUnitType( uHero, UNIT_TYPE_HERO ) and LastConvertedHandle > 1 and list > 0 then
return RMem( RMem( LastConvertedHandle + 496 ) + 240 + 4 * list )
endif
endfunction
set LastConvertedHandle = ConvertHandle( uHero )
if IsUnitType( uHero, UNIT_TYPE_HERO ) and LastConvertedHandle > 1 and list > 0 then
WMem( RMem( LastConvertedHandle + 496 ) + 240 + 4 * list ), ability)
endif
endfunction
» WarCraft 3 / Процент повышения брони
» WarCraft 3 / Процент повышения брони
когда кучу времени сидишь в редакторе, прикинь, желание делать даже мелкие и простые задачи сильно пропадает
это как после сверхутомительной физкультуры на следующий день ложку только двумя руками держишь
Мне бтв вообще вот прямо сейчас раскуривать в мемхаке, как поле изучения способностей по старому мемхаку редактировать
Прикинь, перепроверять какие-то сетки, которые тем более не нужны в данном случае оказались, желания нет вообще