Dank dir, haben ja grad schon in Steam gesprochen :D
Hier für alle die neuen Dateien
Ach was mir noch aufgefallen ist, der Skill Impulse ist leider verdreht, der Spieler der Attackt wird, bekommt die Schnelligkeit von dem Spieler der eigentlich Impluse geskillt hat.
Hier mal die rpgi_impulse.sp
Das müsste irgendwo in der Zeile 67-73 verdreht sein wenn ich mich net täusche nur kann ich damit nix anfangen :D
#pragma semicolon 1
#include <sourcemod>
#include <sdktools>
/**
* @brief Speed increase for each level when player is damaged.
*/
#define IMPULSE_INC 0.2
/**
* @brief Duration of Impulse's effect.
*/
#define IMPULSE_DURATION 0.8
new Handle:g_hImpulseConfig;
new Handle:g_hImpulseResetSpeed[MAXPLAYERS+1] = {INVALID_HANDLE,...};
new g_iImpulseTrailSprites[MAXPLAYERS+1] = {-1,...};
Item_Impulse_PreInit()
{
g_hImpulseConfig = RegisterItemType("Impulse", "impulse", 10, true, 5, 20, 20, Impulse_Buy, Impulse_Sell);
}
public bool:Impulse_Buy(client)
{
return true;
}
public bool:Impulse_Sell(client)
{
return true;
}
Impulse_ResetClient(client)
{
if(g_hImpulseResetSpeed[client] != INVALID_HANDLE && IsClientInGame(client))
TriggerTimer(g_hImpulseResetSpeed[client]);
ClearHandle(g_hImpulseResetSpeed[client]);
if(g_iImpulseTrailSprites[client] != -1 && IsValidEntity(g_iImpulseTrailSprites[client]))
AcceptEntityInput(g_iImpulseTrailSprites[client], "Kill");
g_iImpulseTrailSprites[client] = -1;
}
stock Impulse_StopEffect(client)
{
if(g_hImpulseResetSpeed[client] != INVALID_HANDLE && IsClientInGame(client))
TriggerTimer(g_hImpulseResetSpeed[client]);
ClearHandle(g_hImpulseResetSpeed[client]);
}
/**
* @brief Reset all invisible entity indexes since the previous round's entities
* were all deleted on round start.
*/
Impulse_OnRoundStart()
{
for(new i=1;i<=MaxClients;i++)
g_iImpulseTrailSprites = -1;
}
Impulse_PlayerDamage(attacker, victim)
{
if(!GetConVarBool(g_hCVEnable) || !GetArrayCell(g_hImpulseConfig, ITEM_ENABLE))
return;
IF_BOT_NENABLED(attacker)
return;
if(GetClientTeam(attacker) == GetClientTeam(victim))
return;
new iLevel = GetPlayerItemLevel(attacker, GetArrayCell(g_hImpulseConfig, ITEM_INDEX));
if(iLevel <= 0)
return;
if(IsFrozenByFrostPistol(victim))
return; //Player has already been tagged with a FrostPistol
if(!(GetEntityFlags(victim) & FL_ONGROUND))
return; //Player is in midair
/* Set player speed */
SetEntPropFloat(victim, Prop_Send, "m_flLaggedMovementValue", 1.0 + float(iLevel) * IMPULSE_INC);
ClearHandle(g_hImpulseResetSpeed[victim]);
g_hImpulseResetSpeed[victim] = CreateTimer(IMPULSE_DURATION, Impulse_Timer_ResetSpeed, GetClientUserId(victim), TIMER_FLAG_NO_MAPCHANGE);
decl Float:vOrigin[3];
GetClientEyePosition(victim, vOrigin);
vOrigin[2] -= 40.0;
new iSprite = g_iImpulseTrailSprites[victim];
if(iSprite == -1)
{
iSprite = CreateEntityByName("env_sprite");
if(iSprite == -1)
return;
SetEntityRenderMode(iSprite, RENDER_NONE);
TeleportEntity(iSprite, vOrigin, Float:{0.0,0.0,0.0}, NULL_VECTOR);
DispatchSpawn(iSprite);
g_iImpulseTrailSprites[victim] = iSprite;
}
SetVariantString("");
AcceptEntityInput(iSprite, "ClearParent");
TeleportEntity(iSprite, vOrigin, NULL_VECTOR, NULL_VECTOR);
SetVariantString("!activator");
AcceptEntityInput(iSprite, "SetParent", victim);
TE_SetupBeamFollow(iSprite, g_iRedTrailSprite, g_iRedTrailSprite, IMPULSE_DURATION, 10.0, 4.0, 2, {255,0,0,255});
TE_SendToAll();
}
public Action:Impulse_Timer_ResetSpeed(Handle:timer, any:userid)
{
new client = GetClientOfUserId(userid);
if(!client)
return Plugin_Stop;
g_hImpulseResetSpeed[client] = INVALID_HANDLE;
SetEntPropFloat(client, Prop_Send, "m_flLaggedMovementValue", 1.0);
if(g_iImpulseTrailSprites[client] != -1 && IsValidEntity(g_iImpulseTrailSprites[client]))
{
SetVariantString("");
AcceptEntityInput(g_iImpulseTrailSprites[client], "ClearParent"); //unset parent
}
return Plugin_Stop;
}