7

» WarCraft 3 / Аналог силового блинка из доты2 PureJass only pls.

А я бы без дамми обошёлся.
Урон наносим триггерно.
Дебафф через ауру.
Можно сделать на GUI.
Хочешь Jass - можно и Jass.

Открыл офф-вики д2, нашёл там этот даггер - ужаснулся с цифр))
Понятно конечно что пострадала развёртка страницы, но в первые мгновения этого не осознаёшь и просто афигеваешь от урона в "6 + 3 от силы", от замедления движения на 150%, и от длительности эффекта в 50 сек. )))
А стоп, меня запутали :c . Без даммика у меня ы
Загруженные файлы
7

» WarCraft 3 / Аналог силового блинка из доты2 PureJass only pls.

А может кастануть дамми клэп в точку блинка? Ну и урон вокруг даммика
А у меня как по твоему сделано?)
7

» WarCraft 3 / Аналог силового блинка из доты2 PureJass only pls.

Я учился кодить сразу в war3map.j , поэтому не знаю таких микро моментов😀
Странный путь обучения. Ты не со взломов начинал?
Угадал))
7

» WarCraft 3 / Аналог силового блинка из доты2 PureJass only pls.

dWb.Integral, в чистом джассе не получится прописать globals-endglobals просто в шапку карты, будет ошибка или вылет, здесь нужно переменные забивать через окно переменных. Потому что шапка карты идёт ниже раздела globals-endglobals, и получится в конечном коде 2 раза globals-endglobals, что ошибка.
А,ну я в закрытой мапе работаю, поэтому war3map.j напрямую редачу, тут уже человеку надо самому додумать. Как я и писал это лишь вырезка из моей мапы, но оно будет идеально работать без утечек и тд

Просто я через WE ни с джассом ни с гуи никогда не работал . Я учился кодить сразу в war3map.j , поэтому не знаю таких микро моментов😀
7

» WarCraft 3 / Аналог силового блинка из доты2 PureJass only pls.

Принятый ответ
Взял код спелла и либу которую юзал в спелле из своей мапы, оптимизируй под свою , должно быть все понятно если хоть чуть-чуть понимаешь как работает джасс
globals
    hashtable H = InitHashtable()
    hashtable HashTable = InitHashtable()
    unit uFAST = null
	unit uENUM = null
	unit uDMG = null
	unit uKILL = null
	group gKILL = CreateGroup()
	group gFAST = CreateGroup()
	group gDMG = CreateGroup()
	integer idTIMER = 0 
	real SysX = 0 
	real SysY = 0
endglobals

function UnitEvent takes trigger Trig, playerunitevent whichEvent, code Act returns trigger
	local integer index = 0

	loop
		call TriggerRegisterPlayerUnitEvent( Trig, Player( index ), whichEvent, null )
		set index = index + 1
		exitwhen index == bj_MAX_PLAYER_SLOTS
	endloop

	if Act != null then
		call TriggerAddAction( Trig, Act )
	endif
	
	return Trig
endfunction

function TimerPause takes timer LocTimer returns nothing
	if LoadBoolean( HashTable, GetHandleId( LocTimer ), StringHash( "TimerStarted" ) ) then
		call PauseTimer( LocTimer )
		call SaveBoolean( HashTable, GetHandleId( LocTimer ), StringHash( "TimerStarted" ), false )
	endif
endfunction	

function CleanMUI takes timer Timer returns nothing
	call TimerPause( Timer )
	call FlushChildHashtable( HashTable, GetHandleId( Timer ) )
endfunction

function CleanTimer takes nothing returns nothing 
	call CleanMUI(GetExpiredTimer())
endfunction

function NewTimer takes player p returns nothing
	local integer MaxTimer = 100
	local integer idP = GetHandleId(p)
	local integer Iterator = LoadInteger( HashTable, idP, StringHash( "TimerIterator" ) )

	loop
		exitwhen not LoadBoolean( HashTable, GetHandleId( LoadTimerHandle( HashTable, idP, StringHash( "Timer_Num_" + I2S( Iterator ) ) ) ), StringHash( "TimerStarted" ) ) and Iterator <= MaxTimer
		if Iterator > MaxTimer then
			set Iterator = 0
		else
			set Iterator = Iterator + 1
		endif
	endloop

	call SaveInteger( HashTable, idP, StringHash( "TimerIterator" ), Iterator )

	if LoadTimerHandle( HashTable, idP, StringHash( "Timer_Num_" + I2S( Iterator ) ) ) == null then
		call SaveTimerHandle( HashTable, idP, StringHash( "Timer_Num_" + I2S( Iterator ) ), CreateTimer())
	endif

	set idTIMER = GetHandleId(LoadTimerHandle(HashTable, idP, StringHash("Timer_Num_" + I2S(Iterator))))
endfunction

function LoadTimer takes player p returns timer 
	local integer id = GetHandleId(p)
	local integer Iterator = LoadInteger( HashTable, id, StringHash( "TimerIterator" ) )
	call SaveBoolean( HashTable, GetHandleId( LoadTimerHandle( HashTable, id, StringHash( "Timer_Num_" + I2S( Iterator ) ) ) ), StringHash( "TimerStarted" ), true )
	return LoadTimerHandle( HashTable, id, StringHash( "Timer_Num_" + I2S( Iterator ) ) )
endfunction

function Damage_Unit takes unit Source, unit Target, real DMG, attacktype Atk_Type, damagetype Dmg_Type returns boolean
	if GetUnitAbilityLevel( Target, 'BHbn' ) > 0 then
		set Atk_Type = ATTACK_TYPE_NORMAL
		set Dmg_Type = DAMAGE_TYPE_MAGIC
	endif

	return UnitDamageTarget( Source, Target, DMG, true, false, Atk_Type, Dmg_Type, WEAPON_TYPE_WHOKNOWS )
endfunction

function MagicDamage takes unit caster, unit target, real damage returns nothing 
	call Damage_Unit(caster, target, damage, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_UNIVERSAL)
endfunction

function CastAoEAbility takes integer PID, real LocX, real LocY, integer AID, integer ALvL, string Order returns boolean
	set bj_lastCreatedUnit = CreateUnit( Player( PID ), 'n00A', LocX, LocY, 270 )
	call UnitApplyTimedLife( bj_lastCreatedUnit, 'BTLF', 1 )
	call UnitAddAbility( bj_lastCreatedUnit, AID )
	call SetUnitAbilityLevel( bj_lastCreatedUnit, AID, ALvL )
	return IssueImmediateOrder( bj_lastCreatedUnit, Order )
endfunction

function LCast takes string s returns unit
	set idTIMER = GetHandleId(GetExpiredTimer())
	return LoadUnitHandle( H, idTIMER, StringHash( s ) )
endfunction	

function LUnit takes string s returns unit
	return LoadUnitHandle( H, idTIMER, StringHash( s ) )
endfunction	

function LInt takes string s returns integer
	return LoadInteger( H, idTIMER, StringHash( s ) )
endfunction	

function LReal takes string s returns real
	return LoadReal( H, idTIMER, StringHash( s ) )
endfunction

function SUnit takes string s, unit u returns nothing
	call SaveUnitHandle( H, idTIMER, StringHash(s), u)
endfunction	

function SInt takes string s, integer i returns nothing
	call SaveInteger( H, idTIMER, StringHash(s), i)
endfunction	

function SReal takes string s, real r returns nothing
	call SaveReal( H, idTIMER, StringHash(s), r)
endfunction

function NewCTimer takes unit caster returns nothing 
	call NewTimer(GetOwningPlayer(caster))
	call SInt("Time", 0)
	call SUnit("Caster", caster)
endfunction
function StartCTimer takes unit caster, real period, code func returns nothing 
	call TimerStart(LoadTimer(GetOwningPlayer(caster)), period, true, func)
endfunction

function LSTime takes integer add returns integer
	local integer time = LoadInteger(H, idTIMER, StringHash("Time")) + add
	call SaveInteger( H, idTIMER, StringHash( "Time" ), time )
	return time
endfunction

function GUStr takes unit u returns integer
	return GetHeroStr(u, true)
endfunction

function IsAlive takes unit u returns boolean 
	return GetWidgetLife(u) > .405
endfunction

function IsEnemyBasic takes unit target, unit caster returns boolean
	return (not IsUnitType(target, UNIT_TYPE_STRUCTURE) and IsUnitEnemy(target, GetOwningPlayer(caster)) and IsAlive(target))
endfunction

function IsGroupEmpty takes nothing returns boolean 
	set uENUM = FirstOfGroup(gFAST)
	if uENUM != null then 
		call GroupRemoveUnit(gFAST, uENUM)
		return false
	endif
	return true
endfunction

function GroupUnitsInRange takes real x, real y, real range returns nothing 
	call GroupEnumUnitsInRange(gFAST, x, y, range, null)
endfunction

function ThunderGodSTR_act takes unit caster returns nothing
    local integer time = LSTime(1)
	local real x
    local real y
	local integer pid = GetPlayerId(GetOwningPlayer(caster))
    
    if time == 10 then
		
		set x = GetUnitX(caster)
		set y = GetUnitY(caster)

		call GroupUnitsInRange(x, y, 400)
        loop 
            exitwhen IsGroupEmpty()

            if IsEnemyBasic(uENUM, caster) then 
                call MagicDamage(caster, uENUM, LReal("Damage") )
            endif

        endloop
		call CastAoEAbility(pid, x, y, 'AS05', 1, "creepthunderclap")
		call DestroyEffect( AddSpecialEffect( "Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdl", x , y ))

    endif	

    if time > 10 then
        call CleanTimer()
    endif	
endfunction
function ThunderGodSTR_Shell takes nothing returns nothing 
    call ThunderGodSTR_act(LCast("Caster"))
endfunction

function ThunderGodSTR takes unit caster returns nothing
    local real damage = 350 + GUStr(caster)
    
    call NewCTimer(caster)
    call SReal("Damage", damage)
    call StartCTimer(caster , 0.01, function ThunderGodSTR_Shell)
endfunction

function CustomSpellEffect takes nothing returns nothing
	local integer id = GetSpellAbilityId()

	if id == 'AS18' then 
		call ThunderGodSTR(GetTriggerUnit())
	endif
endfunction

function InitSpellEffect takes nothing returns nothing
	call UnitEvent(CreateTrigger(), EVENT_PLAYER_UNIT_SPELL_EFFECT,     function CustomSpellEffect)
endfunction

function main takes nothing returns nothing
	call ExecuteFunc("InitSpellEffect")
endfunction	
7

» WarCraft 3 / Обход анти-синглплеер системы

С какой прогой?) Какой 7 лвл , не понимаю о чем ты 0_o
Есть прога для эмуляции локальной сети. Т.е. можно два варкрафта в одном компе запустить и по локалке сыграть. "Ты идиот" это карта головоломка. Там есть уровни.
Ну мне так проще делать чем качать что-то
7

» WarCraft 3 / Обход анти-синглплеер системы

Ну на гуи картах это и без гайдов очевидно, что custom defeat найти и убрать.
Как насчет карт уровнем повыше, не ну не будем наверн трогать карты в которых защита от изменения кода релизована...
Немного не понял к чему ты вообще это написал ... Я сделал этот гайд не для тех кто разбирается как и что нужно делать, а для новичков, которым это будет полезно. Да и в этой мапе не только custom defeat нужно убирать 🤡 Зачем ты вообще написал про другие карты, если я написал гайд ИМЕННО ДЛЯ ЭТОЙ. Я хотел сделать гайд по удалению защиты по изменению кода в некоторых снг картах, но передумал )

dWb.Integral, с прогой проще. Я так ты идиот до 7 лвла прошёл.
С какой прогой?) Какой 7 лвл , не понимаю о чем ты 0_o
7

» WarCraft 3 / Обход анти-синглплеер системы

Где-то была прога где можно по локальной сети с двух окон играть.
Ну а так можно без этой фигни играть)
7

» WarCraft 3 / Обход анти-синглплеер системы


PT153 - 20 часов назад
2Голосов: 2
Потом на скрины заменю если не впадлу будет
7

» IrInA Host Bot / IrInA Connector

Вылетает в начале игры каждые 2-3 катки
[WEBSOCKET] Connected!
Got UDP game for 26 NL
[CONNECTOR] connected to remote server
[GPROXY] join request accepted by remote server
[GPROXY] handshake complete, disconnect protection ready (180 second buffer)
[GPROXY] game started, disconnect protection enabled
[CONNECTOR] Deleteing game. Reason start
[GPROXY] game loaded
[CONNECTOR] Disconnected!
Загруженные файлы