doter.ua

Пользователь

Регистрация: 04.07.2012

Сообщения: 547

Рейтинг: 214

doter.ua

Регистрация: 04.07.2012

Сообщения: 547

Рейтинг: 214

LOCT сказал(а):
Спойлер:

Нажмите, чтобы раскрыть...

это после моего совета вылетело? по идее просит ID для статистики попробуй добавить поле
"ID"






"1500"
в начале (там где baseclass и другие параметры)

Gulich

Пользователь

Регистрация: 23.07.2014

Сообщения: 24

Рейтинг: 1

Gulich

Регистрация: 23.07.2014

Сообщения: 24

Рейтинг: 1

Не видит CreateTimer , прошу помощи. Нет даже счетчика убийств.





print ("Addon MiranaWars is loaded.")
if miranawars == nil then

miranawars = class({})
end
USE_LOBBY = true
THINK_TIME = 0.1
MAX_KILLS = 40

GameMode = nil

function Precache( context )



PrecacheResource( "model", "*.vmdl", context )



PrecacheResource( "soundfile", "*.vsndevts", context )



PrecacheResource( "particle", "*.vpcf", context )



PrecacheResource( "particle_folder", "particles/folder", context )


end

-- Create the game mode when we activate
function Activate()

GameRules.miranawars = miranawars()

GameRules.miranawars:InitGameMode()
end


-- Evaluate the state of the game
function miranawars:OnThink()

if GameRules:State_Get() == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then


--print( "MiranaWars addon script is running." )

elseif GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then


return nil

end

return 1
end
function miranawars:InitGameMode()

self._nRoundNumber = 1

self._currentRound = nil

self._flLastThinkGameTime = nil

self._entAncient = Entities:FindByName( nil, "dota_goodguys_fort" )

if not self._entAncient then


print( "Ancient entity not found!" )

end

GameRules:SetTimeOfDay( 0.75 )

GameRules:SetHeroRespawnEnabled( true )

GameRules:SetUseUniversalShopMode( true )

GameRules:SetHeroSelectionTime( 30.0 )

GameRules:SetPreGameTime( 30.0 )

GameRules:SetSameHeroSelectionEnabled( true )

GameRules:SetPostGameTime( 60.0 )

GameRules:SetTreeRegrowTime( 60.0 )

GameRules:SetHeroMinimapIconSize( 600 )

GameRules:SetCreepMinimapIconScale( 0.7 )

GameRules:SetRuneMinimapIconScale( 0.7 )

GameRules:SetGoldTickTime( 60.0 )

GameRules:SetGoldPerTick( 0 )

GameRules:GetGameModeEntity():SetRemoveIllusionsOnDeath( true )

GameRules:GetGameModeEntity():SetTopBarTeamValuesOverride( true )

GameRules:GetGameModeEntity():SetTopBarTeamValuesVisible( false )




-- Hook into game events allowing reload of functions at run time


ListenToGameEvent( "npc_spawned", Dynamic_Wrap( miranawars, "OnNPCSpawned" ), self )

ListenToGameEvent( "player_reconnected", Dynamic_Wrap( miranawars, 'OnPlayerReconnected' ), self )

ListenToGameEvent( "entity_killed", Dynamic_Wrap( miranawars, 'OnEntityKilled' ), self )

ListenToGameEvent('npc_spawned', Dynamic_Wrap( miranawars, 'OnNPCSpawned' ), self )



-- Register OnThink with the game engine so it is called every 0.25 seconds

GameRules:GetGameModeEntity():SetThink( "OnThink", self, 0.25 )
end
function miranawars:OnEntityKilled( keys )
local killedUnit = EntIndexToHScript( keys.entindex_killed )
local killerEntity = nil
if keys.entindex_attacker == nil then

return
end

killerEntity = EntIndexToHScript( keys.entindex_attacker )
local killedTeam = killedUnit:GetTeam()
local killerTeam = killerEntity:GetTeam()

if killedUnit:IsRealHero() == true then

local death_count_down = 5

killedUnit:SetTimeUntilRespawn(death_count_down)


miranawars:CreateTimer(DoUniqueString("respawn"), {

endTime = GameRules:GetGameTime() + 1,

useGameTime = true,

callback = function(reflex, args)


death_count_down = death_count_down - 1


if death_count_down == 0 then


--Respawn hero after 5 seconds


killedUnit:RespawnHero(false,false,false)


return


else


killedUnit:SetTimeUntilRespawn(death_count_down)


return GameRules:GetGameTime() + 1


end

end

})


if killedTeam == DOTA_TEAM_BADGUYS then

if killerTeam == 2 then


self.scoreRadiant = self.scoreRadiant + 1

end

elseif killedTeam == DOTA_TEAM_GOODGUYS then

if killerTeam == 3 then


self.scoreDire = self.scoreDire + 1

end

end


if self.scoreRadiant == 40 then

miranawars:ShowCenterMessage("Radiant are 10 kills away from winning!",10)

end

if self.scoreDire == 40 then

miranawars:ShowCenterMessage("Dire are 10 kills away from winning!",10)

end



GameMode:SetTopBarTeamValue ( DOTA_TEAM_BADGUYS, self.scoreDire)

GameMode:SetTopBarTeamValue ( DOTA_TEAM_GOODGUYS, self.scoreRadiant )


if self.scoreDire >= MAX_KILLS then

GameRules:SetGameWinner(DOTA_TEAM_BADGUYS)

GameRules:MakeTeamLose(DOTA_TEAM_GOODGUYS)

GameRules:Defeated()

end

if self.scoreRadiant >= MAX_KILLS then

GameRules:SetGameWinner(DOTA_TEAM_GOODGUYS)

GameRules:MakeTeamLose(DOTA_TEAM_BADGUYS)

GameRules:Defeated()

end
end
end
function miranawars:OnNPCSpawned( keys )
local spawnedUnit = EntIndexToHScript( keys.entindex )
if not spawnedUnit:IsIllusion() and spawnedUnit:IsHero() then

local level = spawnedUnit:GetLevel()

while level < 4 do

spawnedUnit:AddExperience (100,false)

level = spawnedUnit:GetLevel()

end
end
end

L00na

Пользователь

Регистрация: 02.03.2014

Сообщения: 47

Рейтинг: 18

L00na

Регистрация: 02.03.2014

Сообщения: 47

Рейтинг: 18

Спойлер:
Gulich сказал(а):
Не видит CreateTimer , прошу помощи. Нет даже счетчика убийств.





print ("Addon MiranaWars is loaded.")
if miranawars == nil then

miranawars = class({})
end
USE_LOBBY = true
THINK_TIME = 0.1
MAX_KILLS = 40

GameMode = nil

function Precache( context )



PrecacheResource( "model", "*.vmdl", context )



PrecacheResource( "soundfile", "*.vsndevts", context )



PrecacheResource( "particle", "*.vpcf", context )



PrecacheResource( "particle_folder", "particles/folder", context )

end

-- Create the game mode when we activate
function Activate()

GameRules.miranawars = miranawars()

GameRules.miranawars:InitGameMode()
end


-- Evaluate the state of the game
function miranawars:OnThink()

if GameRules:State_Get() == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then


--print( "MiranaWars addon script is running." )

elseif GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then


return nil

end

return 1
end
function miranawars:InitGameMode()

self._nRoundNumber = 1

self._currentRound = nil

self._flLastThinkGameTime = nil

self._entAncient = Entities:FindByName( nil, "dota_goodguys_fort" )

if not self._entAncient then


print( "Ancient entity not found!" )

end

GameRules:SetTimeOfDay( 0.75 )

GameRules:SetHeroRespawnEnabled( true )

GameRules:SetUseUniversalShopMode( true )

GameRules:SetHeroSelectionTime( 30.0 )

GameRules:SetPreGameTime( 30.0 )

GameRules:SetSameHeroSelectionEnabled( true )

GameRules:SetPostGameTime( 60.0 )

GameRules:SetTreeRegrowTime( 60.0 )

GameRules:SetHeroMinimapIconSize( 600 )

GameRules:SetCreepMinimapIconScale( 0.7 )

GameRules:SetRuneMinimapIconScale( 0.7 )

GameRules:SetGoldTickTime( 60.0 )

GameRules:SetGoldPerTick( 0 )

GameRules:GetGameModeEntity():SetRemoveIllusionsOnDeath( true )

GameRules:GetGameModeEntity():SetTopBarTeamValuesOverride( true )

GameRules:GetGameModeEntity():SetTopBarTeamValuesVisible( false )




-- Hook into game events allowing reload of functions at run time


ListenToGameEvent( "npc_spawned", Dynamic_Wrap( miranawars, "OnNPCSpawned" ), self )

ListenToGameEvent( "player_reconnected", Dynamic_Wrap( miranawars, 'OnPlayerReconnected' ), self )

ListenToGameEvent( "entity_killed", Dynamic_Wrap( miranawars, 'OnEntityKilled' ), self )

ListenToGameEvent('npc_spawned', Dynamic_Wrap( miranawars, 'OnNPCSpawned' ), self )


-- Register OnThink with the game engine so it is called every 0.25 seconds

GameRules:GetGameModeEntity():SetThink( "OnThink", self, 0.25 )
end
function miranawars:OnEntityKilled( keys )
local killedUnit = EntIndexToHScript( keys.entindex_killed )
local killerEntity = nil
if keys.entindex_attacker == nil then

return
end

killerEntity = EntIndexToHScript( keys.entindex_attacker )
local killedTeam = killedUnit:GetTeam()
local killerTeam = killerEntity:GetTeam()

if killedUnit:IsRealHero() == true then

local death_count_down = 5

killedUnit:SetTimeUntilRespawn(death_count_down)


miranawars:CreateTimer(DoUniqueString("respawn"), {

endTime = GameRules:GetGameTime() + 1,

useGameTime = true,

callback = function(reflex, args)


death_count_down = death_count_down - 1


if death_count_down == 0 then


--Respawn hero after 5 seconds


killedUnit:RespawnHero(false,false,false)


return


else


killedUnit:SetTimeUntilRespawn(death_count_down)


return GameRules:GetGameTime() + 1


end

end

})


if killedTeam == DOTA_TEAM_BADGUYS then

if killerTeam == 2 then


self.scoreRadiant = self.scoreRadiant + 1

end

elseif killedTeam == DOTA_TEAM_GOODGUYS then

if killerTeam == 3 then


self.scoreDire = self.scoreDire + 1

end

end


if self.scoreRadiant == 40 then

miranawars:ShowCenterMessage("Radiant are 10 kills away from winning!",10)

end

if self.scoreDire == 40 then

miranawars:ShowCenterMessage("Dire are 10 kills away from winning!",10)

end



GameMode:SetTopBarTeamValue ( DOTA_TEAM_BADGUYS, self.scoreDire)

GameMode:SetTopBarTeamValue ( DOTA_TEAM_GOODGUYS, self.scoreRadiant )


if self.scoreDire >= MAX_KILLS then

GameRules:SetGameWinner(DOTA_TEAM_BADGUYS)

GameRules:MakeTeamLose(DOTA_TEAM_GOODGUYS)

GameRules:Defeated()

end

if self.scoreRadiant >= MAX_KILLS then

GameRules:SetGameWinner(DOTA_TEAM_GOODGUYS)

GameRules:MakeTeamLose(DOTA_TEAM_BADGUYS)

GameRules:Defeated()

end
end
end
function miranawars:OnNPCSpawned( keys )
local spawnedUnit = EntIndexToHScript( keys.entindex )
if not spawnedUnit:IsIllusion() and spawnedUnit:IsHero() then

local level = spawnedUnit:GetLevel()

while level < 4 do

spawnedUnit:AddExperience (100,false)

level = spawnedUnit:GetLevel()

end
end
end
Нажмите, чтобы раскрыть...


У тебя нет функции CreateTimer

Gulich

Пользователь

Регистрация: 23.07.2014

Сообщения: 24

Рейтинг: 1

Gulich

Регистрация: 23.07.2014

Сообщения: 24

Рейтинг: 1

Спасибо :)

Gr3ed

Пользователь

Регистрация: 11.08.2014

Сообщения: 16

Рейтинг: 0

Gr3ed

Регистрация: 11.08.2014

Сообщения: 16

Рейтинг: 0

кстати, а когда будет обновление?

Gulich

Пользователь

Регистрация: 23.07.2014

Сообщения: 24

Рейтинг: 1

Gulich

Регистрация: 23.07.2014

Сообщения: 24

Рейтинг: 1

Вопросик , как сделать так , чтобы до отсчёта начала игры все стояли в оглушении?

iddqd

Пользователь

Регистрация: 10.11.2011

Сообщения: 261

Рейтинг: 74

iddqd

Регистрация: 10.11.2011

Сообщения: 261

Рейтинг: 74

Gr3ed

Пользователь

Регистрация: 11.08.2014

Сообщения: 16

Рейтинг: 0

Gr3ed

Регистрация: 11.08.2014

Сообщения: 16

Рейтинг: 0

iddqd сказал(а):
Нажмите, чтобы раскрыть...

обалдеть, просто супер!!!:3:d2huh::thu:

Gr3ed

Пользователь

Регистрация: 11.08.2014

Сообщения: 16

Рейтинг: 0

Gr3ed

Регистрация: 11.08.2014

Сообщения: 16

Рейтинг: 0

iddqd сказал(а):
Нажмите, чтобы раскрыть...

Еще бы деревья были бы побольше размером, было бы еще круче:cool:

DimakSerpg

Пользователь

Регистрация: 13.06.2011

Сообщения: 2998

Рейтинг: 1792

DimakSerpg

Регистрация: 13.06.2011

Сообщения: 2998

Рейтинг: 1792

И вот я решил проблему с тем что карты не запускались, РЕШЕНИЕ КАК ВСЕГДА! Оказалось САМОЕ ПРОСТОЕ И БАНАЛЬНОЕ!
И так, барабанная дробь!!!

Steam находился в папке под названием Game...
Просто сменил название.

Я просто в шоке :d2facepalm: столько времени потерял. А мог бы уже хоть чему то научится за эти дни.

AlpHaQQ

Пользователь

Регистрация: 04.11.2013

Сообщения: 402

Рейтинг: 181

AlpHaQQ

Регистрация: 04.11.2013

Сообщения: 402

Рейтинг: 181

Тут есть инфа, не знаю на сколько ей верить, по поводу грядущего обновления, написанная модератором на dev.dota2
kunkka will be first pick/first ban
ursa as well
lina will be the next swm/shadow shaman because of big buff
silencer will also be picked more often
pushing meta will be nerfed
void's base damage will be nerfed to the ground
boots of travel recipe will be increased
lc/tb/es will all be enabled in cm
lc will be top tier offlane
tb will never be picked
es will be picked occasionally
blink dagger will receive nerf
3 new items
1 new rune
two new ancient camps
roshan will be buffed heavily

LOCT

Пользователь

Регистрация: 14.04.2013

Сообщения: 42

Рейтинг: 0

LOCT

Регистрация: 14.04.2013

Сообщения: 42

Рейтинг: 0

Ребят,по поводу Gamerules,ни кто не знает на счет exp,можно ли настроить ее на тик??

doter.ua

Пользователь

Регистрация: 04.07.2012

Сообщения: 547

Рейтинг: 214

doter.ua

Регистрация: 04.07.2012

Сообщения: 547

Рейтинг: 214

Afroamericano

Пользователь

Регистрация: 16.05.2013

Сообщения: 7182

Рейтинг: 3181

Afroamericano

Регистрация: 16.05.2013

Сообщения: 7182

Рейтинг: 3181

DimakSerpg сказал(а):
И вот я решил проблему с тем что карты не запускались, РЕШЕНИЕ КАК ВСЕГДА! Оказалось САМОЕ ПРОСТОЕ И БАНАЛЬНОЕ!
И так, барабанная дробь!!!

Steam находился в папке под названием Game...
Просто сменил название.

Я просто в шоке :d2facepalm: столько времени потерял. А мог бы уже хоть чему то научится за эти дни.
Нажмите, чтобы раскрыть...

А у меня карты не компилятся, так что ты не самый неудачник

DimakSerpg

Пользователь

Регистрация: 13.06.2011

Сообщения: 2998

Рейтинг: 1792

DimakSerpg

Регистрация: 13.06.2011

Сообщения: 2998

Рейтинг: 1792

Afroamericano сказал(а):
А у меня карты не компилятся, так что ты не самый неудачник
Нажмите, чтобы раскрыть...

Не, не. Я со дня релиза сижу)
Уже 5 страниц карт в мастерской(как я и думал хлама будет много), думал успею, ибо времени у меня было очень много.
doter.ua сказал(а):
Нажмите, чтобы раскрыть...

Спасибо, что хоть кто-то есть в этом, кто помогает такими статьями.
Щас разберусь со спавнерами и собственно крипами, которые будут сравнится и засяду )

iddqd

Пользователь

Регистрация: 10.11.2011

Сообщения: 261

Рейтинг: 74

iddqd

Регистрация: 10.11.2011

Сообщения: 261

Рейтинг: 74

Gr3ed сказал(а):
Еще бы деревья были бы побольше размером, было бы еще круче:cool:
Нажмите, чтобы раскрыть...

там был показан сам принцип что можно ходить на всад и прыгать на пробел

Afroamericano

Пользователь

Регистрация: 16.05.2013

Сообщения: 7182

Рейтинг: 3181

Afroamericano

Регистрация: 16.05.2013

Сообщения: 7182

Рейтинг: 3181

DimakSerpg сказал(а):
Не, не. Я со дня релиза сижу)
Уже 5 страниц карт в мастерской(как я и думал хлама будет много), думал успею, ибо времени у меня было очень много.

Спасибо, что хоть кто-то есть в этом, кто помогает такими статьями.
Щас разберусь со спавнерами и собственно крипами, которые будут сравнится и засяду )
Нажмите, чтобы раскрыть...

Сейчас там копии старых карт, свою ты всегда успеешь сделать

DimakSerpg

Пользователь

Регистрация: 13.06.2011

Сообщения: 2998

Рейтинг: 1792

DimakSerpg

Регистрация: 13.06.2011

Сообщения: 2998

Рейтинг: 1792

Afroamericano сказал(а):
Сейчас там копии старых карт, свою ты всегда успеешь сделать
Нажмите, чтобы раскрыть...

У меня тоже копия карты из варика.
Кстати не знаешь где менять волны(характеристики крипов) для допустим спавнера из холдаута?


Народ я поставил спавнер, дал ему путь. Поставил info_target..
Что я делаю не так, почему крипы не идут?
Спойлер:
[ATTACH=full]42775[/ATTACH]

Gr3ed

Пользователь

Регистрация: 11.08.2014

Сообщения: 16

Рейтинг: 0

Gr3ed

Регистрация: 11.08.2014

Сообщения: 16

Рейтинг: 0

iddqd сказал(а):
там был показан сам принцип что можно ходить на всад и прыгать на пробел
Нажмите, чтобы раскрыть...

Это я понял, я имею ввиду атмосферности было бы побольше если бы деревья были по размеру побольше:D

Afroamericano

Пользователь

Регистрация: 16.05.2013

Сообщения: 7182

Рейтинг: 3181

Afroamericano

Регистрация: 16.05.2013

Сообщения: 7182

Рейтинг: 3181

DimakSerpg сказал(а):
У меня тоже копия карты из варика.
Кстати не знаешь где менять волны(характеристики крипов) для допустим спавнера из холдаута?


Народ я поставил спавнер, дал ему путь. Поставил info_target..
Что я делаю не так, почему крипы не идут?
Спойлер:
[ATTACH=full]42775[/ATTACH]
Нажмите, чтобы раскрыть...

хз

iddqd

Пользователь

Регистрация: 10.11.2011

Сообщения: 261

Рейтинг: 74

iddqd

Регистрация: 10.11.2011

Сообщения: 261

Рейтинг: 74

копаю скрипты луа, но пока не понял до конца принцип вобще этого языка
кто может знает
как например сделать юнита под позицией мыши? абилку написал, луа функцию написал
function test( )

CreateUnitByName("npc_dota_holdout_tower", GetCursorPosition(), true, nil, nil, DOTA_TEAM_GOODGUYS)
end

но всё упирается в то что он не может использовать глобальную переменную GetCursorPosition() говорит что она nil
вобщемто больше нужен общий принцип как использовать эти глобальные переменные

Gulich

Пользователь

Регистрация: 23.07.2014

Сообщения: 24

Рейтинг: 1

Gulich

Регистрация: 23.07.2014

Сообщения: 24

Рейтинг: 1

iddqd сказал(а):
копаю скрипты луа, но пока не понял до конца принцип вобще этого языка
кто может знает
как например сделать юнита под позицией мыши? абилку написал, луа функцию написал
function test( )

CreateUnitByName("npc_dota_holdout_tower", GetCursorPosition(), true, nil, nil, DOTA_TEAM_GOODGUYS)
end

но всё упирается в то что он не может использовать глобальную переменную GetCursorPosition() говорит что она nil
вобщемто больше нужен общий принцип как использовать эти глобальные переменные
Нажмите, чтобы раскрыть...

Если я не ошибаюсь , то тебе нужно описать эту переменную в виде функции.

iddqd

Пользователь

Регистрация: 10.11.2011

Сообщения: 261

Рейтинг: 74

iddqd

Регистрация: 10.11.2011

Сообщения: 261

Рейтинг: 74

мнеб пример - яб его разобрал
просто вот вижу в коде например строчки типа self: caster: итд, и не могу понять где оно присваивается и как делать =\

Killerbl

Пользователь

Регистрация: 02.07.2013

Сообщения: 172

Рейтинг: 41

Killerbl

Регистрация: 02.07.2013

Сообщения: 172

Рейтинг: 41

скиньте свой кастомный скилл с работающей анимацией

Afroamericano

Пользователь

Регистрация: 16.05.2013

Сообщения: 7182

Рейтинг: 3181

Afroamericano

Регистрация: 16.05.2013

Сообщения: 7182

Рейтинг: 3181

Killerbl сказал(а):
скиньте свой кастомный скилл с работающей анимацией
Нажмите, чтобы раскрыть...

Дело не в скиле, а в том что его нужно прекешировать