Про опыт помогите пожалуйста

Adam Smith

Друзья CG
4 Окт 2014
473
2
А что нужно кроме этого в скрипте написать?
function MyGameMode:OnNPCSpawned( keys )
local spawnedUnit = EntIndexToHScript( keys.entindex )
if spawnedUnit:IsHero() then
local level = spawnedUnit:GetLevel()
while level < 6 do
spawnedUnit:AddExperience (2000,false)
level = spawnedUnit:GetLevel()
end
end
end
 
Последнее редактирование модератором:

doter.ua

Продвинутый
17 Авг 2014
280
5
Я в прошлом твоем топике отвечал на этот вопрос, копировать не буду. напряги булки, хоть раз, и найди.
 

doter.ua

Продвинутый
17 Авг 2014
280
5
Я видел,но я не понял куда это добавить?В init?
В init добавляешь то, что должно произойти в самом начале (инициализация) в основном это настройки типа gamerules:blabla какие-то начальные переменные и прочий хлам. Остальное происходит по событиям или в Thinker (кусок кода который выполняется каждые "х" сек, там проверяется всякий хлам (не закончилась ли игра и т.д.))
Ты делалешь по событию "спавн существа"

function MyGameMode:OnNPCSpawned( keys )
local spawnedUnit = EntIndexToHScript( keys.entindex )
if spawnedUnit:IsHero() then
for i=1,6 do
spawnedUnit:HeroLevelUp(false)
end
end

end
После этого у героя будет 7й лвл (был 1 + 6 раз апнули) и соответственно 7 очков для прокачки.
 
Последнее редактирование модератором:

Adam Smith

Друзья CG
4 Окт 2014
473
2
Твой код не работает(Остальное все работатет)Можешь исправить или подсказать где не так?



if CAddonTemplateGameMode == nil then
CAddonTemplateGameMode = class({})
end

--------------------------------------------------------------------------------
-- ACTIVATE
--------------------------------------------------------------------------------
function Activate()
GameRules.CAddonTemplateGameMode = CAddonTemplateGameMode()
GameRules.CAddonTemplateGameMode:InitGameMode()
end

--------------------------------------------------------------------------------
-- INIT
--------------------------------------------------------------------------------
function CAddonTemplateGameMode:InitGameMode()
local GameMode = GameRules:GetGameModeEntity()

-- Enable the standard Dota PvP game rules
GameRules:GetGameModeEntity():SetTowerBackdoorProtectionEnabled( true )

-- Register Think
GameMode:SetContextThink( "CAddonTemplateGameMode:GameThink", function() return self:GameThink() end, 0.25 )

-- Register Game Events
end

--------------------------------------------------------------------------------
function CAddonTemplateGameMode:GameThink()
return 0.25
end

function Precache( context )

PrecacheUnitByNameSync("npc_dota_hero_lina", context)

end
print( "Dota PvP game mode loaded." )

if CAddonTemplateGameMode == nil then
CAddonTemplateGameMode = class({})
end
function Activate()
GameRules.CAddonTemplateGameMode = CAddonTemplateGameMode()
GameRules.CAddonTemplateGameMode:InitGameMode()
end
function MyGameMode:OnNPCSpawned( keys )
local spawnedUnit = EntIndexToHScript( keys.entindex )
if spawnedUnit:IsHero() then
for i=1,6 do
spawnedUnit:HeroLevelUp(false)
end
end
end

function CAddonTemplateGameMode:InitGameMode()
local GameMode = GameRules:GetGameModeEntity()
-- Enable the standard Dota PvP game rules
GameRules:SetSameHeroSelectionEnabled(true)
self.direKills = 0
self.radiantKills = 0
self.kills_to_win = 100
ListenToGameEvent("entity_killed", Dynamic_Wrap(CAddonTemplateGameMode, "OnEntityKilled"), self)
end

function CAddonTemplateGameMode:OnEntityKilled(keys)
local killedEntity = EntIndexToHScript(keys.entindex_killed)

if killedEntity:IsRealHero() then
local playerTeam = killedEntity:GetTeam()
if playerTeam == 2 then
self.direKills = self.direKills + 1
if self.direKills >= self.kills_to_win then
GameRules:SetSafeToLeave( true )
GameRules:SetGameWinner( DOTA_TEAM_BADGUYS )
end
elseif playerTeam == 3 then
self.radiantKills = self.radiantKills + 1
if self.radiantKills >= self.kills_to_win then
GameRules:SetSafeToLeave( true )
GameRules:SetGameWinner( DOTA_TEAM_GOODGUYS )
end
end
end
end
 
Последнее редактирование модератором:

doter.ua

Продвинутый
17 Авг 2014
280
5
function MyGameMode:OnNPCSpawned( keys ) перед название функции должно быть название мода. а ты походу спионерил чью-то функцию и не переименовал под свой мод.
Должно быть function CAddonTemplateGameMode:OnNPCSpawned( keys )
+ нету слушателя такого же как у ListenToGameEvent("entity_killed", Dynamic_Wrap(CAddonTemplateGameMode, "OnEntityKilled"), self) только для спавна. Прочитай гайд про события на д2.ру.
 
Последнее редактирование модератором:
Реклама: