Member
Join Date: Jun 2020
Location: La France
|
02-05-2021
, 14:12
Re: [Subplugin] Summon a boss
|
#11
|
Quote:
Originally Posted by J0BL3SS
Code:
public void OnPluginStart()
{
HookEvent("arena_round_start", Event_RoundStart);
HookEvent("teamplay_round_active", Event_RoundStart); // for non-arena maps
}
public void Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
MainBoss_PrepareAbilities();
CreateTimer(1.0, TimerHookSpawn, _, TIMER_FLAG_NO_MAPCHANGE);
}
public Action TimerHookSpawn(Handle timer)
{
HookEvent("player_spawn", Event_PlayerSpawn);
}
public void Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
int iClient = GetEventInt(event, "userid");
if(!GetClientOfUserId(iClient))
{
CreateTimer(0.2, SummonedBoss_PrepareAbilities, GetClientOfUserId(iClient), TIMER_FLAG_NO_MAPCHANGE);
}
else
{
LogError("ERROR: Invalid client index. %s:Event_PlayerSpawn()", this_plugin_name);
}
}
public void MainBoss_PrepareAbilities()
{
if(!FF2_IsFF2Enabled() || FF2_GetRoundState() != 1)
{
LogError("ERROR: Abilitypack called when round is over or when gamemode is not FF2. %s:MainBoss_PrepareAbilities()", this_plugin_name);
return;
}
for(int bossClientIdx = 1; bossClientIdx < MaxClients; bossClientIdx++)
{
int bossIdx = FF2_GetBossIndex(bossClientIdx);
if(bossIdx >= 0)
{
HookAbilities(bossIdx, bossClientIdx);
}
}
}
public Action SummonedBoss_PrepareAbilities(Handle timer, int bossClientIdx)
{
if(!bossClientIdx)
{
int bossIdx = FF2_GetBossIndex(bossClientIdx);
if(bossIdx >= 0)
{
HookAbilities(bossIdx, bossClientIdx);
}
else
{
PrintToServer("WARNING: Respawned player has no boss index. %s:SummonedBoss_PrepareAbilities()", this_plugin_name);
//LogError("WARNING: Respawned player has no boss index. %s:SummonedBoss_PrepareAbilities()", this_plugin_name);
}
}
else
{
LogError("ERROR: Unable to find respawned player. %s:SummonedBoss_PrepareAbilities()", this_plugin_name);
}
}
public void HookAbilities(int bossIdx, int bossClientIdx)
{
//Define Your Ability Arguments, do things ...
//My Rage
if(FF2_HasAbility(bossIdx, this_plugin_name, "rage_myability"))
{
//AMS Triggers
AMS_TEST[bossClientIdx] = AMS_IsSubabilityReady(bossIdx, this_plugin_name, "rage_myability");
if(AMS_TEST[bossClientIdx])
{
AMS_InitSubability(bossIdx, bossClientIdx, this_plugin_name, "rage_myability", "TEST");
}
MyAbility_Duration[bossClientIdx] = FF2_GetAbilityArgumentFloat(bossIdx, this_plugin_name, "rage_myability", 1, 10.0);
MyAbility_Distance[bossClientIdx] = FF2_GetAbilityArgumentFloat(bossIdx, this_plugin_name, "rage_myability", 2, 1024.0);
}
}
This is what i did to make compatible my subplugins to future usage.
|
Ams doesn't works with summoned boss, i mean, summoned boss cannot use ams
|
|