|
|
|
|
[Вопрос] Лаги непонятного происхождения
|
|
xomach | Дата: Понедельник, 26 Ноября 2012, 18:03:33 | Сообщение # 1 |
7 уровень
Группа: Проверенные
Сообщений: 484
Награды: 0
Репутация: 128
Блокировки:
| в общем, есть у меня довольно большой код , при его срабатывание игра начинает дико лагать, и почти виснет. Фишка в том, что гуи версия этого работала нормально - это 1 . И в том, что лично я не понимаю, откуда тут лаги, вроде все ок-) - это 2.
|
|
|
|
Naturekid | Дата: Понедельник, 26 Ноября 2012, 18:06:39 | Сообщение # 2 |
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:
| пик еври юнит-ов не перебарщено?
|
|
|
|
xomach | Дата: Понедельник, 26 Ноября 2012, 18:15:09 | Сообщение # 3 |
7 уровень
Группа: Проверенные
Сообщений: 484
Награды: 0
Репутация: 128
Блокировки:
| Naturekid, в гуишном стоко же было-) Кстати, забыл добавить, этот триггер не выполняет своей функкции успешно-) . Дамми остаются стоять на месте, и непонятно на врагов действуют-)Добавлено (26 Ноября 2012, 18:15:09) --------------------------------------------- а еще сюда прилагется такой триггер: Code function Trig_QDummyDead_Actions takes nothing returns nothing local unit u=GetTriggerUnit() local timer t if GetUnitAbilityLevel( u, 'B000') > 0 then t = LoadTimerHandle(udg_hash,GetHandleId(u),0) if t!=null then FlushChildHashtable(udg_hash,GetHandleId(u)) FlushChildHashtable(udg_hash,GetHandleId(t)) PauseTimer(t) DestroyTimer(t) endif endif u=null t=null endfunction
//=========================================================================== function InitTrig_QDummyDead takes nothing returns nothing set gg_trg_QDummyDead = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_QDummyDead, EVENT_PLAYER_UNIT_DEATH ) call TriggerAddAction( gg_trg_QDummyDead, function Trig_QDummyDead_Actions ) endfunction
|
|
|
|
[SeKtOR] | Дата: Пятница, 30 Ноября 2012, 22:27:06 | Сообщение # 4 |
Группа: Проверенные
Сообщений: 1143
Награды: 0
Репутация: 1168
Блокировки:
| Код очень дикий и утечный....
|
|
|
|
Ty3uK | Дата: Пятница, 30 Ноября 2012, 22:49:20 | Сообщение # 5 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Quote (|SeKtOR|) GUI очень дикий и утечный.... fxd
|
|
|
|
[SeKtOR] | Дата: Суббота, 01 Декабря 2012, 18:09:26 | Сообщение # 6 |
Группа: Проверенные
Сообщений: 1143
Награды: 0
Репутация: 1168
Блокировки:
| Code function Trig_QCast_Func002C takes nothing returns boolean if ( ( GetSpellAbilityId() == 'A000' ) ) then return true endif if ( ( GetSpellAbilityId() == 'A002' ) ) then return true endif if ( ( GetSpellAbilityId() == 'A007' ) ) then return true endif return false endfunction
function Trig_QCast_Conditions takes nothing returns boolean if ( not Trig_QCast_Func002C() ) then return false endif return true endfunction
function Q_Loop takes nothing returns nothing local timer t = GetExpiredTimer() local integer hid = GetHandleId(t) local unit dummy = LoadUnitHandle(udg_hash, hid, 2) local real angle = LoadReal(udg_hash, hid, 1) //local location tpoint = LoadLocationHandle(udg_hash, hid, 2) local group g = CreateGroup() local unit u local real p //if dummy!=null then GroupEnumUnitsInRangeOfLoc(g, GetUnitLoc(dummy),200,null) loop u=FirstOfGroup(g) if IsUnitEnemy(u, GetOwningPlayer(dummy)) then if GetUnitAbilityLevel(u, 'B000') > 0 then PlaySoundOnUnitBJ(udg_CollisionSound[ GetRandomInt(1, 4)],100, u) p=GetUnitState(u, UNIT_STATE_LIFE) SetUnitState(u, UNIT_STATE_LIFE, p-GetUnitState(dummy, UNIT_STATE_LIFE)) SetUnitState(dummy, UNIT_STATE_LIFE, GetUnitState(dummy, UNIT_STATE_LIFE)-p) if (GetUnitState(dummy, UNIT_STATE_LIFE) / GetUnitState(dummy, UNIT_STATE_MAX_LIFE)) < 0.1 then KillUnit(dummy) endif if (GetUnitState(u, UNIT_STATE_LIFE) / GetUnitState(u, UNIT_STATE_MAX_LIFE)) < 0.1 then KillUnit(u) endif else GroupClear(g) GroupEnumUnitsInRangeOfLoc(g, GetUnitLoc(dummy),220,null) loop u=FirstOfGroup(g) if IsUnitEnemy(u,GetOwningPlayer(dummy)) then Damage( dummy, u, GetUnitState(dummy,UNIT_STATE_LIFE)) if udg_QExplosionBool[GetPlayerId(GetOwningPlayer(dummy))+1] then PauseUnit(u,true) //SetUnitInvulnerable(u,true) //Push(u,200,10) else DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Human\\HumanBlood\\HumanBloodPriest.mdl", u, "chest")) PlaySoundAtPointBJ(udg_QStrickeSound[GetRandomInt(1,4)],100, GetUnitLoc(u), 0) endif exitwhen u==null endif endloop if udg_QExplosionBool[GetPlayerId(GetOwningPlayer(dummy))+1] then u = CreateUnit(GetOwningPlayer(dummy), 'h00B', GetUnitX(dummy),GetUnitY(dummy),0) SetUnitTimeScale(u, 5) UnitApplyTimedLife(u, 'BTLF', 5) endif if GetUnitTypeId(LoadUnitHandle(udg_hash, hid, 0))=='H008' then u = CreateUnit(GetOwningPlayer(dummy), 'h00C', GetUnitX(dummy),GetUnitY(dummy),0) UnitApplyTimedLife(u, 'BTLF', 5) endif t=null u=null g=null dummy=null KillUnit(dummy) return endif endif GroupRemoveUnit(g,u) exitwhen u==null endloop SetUnitPositionLoc(dummy, LocProj(GetUnitLoc(dummy), 20, angle)) //endif t=null u=null g=null dummy=null endfunction
function Q_Wait2 takes nothing returns nothing local timer t = GetExpiredTimer() local integer hid = GetHandleId(t) local unit caster = LoadUnitHandle(udg_hash, hid, 0) local real angle = LoadReal(udg_hash, hid, 1) //local location tpoint = LoadLocationHandle(udg_hash, hid, 2) FlushChildHashtable(udg_hash, hid) //PlaySoundOnUnitBJ( udg_QLaunchSound[ GetRandomInt(1, 4)], 100, caster) //KillSoundWhenDone(GetLastPlayedSound()) //PauseUnit(caster, false) local unit dummy = CreateUnitAtLoc( GetOwningPlayer(caster), udg_QDummyType[GetPlayerId(GetOwningPlayer(caster))+1], LocProj(GetUnitLoc(caster), 60, angle), angle ) DestroyTimer(t) set t= CreateTimer() set hid= GetHandleId(t) SaveUnitHandle(udg_hash, hid, 0, caster) SaveReal(udg_hash, hid, 1, angle) SaveUnitHandle(udg_hash, hid, 2, dummy) SaveTimerHandle(udg_hash, GetHandleId(dummy),0,t) //SaveLocationHandle(udg_hash, hid, 2, tpoint) TimerStart(t, 0.02, TRUE, function Q_Loop) set dummy = null set caster = null //set tpoint = null set t = null endfunction
function Q_Wait1 takes nothing returns nothing local timer t = GetExpiredTimer() local integer hid = GetHandleId(t) local unit caster = LoadUnitHandle(udg_hash, hid, 0) local real angle = LoadReal(udg_hash, hid, 1) //local location tpoint = LoadLocationHandle(udg_hash, hid, 2) local integer n = GetPlayerId(GetOwningPlayer(caster))+1 FlushChildHashtable(udg_hash, hid) SetUnitAnimation( caster, udg_QAni[n] ) //PlaySoundAtPointBJ(udg_QSound[n], 100, GetUnitLoc(caster), 0) //KillSoundWhenDone(GetLastPlayedSound()) DestroyTimer(t) set t= CreateTimer() set hid= GetHandleId(t) SaveUnitHandle(udg_hash, hid, 0, caster) SaveReal(udg_hash, hid, 1, angle) //SaveLocationHandle(udg_hash, hid, 2, tpoint) TimerStart(t, 0.25, false, function Q_Wait2) set caster = null //set tpoint = null set t = null endfunction
function Trig_QCast_Actions takes nothing returns nothing local unit caster = GetTriggerUnit() local location tpoint = GetUnitLoc(udg_Target[GetPlayerId(GetOwningPlayer(caster))]) local real angle = bj_RADTODEG * Atan2(GetLocationY(tpoint) - GetLocationY(GetUnitLoc(caster)), GetLocationX(tpoint) - GetLocationX(GetUnitLoc(caster))) local timer t = CreateTimer() local integer hid = GetHandleId(t) SetUnitFacing(caster, angle) //PauseUnit(caster, true) SetUnitAnimation(caster, "stand") SaveUnitHandle(udg_hash, hid, 0, caster) SaveReal(udg_hash, hid, 1, angle) //SaveLocationHandle(udg_hash, hid, 2, tpoint) TimerStart(t, 0.1, false, function Q_Wait1) set caster = null //set tpoint = null set t = null endfunction
//=========================================================================== function InitTrig_Q takes nothing returns nothing set gg_trg_Q = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Q, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_Q, Condition( function Trig_QCast_Conditions ) ) call TriggerAddAction( gg_trg_Q, function Trig_QCast_Actions ) endfunction GUI божественно посравнению с этим
|
|
|
|
Borodach | Дата: Воскресенье, 02 Декабря 2012, 08:53:04 | Сообщение # 7 |
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
| Code loop u=FirstOfGroup(g) if IsUnitEnemy(u,GetOwningPlayer(dummy)) then Damage( dummy, u, GetUnitState(dummy,UNIT_STATE_LIFE)) if udg_QExplosionBool[GetPlayerId(GetOwningPlayer(dummy))+1] then PauseUnit(u,true) //SetUnitInvulnerable(u,true) //Push(u,200,10) else DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Human\\HumanBlood\\HumanBloodPriest.mdl", u, "chest")) PlaySoundAtPointBJ(udg_QStrickeSound[GetRandomInt(1,4)],100, GetUnitLoc(u), 0) endif exitwhen u==null endif endloop 1 что заметил юнит не удаляется из группы
PlaySoundAtPointBJ(udg_QStrickeSound[GetRandomInt(1,4)],100, GetUnitLoc(u), 0) endif call GroupRemoveUnit(g,u) exitwhen u==null
Karamba
|
|
|
|
|
|
|
|
|
|
|