Exemplo n.º 1
0
        public void LoadLua()
        {
            var scriptLoc = _game.Config.ContentManager.GetBuffScriptPath(_name);

            Logger.LogCoreInfo("Loading buff from " + scriptLoc);

            _buffScript.lua.DoString("package.path = 'LuaLib/?.lua;' .. package.path");
            _buffScript.lua.DoString(@"
                function onAddBuff()
                end");
            _buffScript.lua.DoString(@"
                function onUpdate(diff)
                end");
            _buffScript.lua.DoString(@"
                function onBuffEnd()
                end");
            _buffScript.lua.RegisterFunction("getSourceUnit", this, typeof(Buff).GetMethod("GetSourceUnit"));
            _buffScript.lua.RegisterFunction("getUnit", this, typeof(Buff).GetMethod("GetUnit"));
            _buffScript.lua.RegisterFunction("getStacks", this, typeof(Buff).GetMethod("GetStacks"));
            _buffScript.lua.RegisterFunction("addStat", this, typeof(Buff).GetMethod("GetStacks"));
            _buffScript.lua.RegisterFunction("substractStat", this, typeof(Buff).GetMethod("GetStacks"));
            _buffScript.lua.RegisterFunction("setStat", this, typeof(Buff).GetMethod("GetStacks"));

            ApiFunctionManager.AddBaseFunctionToLuaScript(_buffScript);

            _buffScript.loadScript(scriptLoc);
        }
Exemplo n.º 2
0
        public virtual void LoadLua()
        {
            _scriptEngine = new LuaScriptEngine();

            _scriptEngine.Execute("package.path = 'LuaLib/?.lua;' .. package.path");
            _scriptEngine.Execute(@"
                function onAutoAttack(target)
                end");
            _scriptEngine.Execute(@"
                function onUpdate(diff)
                end");
            _scriptEngine.Execute(@"
                function onDealDamage(target, damage, type, source)
                end");
            _scriptEngine.Execute(@"
                function onDie(killer)
                end");
            _scriptEngine.Execute(@"
                function onDamageTaken(attacker, damage, type, source)
                end");
            _scriptEngine.Execute(@"
                function onCollide(collider)
                end");
            _scriptEngine.Execute(@"
                function onCollideWithTerrain()
                end");

            ApiFunctionManager.AddBaseFunctionToLuaScript(_scriptEngine);
        }
Exemplo n.º 3
0
        public void LoadLua(IScriptEngine scriptEngine)
        {
            var    config = _game.Config;
            string scriptloc;

            if (Slot > 3)
            {
                scriptloc = config.ContentManager.GetSpellScriptPath("Global", _spellName);
            }
            else
            {
                scriptloc = config.ContentManager.GetSpellScriptPath(Owner.Model, getStringForSlot());
            }
            scriptEngine.Execute("package.path = 'LuaLib/?.lua;' .. package.path");
            scriptEngine.Execute(@"
                function onFinishCasting()
                end");
            scriptEngine.Execute(@"
                function applyEffects()
                end");
            scriptEngine.Execute(@"
                function onUpdate(diff)
                end");
            scriptEngine.Execute(@"
                function onStartCasting()
                end");
            ApiFunctionManager.AddBaseFunctionToLuaScript(scriptEngine);
            scriptEngine.SetGlobalVariable("owner", Owner);
            scriptEngine.SetGlobalVariable("spellLevel", Level);
            scriptEngine.RegisterFunction("getOwnerLevel", Owner.GetStats(), typeof(Stats).GetMethod("GetLevel"));
            scriptEngine.RegisterFunction("getChampionModel", Owner, typeof(Spell).GetMethod("GetChampionModel"));
            scriptEngine.SetGlobalVariable("spell", this);
            scriptEngine.SetGlobalVariable("projectileSpeed", ProjectileSpeed);
            scriptEngine.SetGlobalVariable("coefficient", Coefficient);
            scriptEngine.RegisterFunction("addProjectile", this, typeof(Spell).GetMethod("AddProjectile", new[] { typeof(string), typeof(float), typeof(float), typeof(bool) }));
            scriptEngine.RegisterFunction("addProjectileTarget", this, typeof(Spell).GetMethod("AddProjectileTarget", new[] { typeof(string), typeof(Target), typeof(bool) }));
            scriptEngine.RegisterFunction("getEffectValue", this, typeof(Spell).GetMethod("getEffectValue", new[] { typeof(int) }));
            scriptEngine.RegisterFunction("spellAnimation", this, typeof(Spell).GetMethod("spellAnimation", new[] { typeof(string), typeof(Unit) }));
            scriptEngine.RegisterFunction("setAnimation", this, typeof(Spell).GetMethod("setAnimation", new[] { typeof(string), typeof(string), typeof(Unit) }));
            scriptEngine.RegisterFunction("resetAnimations", this, typeof(Spell).GetMethod("resetAnimations", new[] { typeof(Unit) }));
            scriptEngine.RegisterFunction("getOtherSpellLevel", this, typeof(Spell).GetMethod("getOtherSpellLevel", new[] { typeof(int) }));
            scriptEngine.RegisterFunction("addPlaceable", this, typeof(Spell).GetMethod("AddPlaceable", new[] { typeof(float), typeof(float), typeof(string), typeof(string) }));
            scriptEngine.RegisterFunction("addProjectileCustom", this, typeof(Spell).GetMethod("AddProjectileCustom", new[] { typeof(string), typeof(float), typeof(float), typeof(float), typeof(float), typeof(bool) }));
            scriptEngine.RegisterFunction("addProjectileCustomTarget", this, typeof(Spell).GetMethod("AddProjectileCustomTarget", new[] { typeof(string), typeof(float), typeof(float), typeof(Target), typeof(bool) }));
            scriptEngine.RegisterFunction("setCooldown", this, typeof(Spell).GetMethod("SetCooldown", new[] { typeof(byte), typeof(float) }));
            scriptEngine.RegisterFunction("lowerCooldown", this, typeof(Spell).GetMethod("LowerCooldown", new[] { typeof(byte), typeof(float) }));
            scriptEngine.RegisterFunction("addLaser", this, typeof(Spell).GetMethod("AddLaser", new[] { typeof(float), typeof(float), typeof(bool) }));

            /*scriptEngine.RegisterFunction("addMovementSpeedBuff", this, typeof(Spell).GetMethod("addMovementSpeedBuff", new Type[] { typeof(Unit), typeof(float), typeof(float) }));
             *
             * public void addMovementSpeedBuff(Unit u, float amount, float duration)
             * {
             *  Buff b = new Buff(duration);
             *  b.setMovementSpeedPercentModifier(amount);
             *  u.AddBuff(b);
             *  u.GetStats().addMovementSpeedPercentageModifier(b.getMovementSpeedPercentModifier());
             * }*/

            scriptEngine.Load(scriptloc); //todo: abstract class that loads a lua file for any lua
        }
Exemplo n.º 4
0
        public virtual void LoadLua()
        {
            unitScript = new LuaScript();

            unitScript.lua.DoString("package.path = 'LuaLib/?.lua;' .. package.path");
            unitScript.lua.DoString(@"
                function onAutoAttack(target)
                end");
            unitScript.lua.DoString(@"
                function onUpdate(diff)
                end");
            unitScript.lua.DoString(@"
                function onDealDamage(target, damage, type, source)
                end");
            unitScript.lua.DoString(@"
                function onDie(killer)
                end");

            ApiFunctionManager.AddBaseFunctionToLuaScript(unitScript);
        }
Exemplo n.º 5
0
        public void LoadLua(LuaScript script)
        {
            var    config = owner.GetGame().Config;
            string scriptloc;

            if (getSlot() > 3)
            {
                scriptloc = config.ContentManager.GetSpellScriptPath("Global", spellName);
            }
            else
            {
                scriptloc = config.ContentManager.GetSpellScriptPath(owner.getType(), getStringForSlot());
            }
            script.lua.DoString("package.path = 'LuaLib/?.lua;' .. package.path");
            script.lua.DoString(@"
                function onFinishCasting()
                end");
            script.lua.DoString(@"
                function applyEffects()
                end");
            ApiFunctionManager.AddBaseFunctionToLuaScript(script);
            script.lua.RegisterFunction("getOwner", this, typeof(Spell).GetMethod("getOwner"));
            script.lua.RegisterFunction("getOwnerX", owner, typeof(Champion).GetMethod("getX"));
            script.lua.RegisterFunction("getOwnerY", owner, typeof(Champion).GetMethod("getY"));
            script.lua.RegisterFunction("getSpellLevel", this, typeof(Spell).GetMethod("getLevel"));
            script.lua.RegisterFunction("getOwnerLevel", owner.GetStats(), typeof(Stats).GetMethod("GetLevel"));
            script.lua.RegisterFunction("getChampionModel", owner, typeof(Champion).GetMethod("getModel"));
            script.lua.RegisterFunction("getCastTarget", this, typeof(Spell).GetMethod("getTarget"));
            script.lua.RegisterFunction("getSpellToX", this, typeof(Spell).GetMethod("getX"));
            script.lua.RegisterFunction("getSpellToY", this, typeof(Spell).GetMethod("getY"));
            script.lua.RegisterFunction("getRange", this, typeof(Spell).GetMethod("getRange"));
            script.lua.RegisterFunction("getProjectileSpeed", this, typeof(Spell).GetMethod("getProjectileSpeed"));
            script.lua.RegisterFunction("getCoefficient", this, typeof(Spell).GetMethod("getCoefficient"));
            script.lua.RegisterFunction("addProjectile", this, typeof(Spell).GetMethod("addProjectile", new Type[] { typeof(string), typeof(float), typeof(float) }));
            script.lua.RegisterFunction("addProjectileTarget", this, typeof(Spell).GetMethod("addProjectileTarget", new Type[] { typeof(string), typeof(Target) }));
            script.lua.RegisterFunction("getEffectValue", this, typeof(Spell).GetMethod("getEffectValue", new Type[] { typeof(int) }));

            /*script.lua.set_function("addMovementSpeedBuff", [this](Unit* u, float amount, float duration) { // expose teleport to lua
             *  Buff* b = new Buff(duration);
             *  b->setMovementSpeedPercentModifier(amount);
             *  u->addBuff(b);
             *  u->GetStats().addMovementSpeedPercentageModifier(b->getMovementSpeedPercentModifier());
             * return;
             * });*/

            /*
             * script.lua.set_function("addProjectileCustom", [this](const std::string&name, float projSpeed, float toX, float toY) {
             *  Projectile* p = new Projectile(owner->getMap(), GetNewNetID(), owner->getX(), owner->getY(), lineWidth, owner, new Target(toX, toY), this, projectileSpeed, RAFFile::getHash(name), projectileFlags ? projectileFlags : flags);
             *  owner->getMap()->addObject(p);
             *  owner->getMap()->getGame()->notifyProjectileSpawn(p);
             *
             *  return;
             * });
             *
             * script.lua.set_function("addProjectileTargetCustom", [this](const std::string&name, float projSpeed, Target *t) {
             *  Projectile* p = new Projectile(owner->getMap(), GetNewNetID(), owner->getX(), owner->getY(), lineWidth, owner, t, this, projectileSpeed, RAFFile::getHash(name), projectileFlags ? projectileFlags : flags);
             *  owner->getMap()->addObject(p);
             *  owner->getMap()->getGame()->notifyProjectileSpawn(p);
             *
             *  return;
             * });
             *
             *
             * //For spells that don't require SpawnProjectile, but for which we still need to track the projectile server-side
             *
             * script.lua.set_function("addServerProjectile", [this](float toX, float toY) {
             *  Projectile* p = new Projectile(owner->getMap(), futureProjNetId, owner->getX(), owner->getY(), lineWidth, owner, new Target(toX, toY), this, projectileSpeed, 0, projectileFlags ? projectileFlags : flags);
             *  owner->getMap()->addObject(p);
             *
             *  return;
             * });
             *
             * script.lua.set_function("spellAnimation", [this](const std::string&animation, Unit* u) {
             *  owner->getMap()->getGame()->notifySpellAnimation(u, animation);
             *  return;
             * });
             *
             * // TODO: Set multiple animations
             * script.lua.set_function("setAnimation", [this](const std::string&animation1, const std::string&animation2, Unit* u) {
             *  std::vector < std::pair < std::string, std::string>> animationPairs;
             *  animationPairs.push_back(std::make_pair(animation1, animation2));
             *
             *  owner->getMap()->getGame()->notifySetAnimation(u, animationPairs);
             *  return;
             * });
             *
             * script.lua.set_function("resetAnimations", [this](Unit * u) {
             *  std::vector < std::pair < std::string, std::string>> animationPairs;
             *  owner->getMap()->getGame()->notifySetAnimation(u, animationPairs);
             *  return;
             * });*/

            script.loadScript(scriptloc); //todo: abstract class that loads a lua file for any lua
        }