#include < amxmodx >
#include < cstrike >
#include < fakemeta >
#include < engine >
#include < fun >
#include < xs >
#pragma semicolon 1
#define PLUGIN "Knife ajandekok"
#define VERSION "0.7.3"
#define ACCESS ADMIN_CVAR
enum Color
{
NORMAL = 1, // Culoarea care o are jucatorul setata in cvar-ul scr_concolor.
GREEN, // Culoare Verde.
TEAM_COLOR, // Culoare Rosu, Albastru, Gri.
GREY, // Culoarea Gri.
RED, // Culoarea Rosu.
BLUE, // Culoarea Albastru.
};
new TeamName[ ][ ] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
};
enum
{
GIFT_HP,
GIFT_AP,
GIFT_HP_AP,
GIFT_MONEY,
GIFT_HE,
BADGIFT_MONEY,
BADGIFT_WEAPONS,
BADGIFT_SLAP
}
new const g_szFmuGiftsModels[ 4 ][ ] =
{
"models/tojas7.mdl",
"models/tojas5.mdl",
"models/tojas4.mdl",
"models/tojas6.mdl"
};
new const g_iFmuGiftsColors[ 4 ][ 3 ] =
{
{ 0, 255, 255 },
{ 0, 255, 125 },
{ 255, 125, 65 },
{ 255, 255, 255 }
};
new const FMU_TAG[ ] = "[Ajandekok]";
new const g_szGiftClassName[ ] = "FurienGift_byAskhanar";
// Nu modifica !!
new Float:fMaxs[ 3 ] = { 14.0, 14.0, 35.0 };
new Float:fMins[ 3 ] = { -14.0, -14.0, 0.0 };
// Nu modifica !!
new gCvarGiftHP;
new gCvarGiftAP;
new gCvarGiftMoney;
new gCvarGiftChance;
public plugin_precache( )
for( new i = 0; i < 7; i++ )
precache_model( g_szFmuGiftsModels[ i ] );
public plugin_init( )
{
register_plugin( PLUGIN, VERSION, "Askhanar" );
gCvarGiftHP = register_cvar( "fmu_gifts_hp", "5" );
gCvarGiftAP = register_cvar( "fmu_gifts_ap", "5" );
gCvarGiftMoney = register_cvar( "fmu_gifts_money", "5500" );
gCvarGiftChance = register_cvar( "fmu_gifts_chance", "75" );
register_event( "DeathMsg", "EventDeathMsg", "a" );
register_event( "HLTV", "DeleteAllGifts", "a", "1=0", "2=0" );
register_event( "TextMsg", "DeleteAllGifts", "a", "2=#Game_will_restart_in" );
register_clcmd( "add_gift", "ClCmdAddGift" );
register_clcmd( "delete_gift", "ClCmdDeleteGift" );
// Oprita.. ( cand omori ultimu jucator, pica cadoul dar e sters de chemarea eventului.. ).
//register_logevent( "DeleteAllGifts", 2, "0=World triggered", "1=Round_Draw", "1=Round_End" );
register_touch( g_szGiftClassName, "player", "FwdPlayerTouchGift" );
}
public ClCmdAddGift( id )
{
if( !(get_user_flags( id ) & ACCESS ) )
{
ColorChat( id, RED, "^x04%s^x03 TE^x01 Hozzaferhetsz ehhez a parancshoz.!", FMU_TAG );
return PLUGIN_HANDLED;
}
new Float:fAimOrigin[ 3 ];
fm_get_aimorigin( id, fAimOrigin );
if( ( engfunc( EngFunc_PointContents, fAimOrigin ) != CONTENTS_SKY )
&& ( engfunc( EngFunc_PointContents, fAimOrigin ) != CONTENTS_SOLID ) )
{
new iParm[ 3 ];
new iUserOrigin[ 3 ];
FVecIVec( fAimOrigin, iUserOrigin );
iParm[ 0 ] = iUserOrigin[ 0 ];
iParm[ 1 ] = iUserOrigin[ 1 ];
iParm[ 2 ] = iUserOrigin[ 2 ];
set_task( 0.1, "CreateGift", _, iParm, 3 );
ColorChat( id, RED, "^x04%s^x01 Egy ajandek sikeresen letrehozva!", FMU_TAG );
}
else
{
ColorChat( id, RED, "^x04%s^x03 Ez a helyseg ervenytelen. !", FMU_TAG );
}
return PLUGIN_CONTINUE;
}
public ClCmdDeleteGift( id )
{
if( !(get_user_flags( id ) & ACCESS ) )
{
ColorChat( id, RED, "^x04%s^x03 Neked^x01van hozzaferesed ehez a parancshoz !", FMU_TAG );
return PLUGIN_HANDLED;
}
new iEnt, iBody;
get_user_aiming( id, iEnt, iBody );
if( pev_valid( iEnt ) )
{
static szClassname[ 32 ];
entity_get_string( iEnt, EV_SZ_classname, szClassname, sizeof ( szClassname ) - 1 );
if( !strcmp( szClassname, g_szGiftClassName, 1 ) )
{
remove_entity( iEnt );
ColorChat( id, RED, "^x04%s^x01 Megegyszer kitoroltel egy ajandekot.!", FMU_TAG );
}
else
{
ColorChat( id, RED, "^x04%s^x01 Kell nezz egy uj ajandekot,hogy ki tudjad torolni.!", FMU_TAG );
}
}
return PLUGIN_CONTINUE;
}
public EventDeathMsg( )
{
new iKiller = read_data( 1 );
new iVictim = read_data( 2 );
if( iVictim != iKiller )
{
static iRandomChance;
iRandomChance = random_num( 1, 100 );
static iChance;
iChance = get_pcvar_num( gCvarGiftChance );
if( iRandomChance <= iChance )
{
new iParm[ 3 ];
new Float:fUserOrigin[ 3 ], iUserOrigin[ 3 ];
pev(iVictim, pev_origin, fUserOrigin );
FVecIVec( fUserOrigin, iUserOrigin );
iParm[ 0 ] = iUserOrigin[ 0 ];
iParm[ 1 ] = iUserOrigin[ 1 ];
iParm[ 2 ] = iUserOrigin[ 2 ];
set_task( 0.7, "CreateGift", _, iParm, 3 );
}
}
return 0;
}
public CreateGift( iParm[ ] )
{
new iOrigin[ 3 ], Float:fOrigin[ 3 ];
iOrigin[ 0 ] = iParm[ 0 ];
iOrigin[ 1 ] = iParm[ 1 ];
iOrigin[ 2 ] = iParm[ 2 ];
IVecFVec( iOrigin, fOrigin );
new iEnt = create_entity( "info_target" );
if ( !is_valid_ent(iEnt) ) return 0;
new iRandom = random_num( 0, 6 );
entity_set_string( iEnt, EV_SZ_classname, g_szGiftClassName );
entity_set_origin( iEnt, fOrigin );
entity_set_model( iEnt, g_szFmuGiftsModels[ iRandom ] );
entity_set_int( iEnt, EV_INT_movetype, MOVETYPE_NONE );
entity_set_int( iEnt, EV_INT_solid, SOLID_BBOX );
entity_set_size( iEnt, fMins, fMaxs );
set_rendering( iEnt,
kRenderFxGlowShell,
g_iFmuGiftsColors[ iRandom ][ 0 ],
g_iFmuGiftsColors[ iRandom ][ 1 ],
g_iFmuGiftsColors[ iRandom ][ 2 ],
kRenderNormal,
255 );
drop_to_floor( iEnt );
new Float:fVelocity[ 3 ];
fVelocity[ 0 ] = ( random_float( 0.0, 256.0 ) - 128.0 );
fVelocity[ 1 ] = ( random_float( 0.0, 256.0 ) - 128.0 );
fVelocity[ 2 ] = ( random_float( 0.0, 300.0 ) + 75.0 );
entity_set_vector( iEnt, EV_VEC_velocity, fVelocity );
return 0;
}
public DeleteAllGifts( )
{
new iFoundEntity;
while ( ( iFoundEntity = find_ent_by_class( iFoundEntity, g_szGiftClassName ) ) != 0 )
{
engfunc( EngFunc_RemoveEntity, iFoundEntity );
}
}
public FwdPlayerTouchGift( const iEnt, const id )
{
if( is_valid_ent( iEnt ) && is_user_alive( id ) )
{
static iRandomChance;
iRandomChance = random_num( 1, 100 );
if( iRandomChance <= 90 )
{
new iRandomGift = random_num( GIFT_HP, GIFT_HE );
while( iRandomGift == GIFT_HE && user_has_weapon( id, CSW_HEGRENADE ) )
iRandomGift = random_num( GIFT_HP, GIFT_HE );
GivePlayerGift( id, iRandomGift );
}
else
{
new iRandomGift = random_num( BADGIFT_MONEY, BADGIFT_SLAP );
while( iRandomGift == BADGIFT_MONEY && cs_get_user_money( id ) == 0 )
iRandomGift = random_num( BADGIFT_MONEY, BADGIFT_SLAP );
GivePlayerGift( id, iRandomGift );
}
remove_entity( iEnt );
}
return 0;
}
public GivePlayerGift( id, const iGiftType )
{
switch( iGiftType )
{
case GIFT_HP:
{
set_user_health( id, get_user_health( id ) + get_pcvar_num( gCvarGiftHP ) );
ColorChat( id, RED, "^x04%s^x01 Gratulalok Kaptal ^x03 %i HP^x01!", FMU_TAG, get_pcvar_num( gCvarGiftHP ) );
}
case GIFT_AP:
{
set_user_armor( id, get_user_armor( id ) + get_pcvar_num( gCvarGiftAP ) );
ColorChat( id, RED, "^x04%s^x01 Gratulalok Kaptal ^x03 %i Armor^x01!", FMU_TAG, get_pcvar_num( gCvarGiftAP ) );
}
case GIFT_HP_AP:
{
static iHP;
iHP = get_pcvar_num( gCvarGiftHP );
static iAP;
iAP = get_pcvar_num( gCvarGiftAP );
set_user_health( id, get_user_health( id ) + iHP );
set_user_armor( id, get_user_armor( id ) + iAP );
ColorChat( id, RED, "^x04%s^x01 Gratulalok Kaptal^x03 %i HP^x01 si^x03 %i Armor^x01!", FMU_TAG, iHP, iAP );
}
case GIFT_MONEY:
{
cs_set_user_money( id, clamp( cs_get_user_money( id ) + get_pcvar_num( gCvarGiftMoney ), 0, 16000 ) );
ColorChat( id, RED, "^x04%s^x01 Gratulalok Kaptal^x03 %i$^x01!", FMU_TAG, get_pcvar_num( gCvarGiftMoney ) );
}
case GIFT_HE:
{
give_item( id, "weapon_hegrenade" );
ColorChat( id, RED, "^x04%s^x01 Gratulalok kaptal^x03 1 darab HE-granatot^x01!", FMU_TAG );
}
case BADGIFT_MONEY:
{
cs_set_user_money( id, 0 );
ColorChat( id, RED, "^x04%s^x03 Te^x01 nagyon jo^x03 vagy^x01!", FMU_TAG );
ColorChat( id, RED, "^x04%s^x01 Elveszett a penzed!", FMU_TAG );
}
case BADGIFT_WEAPONS:
{
strip_user_weapons( id );
give_item( id, "weapon_knife" );
ColorChat( id, RED, "^x04%s^x03 Te^x01 Te nagyon jo^x03 vagy^x01!", FMU_TAG );
ColorChat( id, RED, "^x04%s^x01 Az osszes fegyvert lefoglaltak!", FMU_TAG );
}
case BADGIFT_SLAP:
{
set_task( 0.1, "PunchUser", id );
set_task( 0.2, "PunchUser", id );
set_task( 0.3, "PunchUser", id );
ColorChat( id, RED, "^x04%s^x03 Te^x01 nagyon jo^x03 vagy^x01!", FMU_TAG );
ColorChat( id, RED, "^x04%s^x01 Kaptal egy nagy^x03 3^x01 pofont!", FMU_TAG );
}
}
}
public PunchUser( id )
{
if( !is_user_connected( id ) )
return 1;
new Float:fRandomAngles[ 3 ];
for(new i = 0; i < 3; i++)
fRandomAngles[ i ] = random_float( 100.0, 150.0 );
entity_set_vector(id, EV_VEC_punchangle, fRandomAngles );
user_slap( id, random_num( 1, 5 ) );
return 0;
}
stock fm_get_aimorigin( id, Float:origin[ 3 ] )
{
new Float:start[ 3 ], Float:view_ofs[ 3 ];
pev( id, pev_origin, start );
pev( id, pev_view_ofs, view_ofs );
xs_vec_add( start, view_ofs, start );
new Float:dest[ 3 ];
pev( id, pev_v_angle, dest );
engfunc( EngFunc_MakeVectors, dest );
global_get( glb_v_forward, dest );
xs_vec_mul_scalar( dest, 9999.0, dest );
xs_vec_add( start, dest, dest );
engfunc( EngFunc_TraceLine, start, dest, 0, id, 0 );
get_tr2( 0, TR_vecEndPos, origin );
return 1;
}
ColorChat( id, Color:iType, const msg[ ], { Float, Sql, Result, _}:... )
{
// Daca nu se afla nici un jucator pe server oprim TOT. Altfel dam de erori..
if( !get_playersnum( ) ) return;
new szMessage[ 256 ];
switch( iType )
{
// Culoarea care o are jucatorul setata in cvar-ul scr_concolor.
case NORMAL: szMessage[ 0 ] = 0x01;
// Culoare Verde.
case GREEN: szMessage[ 0 ] = 0x04;
// Alb, Rosu, Albastru.
default: szMessage[ 0 ] = 0x03;
}
vformat( szMessage[ 1 ], 251, msg, 4 );
// Ne asiguram ca mesajul nu este mai lung de 192 de caractere.Altfel pica server-ul.
szMessage[ 192 ] = '^0';
new iTeam, iColorChange, iPlayerIndex, MSG_Type;
if( id )
{
MSG_Type = MSG_ONE_UNRELIABLE;
iPlayerIndex = id;
}
else
{
iPlayerIndex = CC_FindPlayer( );
MSG_Type = MSG_ALL;
}
iTeam = get_user_team( iPlayerIndex );
iColorChange = CC_ColorSelection( iPlayerIndex, MSG_Type, iType);
CC_ShowColorMessage( iPlayerIndex, MSG_Type, szMessage );
if( iColorChange ) CC_Team_Info( iPlayerIndex, MSG_Type, TeamName[ iTeam ] );
}
CC_ShowColorMessage( id, const iType, const szMessage[ ] )
{
static bool:bSayTextUsed;
static iMsgSayText;
if( !bSayTextUsed )
{
iMsgSayText = get_user_msgid( "SayText" );
bSayTextUsed = true;
}
message_begin( iType, iMsgSayText, _, id );
write_byte( id );
write_string( szMessage );
message_end( );
}
CC_Team_Info( id, const iType, const szTeam[ ] )
{
static bool:bTeamInfoUsed;
static iMsgTeamInfo;
if( !bTeamInfoUsed )
{
iMsgTeamInfo = get_user_msgid( "TeamInfo" );
bTeamInfoUsed = true;
}
message_begin( iType, iMsgTeamInfo, _, id );
write_byte( id );
write_string( szTeam );
message_end( );
return 1;
}
CC_ColorSelection( id, const iType, Color:iColorType)
{
switch( iColorType )
{
case RED: return CC_Team_Info( id, iType, TeamName[ 1 ] );
case BLUE: return CC_Team_Info( id, iType, TeamName[ 2 ] );
case GREY: return CC_Team_Info( id, iType, TeamName[ 0 ] );
}
return 0;
}
CC_FindPlayer( )
{
new iMaxPlayers = get_maxplayers( );
for( new i = 1; i <= iMaxPlayers; i++ )
if( is_user_connected( i ) )
return i;
return -1;
}