Ustawiłem i nic ![]()
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Guest Message by DevFuse
Lylu2
Rejestracja: 22.08.2013Aktualnie: Nieaktywny
Poza forum Ostatnio: 05.04.2016 13:50




Statystyki
- Grupa: Użytkownik
- Całość postów: 17
- Odwiedzin: 1 313
- Tytuł: Początkujący
- Wiek: Wiek nie został ustalony
- Urodziny: Data urodzin nie została podana
-
Imię
Maciek
-
Płeć
Mężczyzna
-
Lokalizacja
Lipiany
Kontakt
0
Nowy
Narzędzia użytkownika
Znajomi
Lylu2 nie posiada znajomych
Ostatnio byli
Moje posty
W temacie: [KOSZ] [Problem] JailBreak zabawy
24.04.2015 22:16
W temacie: [KOSZ] [Problem] JailBreak zabawy
24.04.2015 20:47
Naprawdę nie wiem jak to napisać ![]()
W temacie: [KOSZ] [Problem] DMG Deathreun
21.04.2015 07:00
http://speedy.sh/48SAm/QTM-CodMod.sma
http://speedy.sh/9qCKf/DeathrunManager.sma
W temacie: [KOSZ] [Problem] DMG Deathreun
20.04.2015 20:00
Silnik dr:
Silnik coda tu masz klasy itp:
Spoiler
/***
* Link to the plugin
*
* http://forums.alliedmods.net/showthread.php?t=78197
*/
#include < amxmodx >
#include < engine >
#include < cstrike >
#include < fun >
#include < fakemeta >
#include < hamsandwich >
#pragma semicolon 1
// Comment this line if you do not want to have fake player !
#define FAKE_PLAYER
// Bot name
#if defined FAKE_PLAYER
new const g_szBotName[ ] = "[BOT]sieć.pl ";
#endif
// Messages prefix
new const g_szPrefix[ ] = "[Deathrun]";
// Global Variables
new bool:g_bHauntedHouse, bool:g_bGamerFun, bool:g_bRandromized, bool:g_bStarting, bool:g_bFirstRound;
new bool:g_bEnabled, bool:g_bRestart, bool:g_bConnected[ 33 ];
new g_pRemoveBuyZone, g_pHideHuds, g_pBlockMoney, g_pLifeSystem, g_pSvRestart, g_pAutoBalance, g_pLimitTeams;
new g_pNoFallDmg, g_pGameName, g_pToggle, g_pBlockSpray, g_pBlockRadio, g_pSemiclip, g_pGiveUsp, g_pBlockKill;
new g_iMsgHideWeapon, g_iMsgCrosshair, g_iMsgMoney, g_iMsgTeamInfo, g_iMsgSayText;
new g_iMaxplayers, g_iHudSync, g_iHudSync2, g_iLastTerr, g_iThinker;
new g_iSemiClip[ 33 ], g_Lifes[ 33 ];
#if defined FAKE_PLAYER
new g_iFakeplayer;
#endif
// Macros
#if cellbits == 32
#define OFFSET_BZ 235
#else
#define OFFSET_BZ 268
#endif
// Colorchat
enum Color {
NORMAL = 1,
GREEN,
RED,
BLUE
};
new TeamName[ ][ ] = {
"",
"TERRORIST",
"CT",
"SPECTATOR"
};
// =======================================================================================
public plugin_init( ) {
register_plugin( "Deathrun Manager", "3.0.2", "xPaw" );
g_pToggle = register_cvar( "deathrun_toggle", "1" );
g_pBlockSpray = register_cvar( "deathrun_spray", "1" );
g_pBlockRadio = register_cvar( "deathrun_radio", "1" );
g_pBlockKill = register_cvar( "deathrun_blockkill", "1" );
g_pBlockMoney = register_cvar( "deathrun_blockmoney", "1" );
g_pSemiclip = register_cvar( "deathrun_semiclip", "1" );
g_pGiveUsp = register_cvar( "deathrun_giveusp", "1" );
g_pHideHuds = register_cvar( "deathrun_hidehud", "1" );
g_pLifeSystem = register_cvar( "deathrun_lifesystem", "1" );
g_pGameName = register_cvar( "deathrun_gamename", "1" );
g_pNoFallDmg = register_cvar( "deathrun_terrnfd", "1" );
g_pRemoveBuyZone = register_cvar( "deathrun_removebz", "1" );
// Lets get map name...
new szMapName[ 64 ];
get_mapname( szMapName, 63 );
if( contain( szMapName, "deathrun_" ) != -1 ) {
set_pcvar_num( g_pToggle, 1 );
if( contain( szMapName, "hauntedhouse" ) != -1 )
g_bHauntedHouse = true;
else {
g_bHauntedHouse = false;
if( equal( szMapName, "deathrun_gamerfun" ) )
g_bGamerFun = true;
else
g_bGamerFun = false;
}
} else
set_pcvar_num( g_pToggle, 0 );
g_pSvRestart = get_cvar_pointer( "sv_restart" );
g_pAutoBalance = get_cvar_pointer( "mp_autoteambalance" );
g_pLimitTeams = get_cvar_pointer( "mp_limitteams" );
register_cvar( "deathrun_version", "3.0.2", FCVAR_SERVER | FCVAR_SPONLY );
set_cvar_string( "deathrun_version", "3.0.2" );
// Registering Language file
register_dictionary( "deathrun.txt" );
// Logging Events
register_logevent( "EventRoundStart", 2, "1=Round_Start" );
register_logevent( "EventRandromize", 2, "1=Round_End" );
register_event( "SendAudio", "EventTerrsWin", "a", "2&%!MRAD_terwin" );
register_event( "TextMsg", "EventRandromize", "a", "2&#Game_w" );
register_event( "DeathMsg", "EventDeath", "a");
register_event( "Money", "EventMoney", "b" );
register_event( "ResetHUD", "EventResetHud", "be" );
g_bFirstRound = true;
g_iMaxplayers = get_maxplayers( );
g_iMsgHideWeapon = get_user_msgid( "HideWeapon" );
g_iMsgCrosshair = get_user_msgid( "Crosshair" );
g_iMsgMoney = get_user_msgid( "Money" );
g_iMsgSayText = get_user_msgid( "SayText" );
g_iMsgTeamInfo = get_user_msgid( "TeamInfo" );
g_iHudSync = CreateHudSyncObj( );
g_iHudSync2 = CreateHudSyncObj( );
if( get_pcvar_num( g_pToggle ) ) {
RegisterHam( Ham_TakeDamage, "player", "FwdHamPlayerDamage" );
RegisterHam( Ham_Spawn, "player", "FwdHamPlayerSpawn", 1 );
register_forward( FM_ClientKill, "FwdClientKill" );
register_impulse( 201, "FwdImpulse_201" );
if( get_pcvar_num( g_pGameName ) )
register_forward( FM_GetGameDescription, "FwdGameDesc" );
register_clcmd( "say /lifes", "CmdShowlifes" );
register_clcmd( "say /lives", "CmdShowlifes" );
register_clcmd( "radio1", "CmdRadio" );
register_clcmd( "radio2", "CmdRadio" );
register_clcmd( "radio3", "CmdRadio" );
// Terrorist Check
g_iThinker= create_entity( "info_target" );
if( is_valid_ent( g_iThinker ) ) {
entity_set_string( g_iThinker, EV_SZ_classname, "DeathrunThinker" );
entity_set_float( g_iThinker, EV_FL_nextthink, get_gametime( ) + 20.0 );
g_bRestart = true;
// First think will happen in 20.0, Restart will be done there.
register_think( "DeathrunThinker", "FwdThinker" );
} else {
set_task( 15.0, "CheckTerrorists", _, _, _, "b" );
// Lets make restart after 20 seconds from map start.
set_task( 20.0, "RestartRound" );
}
if( get_pcvar_num( g_pRemoveBuyZone ) ) {
register_message( get_user_msgid( "StatusIcon" ), "MsgStatusIcon" ); // BuyZone Icon
// Remove buyzone on map
remove_entity_name( "info_map_parameters" );
remove_entity_name( "func_buyzone" );
// Create own entity to block buying
new iEntity = create_entity( "info_map_parameters" );
DispatchKeyValue( iEntity, "buying", "3" );
DispatchSpawn( iEntity );
}
if( get_pcvar_num( g_pSemiclip ) ) {
register_forward( FM_StartFrame, "FwdStartFrame", 0 );
register_forward( FM_AddToFullPack, "FwdFullPack", 1 );
}
g_bEnabled = true;
#if defined FAKE_PLAYER
new iEntity, iCount;
while( ( iEntity = find_ent_by_class( iEntity, "info_player_deathmatch" ) ) > 0 )
if( iCount++ > 1 )
break;
if( iCount <= 1 )
g_iFakeplayer = -1;
set_task( 5.0, "UpdateBot" );
register_message( get_user_msgid( "DeathMsg" ), "MsgDeathMsg" );
#endif
} else
g_bEnabled = false;
}
// FAKEPLAYER
///////////////////////////////////////////
#if defined FAKE_PLAYER
public UpdateBot( ) {
if( g_iFakeplayer == -1 )
return;
new id = find_player( "i" );
if( !id ) {
id = engfunc( EngFunc_CreateFakeClient, g_szBotName );
if( pev_valid( id ) ) {
engfunc( EngFunc_FreeEntPrivateData, id );
dllfunc( MetaFunc_CallGameEntity, "player", id );
set_user_info( id, "rate", "3500" );
set_user_info( id, "cl_updaterate", "25" );
set_user_info( id, "cl_lw", "1" );
set_user_info( id, "cl_lc", "1" );
set_user_info( id, "cl_dlmax", "128" );
set_user_info( id, "cl_righthand", "1" );
set_user_info( id, "_vgui_menus", "0" );
set_user_info( id, "_ah", "0" );
set_user_info( id, "dm", "0" );
set_user_info( id, "tracker", "0" );
set_user_info( id, "friends", "0" );
set_user_info( id, "*bot", "1" );
set_pev( id, pev_flags, pev( id, pev_flags ) | FL_FAKECLIENT );
set_pev( id, pev_colormap, id );
new szMsg[ 128 ];
dllfunc( DLLFunc_ClientConnect, id, g_szBotName, "127.0.0.1", szMsg );
dllfunc( DLLFunc_ClientPutInServer, id );
cs_set_user_team( id, CS_TEAM_T );
ExecuteHamB( Ham_CS_RoundRespawn, id );
set_pev( id, pev_effects, pev( id, pev_effects ) | EF_NODRAW );
set_pev( id, pev_solid, SOLID_NOT );
dllfunc( DLLFunc_Think, id );
g_iFakeplayer = id;
}
}
}
public MsgDeathMsg( const iMsgId, const iMsgDest, const id ) {
if( get_msg_arg_int( 2 ) == g_iFakeplayer )
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
#endif
// NEW TERRORIST
///////////////////////////////////////////
public EventRandromize( ) {
if( !g_bEnabled || g_bFirstRound || g_bRandromized )
return PLUGIN_CONTINUE;
g_bRandromized = true;
new i, iPlayers[ 32 ], iNum, iPlayer;
get_players( iPlayers, iNum, "c" );
if( iNum <= 1 )
return PLUGIN_CONTINUE;
for( i = 0; i < iNum; i++ ) {
iPlayer = iPlayers[ i ];
if( cs_get_user_team( iPlayer ) == CS_TEAM_T )
cs_set_user_team( iPlayer, CS_TEAM_CT );
}
new iRandomPlayer, CsTeams:iTeam;
while( ( iRandomPlayer = iPlayers[ random_num( 0, iNum - 1 ) ] ) == g_iLastTerr ) { }
g_iLastTerr = iRandomPlayer;
iTeam = cs_get_user_team( iRandomPlayer );
if( iTeam == CS_TEAM_T || iTeam == CS_TEAM_CT ) {
cs_set_user_team(iRandomPlayer, CS_TEAM_T);
new szName[ 32 ];
get_user_name( iRandomPlayer, szName, 31 );
for( i = 0; i < iNum; i++ )
ColorChat(iPlayers[ i ], RED, "%s^4 %L", g_szPrefix, iPlayers[ i ], "DR_NOW_TERR", szName);
if( !g_bRestart && is_valid_ent( g_iThinker ) )
entity_set_float( g_iThinker, EV_FL_nextthink, get_gametime( ) + 15.0 );
} else {
g_bRandromized = false;
EventRandromize( );
}
return PLUGIN_CONTINUE;
}
// NEW ROUND
///////////////////////////////////////////
public EventRoundStart( ) {
if( !g_bEnabled )
return PLUGIN_CONTINUE;
g_bRandromized = false;
g_bStarting = false;
new i, iPlayers[ 32 ], iNum, iRealPlayers, CsTeams:iTeam;
get_players( iPlayers, iNum, "c" );
if( iNum <= 1 )
return PLUGIN_CONTINUE;
for( i = 0; i < iNum; i++ ) {
iTeam = cs_get_user_team( iPlayers[ i ] );
if( iTeam == CS_TEAM_T || iTeam == CS_TEAM_CT )
iRealPlayers++;
}
if( iRealPlayers <= 1 ) {
set_hudmessage( 0, 128, 0, -1.0, 0.1, 0, 4.0, 4.0, 0.5, 0.5, 4 );
for( i = 0; i < iNum; i++ )
ShowSyncHudMsg( iPlayers[ i ], g_iHudSync, "%L", iPlayers[ i ], "DR_NOT_ENOUGH" );
return PLUGIN_CONTINUE;
}
set_pcvar_num( g_pAutoBalance, 0 );
set_pcvar_num( g_pLimitTeams, 0 );
if( g_bFirstRound ) {
set_hudmessage( 0, 128, 0, -1.0, 0.1, 0, 4.0, 4.0, 0.5, 0.5, 4 );
for( i = 0; i < iNum; i++ ) {
ShowSyncHudMsg( iPlayers[ i ], g_iHudSync, "%L", iPlayers[ i ], "DR_STARTING" );
ColorChat( iPlayers[ i ], RED, "%s^1 %L", g_szPrefix, iPlayers[ i ], "DR_STARTING_CC" );
}
if( is_valid_ent( g_iThinker ) ) {
g_bRestart = true;
entity_set_float( g_iThinker, EV_FL_nextthink, get_gametime( ) + 9.0 );
} else
set_task( 9.0, "RestartRound" );
g_bStarting = true;
g_bFirstRound = false;
}
return PLUGIN_CONTINUE;
}
// CHECK TERRORIST
///////////////////////////////////////////
public FwdThinker( iEntity ) {
if( g_bRestart ) {
g_bRestart = false;
RestartRound( );
} else
CheckTerrorists( );
entity_set_float( iEntity, EV_FL_nextthink, get_gametime( ) + 15.0 );
}
public CheckTerrorists( ) {
if( !g_bEnabled || g_bFirstRound || g_bStarting )
return PLUGIN_CONTINUE;
new i, iPlayers[ 32 ], iTerrors, iNum, iRealPlayers, CsTeams:iTeam;
get_players( iPlayers, iNum, "c" );
if( iNum <= 1 )
return PLUGIN_CONTINUE;
for( i = 0; i < iNum; i++ ) {
iTeam = cs_get_user_team( iPlayers[ i ] );
if( iTeam == CS_TEAM_T )
iTerrors++;
if( iTeam == CS_TEAM_T || iTeam == CS_TEAM_CT )
iRealPlayers++;
}
if( iRealPlayers <= 1 ) {
set_hudmessage( 0, 128, 0, -1.0, 0.1, 0, 4.0, 4.0, 0.5, 0.5, 4 );
for( i = 0; i < iNum; i++ )
ShowSyncHudMsg( iPlayers[ i ], g_iHudSync, "%L", iPlayers[ i ], "DR_NOT_ENOUGH" );
return PLUGIN_CONTINUE;
}
if( iTerrors == 0 ) {
for( i = 0; i < iNum; i++ ) {
ColorChat(iPlayers[ i ], RED, "%s^1 %L", g_szPrefix, iPlayers[ i ], "DR_NO_DETECT");
if( is_user_alive( iPlayers[ i ] ) && cs_get_user_team( iPlayers[ i ] ) == CS_TEAM_CT )
user_silentkill( iPlayers[ i ] );
}
set_task( 0.5, "EventRandromize" );
}
return PLUGIN_CONTINUE;
}
// LIFE SYSTEM
///////////////////////////////////////////
public EventTerrsWin( ) {
if( !g_bEnabled || g_bFirstRound )
return PLUGIN_CONTINUE;
new iPlayers[ 32 ], iNum, iPlayer;
get_players( iPlayers, iNum, "c" );
if( iNum <= 1 )
return PLUGIN_CONTINUE;
new iLifeCvar = get_pcvar_num( g_pLifeSystem );
for( new i = 0; i < iNum; i++ ) {
iPlayer = iPlayers[ i ];
if( cs_get_user_team( iPlayer ) == CS_TEAM_T ) {
set_user_frags( iPlayer, get_user_frags( iPlayer ) + 3 );
if( iLifeCvar == 2 )
g_Lifes[ iPlayer ]++;
}
}
return PLUGIN_CONTINUE;
}
public EventDeath( ) {
#if defined FAKE_PLAYER
if( !g_bEnabled )
return PLUGIN_CONTINUE;
new iVictim = read_data( 2 );
new iTeam = get_user_team( iVictim );
if( iTeam == 1 && is_user_alive( g_iFakeplayer ) )
fakedamage( g_iFakeplayer, "worldspawn", 100.0, DMG_GENERIC );
if( !get_pcvar_num( g_pLifeSystem ) )
return PLUGIN_CONTINUE;
#else
if( !g_bEnabled || get_pcvar_num( g_pLifeSystem ) )
return PLUGIN_CONTINUE;
new iVictim = read_data( 2 );
new iTeam = get_user_team( iVictim );
#endif
new iKiller = read_data( 1 );
if( iKiller != iVictim && get_user_team(iKiller) != iTeam )
g_Lifes[iKiller]++;
if( cs_get_user_team( iVictim ) == CS_TEAM_CT && g_Lifes[ iVictim ] > 0 ) {
new iCTcount;
for( new i = 1; i <= g_iMaxplayers; i++ ) {
if( is_user_alive( i ) && cs_get_user_team( i ) == CS_TEAM_CT )
iCTcount++;
}
if( iCTcount > 1 ) {
set_task(3.2, "fnRevivePlayer", iVictim);
ColorChat( iVictim, RED, "%s^1 %L", g_szPrefix, iVictim, "DR_LIFE_RESPAWN" );
}
/*else
ColorChat( iVictim, RED, "%s^1 %L", g_szPrefix, iVictim, "DR_LIFE_CANT" );*/
}
return PLUGIN_CONTINUE;
}
public fnRevivePlayer( id ) {
if( g_bConnected[ id ] ) {
if( cs_get_user_team( id ) == CS_TEAM_CT ) {
new iCTcount;
for( new i = 1; i <= g_iMaxplayers; i++ )
if( is_user_alive( i ) && cs_get_user_team( i ) == CS_TEAM_CT )
iCTcount++;
if( iCTcount > 1 ) {
ExecuteHamB( Ham_CS_RoundRespawn, id );
g_Lifes[ id ]--;
}
}
}
}
public CmdShowlifes( id ) {
if( get_pcvar_num( g_pLifeSystem ) == 0 ) {
ColorChat( id, RED, "%s^1 %L", g_szPrefix, id, "DR_LIFE_DISABLE" );
return PLUGIN_HANDLED;
}
if( g_Lifes[ id ] > 0 )
ColorChat( id, RED, "%s^1 %L", g_szPrefix, id, "DR_LIFE_CC_COUNT", g_Lifes[ id ] );
else
ColorChat( id, RED, "%s^1 %L", g_szPrefix, id, "DR_LIFE_CC_NO" );
return PLUGIN_HANDLED;
}
public Showlifes( id ) {
set_hudmessage( 0, 128, 0, 0.04, 0.71, 0, 2.5, 2.5, 0.5, 0.5, 3 );
if( g_Lifes[ id ] > 0 )
ShowSyncHudMsg( id, g_iHudSync2, "%L", id, "DR_LIFE_COUNT", g_Lifes[ id ] );
else
ShowSyncHudMsg( id, g_iHudSync2, "%L", id, "DR_LIFE_NO" );
}
// EVENTS
///////////////////////////////////////////
public EventResetHud( id ) {
if( g_bEnabled && get_pcvar_num( g_pHideHuds ) && !is_user_bot( id ) ) {
message_begin( MSG_ONE_UNRELIABLE, g_iMsgHideWeapon, _, id );
write_byte( ( 1<<4 | 1<<5 ) );
message_end( );
message_begin( MSG_ONE_UNRELIABLE, g_iMsgCrosshair, _, id );
write_byte( 0 );
message_end( );
}
}
public EventMoney( id ) {
if( g_bEnabled && get_pcvar_num( g_pBlockMoney ) ) {
set_pdata_int( id, 115, 0 );
message_begin( MSG_ONE_UNRELIABLE, g_iMsgMoney, _, id );
write_long ( 0 );
write_byte ( 1 );
message_end( );
}
}
public client_putinserver( id )
g_bConnected[ id ] = true;
public client_disconnect( id ) {
g_bConnected[ id ] = false;
CheckTerrorists( );
if( !g_bRestart && is_valid_ent( g_iThinker ) )
entity_set_float( g_iThinker, EV_FL_nextthink, get_gametime( ) + 15.0 );
#if defined FAKE_PLAYER
if( g_iFakeplayer == id ) {
set_task( 1.5, "UpdateBot" );
g_iFakeplayer = 0;
}
#endif
}
// SEMICLIP
///////////////////////////////////////////
public FwdFullPack( es, e, ent, host, flags, player, pSet ) {
if( !g_bEnabled )
return FMRES_IGNORED;
if( player && g_iSemiClip[ ent ] && g_iSemiClip[ host ] ) {
set_es( es, ES_Solid, SOLID_NOT );
set_es( es, ES_RenderMode, kRenderTransAlpha );
set_es( es, ES_RenderAmt, 85 );
}
return FMRES_IGNORED;
}
public FwdStartFrame( ) {
if( !g_bEnabled )
return FMRES_IGNORED;
static iPlayers[ 32 ], iNum, iPlayer, iPlayer2, i, j;
get_players( iPlayers, iNum, "ache", "CT" );
arrayset( g_iSemiClip, 0, 32 );
if( iNum <= 1 )
return FMRES_IGNORED;
for( i = 0; i < iNum; i++ ) {
iPlayer = iPlayers[ i ];
// if( g_iSemiClip[ iPlayer ] )
// continue;
for( j = 0; j < iNum; j++ ) {
iPlayer2 = iPlayers[ j ];
if( iPlayer == iPlayer2 )
continue;
// if( g_iSemiClip[ iPlayer2 ] )
// continue;
if( entity_range( iPlayer, iPlayer2 ) < 128 ) {
g_iSemiClip[ iPlayer ] = true;
g_iSemiClip[ iPlayer2 ] = true;
}
}
}
for( i = 0; i < iNum; i++ ) {
iPlayer = iPlayers[ i ];
set_pev( iPlayer, pev_solid, g_iSemiClip[ iPlayer ] ? SOLID_NOT : SOLID_SLIDEBOX );
}
return FMRES_IGNORED;
}
// FORWARDS
///////////////////////////////////////////
public FwdHamPlayerSpawn( id ) {
if( !g_bEnabled || !is_user_alive( id ) )
return HAM_IGNORED;
if( get_pcvar_num( g_pBlockRadio ) ) // thanks to ConnorMcLeod for this good way :)
set_pdata_int( id, 192, 0 );
#if defined FAKE_PLAYER
if( g_iFakeplayer == id ) {
set_pev( id, pev_frags, -1000.0 );
cs_set_user_deaths( id, -1000 );
set_pev( id, pev_effects, pev( id, pev_effects ) | EF_NODRAW );
set_pev( id, pev_solid, SOLID_NOT );
entity_set_origin( id, Float:{ 999999.0, 999999.0, 999999.0 } );
dllfunc( DLLFunc_Think, id );
} else {
#endif
new CsTeams:iTeam = cs_get_user_team( id );
// An small delay for message
if( get_pcvar_num( g_pLifeSystem ) != 0 && iTeam == CS_TEAM_CT )
set_task( 0.8, "Showlifes", id );
strip_user_weapons( id );
give_item( id, "weapon_knife" );
set_pdata_int( id, 116, 0 ); // Pickup fix by ConnorMcLeod
if( g_bGamerFun && iTeam == CS_TEAM_CT )
give_item( id, "weapon_smokegrenade" );
if( get_pcvar_num( g_pGiveUsp ) && iTeam == CS_TEAM_CT && !g_bHauntedHouse )
set_task( 1.0, "GiveUsp", id );
#if defined FAKE_PLAYER
}
#endif
return HAM_IGNORED;
}
public GiveUsp( const id ) {
if( is_user_alive( id ) ) {
give_item( id, "weapon_usp" );
cs_set_user_bpammo( id, CSW_USP, 100 );
}
}
public FwdGameDesc( ) {
static const GameName[ ] = "Deathrun v3.0";
forward_return( FMV_STRING, GameName );
return FMRES_SUPERCEDE;
}
public FwdClientKill( const id ) {
if( !g_bEnabled || !is_user_alive(id) )
return FMRES_IGNORED;
if( get_pcvar_num( g_pBlockKill ) || cs_get_user_team( id ) == CS_TEAM_T ) {
client_print( id, print_center, "%L", id, "DR_BLOCK_KILL" );
client_print( id, print_console, "%L", id, "DR_BLOCK_KILL" );
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
public FwdImpulse_201( const id ) {
if( g_bEnabled && get_pcvar_num( g_pBlockSpray ) ) {
if( is_user_alive( id ) )
client_print( id, print_center, "%L", id, "DR_BLOCK_SPRAY" );
return PLUGIN_HANDLED_MAIN;
}
return PLUGIN_CONTINUE;
}
public FwdHamPlayerDamage( id, idInflictor, idAttacker, Float:flDamage, iDamageBits ) {
if( get_pcvar_num( g_pNoFallDmg ) )
if( iDamageBits & DMG_FALL )
if( get_user_team( id ) == 1 )
return HAM_SUPERCEDE;
return HAM_IGNORED;
}
public MsgStatusIcon( msg_id, msg_dest, id ) {
new szIcon[ 8 ];
get_msg_arg_string( 2, szIcon, 7 );
static const BuyZone[ ] = "buyzone";
if( equal( szIcon, BuyZone ) ) {
set_pdata_int( id, OFFSET_BZ, get_pdata_int( id, OFFSET_BZ, 5 ) & ~( 1 << 0 ), 5 );
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public CmdRadio( id ) {
if( get_pcvar_num( g_pBlockRadio ) )
return PLUGIN_HANDLED_MAIN;
return PLUGIN_CONTINUE;
}
public RestartRound( )
set_pcvar_num( g_pSvRestart, 1 );
// COLORCHAT
/////////////////////////////////////////////
ColorChat( id, Color:type, const szMessage[], {Float,Sql,Result,_}:... ) {
if( !get_playersnum( ) ) return;
new message[ 256 ];
switch( type ) {
case NORMAL: message[0] = 0x01;
case GREEN: message[0] = 0x04;
default: message[0] = 0x03;
}
vformat( message[ 1 ], 251, szMessage, 4 );
message[ 192 ] = '^0';
replace_all( message, 191, "\YEL", "^1" );
replace_all( message, 191, "\GRN", "^4" );
replace_all( message, 191, "\TEM", "^3" );
new iTeam, ColorChange, index, MSG_Type;
if( id ) {
MSG_Type = MSG_ONE_UNRELIABLE;
index = id;
} else {
index = CC_FindPlayer();
MSG_Type = MSG_BROADCAST;
}
iTeam = get_user_team( index );
ColorChange = CC_ColorSelection(index, MSG_Type, type);
CC_ShowColorMessage(index, MSG_Type, message);
if( ColorChange )
CC_Team_Info(index, MSG_Type, TeamName[iTeam]);
}
CC_ShowColorMessage( id, type, message[] ) {
message_begin( type, g_iMsgSayText, _, id );
write_byte( id );
write_string( message );
message_end( );
}
CC_Team_Info( id, type, team[] ) {
message_begin( type, g_iMsgTeamInfo, _, id );
write_byte( id );
write_string( team );
message_end( );
return 1;
}
CC_ColorSelection( index, type, Color:Type ) {
switch( Type ) {
case RED: return CC_Team_Info( index, type, TeamName[ 1 ] );
case BLUE: return CC_Team_Info( index, type, TeamName[ 2 ] );
}
return 0;
}
CC_FindPlayer( ) {
for( new i = 1; i <= g_iMaxplayers; i++ )
if( g_bConnected[ i ] )
return i;
return -1;
}
Silnik coda tu masz klasy itp:
Spoiler
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <nvault>
#define PLUGIN "Call of Duty: MW Mod"
#define VERSION "1.0-3"
#define AUTHOR "QTM_Peyote"
#define MAX_WIELKOSC_NAZWY 32
#define MAX_WIELKOSC_OPISU 256
#define MAX_ILOSC_PERKOW 120
#define MAX_ILOSC_KLAS 100
#define STANDARDOWA_SZYBKOSC 250.0
#define ZADANIE_POKAZ_INFORMACJE 672
#define ZADANIE_POKAZ_REKLAME 768
#define ZADANIE_USTAW_SZYBKOSC 832
new const maxAmmo[31] = {0, 52, 0, 90, 1, 31, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 31, 90, 120,
90, 2, 35, 90, 90,0, 100};
new const co_ile[] = { 1, 4, 8, 16, 24, 50, 100 } // Wlasnie tutaj zmieniamy co ile maja rosnac punkty.
new szybkosc_rozdania[33];
new MsgScreenfade;
new vault;
new SyncHudObj, SyncHudObj2;
new cvar_doswiadczenie_za_zabojstwo,
cvar_doswiadczenie_za_obrazenia,
cvar_doswiadczenie_za_wygrana,
cvar_typ_zapisu,
cvar_limit_poziomu,
cvar_proporcja_poziomu,
cvar_blokada_broni;
new perk_zmieniony,
klasa_zmieniona;
new nazwy_perkow[MAX_ILOSC_PERKOW+1][MAX_WIELKOSC_NAZWY+1],
opisy_perkow[MAX_ILOSC_PERKOW+1][MAX_WIELKOSC_OPISU+1],
max_wartosci_perkow[MAX_ILOSC_PERKOW+1],
min_wartosci_perkow[MAX_ILOSC_PERKOW+1],
pluginy_perkow[MAX_ILOSC_PERKOW+1],
ilosc_perkow;
new nazwa_gracza[33][64],
klasa_gracza[33],
nowa_klasa_gracza[33],
poziom_gracza[33],
doswiadczenie_gracza[33],
perk_gracza[33],
wartosc_perku_gracza[33];
new Float:maksymalne_zdrowie_gracza[33],
Float:szybkosc_gracza[33],
Float:redukcja_obrazen_gracza[33];
new punkty_gracza[33],
zdrowie_gracza[33],
inteligencja_gracza[33],
wytrzymalosc_gracza[33],
kondycja_gracza[33];
new bool:gracz_ma_tarcze[33],
bool:gracz_ma_noktowizor[33];
new bonusowe_bronie_gracza[33],
bonusowe_zdrowie_gracza[33],
bonusowa_inteligencja_gracza[33],
bonusowa_wytrzymalosc_gracza[33],
bonusowa_kondycja_gracza[33];
new bronie_klasy[MAX_ILOSC_KLAS+1],
zdrowie_klas[MAX_ILOSC_KLAS+1],
kondycja_klas[MAX_ILOSC_KLAS+1],
inteligencja_klas[MAX_ILOSC_KLAS+1],
wytrzymalosc_klas[MAX_ILOSC_KLAS+1],
nazwy_klas[MAX_ILOSC_KLAS+1][MAX_WIELKOSC_NAZWY+1],
opisy_klas[MAX_ILOSC_KLAS+1][MAX_WIELKOSC_OPISU+1],
pluginy_klas[MAX_ILOSC_KLAS+1],
ilosc_klas;
new bronie_druzyny[] = {0, 1<<CSW_GLOCK18, 1<<CSW_USP},
bronie_dozwolone = 1<<CSW_KNIFE | 1<<CSW_C4;
new bool:freezetime = true;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
cvar_doswiadczenie_za_zabojstwo = register_cvar("cod_killxp", "10");
cvar_doswiadczenie_za_obrazenia = register_cvar("cod_damagexp", "1"); // ilosc doswiadczenia za 20 obrazen
cvar_doswiadczenie_za_wygrana = register_cvar("cod_winxp", "50");
cvar_typ_zapisu = register_cvar("cod_savetype", "2"); // 1-Nick; 2-SID dla Steam; 3-IP
cvar_limit_poziomu = register_cvar("cod_maxlevel", "200");
cvar_proporcja_poziomu = register_cvar("cod_levelratio", "35");
cvar_blokada_broni = register_cvar("cod_weaponsblocking", "1");
register_clcmd("say /klasa", "WybierzKlase");
register_clcmd("say /class", "WybierzKlase");
register_clcmd("say /klasy", "OpisKlasy");
register_clcmd("say /classinfo", "OpisKlasy");
register_clcmd("say /perk", "KomendaOpisPerku");
register_clcmd("say /perki", "OpisPerkow");
register_clcmd("say /perks", "OpisPerkow");
register_clcmd("say /item", "Pomoc");
register_clcmd("say /przedmiot", "OpisPerku");
register_clcmd("say /drop", "WyrzucPerk");
register_clcmd("say /wyrzuc", "WyrzucPerk");
register_clcmd("say /reset", "KomendaResetujPunkty");
register_clcmd("say /statystyki", "PrzydzielPunkty");
register_clcmd("say /staty", "PrzydzielPunkty");
register_clcmd("say /pomoc", "Pomoc");
register_clcmd("useperk", "UzyjPerku");
register_clcmd("radio3", "UzyjPerku");
register_clcmd("fullupdate", "BlokujKomende");
register_menucmd(register_menuid("Klasa:"), 1023, "OpisKlasy");
RegisterHam(Ham_TakeDamage, "player", "Obrazenia");
RegisterHam(Ham_TakeDamage, "player", "ObrazeniaPost", 1);
RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
RegisterHam(Ham_Killed, "player", "SmiercGraczaPost", 1);
RegisterHam(Ham_Touch, "armoury_entity", "DotykBroni");
RegisterHam(Ham_Touch, "weapon_shield", "DotykTarczy");
RegisterHam(Ham_Touch, "weaponbox", "DotykBroni");
register_forward(FM_CmdStart, "CmdStart");
register_forward(FM_EmitSound, "EmitSound");
register_message(get_user_msgid("Health"),"MessageHealth");
register_logevent("PoczatekRundy", 2, "1=Round_Start");
register_event("SendAudio", "WygranaTerro" , "a", "2&%!MRAD_terwin");
register_event("SendAudio", "WygranaCT", "a", "2&%!MRAD_ctwin");
register_event("CurWeapon","CurWeapon","be", "1=1");
register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");
vault = nvault_open("CodMod");
MsgScreenfade = get_user_msgid("ScreenFade");
SyncHudObj = CreateHudSyncObj();
SyncHudObj2 = CreateHudSyncObj();
perk_zmieniony = CreateMultiForward("cod_perk_changed", ET_CONTINUE, FP_CELL, FP_CELL, FP_CELL);
klasa_zmieniona = CreateMultiForward("cod_class_changed", ET_CONTINUE, FP_CELL, FP_CELL);
copy(nazwy_perkow[0], MAX_WIELKOSC_NAZWY, "Brak");
copy(opisy_perkow[0], MAX_WIELKOSC_OPISU, "Zabij kogos, aby otrzymac przedmiot");
copy(nazwy_klas[0], MAX_WIELKOSC_NAZWY, "Brak");
set_task(1.0, "plugin_cfg");
}
public plugin_cfg()
{
new lokalizacja_cfg[33];
get_configsdir(lokalizacja_cfg, charsmax(lokalizacja_cfg));
server_cmd("exec %s/codmod.cfg", lokalizacja_cfg);
server_exec();
}
public plugin_precache()
{
precache_sound("QTM_CodMod/select.wav");
precache_sound("QTM_CodMod/start.wav");
precache_sound("QTM_CodMod/start2.wav");
precache_sound("QTM_CodMod/levelup.wav");
}
public plugin_natives()
{
register_native("cod_set_user_xp", "UstawDoswiadczenie", 1);
register_native("cod_set_user_class", "UstawKlase", 1);
register_native("cod_set_user_perk", "UstawPerk", 1);
register_native("cod_set_user_bonus_health", "UstawBonusoweZdrowie", 1);
register_native("cod_set_user_bonus_intelligence", "UstawBonusowaInteligencje", 1);
register_native("cod_set_user_bonus_trim", "UstawBonusowaKondycje", 1);
register_native("cod_set_user_bonus_stamina", "UstawBonusowaWytrzymalosc", 1);
register_native("cod_points_to_health", "PrzydzielZdrowie", 1);
register_native("cod_points_to_intelligence", "PrzydzielInteligencje", 1);
register_native("cod_points_to_trim", "PrzydzielKondycje", 1);
register_native("cod_points_to_stamina", "PrzydzielWytrzymalosc", 1);
register_native("cod_get_user_xp", "PobierzDoswiadczenie", 1);
register_native("cod_get_user_level", "PobierzPoziom", 1);
register_native("cod_get_user_points", "PobierzPunkty", 1);
register_native("cod_get_user_class", "PobierzKlase", 1);
register_native("cod_get_user_perk", "PobierzPerk", 1);
register_native("cod_get_user_health", "PobierzZdrowie", 1);
register_native("cod_get_user_intelligence", "PobierzInteligencje", 1);
register_native("cod_get_user_trim", "PobierzKondycje", 1);
register_native("cod_get_user_stamina", "PobierzWytrzymalosc", 1);
register_native("cod_get_level_xp", "PobierzDoswiadczeniePoziomu", 1);
register_native("cod_get_perkid", "PobierzPerkPrzezNazwe", 1);
register_native("cod_get_perks_num", "PobierzIloscPerkow", 1);
register_native("cod_get_perk_name", "PobierzNazwePerku", 1);
register_native("cod_get_perk_desc", "PobierzOpisPerku", 1);
register_native("cod_get_classid", "PobierzKlasePrzezNazwe", 1);
register_native("cod_get_classes_num", "PobierzIloscKlas", 1);
register_native("cod_get_class_name", "PobierzNazweKlasy", 1);
register_native("cod_get_class_desc", "PobierzOpisKlasy", 1);
register_native("cod_get_class_health", "PobierzZdrowieKlasy", 1);
register_native("cod_get_class_intelligence", "PobierzInteligencjeKlasy", 1);
register_native("cod_get_class_trim", "PobierzKondycjeKlasy", 1);
register_native("cod_get_class_stamina", "PobierzWytrzymaloscKlasy", 1);
register_native("cod_give_weapon", "DajBron", 1);
register_native("cod_take_weapon", "WezBron", 1);
register_native("cod_set_user_shield", "UstawTarcze", 1);
register_native("cod_set_user_nightvision", "UstawNoktowizor", 1);
register_native("cod_inflict_damage", "ZadajObrazenia", 1);
register_native("cod_register_perk", "ZarejestrujPerk");
register_native("cod_register_class", "ZarejestrujKlase");
}
public CmdStart(id, uc_handle)
{
if(!is_user_alive(id))
return FMRES_IGNORED;
new Float: velocity[3];
pev(id, pev_velocity, velocity);
new Float: speed = vector_length(velocity);
if(szybkosc_gracza[id] > speed*1.8)
set_pev(id, pev_flTimeStepSound, 300);
return FMRES_IGNORED;
}
public Odrodzenie(id)
{
if(!task_exists(id+ZADANIE_POKAZ_INFORMACJE))
set_task(0.1, "PokazInformacje", id+ZADANIE_POKAZ_INFORMACJE, _, _, "b");
if(nowa_klasa_gracza[id])
UstawNowaKlase(id);
if(!klasa_gracza[id])
{
WybierzKlase(id);
return PLUGIN_CONTINUE;
}
DajBronie(id);
ZastosujAtrybuty(id);
if(punkty_gracza[id] > 0)
PrzydzielPunkty(id);
return PLUGIN_CONTINUE;
}
public UstawNowaKlase(id)
{
new ret;
new forward_handle = CreateOneForward(pluginy_klas[klasa_gracza[id]], "cod_class_disabled", FP_CELL, FP_CELL);
ExecuteForward(forward_handle, ret, id, klasa_gracza[id]);
DestroyForward(forward_handle);
forward_handle = CreateOneForward(pluginy_klas[nowa_klasa_gracza[id]], "cod_class_enabled", FP_CELL, FP_CELL);
ExecuteForward(forward_handle, ret, id, nowa_klasa_gracza[id]);
DestroyForward(forward_handle);
if(ret == 4)
{
klasa_gracza[id] = 0;
return PLUGIN_CONTINUE;
}
ExecuteForward(klasa_zmieniona, ret, id, klasa_gracza[id]);
if(ret == 4)
{
klasa_gracza[id] = 0;
return PLUGIN_CONTINUE;
}
klasa_gracza[id] = nowa_klasa_gracza[id];
nowa_klasa_gracza[id] = 0;
UstawPerk(id, perk_gracza[id], wartosc_perku_gracza[id], 0);
WczytajDane(id, klasa_gracza[id]);
return PLUGIN_CONTINUE;
}
public DajBronie(id)
{
for(new i=1; i < 32; i++)
{
if((1<<i) & (bronie_klasy[klasa_gracza[id]] | bonusowe_bronie_gracza[id]))
{
new weaponname[22];
get_weaponname(i, weaponname, 21);
fm_give_item(id, weaponname);
}
}
if(gracz_ma_tarcze[id])
fm_give_item(id, "weapon_shield");
if(gracz_ma_noktowizor[id])
cs_set_user_nvg(id, 1);
new weapons[32];
new weaponsnum;
get_user_weapons(id, weapons, weaponsnum);
for(new i=0; i<weaponsnum; i++)
if(is_user_alive(id))
if(maxAmmo[weapons[i]] > 0)
cs_set_user_bpammo(id, weapons[i], maxAmmo[weapons[i]]);
}
public ZastosujAtrybuty(id)
{
redukcja_obrazen_gracza[id] = 0.7*(1.0-floatpower(1.1, -0.112311341*PobierzWytrzymalosc(id, 1, 1, 1)));
maksymalne_zdrowie_gracza[id] = 100.0+PobierzZdrowie(id, 1, 1, 1);
szybkosc_gracza[id] = STANDARDOWA_SZYBKOSC+PobierzKondycje(id, 1, 1, 1)*1.3;
set_pev(id, pev_health, maksymalne_zdrowie_gracza[id]);
}
public PoczatekRundy()
{
freezetime = false;
for(new id=0;id<=32;id++)
{
if(!is_user_alive(id))
continue;
Display_Fade(id, 1<<9, 1<<9, 1<<12, 0, 255, 70, 100);
set_task(0.1, "UstawSzybkosc", id+ZADANIE_USTAW_SZYBKOSC);
switch(get_user_team(id))
{
case 1: client_cmd(id, "spk QTM_CodMod/start2");
case 2: client_cmd(id, "spk QTM_CodMod/start");
}
}
}
public NowaRunda()
freezetime = true;
public Obrazenia(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_alive(idattacker))
return HAM_IGNORED;
if(get_user_team(this) == get_user_team(idattacker))
return HAM_IGNORED;
if(get_user_health(this) <= 1)
return HAM_IGNORED;
SetHamParamFloat(4, damage*(1.0-redukcja_obrazen_gracza[this]));
return HAM_IGNORED;
}
public ObrazeniaPost(id, idinflictor, attacker, Float:damage, damagebits)
{
if(!is_user_connected(attacker) || !klasa_gracza[attacker])
return HAM_IGNORED;
if(get_user_team(id) != get_user_team(attacker))
{
new doswiadczenie_za_obrazenia = get_pcvar_num(cvar_doswiadczenie_za_obrazenia);
while(damage>20)
{
damage -= 20;
doswiadczenie_gracza[attacker] += doswiadczenie_za_obrazenia;
}
}
SprawdzPoziom(attacker);
return HAM_IGNORED;
}
public SmiercGraczaPost(id, attacker, shouldgib)
{
if(!is_user_connected(attacker))
return HAM_IGNORED;
if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker])
{
new doswiadczenie_za_zabojstwo = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
new nowe_doswiadczenie = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
if(poziom_gracza[id] > poziom_gracza[attacker])
nowe_doswiadczenie += (poziom_gracza[id]-poziom_gracza[attacker])*(doswiadczenie_za_zabojstwo/10);
if(!perk_gracza[attacker])
UstawPerk(attacker, -1, -1, 1);
doswiadczenie_gracza[attacker] += nowe_doswiadczenie;
}
SprawdzPoziom(attacker);
return HAM_IGNORED;
}
public MessageHealth(msg_id, msg_dest, msg_entity)
{
static health;
health = get_msg_arg_int(1);
if (health < 256) return;
if (!(health % 256))
set_pev(msg_entity, pev_health, pev(msg_entity, pev_health)-1);
set_msg_arg_int(1, get_msg_argtype(1), 255);
}
public client_authorized(id)
{
UsunUmiejetnosci(id);
get_user_name(id, nazwa_gracza[id], 63);
UsunZadania(id);
set_task(10.0, "PokazReklame", id+ZADANIE_POKAZ_REKLAME);
}
public client_disconnect(id)
{
ZapiszDane(id);
UsunUmiejetnosci(id);
UsunZadania(id);
}
public UsunUmiejetnosci(id)
{
nowa_klasa_gracza[id] = 0;
UstawNowaKlase(id);
klasa_gracza[id] = 0;
poziom_gracza[id] = 0;
doswiadczenie_gracza[id] = 0;
punkty_gracza[id] = 0;
zdrowie_gracza[id] = 0;
inteligencja_gracza[id] = 0;
wytrzymalosc_gracza[id] = 0;
kondycja_gracza[id] = 0;
bonusowe_zdrowie_gracza[id] = 0;
bonusowa_wytrzymalosc_gracza[id] = 0;
bonusowa_inteligencja_gracza[id] = 0;
bonusowa_kondycja_gracza[id] = 0;
maksymalne_zdrowie_gracza[id] = 0.0;
szybkosc_gracza[id] = 0.0;
UstawPerk(id, 0, 0, 0);
}
public UsunZadania(id)
{
remove_task(id+ZADANIE_POKAZ_INFORMACJE);
remove_task(id+ZADANIE_POKAZ_REKLAME);
remove_task(id+ZADANIE_USTAW_SZYBKOSC);
}
public WygranaTerro()
WygranaRunda("TERRORIST");
public WygranaCT()
WygranaRunda("CT");
public WygranaRunda(const Team[])
{
new Players[32], playerCount, id;
get_players(Players, playerCount, "aeh", Team);
new doswiadczenie_za_wygrana = get_pcvar_num(cvar_doswiadczenie_za_wygrana);
if(get_playersnum() < 3)
return;
for (new i=0; i<playerCount; i++)
{
id = Players[i];
if(!klasa_gracza[id])
continue;
doswiadczenie_gracza[id] += doswiadczenie_za_wygrana;
client_print(id, print_chat, "[Deathrun] Dostales %i doswiadczenia za wygrana runde.", doswiadczenie_za_wygrana);
SprawdzPoziom(id);
}
}
public KomendaOpisPerku(id)
OpisPerku(id, perk_gracza[id], wartosc_perku_gracza[id]);
public OpisPerku(id, perk, wartosc)
{
new opis_perku[MAX_WIELKOSC_OPISU];
new losowa_wartosc[15];
if(wartosc > -1)
num_to_str(wartosc, losowa_wartosc, 14);
else
format(losowa_wartosc, charsmax(losowa_wartosc), "%i-%i", min_wartosci_perkow[perk], max_wartosci_perkow[perk]);
format(opis_perku, charsmax(opis_perku), opisy_perkow[perk]);
replace_all(opis_perku, charsmax(opis_perku), "LW", losowa_wartosc);
client_print(id, print_chat, "Perk: %s.", nazwy_perkow[perk]);
client_print(id, print_chat, "Opis: %s.", opis_perku);
}
public OpisPerkow(id)
{
new menu = menu_create("Wybierz Perk:", "OpisPerkow_Handle");
for(new i=1; i <= ilosc_perkow; i++)
menu_additem(menu, nazwy_perkow[i]);
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu);
client_cmd(id, "spk QTM_CodMod/select");
}
public OpisPerkow_Handle(id, menu, item)
{
if(item++ == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
OpisPerku(id, item, -1);
OpisPerkow(id);
return PLUGIN_CONTINUE;
}
public OpisKlasy(id)
{
new menu = menu_create("Wybierz klase:", "OpisKlasy_Handle");
for(new i=1; i <= ilosc_klas; i++)
menu_additem(menu, nazwy_klas[i]);
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu);
client_cmd(id, "spk QTM_CodMod/select");
}
public OpisKlasy_Handle(id, menu, item)
{
client_cmd(id, "spk QTM_CodMod/select");
if(item++ == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
new bronie[320];
for(new i=1, n=1; i <= 32; i++)
{
if((1<<i) & bronie_klasy[item])
{
new weaponname[22];
get_weaponname(i, weaponname, 21);
replace_all(weaponname, 21, "weapon_", " ");
if(n > 1)
add(bronie, charsmax(bronie), ",");
add(bronie, charsmax(bronie), weaponname);
n++;
}
}
new opis[416+MAX_WIELKOSC_OPISU];
format(opis, charsmax(opis), "\yKlasa: \w%s^n\yInteligencja: \w%i^n\yZdrowie: \w%i^n\yWytrzymalosc: \w%i^n\yKondycja: \w%i^n\yBronie:\w%s^n\yDodatkowy opis: \w%s^n%s", nazwy_klas[item], inteligencja_klas[item], zdrowie_klas[item], wytrzymalosc_klas[item], kondycja_klas[item], bronie, opisy_klas[item], opisy_klas[item][79]);
show_menu(id, 1023, opis);
return PLUGIN_CONTINUE;
}
public WybierzKlase(id)
{
new menu = menu_create("Wybierz klase:", "WybierzKlase_Handle");
new klasa[50];
for(new i=1; i <= ilosc_klas; i++)
{
WczytajDane(id, i);
format(klasa, charsmax(klasa), "%s \yPoziom: %i", nazwy_klas[i], poziom_gracza[id]);
menu_additem(menu, klasa);
}
WczytajDane(id, klasa_gracza[id]);
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu);
client_cmd(id, "spk QTM_CodMod/select");
}
public WybierzKlase_Handle(id, menu, item)
{
client_cmd(id, "spk QTM_CodMod/select");
if(item++ == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
if(item == klasa_gracza[id] && !nowa_klasa_gracza[id])
return PLUGIN_CONTINUE;
nowa_klasa_gracza[id] = item;
if(klasa_gracza[id])
client_print(id, print_chat, "[Deathrun] Klasa zostanie zmieniona w nastepnej rundzie.");
else
{
UstawNowaKlase(id);
DajBronie(id);
ZastosujAtrybuty(id);
}
return PLUGIN_CONTINUE;
}
public PrzydzielPunkty(id)
{
new szybkosc[60];
new inteligencja[65];
new zdrowie[60];
new wytrzymalosc[60];
new kondycja[60];
new tytul[25];
format(szybkosc, charsmax(szybkosc), "Ile dodawac: \r%d \y(Ile pkt dodac do statow)", co_ile[szybkosc_rozdania[id]]);
format(inteligencja, charsmax(inteligencja), "Inteligencja: \r%i \y(Zwieksza sile perkow i umiejetnosci klasy)", PobierzInteligencje(id, 1, 1, 1));
format(zdrowie, charsmax(zdrowie), "Zdrowie: \r%i \y(Zwieksza zdrowie)", PobierzZdrowie(id, 1, 1, 1));
format(wytrzymalosc, charsmax(wytrzymalosc), "Wytrzymalosc: \r%i \y(Zmniejsza obrazenia)", PobierzWytrzymalosc(id, 1, 1, 1));
format(kondycja, charsmax(kondycja), "Kondycja: \r%i \y(Zwieksza tempo chodu)", PobierzKondycje(id, 1, 1, 1));
format(tytul, charsmax(tytul), "Przydziel Punkty(%i):", punkty_gracza[id]);
new menu = menu_create(tytul, "PrzydzielPunkty_Handler");
menu_additem(menu, szybkosc);
menu_addblank(menu, 0);
menu_additem(menu, inteligencja);
menu_additem(menu, zdrowie);
menu_additem(menu, wytrzymalosc);
menu_additem(menu, kondycja);
menu_setprop(menu, MPROP_EXIT, 0);
menu_display(id, menu);
}
public PrzydzielPunkty_Handler(id, menu, item) {
client_cmd(id, "spk QTM_CodMod/select");
if(item == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
if(punkty_gracza[id] < 1)
return PLUGIN_CONTINUE;
new limit_poziomu = get_pcvar_num(cvar_limit_poziomu);
new ilosc = (co_ile[szybkosc_rozdania[id]] > punkty_gracza[id]) ? punkty_gracza[id] : co_ile[szybkosc_rozdania[id]]
switch(item) {
case 0: {
if(szybkosc_rozdania[id] < charsmax(co_ile)) szybkosc_rozdania[id]++;
else szybkosc_rozdania[id] = 0;
}
case 1: {
if(inteligencja_gracza[id]+ilosc <= limit_poziomu/2) {
inteligencja_gracza[id]+=ilosc;
punkty_gracza[id]-=ilosc;
} else client_print(id, print_chat, "[Deathrun] Maxymalny poziom inteligencji osiagniety");
}
case 2: {
if(zdrowie_gracza[id]+ilosc <= limit_poziomu/2) {
zdrowie_gracza[id]+=ilosc;
punkty_gracza[id]-=ilosc;
} else client_print(id, print_chat, "[Deathrun] Maxymalny poziom sily osiagniety");
}
case 3: {
if(wytrzymalosc_gracza[id]+ilosc <= limit_poziomu/2) {
wytrzymalosc_gracza[id]+=ilosc;
punkty_gracza[id]-=ilosc;
} else client_print(id, print_chat, "[Deathrun] Maxymalny poziom zrecznosci osiagniety");
}
case 4: {
if(kondycja_gracza[id]+ilosc <= limit_poziomu/2) {
kondycja_gracza[id]+=ilosc;
punkty_gracza[id]-=ilosc;
} else client_print(id, print_chat, "[Deathrun] Maxymalny poziom kondycji osiagniety");
}
}
if(punkty_gracza[id] > 0)
PrzydzielPunkty(id);
return PLUGIN_CONTINUE;
}
public KomendaResetujPunkty(id)
{
client_print(id, print_chat, "[Deathrun] Umiejetnosci zostana zresetowane.");
client_cmd(id, "spk QTM_CodMod/select");
ResetujPunkty(id);
}
public ResetujPunkty(id)
{
punkty_gracza[id] = (poziom_gracza[id]-1)*2;
inteligencja_gracza[id] = 0;
zdrowie_gracza[id] = 0;
kondycja_gracza[id] = 0;
wytrzymalosc_gracza[id] = 0;
if(punkty_gracza[id])
PrzydzielPunkty(id);
}
public CurWeapon(id)
{
if(!is_user_connected(id))
return;
new team = get_user_team(id);
if(team > 2)
return;
new bron = read_data(2);
new bronie = (bronie_klasy[klasa_gracza[id]] | bonusowe_bronie_gracza[id] | bronie_druzyny[team] | bronie_dozwolone);
if(!(1<<bron & bronie))
{
new weaponname[22];
get_weaponname(bron, weaponname, 21);
ham_strip_weapon(id, weaponname);
}
if(cs_get_user_shield(id) && !gracz_ma_tarcze[id])
engclient_cmd(id, "drop", "weapon_shield");
UstawSzybkosc(id);
}
public EmitSound(id, iChannel, szSound[], Float:fVol, Float:fAttn, iFlags, iPitch )
{
if(!is_user_alive(id))
return FMRES_IGNORED;
if(equal(szSound, "common/wpn_denyselect.wav"))
{
new forward_handle = CreateOneForward(pluginy_klas[klasa_gracza[id]], "cod_class_skill_used", FP_CELL);
ExecuteForward(forward_handle, id, id);
DestroyForward(forward_handle);
return FMRES_SUPERCEDE;
}
if(equal(szSound, "items/ammopickup2.wav"))
{
cs_set_user_armor(id, 0, CS_ARMOR_NONE);
return FMRES_SUPERCEDE;
}
if(equal(szSound, "items/equip_nvg.wav") && !gracz_ma_noktowizor[id])
{
cs_set_user_nvg(id, 0);
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
public UzyjPerku(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED;
new forward_handle = CreateOneForward(pluginy_perkow[perk_gracza[id]], "cod_perk_used", FP_CELL);
ExecuteForward(forward_handle, id, id);
DestroyForward(forward_handle);
return PLUGIN_HANDLED;
}
public ZapiszDane(id)
{
if(!klasa_gracza[id])
return PLUGIN_CONTINUE;
new vaultkey[128],vaultdata[256], identyfikator[64];
format(vaultdata, charsmax(vaultdata),"#%i#%i#%i#%i#%i#%i", doswiadczenie_gracza[id], poziom_gracza[id], inteligencja_gracza[id], zdrowie_gracza[id], wytrzymalosc_gracza[id], kondycja_gracza[id]);
new typ_zapisu = get_pcvar_num(cvar_typ_zapisu);
switch(typ_zapisu)
{
case 1: copy(identyfikator, charsmax(identyfikator), nazwa_gracza[id]);
case 2: get_user_authid(id, identyfikator, charsmax(identyfikator));
case 3: get_user_ip(id, identyfikator, charsmax(identyfikator));
}
format(vaultkey, charsmax(vaultkey),"%s-%s-%i-cod", identyfikator, nazwy_klas[klasa_gracza[id]], typ_zapisu);
nvault_set(vault,vaultkey,vaultdata);
return PLUGIN_CONTINUE;
}
public WczytajDane(id, klasa)
{
new vaultkey[128],vaultdata[256], identyfikator[64];
new typ_zapisu = get_pcvar_num(cvar_typ_zapisu);
switch(typ_zapisu)
{
case 1: copy(identyfikator, charsmax(identyfikator), nazwa_gracza[id]);
case 2: get_user_authid(id, identyfikator, charsmax(identyfikator));
case 3: get_user_ip(id, identyfikator, charsmax(identyfikator));
}
format(vaultkey, charsmax(vaultkey),"%s-%s-%i-cod", identyfikator, nazwy_klas[klasa], typ_zapisu);
if(!nvault_get(vault,vaultkey,vaultdata,255)) // Jezeli nie ma danych gracza sprawdza stary zapis.
{
format(vaultkey, charsmax(vaultkey), "%s-%i-cod", nazwa_gracza[id], klasa);
nvault_get(vault,vaultkey,vaultdata,255);
}
replace_all(vaultdata, 255, "#", " ");
new danegracza[6][32];
parse(vaultdata, danegracza[0], 31, danegracza[1], 31, danegracza[2], 31, danegracza[3], 31, danegracza[4], 31, danegracza[5], 31);
doswiadczenie_gracza[id] = str_to_num(danegracza[0]);
poziom_gracza[id] = str_to_num(danegracza[1])>0?str_to_num(danegracza[1]):1;
inteligencja_gracza[id] = str_to_num(danegracza[2]);
zdrowie_gracza[id] = str_to_num(danegracza[3]);
wytrzymalosc_gracza[id] = str_to_num(danegracza[4]);
kondycja_gracza[id] = str_to_num(danegracza[5]);
punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id];
return PLUGIN_CONTINUE;
}
public WyrzucPerk(id)
{
if(perk_gracza[id])
{
client_print(id, print_chat, "[Deathrun] Wyrzuciles %s.", nazwy_perkow[perk_gracza[id]]);
UstawPerk(id, 0, 0, 0);
}
else
client_print(id, print_chat, "[Deathrun] Nie masz zadnego perku.");
}
public SprawdzPoziom(id)
{
if(!is_user_connected(id))
return;
new limit_poziomu = get_pcvar_num(cvar_limit_poziomu);
new bool:zdobyl_poziom = false, bool:stracil_poziom = false;
while(doswiadczenie_gracza[id] >= PobierzDoswiadczeniePoziomu(poziom_gracza[id]) && poziom_gracza[id] < limit_poziomu)
{
poziom_gracza[id]++;
punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id];
zdobyl_poziom = true;
}
while(doswiadczenie_gracza[id] < PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1))
{
poziom_gracza[id]--;
stracil_poziom = true;
}
if(poziom_gracza[id] > limit_poziomu)
{
poziom_gracza[id] = limit_poziomu;
ResetujPunkty(id);
}
if(stracil_poziom)
{
ResetujPunkty(id);
set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0);
ShowSyncHudMsg(id, SyncHudObj2,"Spadles do %i poziomu!", poziom_gracza[id]);
}
else if(zdobyl_poziom)
{
punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id];
set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0);
ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]);
client_cmd(id, "spk QTM_CodMod/levelup");
}
ZapiszDane(id);
}
public PokazInformacje(id)
{
id -= ZADANIE_POKAZ_INFORMACJE;
if(!is_user_connected(id))
{
remove_task(id+ZADANIE_POKAZ_INFORMACJE);
return PLUGIN_CONTINUE;
}
if(!is_user_alive(id))
{
new target = pev(id, pev_iuser2);
if(!target)
return PLUGIN_CONTINUE;
set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 0.3, 0.0, 0.0, 2);
ShowSyncHudMsg(id, SyncHudObj, "Forum : SkillConnect.eu^nPostac : %s^nEXP : %i / %i^nLevel : %i", nazwy_klas[klasa_gracza[target]], doswiadczenie_gracza[target], PobierzDoswiadczeniePoziomu(poziom_gracza[target]), poziom_gracza[target], nazwy_perkow[perk_gracza[target]]);
return PLUGIN_CONTINUE;
}
set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0);
ShowSyncHudMsg(id, SyncHudObj, "[Forum : SkillConnect.eu]^n[Postac : %s]^n[EXP : %i / %i]^n[Level : %i]", nazwy_klas[klasa_gracza[id]], doswiadczenie_gracza[id], PobierzDoswiadczeniePoziomu(poziom_gracza[id]), poziom_gracza[id], nazwy_perkow[perk_gracza[id]]);
return PLUGIN_CONTINUE;
}
public PokazReklame(id)
{
id-=ZADANIE_POKAZ_REKLAME;
client_print(id, print_chat, "[Deathrun] Witaj w Modyfikacji Call of Duty stworzonej przez QTM_Peyote");
client_print(id, print_chat, "[Deathrun] W celu uzyskania informacji o komendach napisz /pomoc.");
}
public Pomoc(id)
show_menu(id, 1023, "\y/reset\w - resetuje statystyki^n\y/statystyki\w - wyswietla statystyki^n\y/klasa\w - uruchamia menu wyboru klas^n\y/wyrzuc\w - wyrzuca perk^n\y/perk\w - pokazuje opis twojego perku^n\y/klasy\w - pokazuje opisy klas^n\y+use\w - Uzycie umiejetnosci klasy^n\yradio3\w (standardowo C) lub \yuseperk\w - Uzycie perku", -1, "Pomoc");
public UstawSzybkosc(id)
{
id -= id>32? ZADANIE_USTAW_SZYBKOSC: 0;
if(klasa_gracza[id] && !freezetime)
set_pev(id, pev_maxspeed, szybkosc_gracza[id]);
}
public DotykBroni(weapon, id)
{
if(get_pcvar_num(cvar_blokada_broni) < 1)
return HAM_IGNORED;
if(!is_user_connected(id))
return HAM_IGNORED;
new model[23];
pev(weapon, pev_model, model, 22);
if (pev(weapon, pev_owner) == id || containi(model, "w_backpack") != -1)
return HAM_IGNORED;
return HAM_SUPERCEDE;
}
public DotykTarczy(weapon, id)
{
if(get_pcvar_num(cvar_blokada_broni) < 1)
return HAM_IGNORED;
if(!is_user_connected(id))
return HAM_IGNORED;
if(gracz_ma_tarcze[id])
return HAM_IGNORED;
return HAM_SUPERCEDE;
}
public UstawPerk(id, perk, wartosc, pokaz_info)
{
if(!ilosc_perkow)
return PLUGIN_CONTINUE;
static obroty[33];
if(obroty[id]++ >= 5)
{
UstawPerk(id, 0, 0, 0);
obroty[id] = 0;
return PLUGIN_CONTINUE;
}
perk = (perk == -1)? random_num(1, ilosc_perkow): perk;
wartosc = (wartosc == -1 || min_wartosci_perkow[perk] > wartosc || wartosc > max_wartosci_perkow[perk])? random_num(min_wartosci_perkow[perk], max_wartosci_perkow[perk]): wartosc;
new ret;
new forward_handle = CreateOneForward(pluginy_perkow[perk_gracza[id]], "cod_perk_disabled", FP_CELL, FP_CELL);
ExecuteForward(forward_handle, ret, id, perk);
DestroyForward(forward_handle);
perk_gracza[id] = 0;
forward_handle = CreateOneForward(pluginy_perkow[perk], "cod_perk_enabled", FP_CELL, FP_CELL, FP_CELL);
ExecuteForward(forward_handle, ret, id, wartosc, perk);
DestroyForward(forward_handle);
if(ret == 4)
{
UstawPerk(id, -1, -1, 1);
return PLUGIN_CONTINUE;
}
ExecuteForward(perk_zmieniony, ret, id, perk, wartosc);
if(ret == 4)
{
UstawPerk(id, -1, -1, 1);
return PLUGIN_CONTINUE;
}
perk_gracza[id] = perk;
wartosc_perku_gracza[id] = wartosc;
obroty[id] = 0;
if(pokaz_info && perk_gracza[id])
client_print(id, print_chat, "[Deathrun] Zdobyles %s.", nazwy_perkow[perk_gracza[id]]);
return PLUGIN_CONTINUE;
}
public UstawDoswiadczenie(id, wartosc)
{
doswiadczenie_gracza[id] = wartosc;
SprawdzPoziom(id);
}
public UstawKlase(id, klasa, zmien)
{
nowa_klasa_gracza[id] = klasa;
if(zmien)
{
UstawNowaKlase(id);
DajBronie(id);
ZastosujAtrybuty(id);
}
}
public UstawTarcze(id, wartosc)
{
if((gracz_ma_tarcze[id] = (wartosc > 0)))
fm_give_item(id, "weapon_shield");
}
public UstawNoktowizor(id, wartosc)
{
if((gracz_ma_noktowizor[id] = (wartosc > 0)))
cs_set_user_nvg(id, 1);
}
public DajBron(id, bron)
{
bonusowe_bronie_gracza[id] |= (1<<bron);
new weaponname[22];
get_weaponname(bron, weaponname, 21);
return fm_give_item(id, weaponname);
}
public WezBron(id, bron)
{
bonusowe_bronie_gracza[id] &= ~(1<<bron);
if((1<<bron) & (bronie_dozwolone | bronie_klasy[get_user_team(id)] | bronie_klasy[klasa_gracza[id]]))
return;
new weaponname[22];
get_weaponname(bron, weaponname, 21);
if(!((1<<bron) & (1<<CSW_HEGRENADE | 1<<CSW_SMOKEGRENADE | 1<<CSW_FLASHBANG)))
engclient_cmd(id, "drop", weaponname);
}
public UstawBonusoweZdrowie(id, wartosc)
bonusowe_zdrowie_gracza[id] = wartosc;
public UstawBonusowaInteligencje(id, wartosc)
bonusowa_inteligencja_gracza[id] = wartosc;
public UstawBonusowaKondycje(id, wartosc)
bonusowa_kondycja_gracza[id] = wartosc;
public UstawBonusowaWytrzymalosc(id, wartosc)
bonusowa_wytrzymalosc_gracza[id] = wartosc;
public PrzydzielZdrowie(id, wartosc)
{
new max_statystyka = get_pcvar_num(cvar_limit_poziomu)/2;
wartosc = min(min(punkty_gracza[id], wartosc), max_statystyka-zdrowie_gracza[id]);
punkty_gracza[id] -= wartosc;
zdrowie_gracza[id] += wartosc;
}
public PrzydzielInteligencje(id, wartosc)
{
new max_statystyka = get_pcvar_num(cvar_limit_poziomu)/2;
wartosc = min(min(punkty_gracza[id], wartosc), max_statystyka-inteligencja_gracza[id]);
punkty_gracza[id] -= wartosc;
inteligencja_gracza[id] += wartosc;
}
public PrzydzielKondycje(id, wartosc)
{
new max_statystyka = get_pcvar_num(cvar_limit_poziomu)/2;
wartosc = min(min(punkty_gracza[id], wartosc), max_statystyka-kondycja_gracza[id]);
punkty_gracza[id] -= wartosc;
kondycja_gracza[id] += wartosc;
}
public PrzydzielWytrzymalosc(id, wartosc)
{
new max_statystyka = get_pcvar_num(cvar_limit_poziomu)/2;
wartosc = min(min(punkty_gracza[id], wartosc), max_statystyka-wytrzymalosc_gracza[id]);
punkty_gracza[id] -= wartosc;
wytrzymalosc_gracza[id] += wartosc;
}
public PobierzPerk(id, &wartosc)
{
wartosc = wartosc_perku_gracza[id];
return perk_gracza[id];
}
public PobierzIloscPerkow()
return ilosc_perkow;
public PobierzNazwePerku(perk, Return[], len)
{
if(perk <= ilosc_perkow)
{
param_convert(2);
copy(Return, len, nazwy_perkow[perk]);
}
}
public PobierzOpisPerku(perk, Return[], len)
{
if(perk <= ilosc_perkow)
{
param_convert(2);
copy(Return, len, opisy_perkow[perk]);
}
}
public PobierzPerkPrzezNazwe(const nazwa[])
{
param_convert(1);
for(new i=1; i <= ilosc_perkow; i++)
if(equal(nazwa, nazwy_perkow[i]))
return i;
return 0;
}
public PobierzDoswiadczeniePoziomu(poziom)
return power(poziom, 2)*get_pcvar_num(cvar_proporcja_poziomu);
public PobierzDoswiadczenie(id)
return doswiadczenie_gracza[id];
public PobierzPunkty(id)
return punkty_gracza[id];
public PobierzPoziom(id)
return poziom_gracza[id];
public PobierzZdrowie(id, zdrowie_zdobyte, zdrowie_klasy, zdrowie_bonusowe)
{
new zdrowie;
if(zdrowie_zdobyte)
zdrowie += zdrowie_gracza[id];
if(zdrowie_bonusowe)
zdrowie += bonusowe_zdrowie_gracza[id];
if(zdrowie_klasy)
zdrowie += zdrowie_klas[klasa_gracza[id]];
return zdrowie;
}
public PobierzInteligencje(id, inteligencja_zdobyta, inteligencja_klasy, inteligencja_bonusowa)
{
new inteligencja;
if(inteligencja_zdobyta)
inteligencja += inteligencja_gracza[id];
if(inteligencja_bonusowa)
inteligencja += bonusowa_inteligencja_gracza[id];
if(inteligencja_klasy)
inteligencja += inteligencja_klas[klasa_gracza[id]];
return inteligencja;
}
public PobierzKondycje(id, kondycja_zdobyta, kondycja_klasy, kondycja_bonusowa)
{
new kondycja;
if(kondycja_zdobyta)
kondycja += kondycja_gracza[id];
if(kondycja_bonusowa)
kondycja += bonusowa_kondycja_gracza[id];
if(kondycja_klasy)
kondycja += kondycja_klas[klasa_gracza[id]];
return kondycja;
}
public PobierzWytrzymalosc(id, wytrzymalosc_zdobyta, wytrzymalosc_klasy, wytrzymalosc_bonusowa)
{
new wytrzymalosc;
if(wytrzymalosc_zdobyta)
wytrzymalosc += wytrzymalosc_gracza[id];
if(wytrzymalosc_bonusowa)
wytrzymalosc += bonusowa_wytrzymalosc_gracza[id];
if(wytrzymalosc_klasy)
wytrzymalosc += wytrzymalosc_klas[klasa_gracza[id]];
return wytrzymalosc;
}
public PobierzKlase(id)
return klasa_gracza[id];
public PobierzIloscKlas()
return ilosc_klas;
public PobierzNazweKlasy(klasa, Return[], len)
{
if(klasa <= ilosc_klas)
{
param_convert(2);
copy(Return, len, nazwy_klas[klasa]);
}
}
public PobierzOpisKlasy(klasa, Return[], len)
{
if(klasa <= ilosc_klas)
{
param_convert(2);
copy(Return, len, opisy_klas[klasa]);
}
}
public PobierzKlasePrzezNazwe(const nazwa[])
{
param_convert(1);
for(new i=1; i <= ilosc_klas; i++)
if(equal(nazwa, nazwy_klas[i]))
return i;
return 0;
}
public PobierzZdrowieKlasy(klasa)
{
if(klasa <= ilosc_klas)
return zdrowie_klas[klasa];
return -1;
}
public PobierzInteligencjeKlasy(klasa)
{
if(klasa <= ilosc_klas)
return inteligencja_klas[klasa];
return -1;
}
public PobierzKondycjeKlasy(klasa)
{
if(klasa <= ilosc_klas)
return kondycja_klas[klasa];
return -1;
}
public PobierzWytrzymaloscKlasy(klasa)
{
if(klasa <= ilosc_klas)
return wytrzymalosc_klas[klasa];
return -1;
}
public ZadajObrazenia(atakujacy, ofiara, Float:obrazenia, Float:czynnik_inteligencji, byt_uszkadzajacy, dodatkowe_flagi)
ExecuteHam(Ham_TakeDamage, ofiara, byt_uszkadzajacy, atakujacy, obrazenia+PobierzInteligencje(atakujacy, 1, 1, 1)*czynnik_inteligencji, (1<<31) | dodatkowe_flagi);
public ZarejestrujPerk(plugin, params)
{
if(params != 4)
return PLUGIN_CONTINUE;
if(++ilosc_perkow > MAX_ILOSC_PERKOW)
return -1;
pluginy_perkow[ilosc_perkow] = plugin;
get_string(1, nazwy_perkow[ilosc_perkow], MAX_WIELKOSC_NAZWY);
get_string(2, opisy_perkow[ilosc_perkow], MAX_WIELKOSC_OPISU);
min_wartosci_perkow[ilosc_perkow] = get_param(3);
max_wartosci_perkow[ilosc_perkow] = get_param(4);
return ilosc_perkow;
}
public ZarejestrujKlase(plugin, params)
{
if(params != 7)
return PLUGIN_CONTINUE;
if(++ilosc_klas > MAX_ILOSC_KLAS)
return -1;
pluginy_klas[ilosc_klas] = plugin;
get_string(1, nazwy_klas[ilosc_klas], MAX_WIELKOSC_NAZWY);
get_string(2, opisy_klas[ilosc_klas], MAX_WIELKOSC_OPISU);
bronie_klasy[ilosc_klas] = get_param(3);
zdrowie_klas[ilosc_klas] = get_param(4);
kondycja_klas[ilosc_klas] = get_param(5);
inteligencja_klas[ilosc_klas] = get_param(6);
wytrzymalosc_klas[ilosc_klas] = get_param(7);
return ilosc_klas;
}
stock ham_strip_weapon(id, weapon[])
{
if(!equal(weapon, "weapon_", 7) ) return 0
new wId = get_weaponid(weapon)
if(!wId) return 0
new wEnt
while( (wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname", weapon) ) && pev(wEnt, pev_owner) != id) {}
if(!wEnt) return 0
if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon, wEnt)
if(!ExecuteHamB(Ham_RemovePlayerItem, id, wEnt)) return 0
ExecuteHamB(Ham_Item_Kill ,wEnt)
set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wId) )
return 1
}
stock Display_Fade(id,duration,holdtime,fadetype,red,green,blue,alpha)
{
message_begin( MSG_ONE, MsgScreenfade,{0,0,0},id );
write_short( duration ); // Duration of fadeout
write_short( holdtime ); // Hold time of color
write_short( fadetype ); // Fade type
write_byte ( red ); // Red
write_byte ( green ); // Green
write_byte ( blue ); // Blue
write_byte ( alpha ); // Alpha
message_end();
}
stock fm_give_item(index, const item[]) {
if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
return 0;
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item));
if (!pev_valid(ent))
return 0;
new Float:origin[3];
pev(index, pev_origin, origin);
set_pev(ent, pev_origin, origin);
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
dllfunc(DLLFunc_Spawn, ent);
new save = pev(ent, pev_solid);
dllfunc(DLLFunc_Touch, ent, index);
if (pev(ent, pev_solid) != save)
return ent;
engfunc(EngFunc_RemoveEntity, ent);
return -1;
}
public BlokujKomende()
return PLUGIN_HANDLED;
W temacie: [KOSZ] [Problem] DMG Deathreun
20.04.2015 19:14
kolejka:
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta_util>
#include <deathrun_stats>
#define PLUGIN "Kolejka do TT"
#define VERSION "1.0"
#define AUTHOR "DarkGL"
#define dmg(%1,%2) (ArraySize(arKolejka) > 0 && ArrayGetCell(arKolejka,0) == %2 && get_user_team(%1) == 1)
#define dmg2(%1,%2) (ArraySize(arKolejka) > 0 && ArrayGetCell(arKolejka,0) == %1 && get_user_team(%2) == 1)
new Array: arKolejka;
new kolor;
new hud;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
arKolejka = ArrayCreate(1,32);
kolor = register_cvar("kolejka_kolorek", "0 255 0");
register_event("HLTV", "event_RoundStart", "a", "1=0", "2=0");
RegisterHam(Ham_TakeDamage, "player", "HamTakeDamage");
RegisterHam(Ham_Spawn,"player","HamSpawned",1)
register_event("DeathMsg", "DeathMsg", "a", "1=0")
hud = CreateHudSyncObj();
set_task(1.0, "wyswietl",.flags = "b");
}
public DeathMsg(){
new victim = read_data(2)
new iRet = iFind(victim);
if(iRet != -1){
ArrayDeleteItem(arKolejka,iRet);
if(iRet == 0 && ArraySize(arKolejka) > 0 && ArrayGetCell(arKolejka,0) == victim){
ArrayDeleteItem(arKolejka,0);
if(ArraySize(arKolejka) > 0) fm_set_user_rendering(ArrayGetCell(arKolejka,0), kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 40);
}
}
return PLUGIN_HANDLED;
}
public HamSpawned(id){
if(!is_user_alive(id)) return ;
fm_set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 40);
}
public event_RoundStart() {
ArrayClear(arKolejka);
}
public HamTakeDamage(victim, inflictor, attacker)
return (dmg(victim, attacker) || dmg2(victim, attacker) || !is_user_connected(attacker)) ? HAM_IGNORED : HAM_SUPERCEDE;
public fwPlayerFinished(id) {
if( is_user_alive( id ) && cs_get_user_team( id ) == CS_TEAM_CT ){
new iRet = iFind(id);
if(iRet == -1) ArrayPushCell(arKolejka,id);
if(is_user_alive(ArrayGetCell(arKolejka,0))) fm_set_user_rendering(ArrayGetCell(arKolejka,0), kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 40);
else ArrayDeleteItem( arKolejka , 0 );
}
}
public wyswietl() {
new msg[512];
new bool: bNone = true;
new szName[64]
for(new i = 0;i<ArraySize(arKolejka);i++){
if(!is_user_alive(ArrayGetCell(arKolejka,i))){
ArrayDeleteItem(arKolejka,i)
continue;
}
get_user_name(ArrayGetCell(arKolejka,i), szName,charsmax(szName));
formatex(msg, 511, "%s%d. %s^n", msg, i+1, szName);
bNone = false;
}
if(bNone) formatex(msg, 511, "Lista jest pusta");
new color[15], rgb[3][4]; get_pcvar_string(kolor, color, 14);
parse(color, rgb[0], 3, rgb[1], 3, rgb[2], 3);
set_hudmessage(str_to_num(rgb[0]), str_to_num(rgb[1]), str_to_num(rgb[2]), 0.78, 0.3, 0, 6.0, 1.0);
ShowSyncHudMsg(0, hud, "Kolejka:^n%s^n^n", msg);
}
public client_disconnect(id) arClear(id);
public client_connect(id) arClear(id);
arClear(id){
new iRet = iFind(id);
if(iRet == -1) return ;
ArrayDeleteItem(arKolejka,iRet)
}
iFind(id){
for(new i = 0;i<ArraySize(arKolejka);i++){
if(ArrayGetCell(arKolejka,i) == id) return i;
}
return -1;
}
- AMXX.pl: Support AMX Mod X i SourceMod
- → Przeglądanie profilu: Posty: Lylu2
- Regulamin


Dodatki SourceMod



Moja zawartość