• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Click on item and spell comes?

doCombat?
yes, doCombat
[cpp] //doCombat(cid, combat, param)
lua_register(m_luaState, "doCombat", LuaInterface::luaDoCombat);
[/cpp]
[cpp]
int32_t LuaInterface::luaDoCombat(lua_State* L)
{
//doCombat(cid, combat, param)
ScriptEnviroment* env = getEnv();

LuaVariant var = popVariant(L);
uint32_t combatId = popNumber(L), cid = popNumber(L);

Creature* creature = NULL;
if(cid != 0)
{
creature = env->getCreatureByUID(cid);
if(!creature)
{
errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND));
lua_pushboolean(L, false);
return 1;
}
}

const Combat* combat = env->getCombatObject(combatId);
if(!combat)
{
errorEx(getError(LUA_ERROR_COMBAT_NOT_FOUND));
lua_pushboolean(L, false);
return 1;
}

if(var.type == VARIANT_NONE)
{
errorEx(getError(LUA_ERROR_VARIANT_NOT_FOUND));
lua_pushboolean(L, false);
return 1;
}

switch(var.type)
{
case VARIANT_NUMBER:
{
Creature* target = g_game.getCreatureByID(var.number);
if(!target || !creature || !creature->canSeeCreature(target))
{
lua_pushboolean(L, false);
return 1;
}

if(combat->hasArea())
combat->doCombat(creature, target->getPosition());
else
combat->doCombat(creature, target);

break;
}

case VARIANT_POSITION:
{
combat->doCombat(creature, var.pos);
break;
}

case VARIANT_TARGETPOSITION:
{
if(!combat->hasArea())
{
combat->postCombatEffects(creature, var.pos);
g_game.addMagicEffect(var.pos, MAGIC_EFFECT_POFF);
}
else
combat->doCombat(creature, var.pos);

break;
}

case VARIANT_STRING:
{
Player* target = g_game.getPlayerByName(var.text);
if(!target || !creature || !creature->canSeeCreature(target))
{
lua_pushboolean(L, false);
return 1;
}

combat->doCombat(creature, target);
break;
}

default:
{
errorEx(getError(LUA_ERROR_VARIANT_UNKNOWN));
lua_pushboolean(L, false);
return 1;
}
}

lua_pushboolean(L, true);
return 1;
}

[/cpp]
 
Back
Top