SourceMod Moderator
03-14-2017
, 23:17
Random Code Archive
#1
So I've been looking for a place to share code that I've found that's written by other people, but I feel may be useful to others. Nothing posted here has any guarantee to work, but it may prove to be useful to some people. I comb through and ensure nothing malicious has been posted on her.
All code I will/have posted are not indicated to be kept private and were posted publicly on the internet, just in hard places to find
I will continue editing this post to add new finds..
Seems to be some jailbreak plugin running with the warden plugin so wardens can draw markers.
tw_wardenpointers.sp
PHP Code:
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* File: tw_wardenpointers.sp
* Copyright: 2015 Lt.DoomY (tangoworldwide.net)
* Updated: 19/09/2015
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <sourcemod>
#include <cstrike>
#include <sdkhooks>
#include <sdktools>
#include <warden>
#define PLUGIN_VERSION "BETA v1.2"
new g_color_red [ MAXPLAYERS + 1 ];
new g_color_green [ MAXPLAYERS + 1 ];
new g_color_blue [ MAXPLAYERS + 1 ];
new g_color_yellow [ MAXPLAYERS + 1 ];
new const String : RELATIVE_SOUND_PATH [] = "*/buttons/bell1.wav" ;
//lasers!
new g_LightningSprite ;
new g_beamSprite ;
new g_haloSprite ;
public Plugin : myinfo =
{
name = "Warden Pointers" ,
author = "Lt.DoomY" ,
description = "Warden's can place a pointer on the map." ,
version = PLUGIN_VERSION ,
url = "http://tangoworldwide.net"
};
public OnPluginStart ()
{
RegConsoleCmd ( "buyammo1" , Command_Pointer );
HookEvent ( "player_spawn" , Event_Spawn );
}
public OnMapStart ()
{
g_LightningSprite = PrecacheModel ( "lightning/laserbeam.vmt" );
g_beamSprite = PrecacheModel ( "materials/sprites/laser.vmt" );
g_haloSprite = PrecacheModel ( "materials/sprites/halo01.vmt" );
FakePrecacheSound ( RELATIVE_SOUND_PATH );
}
public Action : Event_Spawn ( Handle : event , const String : name [], bool : dontBroadcast )
{
new client = GetClientOfUserId ( GetEventInt ( event , "userid" ));
Clear_vars ( client );
}
public Action : Command_Pointer ( client , args )
{
if( IsClientInGame ( client ))
{
if( warden_iswarden ( client ))
{
PointerMenu ( client );
return Plugin_Handled ;
}
PrintToChat ( client , "\x01 \x04[Pointers]\x02 You must be warden to use pointers." );
}
return Plugin_Continue ;
}
public Action : OnClientSayCommand ( client , const String : command [], const String : sArgs [])
{
if( StrEqual ( sArgs , "!wp" , false ) || StrEqual ( sArgs , "/wp" , false ))
{
if( IsClientInGame ( client ))
{
if( warden_iswarden ( client ))
{
PointerMenu ( client );
return Plugin_Handled ;
}
PrintToChat ( client , "\x01 \x04[Pointers]\x02 You must be warden to use pointers." );
}
}
else if ( StrEqual ( sArgs , "!wp red" , false ) || StrEqual ( sArgs , "/wp red" , false ))
{
Checkstatus ( client , 1 )
return Plugin_Handled ;
}
else if ( StrEqual ( sArgs , "!wp green" , false ) || StrEqual ( sArgs , "/wp green" , false ))
{
Checkstatus ( client , 2 )
return Plugin_Handled ;
}
else if ( StrEqual ( sArgs , "!wp blue" , false ) || StrEqual ( sArgs , "/wp blue" , false ))
{
Checkstatus ( client , 3 )
return Plugin_Handled ;
}
else if ( StrEqual ( sArgs , "!wp yellow" , false ) || StrEqual ( sArgs , "/wp yellow" , false ))
{
Checkstatus ( client , 4 )
return Plugin_Handled ;
}
return Plugin_Continue ;
}
//FOR ONE WAY COMMANDS ONLY!!!----
//----
public Checkstatus ( client , number )
{
if( IsClientInGame ( client ))
{
if( warden_iswarden ( client ))
{
switch( number )
{
case 1 : //red
{
if ( g_color_red [ client ])
{
SpamMessage ( client );
return;
}
}
case 2 : //green
{
if ( g_color_green [ client ])
{
SpamMessage ( client );
return;
}
}
case 3 : //blue
{
if ( g_color_blue [ client ])
{
SpamMessage ( client );
return;
}
}
case 4 : //yellow
{
if ( g_color_yellow [ client ])
{
SpamMessage ( client );
return;
}
}
}
Pointers_function ( client , number )
return;
}
PrintToChat ( client , "\x01 \x04[Pointers]\x02 You must be warden to use pointers." );
}
}
public PointerMenu ( client )
{
new Handle : wpmenu = CreateMenu ( WPMenuHandler );
SetMenuTitle ( wpmenu , "Select a Pointer Color:\n Version: %s" , PLUGIN_VERSION );
AddMenuItem ( wpmenu , "red" , "Red Pointer" );
AddMenuItem ( wpmenu , "green" , "Green Pointer" );
AddMenuItem ( wpmenu , "blue" , "Blue Pointer" );
AddMenuItem ( wpmenu , "yellow" , "Yellow Pointer" );
SetMenuExitButton ( wpmenu , true );
DisplayMenu ( wpmenu , client , MENU_TIME_FOREVER );
}
public WPMenuHandler ( Handle : wpmenu , MenuAction : action , client , number )
{
if ( action == MenuAction_End )
{
CloseHandle ( wpmenu );
}
if ( action == MenuAction_Select )
{
if( warden_iswarden ( client ))
{
number = number + 1 ;
switch( number )
{
case 1 : //red
{
if ( g_color_red [ client ])
{
SpamMessage ( client );
return;
}
}
case 2 : //green
{
if ( g_color_green [ client ])
{
SpamMessage ( client );
return;
}
}
case 3 : //blue
{
if ( g_color_blue [ client ])
{
SpamMessage ( client );
return;
}
}
case 4 : //yellow
{
if ( g_color_yellow [ client ])
{
SpamMessage ( client );
return;
}
}
}
Pointers_function ( client , number );
}
}
}
SpamMessage ( client )
{
if( IsClientInGame ( client ))
{
if( warden_iswarden ( client ))
{
PointerMenu ( client );
}
PrintToChat ( client , "\x01 \x04[Pointers]\x02 You must wait 10 seconds before placing that color again." );
}
}
Pointers_function ( client , colors )
{
//VARS
new Float : clientOrigin [ 3 ];
new Float : StartOrigin [ 3 ];
new Float : clientEyePos [ 3 ];
new Float : clientEyeAngle [ 3 ];
new Float : baseOrigin [ 3 ];
GetClientAbsOrigin ( client , clientOrigin );
GetClientEyeAngles ( client , clientEyeAngle );
GetClientEyePosition ( client , clientEyePos );
//RUN TRACE
TR_TraceRayFilter ( clientEyePos , clientEyeAngle , MASK_SOLID , RayType_Infinite , TraceRayDontHitSelf , client );
if( TR_DidHit ( INVALID_HANDLE ))
{
TR_GetEndPosition ( baseOrigin );
StartOrigin [ 0 ] = baseOrigin [ 0 ]; //x
StartOrigin [ 1 ] = baseOrigin [ 1 ]; //y
StartOrigin [ 2 ] = baseOrigin [ 2 ] + 800 ; //z
}
new color [ 4 ] = { 255 , 255 , 255 , 255 };
switch( colors )
{
case 1 : //red
{
color = { 255 , 0 , 0 , 255 };
g_color_red [ client ] = true ;
CreateTimer ( 10.0 , Timer_SpamTime_red , client );
}
case 2 : //green
{
color = { 0 , 255 , 0 , 255 };
g_color_green [ client ] = true ;
CreateTimer ( 10.0 , Timer_SpamTime_green , client );
}
case 3 : //blue
{
color = { 0 , 0 , 255 , 255 };
g_color_blue [ client ] = true ;
CreateTimer ( 10.0 , Timer_SpamTime_blue , client );
}
case 4 : //yellow
{
color = { 255 , 255 , 0 , 255 };
g_color_yellow [ client ] = true ;
CreateTimer ( 10.0 , Timer_SpamTime_yellow , client );
}
}
//LIGHT BEAM
TE_SetupBeamPoints ( StartOrigin , baseOrigin , g_LightningSprite , 0 , 0 , 0 , 10.0 , 30.0 , 25.0 , 0 , 1.0 , color , 3 );
TE_SendToAll ();
TE_SetupBeamRingPoint ( baseOrigin , 20.0 , 220.0 , g_beamSprite , g_haloSprite , 0 , 10 , 0.6 , 10.0 , 0.5 , color , 5 , 0 );
TE_SendToAll ();
PrintToChatAll ( "\x01[SM] \x04The Warden has Placed a Pointer!" )
EmitAmbientSound ( RELATIVE_SOUND_PATH , baseOrigin , SNDCHAN_AUTO , SNDLEVEL_GUNFIRE );
}
public Action : Timer_SpamTime_red ( Handle : timer , client )
{
g_color_red [ client ] = false ;
return Plugin_Continue ;
}
public Action : Timer_SpamTime_green ( Handle : timer , client )
{
g_color_green [ client ] = false ;
return Plugin_Continue ;
}
public Action : Timer_SpamTime_blue ( Handle : timer , client )
{
g_color_blue [ client ] = false ;
return Plugin_Continue ;
}
public Action : Timer_SpamTime_yellow ( Handle : timer , client )
{
g_color_yellow [ client ] = false ;
return Plugin_Continue ;
}
Clear_vars ( client )
{
g_color_red [ client ] = false ;
g_color_green [ client ] = false ;
g_color_blue [ client ] = false ;
g_color_yellow [ client ] = false ;
return;
}
public bool : TraceRayDontHitSelf ( entity , mask , any : data )
{
if( entity == data )
{
return false ;
}
return true ;
}
public OnClientDisconnect ( client )
{
Clear_vars ( client );
}
//CSGO SOUNDS
stock FakePrecacheSound ( const String : szPath [] )
{
AddToStringTable ( FindStringTable ( "soundprecache" ), szPath );
}
A plugin that allows some fun in gameplay (M for mature)
Francisco's Teabag
PHP Code:
#include <sourcemod>
#include <sdktools>
#include <smlib>
#define PLUGIN_VERSION "2.0"
new String : weapon13 [ MAXPLAYERS + 1 ][ PLATFORM_MAX_PATH ];
new String : WeaponList [ 8 ][ 32 ];
new g_iSizeOfList ;
new Handle : g_PEnabled = INVALID_HANDLE ;
new Handle : g_SEnabled = INVALID_HANDLE ;
new Handle : g_TEnabled = INVALID_HANDLE ;
new Handle : g_PeeSound = INVALID_HANDLE ;
new g_PRagdoll [ MAXPLAYERS + 1 ] = { 0 , ... }
new g_PKiller [ MAXPLAYERS + 1 ] = { 0 , ... }
new g_TRagdoll [ MAXPLAYERS + 1 ] = { 0 , ... }
new g_TKiller [ MAXPLAYERS + 1 ] = { 0 , ... }
new g_SRagdoll [ MAXPLAYERS + 1 ] = { 0 , ... }
new g_SKiller [ MAXPLAYERS + 1 ] = { 0 , ... }
new g_Attachments [ MAXPLAYERS + 1 ] = { 0 , ... }
new Handle : g_Timers [ MAXPLAYERS + 1 ] = { INVALID_HANDLE , ... }
new bool : g_Teabagging [ MAXPLAYERS + 1 ] = { false , ... };
new bool : g_bPiss [ MAXPLAYERS + 1 ] = { false , ... }
new bool : g_bCanPiss [ MAXPLAYERS + 1 ] = { true , ... }
new g_TickCounter = 0 ;
new BeamSprite ;
new HaloSprite ;
new String : fsound [ 256 ];
new String : psound [ 256 ];
new Handle : g_CVarAdmFlag ;
new Handle : g_CVarAdmFlag2 ;
new Handle : g_veces ;
new g_AdmFlag ;
new g_AdmFlag2 ;
new veces [ MAXPLAYERS + 1 ];
public Plugin : myinfo =
{
name = "Piss+Shit+Teabag Mod" ,
author = "Franc1sco Franug" ,
description = "Privately coded plugin" ,
version = PLUGIN_VERSION ,
url = ""
}
public OnPluginStart ()
{
g_PEnabled = CreateConVar ( "sm_piss_enabled" , "1" );
g_TEnabled = CreateConVar ( "sm_teabag_enabled" , "1" );
g_PeeSound = CreateConVar ( "sm_piss_sound" , "mocpiss.wav" );
g_veces = CreateConVar ( "sm_piss_times" , "5" );
RegConsoleCmd ( "sm_piss" , Piss_In );
//RegConsoleCmd("-piss", Piss_Out);
RegConsoleCmd ( "sm_piss_help" , Help );
HookEvent ( "player_death" , Event_PlayerDeath );
HookEvent ( "round_start" , Event_RoundStart );
GetConVarString ( g_PeeSound , psound , sizeof ( psound ));
g_CVarAdmFlag = CreateConVar ( "sm_piss_adminflag" , "0" , "Admin flag required. 0 = No flag needed. Can use a b c ...." );
g_CVarAdmFlag2 = CreateConVar ( "sm_piss_inmunity" , "0" , "Admin flag required for be inmunity. 0 = No flag needed. Can use a b c ...." );
HookConVarChange ( g_CVarAdmFlag , CVarChange );
HookConVarChange ( g_CVarAdmFlag2 , CVarChange2 );
}
public CVarChange ( Handle : convar , const String : oldValue [], const String : newValue []) {
g_AdmFlag = ReadFlagString ( newValue );
}
public CVarChange2 ( Handle : convar , const String : oldValue [], const String : newValue []) {
g_AdmFlag2 = ReadFlagString ( newValue );
}
public OnMapStart ()
{
BeamSprite = PrecacheModel ( "materials/sprites/xbeam2.vmt" );
HaloSprite = PrecacheModel ( "materials/sprites/halo01.vmt" );
AddFileToDownloadsTable ( "sound/mocpiss.wav" );
PrecacheSound ( fsound );
PrecacheSound ( psound );
}
//////////////////////////
// EVENTS //
//////////////////////////
public OnGameFrame ()
{
if( g_TickCounter == 4 )
{
new Float : pos [ 3 ];
new Float : end [ 3 ];
new Float : ang [ 3 ];
for(new i = 1 ; i <= MaxClients ; ++ i )
{
if( IsClientInGame ( i ) && IsPlayerAlive ( i ))
{
if( g_bPiss [ i ])
{
GetClientEyePosition ( i , pos );
GetClientEyeAngles ( i , ang );
pos [ 2 ] -= 23.0 ;
ang [ 0 ] = 50.0 ;
TR_TraceRayFilter ( pos , ang , MASK_PLAYERSOLID , RayType_Infinite , DontHitSelf , i );
TR_GetEndPosition ( end );
TE_SetupBeamRingPoint ( end , 5.0 , 10.0 , BeamSprite , HaloSprite , 0 , 15 , 0.5 , 5.0 , 1.0 , { 255 , 255 , 0 , 255 }, 10 , 0 );
TE_SendToAll ();
if( IsValidEdict ( g_Attachments [ i ]))
{
new Float : ppos [ 3 ];
GetClientEyePosition ( i , ppos );
ppos [ 2 ]-= 30.0 ;
new Float : aang [ 3 ];
GetClientEyeAngles ( i , aang );
if( aang [ 1 ] > 0 )
{
ppos [ 0 ]+= FloatSub ( 10.0 , FloatMul ( FloatDiv ( 10.0 , 90.0 ), aang [ 1 ]));
ppos [ 1 ]+= FloatSub ( 10.0 , FloatMul ( FloatDiv ( 10.0 , 90.0 ), FloatAbs ( FloatSub ( aang [ 1 ], 90.0 ))));
}
else
{
ppos [ 0 ]+= FloatSub ( 10.0 , FloatMul ( FloatDiv ( 10.0 , 90.0 ), FloatAbs ( aang [ 1 ])));
ppos [ 1 ]-= FloatSub ( 10.0 , FloatMul ( FloatDiv ( 10.0 , 90.0 ), FloatAbs ( FloatSub ( FloatAbs ( aang [ 1 ]), 90.0 ))));
}
aang [ 0 ]= 0.0 ;
aang [ 1 ]+= 180.0 ;
aang [ 2 ]= 0.0 ;
TE_SetupBeamPoints ( end , ppos , BeamSprite , HaloSprite , 1 , 30 , 0.1 , 1.0 , 1.0 , 0 , 10.0 , { 255 , 255 , 0 , 255 }, 10 );
TE_SendToAll ();
TeleportEntity ( g_Attachments [ i ], ppos , aang , NULL_VECTOR );
}
}
}
}
g_TickCounter = 0 ;
}
else
{
g_TickCounter ++;
}
}
public Action : Help ( client , args )
{
new Handle : menu = CreateMenu ( DIDMenuHandler );
SetMenuTitle ( menu , "Help Menu" );
AddMenuItem ( menu , "" , "To piss on your victim's dead body you have to bind a key to sm_piss\nOpen your console and type: bind key sm_piss\nExample: bind x sm_piss\nThen stand still above your victim's body and press your key and you'll piss on him!\nYou can control the direction of the pee with your mouse!\nYou are not able to move or to shoot for 8 seconds when you piss, so beware!" );
SetMenuExitButton ( menu , true );
DisplayMenu ( menu , client , 0 );
return Plugin_Handled ;
}
public DIDMenuHandler ( Handle : menu , MenuAction : action , client , itemNum )
{
if ( action == MenuAction_End )
{
CloseHandle ( menu );
}
}
public Action : Piss_In ( client , args )
{
if(! GetConVarBool ( g_PEnabled ))
return Plugin_Continue ;
if(! g_bCanPiss [ client ])
return Plugin_Continue ;
if (( g_AdmFlag > 0 ) && ! CheckCommandAccess ( client , "sm_piss" , g_AdmFlag , true ))
{
PrintToChat ( client , "\x04You do not have access" );
return Plugin_Handled ;
}
if( veces [ client ] > GetConVarInt ( g_veces ))
{
PrintToChat ( client , "\x04Times for round excedded" );
return Plugin_Handled ;
}
for(new i = 1 ; i <= MaxClients ;++ i )
{
if( g_PKiller [ i ] == client )
{
if( IsValidEdict ( g_PRagdoll [ i ]))
{
if (( g_AdmFlag2 > 0 ) && ! CheckCommandAccess ( client , "sm_piss2" , g_AdmFlag2 , true ))
{
PrintToChat ( client , "\x04You do not have access" );
return Plugin_Handled ;
}
new Float : rposition [ 3 ];
new Float : cposition [ 3 ];
GetEntPropVector ( g_PRagdoll [ i ], Prop_Send , "m_vecOrigin" , rposition );
GetClientAbsOrigin ( client , cposition );
decl Float : DistanceG ;
DistanceG = GetVectorDistance ( rposition , cposition );
if( DistanceG <= 300.0 )
{
/* if(rposition[0] > cposition[0]-50 && rposition[0] < cposition[0]+50)
{
if(rposition[1] > cposition[1]-50 && rposition[1] < cposition[1]+50)
{
if(rposition[2] > cposition[2]-5 && rposition[2] < cposition[2]+5)
{ */
new String : clientname [ 32 ];
new String : victimname [ 32 ];
GetClientName ( client , clientname , sizeof ( clientname ));
GetClientName ( i , victimname , sizeof ( victimname ));
new Float : pos [ 3 ];
new Float : end [ 3 ];
new Float : ang [ 3 ];
GetClientEyePosition ( client , pos );
GetClientEyeAngles ( client , ang );
pos [ 2 ] -= 23.0 ;
ang [ 0 ] = 50.0 ;
TR_TraceRayFilter ( pos , ang , MASK_PLAYERSOLID , RayType_Infinite , DontHitSelf , client );
TR_GetEndPosition ( end );
TE_SetupBeamRingPoint ( end , 5.0 , 10.0 , BeamSprite , HaloSprite , 0 , 15 , 0.5 , 5.0 , 1.0 , { 255 , 255 , 0 , 255 }, 10 , 0 );
TE_SendToAll ();
g_bPiss [ client ] = true ;
SetEntityMoveType ( client , MOVETYPE_NONE );
new String : sound [ 64 ];
GetConVarString ( g_PeeSound , sound , sizeof ( sound ));
EmitAmbientSound ( sound , pos );
//CreateTimer(0.8, EmitSoundPee, client, TIMER_REPEAT);
new Float : ppos [ 3 ];
GetClientEyePosition ( client , ppos );
ppos [ 0 ]+= 10.0 ;
ppos [ 2 ]-= 30.0 ;
new Float : aang [ 3 ];
GetClientAbsAngles ( client , aang );
if( aang [ 1 ] > 0 )
{
ppos [ 0 ]+= FloatSub ( 10.0 , FloatMul ( FloatDiv ( 10.0 , 90.0 ), aang [ 1 ]));
ppos [ 1 ]+= FloatSub ( 10.0 , FloatMul ( FloatDiv ( 10.0 , 90.0 ), FloatAbs ( FloatSub ( aang [ 1 ], 90.0 ))));
}
else
{
ppos [ 0 ]+= FloatSub ( 10.0 , FloatMul ( FloatDiv ( 10.0 , 90.0 ), FloatAbs ( aang [ 1 ])));
ppos [ 1 ]-= FloatSub ( 10.0 , FloatMul ( FloatDiv ( 10.0 , 90.0 ), FloatAbs ( FloatSub ( FloatAbs ( aang [ 1 ]), 90.0 ))));
}
TE_SetupBeamPoints ( end , ppos , BeamSprite , HaloSprite , 0 , 30 , 0.1 , 1.0 , 1.0 , 0 , 10.0 , { 255 , 255 , 0 , 255 }, 10 );
TE_SendToAll ();
PrintToChatAll ( "\x04[Piss-Mod]\x03 %s is pissing on %s's dead body." , clientname , victimname );
CreateTimer ( 9.0 , Piss_Out , client );
veces [ client ]++;
g_bCanPiss [ client ] = false ;
Quitararmas ( client );
break;
/* }
} */
}
}
}
}
return Plugin_Handled ;
}
public Action : Piss_Out ( Handle : timer , any : client )
{
if(! IsClientInGame ( client ) || ! IsPlayerAlive ( client )) return;
g_bPiss [ client ] = false ;
g_bCanPiss [ client ] = false ;
CreateTimer ( 1.0 , CanPiss , client );
SetEntityMoveType ( client , MOVETYPE_ISOMETRIC );
if( g_Attachments [ client ] != 0 && IsValidEdict ( g_Attachments [ client ]))
{
RemoveEdict ( g_Attachments [ client ]);
g_Attachments [ client ]= 0 ;
}
Dararmas ( client );
}
public Action : CanPiss ( Handle : timer , any : client )
{
g_bCanPiss [ client ] = true ;
return Plugin_Continue ;
}
public bool : DontHitSelf ( entity , mask , any : data )
{
if( entity == data )
return false ;
return true ;
}
/* public Action:EmitSoundPee(Handle:timer, any:client)
{
if(!g_bPiss[client])
return Plugin_Stop;
new Float:pos[3];
GetClientAbsOrigin(client, pos);
new String:sound[64];
GetConVarString(g_PeeSound, sound, sizeof(sound));
EmitAmbientSound(sound, pos);
return Plugin_Continue;
} */
public Action : Event_RoundStart ( Handle : event , const String : name [], bool : dontBroadcast )
{
for(new i = 0 ; i <= MaxClients ;++ i )
{
g_PKiller [ i ] = 0 ;
g_PRagdoll [ i ] = 0 ;
g_TKiller [ i ] = 0 ;
g_TRagdoll [ i ] = 0 ;
g_Teabagging [ i ] = false ;
if( g_Timers [ i ] != INVALID_HANDLE )
{
KillTimer ( g_Timers [ i ]);
g_Timers [ i ] = INVALID_HANDLE ;
}
veces [ i ] = 0 ;
g_bPiss [ i ] = false ;
}
return Plugin_Continue ;
}
public Action : Event_PlayerDeath ( Handle : event , const String : name [], bool : dontBroadcast )
{
if(! GetConVarBool ( g_SEnabled ) && ! GetConVarBool ( g_TEnabled ) && ! GetConVarBool ( g_PEnabled ))
return Plugin_Continue ;
new client = GetClientOfUserId ( GetEventInt ( event , "userid" ));
new attacker = GetClientOfUserId ( GetEventInt ( event , "attacker" ));
g_PRagdoll [ client ] = GetEntPropEnt ( client , Prop_Send , "m_hRagdoll" )
g_PKiller [ client ] = attacker ;
g_TRagdoll [ client ] = GetEntPropEnt ( client , Prop_Send , "m_hRagdoll" )
g_TKiller [ client ] = attacker ;
g_SRagdoll [ client ] = GetEntPropEnt ( client , Prop_Send , "m_hRagdoll" )
g_SKiller [ client ] = attacker ;
return Plugin_Continue ;
}
public Action : OnPlayerRunCmd ( client , & buttons , & impulse , Float : vel [ 3 ], Float : angles [ 3 ], & weapon )
{
if(! GetConVarBool ( g_TEnabled ))
return Plugin_Continue ;
if ( buttons & IN_DUCK )
{
if( IsClientConnected ( client ))
{
if(! g_Teabagging [ client ])
{
for(new i = 1 ; i <= MaxClients ;++ i )
{
if( i == client )
continue;
if( g_TKiller [ i ] == client )
{
if( IsValidEdict ( g_TRagdoll [ i ]))
{
new Float : rposition [ 3 ];
new Float : cposition [ 3 ];
GetEntPropVector ( g_TRagdoll [ i ], Prop_Send , "m_vecOrigin" , rposition );
GetClientAbsOrigin ( client , cposition );
if( rposition [ 0 ] > cposition [ 0 ]- 50 && rposition [ 0 ] < cposition [ 0 ]+ 50 )
{
if( rposition [ 1 ] > cposition [ 1 ]- 50 && rposition [ 1 ] < cposition [ 1 ]+ 50 )
{
if( rposition [ 2 ] > cposition [ 2 ]- 50 && rposition [ 2 ] < cposition [ 2 ]+ 50 )
{
new String : clientname [ 32 ];
new String : victimname [ 32 ];
GetClientName ( client , clientname , sizeof ( clientname ));
GetClientName ( i , victimname , sizeof ( victimname ));
PrintToChatAll ( "\x04[Tea-Bag] \x03%s is Tea-Bagging %s." , clientname , victimname );
g_Teabagging [ client ] = true ;
break;
}
}
}
}
}
}
}
}
}
else
{
if( g_Teabagging [ client ] == true )
{
if( g_Timers [ client ] == INVALID_HANDLE )
{
g_Timers [ client ] = CreateTimer ( 1.0 , RemoveTeaBag , client );
}
}
}
return Plugin_Continue ;
}
public Action : RemoveTeaBag ( Handle : timer , any : client )
{
g_Teabagging [ client ] = false ;
g_Timers [ client ] = INVALID_HANDLE ;
return Plugin_Stop ;
}
Dararmas ( client )
{
new iEnt ;
for (new i = 0 ; i <= 4 ; i ++)
{
while (( iEnt = GetPlayerWeaponSlot ( client , i )) != - 1 )
{
RemovePlayerItem ( client , iEnt );
AcceptEntityInput ( iEnt , "Kill" );
}
}
g_iSizeOfList = ExplodeString ( weapon13 [ client ], ";" , WeaponList , sizeof ( WeaponList ), sizeof ( WeaponList []));
for (new Tidx = 0 ; Tidx < g_iSizeOfList ; Tidx ++)
{
GivePlayerItem ( client , WeaponList [ Tidx ]);
}
}
Quitararmas ( client )
{
Format ( weapon13 [ client ], PLATFORM_MAX_PATH , "NULL" );
decl String : theweapon [ 64 ];
new iEnt ;
for (new i = 0 ; i <= 4 ; i ++)
{
while (( iEnt = GetPlayerWeaponSlot ( client , i )) != - 1 )
{
GetEdictClassname ( iEnt , theweapon , 64 );
if( StrContains ( weapon13 [ client ], "NULL" ) == 0 ) Format ( weapon13 [ client ], PLATFORM_MAX_PATH , "%s;" , theweapon );
else Format ( weapon13 [ client ], PLATFORM_MAX_PATH , "%s%s;" , weapon13 [ client ], theweapon );
RemovePlayerItem ( client , iEnt );
AcceptEntityInput ( iEnt , "Kill" );
}
}
}
A timer declared unfinished, but I am unsure of it's current state. Comes with cool particles
A player tracker that tells you by peeking into the db information about a player's last connection, last server joined, etc.
UNESCAPED PLAYER NAME ENTRY! DO NOT RUN UNLESS YOU KNOW WHAT TO EDIT
Tango Tracker
PHP Code:
#pragma semicolon 1
#define PLUGIN_AUTHOR "OSWO"
#define PLUGIN_VERSION "1.06"
#define PLUGIN_URL "www.tangoworldwide.net"
#define PLUGIN_PREFIX "[\x06TangoTracker\x01]"
#include <sourcemod>
#include <colors-csgo>
public Plugin myinfo =
{
name = "[Tracker] Global-Player" ,
author = PLUGIN_AUTHOR ,
description = "Global Player Module" ,
version = PLUGIN_VERSION ,
url = PLUGIN_URL ,
};
ConVar tName ;
bool tEnabled = false ;
Handle DB = INVALID_HANDLE ;
public void OnPluginStart ()
{
RegisterCvars ();
CheckCvars ();
}
RegisterCvars ()
{
tName = CreateConVar ( "tracker_servername" , "No Name" , "[Tracker] Server Name" );
AutoExecConfig ( true , "tracker_servername" );
}
CheckCvars ()
{
char tConvarName [ 150 ];
GetConVarString ( tName , tConvarName , sizeof ( tConvarName ));
if( StrEqual ( tConvarName , "No Name" ))
{
CreateTimer ( 30.0 , tAlert , _ , TIMER_REPEAT );
tEnabled = false ;
} else {
ConnectMySQL ();
tEnabled = true ;
CreateTimer ( 1.0 , tAddtime , _ , TIMER_REPEAT );
}
}
ConnectMySQL ()
{
char errormsg [ 250 ];
DB = SQL_Connect ( "tracker_global" , true , errormsg , sizeof ( errormsg ));
if( DB == INVALID_HANDLE )
{
PrintToServer ( "Cannot connect to MySQL, Error: %s" , errormsg );
CloseHandle ( DB );
} else {
PrintToServer ( "Connection Successful!" );
}
SQL_Query ( DB , "CREATE TABLE IF NOT EXISTS `GlobalTracker` (`SteamID` varchar(64) NOT NULL, `LastName` varchar(128) NOT NULL, `TotalPlayed` int NOT NULL, `LastSeen` varchar(128) NOT NULL, `Server` varchar(128) NOT NULL, `FirstConnect` varchar(128) NOT NULL, PRIMARY KEY (`STEAMID`));" );
}
public Action tAlert ( Handle timer )
{
CPrintToChatAll ( "%s Server not specified! Contact Ownership/Oscar" , PLUGIN_PREFIX );
}
public Action tAddtime ( Handle timer )
{
if( tEnabled )
{
for (new i = 1 ; i <= MaxClients ; i ++)
{
if( IsClientConnected ( i ) && ! IsFakeClient ( i ))
{
Handle sendQuery ;
char queryH [ 1028 ], clientid [ 150 ];
GetClientAuthId ( i , AuthId_Steam3 , clientid , sizeof ( clientid ));
Format ( queryH , sizeof ( queryH ), "UPDATE `GlobalTracker` SET `TotalPlayed`= `TotalPlayed` + 1 WHERE `SteamID` = '%s'" , clientid );
sendQuery = SQL_Query ( DB , queryH );
CloseHandle ( sendQuery );
}
}
}
}
public void OnClientAuthorized ( client )
{
if( tEnabled && ! IsFakeClient ( client ))
{
char queryH [ 2048 ], clientid [ 150 ], time [ 150 ], servername [ 150 ], lastname [ 150 ];
Handle sendQuery1 ;
GetClientAuthId ( client , AuthId_Steam3 , clientid , sizeof ( clientid ));
GetClientName ( client , lastname , sizeof ( lastname ));
FormatTime ( time , sizeof ( time ), "%d %B %G %H:%M:%S" );
GetConVarString ( tName , servername , sizeof ( servername ));
Format ( queryH , sizeof ( queryH ), "INSERT INTO `GlobalTracker` (SteamID, LastName, Server, FirstConnect) VALUES ('%s', '%s', '%s', '%s')" , clientid , lastname , servername , time );
sendQuery1 = SQL_Query ( DB , queryH );
Format ( queryH , sizeof ( queryH ), "UPDATE `GlobalTracker` SET `LastSeen`= 'Now Playing', `Server`= '%s' WHERE `SteamID` = '%s'" , servername , clientid );
sendQuery1 = SQL_Query ( DB , queryH );
CloseHandle ( sendQuery1 );
}
}
public void OnClientDisconnect ( client )
{
if( tEnabled && ! IsFakeClient ( client ))
{
char queryH [ 1028 ], clientid [ 150 ], lastname [ 150 ], time [ 150 ], servername [ 150 ];
Handle sendQuery2 ;
GetClientAuthId ( client , AuthId_Steam3 , clientid , sizeof ( clientid ));
GetClientName ( client , lastname , sizeof ( lastname ));
FormatTime ( time , sizeof ( time ), "%d %B %G %H:%M:%S" );
GetConVarString ( tName , servername , sizeof ( servername ));
Format ( queryH , sizeof ( queryH ), "UPDATE `GlobalTracker` SET `LastName`= '%s', `LastSeen`= '%s', `Server`= '%s' WHERE `SteamID`= '%s'" , lastname , time , servername , clientid );
sendQuery2 = SQL_Query ( DB , queryH );
CloseHandle ( sendQuery2 );
}
}
I have not looked through this huge thing to find out exactly what this does, but it is named linux-cod so infer what you will
Linux-Cod
Code:
#include <sourcemod>
#include <sdkhooks>
#include <sdktools>
#include <cstrike>
#define VIP_FLAG ADMFLAG_CUSTOM1 // konto premium
#define MAX_PLAYERS 32 // maksymalna ilosc graczy na serwerze
#define MAX_CLASS 32 // maksymalna ilosc klas na serwerze
#define REFRESH_HUD 1.0
enum
{
Brak,
Snajper,
Komandos,
Obronca,
Medyk,
WsparcieOgniowe,
Saper,
Rusher,
Kangur,
Admiral,
Rebeliant,
Szturmowiec,
LekkiZolnierz,
Terrorysta,
Kamikadze,
Thief,
Strzelec,
Partyzant,
DGLMaster,
Szturmen,
Szpieg,
Mauser,
Scouter,
Terminator,
Rambo
};
new limit_poziomu = 401;
new limit_inteligencji = 100;
new limit_zdrowia = 50;
new limit_obrazen = 50;
new limit_wytrzymalosci = 100;
new limit_kondycji = 100;
new co_ile_lv_punkt = 1;
new ile_rozdawac[] = {1, 10, -1};
new ilosc_dynamitow_gracza[MAX_PLAYERS+1]
new xp_kill = 10;
new xp_kill_hs = 5;
new xp_winround = 10;
new xp_objectives = 10;
new xp_kill_vip = 20;
new xp_kill_hs_vip = 10;
new xp_winround_vip = 20;
new xp_objectives_vip = 20;
new co_ile_zapisywac = 30; // co ile sekund nadpisywac dane graczowi (tylko gdy zdobyl/stracil poziom/doswiadczenie lub rozdal/zresetowal statystyki)
new Handle:sql,
Handle:sql_task[MAX_PLAYERS+1],
Handle:hud_task[MAX_PLAYERS+1],
sql_baza;
new String:dbError[512],
String:nazwa_gracza[MAX_PLAYERS+1][MAX_CLASS+1],
poziom_klasy_gracza[MAX_PLAYERS+1][MAX_CLASS+1],
doswiadczenie_klasy_gracza[MAX_PLAYERS+1][MAX_CLASS+1],
inteligencja_klasy_gracza[MAX_PLAYERS+1][MAX_CLASS+1],
zdrowie_klasy_gracza[MAX_PLAYERS+1][MAX_CLASS+1],
obrazenia_klasy_gracza[MAX_PLAYERS+1][MAX_CLASS+1],
wytrzymalosc_klasy_gracza[MAX_PLAYERS+1][MAX_CLASS+1],
kondycja_klasy_gracza[MAX_PLAYERS+1][MAX_CLASS+1],
misja_klasy_gracza[MAX_PLAYERS+1][MAX_CLASS+1],
zabicia_klasy_gracza[MAX_PLAYERS+1][MAX_CLASS+1];
new poziom_gracza[MAX_PLAYERS+1],
doswiadczenie_gracza[MAX_PLAYERS+1],
inteligencja_gracza[MAX_PLAYERS+1],
zdrowie_gracza[MAX_PLAYERS+1],
obrazenia_gracza[MAX_PLAYERS+1],
wytrzymalosc_gracza[MAX_PLAYERS+1],
kondycja_gracza[MAX_PLAYERS+1],
misja_gracza[MAX_PLAYERS+1],
zabicia_gracza[MAX_PLAYERS+1],
bonusowa_inteligencja_gracza[MAX_PLAYERS+1],
bonusowe_zdrowie_gracza[MAX_PLAYERS+1],
bonusowe_obrazenia_gracza[MAX_PLAYERS+1],
bonusowa_wytrzymalosc_gracza[MAX_PLAYERS+1],
bonusowa_kondycja_gracza[MAX_PLAYERS+1];
new maksymalna_inteligencja_gracza[MAX_PLAYERS+1],
maksymalne_zdrowie_gracza[MAX_PLAYERS+1],
Float:maksymalne_obrazenia_gracza[MAX_PLAYERS+1],
Float:maksymalna_wytrzymalosc_gracza[MAX_PLAYERS+1],
Float:maksymalna_kondycja_gracza[MAX_PLAYERS+1];
new bool:polaczony_raz[MAX_PLAYERS+1],
bool:zapisz_dane[MAX_PLAYERS+1],
nowa_klasa_gracza[MAX_PLAYERS+1],
klasa_gracza[MAX_PLAYERS+1],
bool:vip_gracza[MAX_PLAYERS+1],
szybkosc_rozdania[MAX_PLAYERS+1],
punkty_gracza[MAX_PLAYERS+1],
client_gracza[MAX_PLAYERS+1],
moc_itemu[MAX_PLAYERS+1],
bool:umiejetnosc_gracza[MAX_PLAYERS+1],
bool:wymiana_gracza[MAX_PLAYERS+1],
bool:blokada_gracza[MAX_PLAYERS+1],
bool:headshot[MAX_PLAYERS+1],
bool:tulow[MAX_PLAYERS+1],
bool:oldbuttons1[MAX_PLAYERS+1],
bool:oldbuttons2[MAX_PLAYERS+1],
ilosc_apteczek_gracza[MAX_PLAYERS+1],
czas_skokow_gracza[MAX_PLAYERS+1];
new sprite_blue,
sprite_laser,
sprite_halo,
oslepiajacy_gracz,
bool:freezetime;
new String:dzwieki_serwera[][] =
{
"", // 0
"cod/levelup.mp3", // 1
"cod/headshot.mp3", // 2
"cod/headshot2.mp3", // 3
"cod/lebshot.mp3", // 4
"cod/headhunter.mp3" // 5
};
new String:modele_serwera[][] =
{
"", // 0
"models/player/ctm_fbi.mdl", // 1
"models/player/ctm_gign.mdl", // 2
"models/player/ctm_gsg9.mdl", // 3
"models/player/ctm_sas.mdl", // 4
"models/player/ctm_st6.mdl", // 5
"models/player/tm_anarchist.mdl", // 6
"models/player/tm_phoenix.mdl", // 7
"models/player/tm_pirate.mdl", // 8
"models/player/tm_balkan_variantA.mdl", // 9
"models/player/tm_leet_variantA.mdl", // 10
};
new informacje_itemu_gracza[MAX_PLAYERS+1][2];
new String:nazwy_itemow[][] =
{
"Brak", // 0
"Wytrenowany Weteran", // 1
"Wytrenowany Rekrut", // 2
"Wyszkolenie Wojenne", // 3
"Apteczka", // 4
"Adrenalina", // 5
"Regenerator", // 6
"Morfina", // 7
"Księga Expa", // 8
"Portfel Turysty", // 9
"Kamizelka Nasa", // 10
"Sandały Gaudentego", // 11
"Mózg Einsteina", // 12
"Zestaw Predatora", // 13
"Notatki Kapitana", // 14
"Tytanowe Naboje", // 15
"Naboje Pulkownika", // 16
"Weteran Noza", // 17
"Nóż Mysliwego", // 18
"Notatki Ninji", // 19
"Pancerny Hełm", // 20
"Pancerz Neomexowy", // 21
"Moduł Odrzutowy", // 22
"Zaskoczenie Wroga", // 23
"Płaszczowe Naboje", // 24
"Luneta Wojskowego", // 25
"Tajemnica Molotova", // 26
"Tajemnica Zabojcy", // 27
"Płonące Naboje", // 28
"Tarcza Swat", // 29
"Nano Kamizelka", // 30
"Ogranicznik Rozrzutu", // 31
"Podręcznik Szpiega", // 32
"Tajemnica Generala", // 33
"Bezdenny Magazynek", // 34
"Szybkostrzelność", // 35
"Buty Ninji", // 36
"Autodestrukcja", // 37
"Rozbłysk Słoneczny", // 38
"Tajemnica Rambo", // 39
"Izraelskie Naboje", // 40
"Opaska Rambo", // 41
"Fart Strzelca", // 42
"Tajemnica Thiefa", // 43
"Pierścień Expa", // 44
"Sakwa Szczęścia", // 45
"Oko Snajpera", // 46
"Platynowe Naboje", // 47
"Krytyczne Naboje", // 48
"Taktyczne Naboje" // 49
};
new String:opisy_itemow[][] =
{
"Zabij kogoś aby dostać item", // 0
"Dostajesz dodatkowo 30 punktów zdrowia. Wolniej biegasz", // 1
"Dostajesz dodatkowo 15 punktów zdrowia. Wolniej biegasz", // 2
"Regenerujesz 10 zdrowia, co 10 sekund", // 3
"Regenerujesz zdrowie do pełna (Użycie: E)", // 4
"Regenerujesz 15 zdrowia za zabicie przeciwnika", // 5
"Regenerujesz 30 procent zadanych obrażeń w postaci zdrowia", // 6
"Posiadasz 1/LW szans na ponowne odrodzenie się po śmierci", // 7
"Dostajesz dodatkowo 10 doświadczenia za zabicie przeciwnika", // 8
"Dostajesz dodatkowo 300 dolarów za zabicie przeciwnika", // 9
"Dostajesz dodatkowo 25 punktów wytrzymałości", // 10
"Dostajesz dodatkowo 50 punktów kondycji", // 11
"Dostajesz dodatkowo 25 punktów inteligencji", // 12
"Dostajesz noktowizor (Użycie: E). Jesteś odporny na zadane obrażenia od upadku", // 13
"Jesteś odporny na 3 pierwsze zadane obrażenia przez przeciwnika", // 14
"Zadajesz o 10 obrażeń przeciwnikowi więcej z każdej broni", // 15
"Zadajesz o 15 obrażeń przeciwnikowi więcej z każdej broni", // 16
"Zadajesz o 40 obrażeń przeciwnikowi więcej z noża", // 17
"Posiadasz natychmiastowe zabicie przeciwnika z noża (PPM)", // 18
"Możesz wykonać podwójny skok (Użycie: podczas skoku SPACE)", // 19
"Jesteś odporny na zadane obrażenia przez przeciwnika w głowę", // 20
"Posiadasz 1/LW szans na odbicie zadanych obrażeń przez przeciwnika", // 21
"Zostajesz wyrzucony z dużą prędkościa (Użycie: podczas biegu i skoku E)", // 22
"Zadajesz 140 procent obrażeń przeciwnikowi gdy atakujesz w dół tułowia", // 23
"Zadajesz 140 procent obrażeń przeciwnikowi z każdej pobocznej broni", // 24
"Posiadasz przybliżenie w każdej broni palnej (Użycie: ATTACK2)", // 25
"Dostajesz koktajl molotova, co 20 sekund", // 26
"Posiadasz 1/LW szans na wyrzucenie broni przeciwnika", // 27
"Posiadasz 1/LW szans na podpalenie przeciwnika", // 28
"Nie działaja na Ciebie itemy przeciwnika", // 29
"Nie działają na Ciebie umiejętności klas przeciwnika", // 30
"Posiadasz zmniejszony rozrzut broni", // 31
"Posiadasz 1/LW szans na natychmiastowe zabicie z HE. Masz ubranie przeciwnika", // 32
"Posiadasz natychmiastowe zabicie z HE. Zadajesz o LW obrażeń więcej", // 33
"Posiadasz nieskończoną ilość amunicji", // 34
"Posiadasz zwiększona szybkostrzelność broni", // 35
"Posiadasz zmniejszoną grawitację", // 36
"Wybuchasz po śmierci zabijając wszystkich przeciwników w pobliżu", // 37
"Podpalasz wszystkich przeciwników w pobliżu (Użycie: E)", // 38
"Regenerujesz 20 zdrowia za zabicie przeciwnika. Nie działają na Ciebie FB przeciwnika", // 39
"Dostajesz dodatkowo 25 punktów obrażeń", // 40
"Dostajesz dodatkowo 15 punktów do każdej statystyki", // 41
"Posiadasz 1/LW szans na natychmiastowe zabicie przeciwnika", // 42
"Możesz podnosić bronie należące do wszystkich klas", // 43
"Dostajesz dodatkowo 20 doświadczenia za zabicie przeciwnika", // 44
"Dostajesz dodatkowo 1500 dolarów podczas odrodzenia", // 45
"Posiadasz natychmiastowe zabicie przeciwnika w głowę", // 46
"Zadajesz o LW obrażeń przeciwnikowi więcej z każdej broni", // 47
"Posiadasz 1/LW szans na zadanie 140 procent obrażeń przeciwnikowi", // 48
"Posiadasz 1/LW szans na opróżnienie magazynku przeciwnika" // 49
};
new String:nazwy_klas[][] =
{
"Brak", // 0
"Snajper", // 1
"Komandos", // 2
"Obrońca", // 3
"Medyk", // 4
"Wsparcie Ogniowe", // 5
"Saper", // 6
"Rusher", // 7
"Kangur", // 8
"Admiral", // 9
"Rebeliant", // 10
"Szturmowiec", // 11
"Lekki Żołnierz", // 12
"Terrorysta [Od 100Lv]", // 13
"Kamikadze [Od 125Lv]", // 14
"Thief [Od 150Lv]", // 15
"Strzelec [Od 175Lv]", // 16
"Partyzant [Od 200Lv]", // 17
"DGLMaster [Od 225Lv]", // 18
"Szturmen [Od 250Lv]", // 19
"Szpieg [Od 275Lv]", // 20
"Mauser [Od 300Lv]", // 21
"Scouter [Od 325Lv]", // 22
"Terminator [Od 350Lv]", // 23
"Rambo [Od 375Lv]" // 24
};
new String:nazwy_broni[][] =
{
"", // 0
"weapon_glock", // 1
"weapon_usp_silencer", // 2
"weapon_tec9", // 3
"weapon_cz75a", // 4
"weapon_hkp2000", // 5
"weapon_p250", // 6
"weapon_deagle", // 7
"weapon_elite", // 8
"weapon_fiveseven", // 9
"weapon_nova", // 10
"weapon_xm1014", // 11
"weapon_mag7", // 12
"weapon_sawedoff", // 13
"weapon_mac10", // 14
"weapon_mp9", // 15
"weapon_mp7", // 16
"weapon_ump45", // 17
"weapon_p90", // 18
"weapon_bizon", // 19
"weapon_galilar", // 20
"weapon_famas", // 21
"weapon_ak47", // 22
"weapon_m4a1", // 23
"weapon_m4a1_silencer", // 24
"weapon_aug", // 25
"weapon_sg556", // 26
"weapon_ssg08", // 27
"weapon_awp", // 28
"weapon_g3sg1", // 29
"weapon_scar20", // 30
"weapon_m249", // 31
"weapon_negev", //32
"weapon_decoy", // 33
"weapon_molotov", // 34
"weapon_incgrenade", // 35
"weapon_hegrenade", // 36
"weapon_flashbang", // 37
"weapon_smokegrenade", // 38
"weapon_taser", // 39
"weapon_knife", // 40
"weapon_c4" // 41
};
new bronie_klas[][] =
{ // numer broni odpowiadajacy za jej nazwe (patrz wyzej) // musi byc 5 broni w jednej kolumnie
{0, 0, 0, 0, 0}, // 0
{28, 7, 0, 0, 0}, // 1
{7, 37, 37, 0, 0}, // 2
{31, 1, 36, 37, 38}, // 3
{15, 9, 0, 0, 0}, // 4
{16, 9, 0, 0, 0}, // 5
{18, 9, 0, 0, 0}, // 6
{10, 6, 0, 0, 0}, // 7
{11, 6, 0, 0, 0}, // 8
{22, 1, 37, 37, 38}, // 9
{26, 1, 36, 0, 0}, // 10
{23, 7, 36, 0, 0}, // 11
{20, 6, 0, 0, 0}, // 12
{14, 8, 35, 0, 0}, // 13
{7, 35, 0, 0, 0}, // 14
{19, 6, 35, 0, 0}, // 15
{29, 1, 0, 0, 0}, // 16
{21, 7, 36, 0, 0}, // 17
{7, 37, 37, 38, 0}, // 18
{24, 2, 34, 0, 0}, // 19
{25, 1, 35, 0, 0}, // 20
{29, 1, 37, 37, 0}, // 21
{27, 8, 36, 0, 0}, // 22
{32, 4, 35, 37, 38}, // 23
{13, 1, 37, 37, 0} // 24
};
new umiejetnosci_klas[][] =
{ // Lvl - 0 // Zdr - 1 // Wyt - 2 // Kon - 3
{0, 100, 0, 100}, // 0
{0, 120, 100, 110}, // 1
{0, 135, 100, 125}, // 2
{0, 120, 150, 80}, // 3
{0, 100, 100, 100}, // 4
{0, 100, 100, 100}, // 5
{0, 100, 100, 100}, // 6
{0, 100, 50, 120}, // 7
{0, 100, 50, 100}, // 8
{0, 150, 150, 100}, // 9
{0, 105, 150, 80}, // 10
{0, 150, 150, 100}, // 11
{0, 100, 100, 115}, // 12
{100, 120, 50, 100}, // 13
{125, 180, 0, 120}, // 14
{150, 80, 80, 80}, // 15
{175, 125, 0, 80}, // 16
{200, 140, 25, 125}, // 17
{225, 115, 25, 110}, // 18
{250, 130, 50, 115}, // 19
{275, 125, 100, 100}, // 20
{300, 120, 100, 110}, // 21
{325, 105, 50, 105}, // 22
{350, 175, 175, 100}, // 23
{375, 200, 100, 120} // 24
};
new String:opisy_klas[][] =
{
"Brak", // 0
"Zadaje obrażenia z awp +int. Posiada 120hp, 110% biegu, 100 wytrzymałości", // 1
"Zadaje o 50 obrażeń więcej z noża +int (Uzycie: PPM). Posiada 135hp, 135% biegu, 100 wytrzymałości", // 2
"Jest odporny na umiejetnosci wszystkich klas przeciwnika. Posiada 120hp, 80% biegu, 150 wytrzymałości", // 3
"Posiada 100hp, 100% biegu, 100 wytrzymałości, posiada dwie apteczki", // 4
"Posiada 100hp, 100% biegu, 100 wytrzymałości", // 5
"Posiada 100hp, 100% biegu, 100 wytrzymałości", // 6
"Posiada 100hp, 120% biegu, 50 wytrzymałości", // 7
"Posiada dlugi skok, 100hp, 100% biegu, 50 wytrzymałości", // 8
"Posiada 150hp, 80% biegu, 150 wytrzymałości", // 9
"Posiada 105hp, 80% biegu, 150 wytrzymałości", // 10
"Posiada 150hp, 80% biegu, 150 wytrzymałości", // 11
"Posiada 100hp, 115% biegu, 100 wytrzymałości", // 12
"Wybucha po śmierci zadając 80 zdrowia +int. Posiada 120hp, 100% biegu, 50 wytrzymałości", // 13
"Posiada 180hp, 120% biegu", // 14
"Może podnosić wszystkie bronie. Posiada 80hp, 80% biegu, 80 wytrzymałości", // 15
"Posiada 125hp, 80% biegu", // 16
"Zadaje o 50 obrażeń więcej z HE +int. Posiada 120hp, 110% biegu, 25 wytrzymałości", // 17
"Zadaje obrażenia z deagla +int. Posiada 115hp, 110% biegu, 25 wytrzymałości", // 18
"Może wykonać podwójny skok (Użycie: podczas skoku SPACE), dostaje 30 zdrowia za zabicie przeciwnika. Posiada 130hp, 115% biegu, 50 wytrzymałości", // 19
"Posiada przebranie wroga, 125hp, 100% biegu, 100 wytrzymałości", // 20
"Jest odporny na zadane obrażeń w dół tułowia. Posiada 120hp, 110% biegu, 100 wytrzymałości", // 21
"Posiada 1/3 szans na natychmiastowe zabicie z ssg08, 105hp, 105% biegu, 50 wytrzymałości", // 22
"Posiada 175hp, 100% biegu, 175 wytrzymałości", // 23
"Regeneruje 10 procent zadanych obrażeń w postaci zdrowia. Posiada 1/2 szans na natychmiastowe zabicie z noża (PPM), 200hp, 130% biegu, 100 wytrzymałości", // 24
};
new nazwy_misji[][] =
{ // Lvl // Zabicia // Kogo // Nagroda
{0, 0, 0, 0}, // 0
{0, 10, Snajper, 2500}, // 1
{0, 10, Komandos, 2500}, // 2
{0, 10, Admiral, 2500}, // 3
{0, 10, Terminator, 7500}, // 4
{0, 10, Rambo, 10000}, // 5
{0, 10, 14, 10000}, // 6
{0, 10, 20, 10000}, // 7
};
new String:opisy_misji[][] =
{
"Brak. Wpisz /misja aby rozpoczac", // 0
"Zabij 10 Snajperów - 2500 Dośw.", // 1
"Zabij 10 Komandosów - 2500 Dośw.", // 2
"Zabij 10 Admirałów - 2500 Dośw.", // 3
"Zabij 10 Terminatorów - 7500 Dośw.", // 4
"Zabij 10 Rambo - 10000 Dośw.", // 5
"Zabij 10 osób z Notatkami Kapitana - 10000 Dośw.", // 6
"Zabij 10 osób z Pancernym Hełmem - 10000 Dośw.", // 7
};
new doswiadczenie_poziomu[] =
{
0, 19, 58, 107, 179, 252, 361, 474, 607, 766,
938, 1119, 1313, 1509, 1739, 1986, 2249, 2537, 2837, 3137,
3461, 3787, 4124, 4493, 4886, 5279, 5694, 6132, 6595, 7064,
7555, 8053, 8569, 9102, 9645, 10196, 10772, 11374, 11997, 12625,
13258, 13925, 14596, 15279, 15983, 16718, 17456, 18209, 18987, 19786,
20601, 21430, 22263, 23096, 23945, 24822, 25726, 26630, 27543, 28501,
29459, 30435, 31435, 32447, 33487, 34538, 35590, 36672, 37766, 38878,
39997, 41135, 42282, 43452, 44640, 45844, 47068, 48299, 49563, 50843,
52126, 53420, 54742, 56075, 57429, 58790, 60167, 61560, 62965, 64377,
65789, 67228, 68684, 70176, 71679, 73205, 74745, 76301, 77884, 79482,
81096, 82723, 84371, 86023, 87685, 89362, 91057, 92783, 94521, 96275,
98051, 99833, 101633, 103439, 105269, 107110, 108969, 110831, 112727, 114640,
116557, 118508, 120475, 122450, 124446, 126448, 128465, 130507, 132566, 134633,
136714, 138824, 140939, 143058, 145216, 147389, 149580, 151771, 153977, 156201,
158429, 160665, 162905, 165155, 167424, 169749, 172089, 174429, 176800, 179189,
181586, 183984, 186414, 188867, 191346, 193832, 196326, 198830, 201368, 203917,
206478, 209049, 211631, 214252, 216889, 219534, 222199, 224867, 227563, 230279,
233006, 235736, 238477, 241251, 244041, 246840, 249649, 252472, 255296, 258139,
261025, 263918, 266822, 269727, 272660, 275595, 278568, 281551, 284568, 287596,
290646, 293717, 296788, 299875, 302992, 306116, 309257, 312420, 315596, 318779,
321983, 325205, 328450, 331700, 334980, 338271, 341567, 344878, 348201, 351543,
354894, 358247, 361639, 365031, 368456, 371896, 375349, 378832, 382324, 385834,
389344, 392854, 396414, 399980, 403568, 407174, 410794, 414432, 418080, 421752,
425424, 429107, 432831, 436555, 440290, 444060, 447837, 451618, 455424, 459233,
463056, 466881, 470734, 474593, 478466, 482366, 486301, 490263, 494243, 498226,
502239, 506258, 510281, 514323, 518402, 522482, 526592, 530717, 534858, 539002,
543150, 547304, 551465, 555669, 559884, 564111, 568362, 572618, 576892, 581174,
585471, 589817, 594165, 598530, 602913, 607323, 611740, 616182, 620624, 625072,
629526, 634012, 638537, 643081, 647632, 652187, 656761, 661365, 665978, 670607,
675242, 679907, 684576, 689276, 693995, 698723, 703452, 708219, 712999, 717787,
722599, 727430, 732267, 737120, 741990, 746879, 751773, 756694, 761616, 766569,
771536, 776527, 781528, 786552, 791577, 796613, 801658, 806703, 811749, 816849,
821969, 827101, 832246, 837419, 842612, 847817, 853031, 858271, 863515, 868787,
874061, 879372, 884683, 890020, 895379, 900744, 906114, 911505, 916901, 922310,
927745, 933203, 938689, 944178, 949685, 955194, 960705, 966265, 971848, 977440,
983037, 988659, 994291, 999936, 1005614, 1011304, 1017013, 1022735, 1028459, 1034185,
1039931, 1045714, 1051497, 1057306, 1063145, 1068985, 1074853, 1080728, 1086607, 1092516,
1098442, 1104369, 1110333, 1116298, 1122279, 1128289, 1134308, 1140350, 1146404, 1152467,
1158543, 1164650, 1170770, 1176897, 1183052, 1189224, 1195396, 1201583, 1207799, 1214015,
1220240, 1226466, 1232701, 1238975, 1245249, 1251573, 1257898, 1264256, 1270629, 1277002,
1283395, 1289810, 1296256, 1302714, 1309172, 1315667, 1322167, 1328693, 1335223, 1341781
};
public OnPluginStart()
{
CreateConVar("Call of Duty", "1.0", "Linux`");
RegAdminCmd("sm_exp", CmdExp, ADMFLAG_RCON);
RegAdminCmd("sm_lvl", CmdLvl, ADMFLAG_RCON);
RegAdminCmd("sm_item", CmdItem, ADMFLAG_RCON);
RegConsoleCmd("say", Komendy);
RegConsoleCmd("say_team", Komendy);
RegConsoleCmd("buy", BlokujKomende);
RegConsoleCmd("buyequip", BlokujKomende);
RegConsoleCmd("buyammo1", BlokujKomende);
RegConsoleCmd("buyammo2", BlokujKomende);
RegConsoleCmd("cl_setautobuy", BlokujKomende);
RegConsoleCmd("cl_autobuy", BlokujKomende);
RegConsoleCmd("rebuy", BlokujKomende);
RegConsoleCmd("autobuy", BlokujKomende);
RegConsoleCmd("fullupdate", BlokujKomende);
RegConsoleCmd("autobuy", CodMenu);
HookEvent("round_freeze_end", PoczatekRundy);
HookEvent("round_start", NowaRunda);
HookEvent("round_end", KoniecRundy);
HookEvent("bomb_planted", BombaPodlozona);
HookEvent("bomb_defused", BombaRozbrojona);
HookEvent("hostage_rescued", ZakladnikUratowany);
HookEvent("player_spawn", PlayerSpawn);
HookEvent("player_death", PlayerDeath);
HookEvent("player_blind", PlayerBlind);
HookEvent("hegrenade_detonate", HeDetonate);
HookEvent("flashbang_detonate", FbDetonate);
HookUserMessage(GetUserMessageId("TextMsg"), TextMessage, true);
LoadTranslations("common.phrases");
DataBaseConnect();
}
public OnMapStart()
{
for(new i = 1; i < sizeof dzwieki_serwera; i ++)
{
new String:sound_serwer[512];
Format(sound_serwer, sizeof(sound_serwer), "sound/%s", dzwieki_serwera[i]);
AddFileToDownloadsTable(sound_serwer);
}
for(new i = 1; i < sizeof modele_serwera; i ++)
PrecacheModel(modele_serwera[i]);
sprite_laser = PrecacheModel("materials/sprites/laserbeam.vmt");
sprite_halo = PrecacheModel("materials/sprites/halo.vmt");
sprite_blue = PrecacheModel("materials/sprites/blueflare1.vmt");
}
public OnClientAuthorized(client)
{
GetClientName(client, nazwa_gracza[client], 64);
UsunUmiejetnosci(client);
}
public OnClientPutInServer(client)
{
ilosc_dynamitow_gracza[client] = 0;
SDKHook(client, SDKHook_TraceAttack, TraceAttack);
SDKHook(client, SDKHook_OnTakeDamage, TakeDamage);
SDKHook(client, SDKHook_WeaponCanUse, WeaponCanUse);
}
public OnClientDisconnect(client)
{
SDKUnhook(client, SDKHook_TraceAttack, TraceAttack);
SDKUnhook(client, SDKHook_OnTakeDamage, TakeDamage);
SDKUnhook(client, SDKHook_WeaponCanUse, WeaponCanUse);
ZapiszDane(client);
UsunUmiejetnosci(client);
UsunZadania(client);
}
public Action:UsunUmiejetnosci(client)
{
for(new i = 1; i < sizeof nazwy_klas; i ++)
{
poziom_klasy_gracza[client][i] = 1;
doswiadczenie_klasy_gracza[client][i] = 0;
inteligencja_klasy_gracza[client][i] = 0;
zdrowie_klasy_gracza[client][i] = 0;
obrazenia_klasy_gracza[client][i] = 0;
wytrzymalosc_klasy_gracza[client][i] = 0;
kondycja_klasy_gracza[client][i] = 0;
misja_klasy_gracza[client][i] = 0;
zabicia_klasy_gracza[client][i] = 0;
}
polaczony_raz[client] = false;
zapisz_dane[client] = false;
wymiana_gracza[client] = false;
blokada_gracza[client] = false;
vip_gracza[client] = false;
nowa_klasa_gracza[client] = 0;
klasa_gracza[client] = 0;
doswiadczenie_gracza[client] = 0
poziom_gracza[client] = 1;
punkty_gracza[client] = 0;
inteligencja_gracza[client] = 0;
zdrowie_gracza[client] = 0;
obrazenia_gracza[client] = 0;
wytrzymalosc_gracza[client] = 0;
kondycja_gracza[client] = 0;
misja_gracza[client] = 0;
zabicia_gracza[client] = 0;
bonusowa_inteligencja_gracza[client] = 0;
bonusowe_zdrowie_gracza[client] = 0;
bonusowe_obrazenia_gracza[client] = 0;
bonusowa_wytrzymalosc_gracza[client] = 0;
bonusowa_kondycja_gracza[client] = 0;
ilosc_apteczek_gracza[client] = 0;
UsunItem(client);
}
public Action:UsunZadania(client)
{
if(sql_task[client] != null)
{
KillTimer(sql_task[client]);
sql_task[client] = null;
}
if(hud_task[client] != null)
{
KillTimer(hud_task[client]);
hud_task[client] = null;
}
}
public Action:Komendy(client, args)
{
new String:text[192];
GetCmdArg(1, text, sizeof(text));
new ReplySource:old = SetCmdReplySource(SM_REPLY_TO_CHAT);
if(strcmp(text, "/m", false) == 0 || strcmp(text, "/menu", false) == 0)
CodMenu(client, args);
else if(strcmp(text, "/s", false) == 0 || strcmp(text, "/sklep", false) == 0)
CodSklep(client);
else if(strcmp(text, "/misja", false) == 0 || strcmp(text, "/misje", false) == 0 || strcmp(text, "/quest", false) == 0 || strcmp(text, "/zadania", false) == 0)
WybierzMisje(client);
else if(strcmp(text, "/info", false) == 0 || strcmp(text, "/infomisja", false) == 0 || strcmp(text, "/sprawdz", false) == 0 || strcmp(text, "/sprawdzmisje", false) == 0)
OpisMisji(client);
else if(strcmp(text, "/skille", false) == 0 || strcmp(text, "/opis", false) == 0 || strcmp(text, "/xp", false) == 0 || strcmp(text, "/doswiadczenie", false) == 0 || strcmp(text, "/dostep", false) == 0)
OpisStatystyk(client);
else if(strcmp(text, "/k", false) == 0 || strcmp(text, "/klasa", false) == 0)
WybierzKlase(client);
else if(strcmp(text, "/klasy", false) == 0)
OpisKlasy(client);
else if(strcmp(text, "/items", false) == 0 || strcmp(text, "/itemy", false) == 0 || strcmp(text, "/przedmioty", false) == 0 || strcmp(text, "/perki", false) == 0)
OpisItemow(client);
else if(strcmp(text, "/i", false) == 0 || strcmp(text, "/item", false) == 0 || strcmp(text, "/p", false) == 0 || strcmp(text, "/przedmiot", false) == 0 || strcmp(text, "/perk", false) == 0)
OpisItemu(client);
else if(strcmp(text, "/n", false) == 0 || strcmp(text, "/napraw", false) == 0)
NaprawItem(client);
else if(strcmp(text, "/staty", false) == 0 || strcmp(text, "/statystyki", false) == 0)
PrzydzielPunkty(client);
else if(strcmp(text, "/r", false) == 0 || strcmp(text, "/reset", false) == 0)
ResetujPunkty(client);
else if(strcmp(text, "/d", false) == 0 || strcmp(text, "/drop", false) == 0 || strcmp(text, "/wyrzuc", false) == 0)
WyrzucItem(client);
else if(strcmp(text, "/spect", false) == 0 || strcmp(text, "/spec", false) == 0)
ZmienDruzyne(client);
else if(strcmp(text, "/daj", false) == 0 || strcmp(text, "/oddaj", false) == 0)
OddajItem(client);
else if(strcmp(text, "/wymien", false) == 0 || strcmp(text, "/zamien", false) == 0)
WymienItem(client);
SetCmdReplySource(old);
return Plugin_Continue;
}
public Action:BlokujKomende(client, args)
{
return Plugin_Handled;
}
public Action:TextMessage(UserMsg:msg_text, Handle:pb, const players[], playersNum, bool:reliable, bool:init)
{
if(!reliable || PbReadInt(pb, "msg_dst") != 3)
return Plugin_Continue;
new String:buffer[256];
PbReadString(pb, "params", buffer, sizeof(buffer), 0);
if(StrContains(buffer, "#Player_Cash_Award_") == 0 || StrContains(buffer, "#Team_Cash_Award_") == 0)
return Plugin_Handled;
return Plugin_Continue;
}
public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapons)
{
if(!IsValidClient(client) || !IsPlayerAlive(client) || freezetime)
return;
new String:weapon[32];
GetClientWeapon(client, weapon, sizeof(weapon));
switch(klasa_gracza[client])
{
case Medyk:
{
if(!oldbuttons1[client] && buttons & IN_USE)
{
if(ilosc_apteczek_gracza[client])
{
new Float:fOrigin[3];
new Float:iOrigin[3];
GetClientEyePosition(client, Float:fOrigin);
for(new i = 1; i <= MaxClients; i++)
{
if(!IsClientInGame(i) || !IsPlayerAlive(i))
continue;
if(GetClientTeam(client) != GetClientTeam(i))
continue;
GetClientEyePosition(i, Float:iOrigin);
if(GetVectorDistance(fOrigin, iOrigin) <= 200.0)
{
new heal = 40+maksymalna_inteligencja_gracza[client];
SetEntData(i, FindDataMapOffs(i, "m_iHealth"), GetClientHealth(i)+heal<maksymalne_zdrowie_gracza[i]? GetClientHealth(i)+heal: maksymalne_zdrowie_gracza[i]);
}
}
TE_SetupBeamRingPoint(fOrigin, 20.0, 200.0, sprite_laser, sprite_halo, 0, 10, 0.6, 6.0, 0.0, {255, 255, 255, 128}, 10, 0);
TE_SendToAll();
ilosc_apteczek_gracza[client]--;
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wykorzystałeś już moc swojej klasy w tej rundzie!");
oldbuttons1[client] = true;
}
else if(oldbuttons1[client] && !(buttons & IN_USE))
oldbuttons1[client] = false;
}
case Kangur:
{
if(!oldbuttons1[client] && buttons & IN_JUMP)
{
if(GetGameTime() >= czas_skokow_gracza[client]+1.0)
{
new Float:fOrigin[3];
fOrigin[0] = GetEntDataFloat(client, FindSendPropOffs("CBasePlayer","m_vecVelocity[0]"))*0.8/2.0;
fOrigin[1] = GetEntDataFloat(client, FindSendPropOffs("CBasePlayer","m_vecVelocity[1]"))*0.8/2.0;
fOrigin[2] = 0.8*50.0;
SetEntDataVector(client, FindSendPropOffs("CBasePlayer","m_vecBaseVelocity"), fOrigin, true);
czas_skokow_gracza[client] = RoundFloat(GetGameTime());
}
oldbuttons1[client] = true;
}
else if(oldbuttons1[client] && !(buttons & IN_JUMP))
oldbuttons1[client] = false;
}
case Szturmen:
{
if(!oldbuttons1[client] && buttons & IN_JUMP)
{
new flags = GetEntityFlags(client);
if(!(flags & FL_ONGROUND) && umiejetnosc_gracza[client])
{
new Float:fOrigin[3];
GetEntPropVector(client, Prop_Data, "m_vecVelocity", fOrigin);
fOrigin[2] += 250.0;
TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, fOrigin);
umiejetnosc_gracza[client] = false;
}
else if(flags & FL_ONGROUND)
umiejetnosc_gracza[client] = true;
oldbuttons1[client] = true;
}
else if(oldbuttons1[client] && !(buttons & IN_JUMP))
oldbuttons1[client] = false;
}
}
switch(informacje_itemu_gracza[client][0])
{
case 3:
{
if(GetGameTime() >= informacje_itemu_gracza[client][1]+10.0)
{
SetEntData(client, FindDataMapOffs(client, "m_iHealth"), GetClientHealth(client)+10<maksymalne_zdrowie_gracza[client]? GetClientHealth(client)+10: maksymalne_zdrowie_gracza[client]);
informacje_itemu_gracza[client][1] = RoundFloat(GetGameTime());
}
}
case 4:
{
if(!oldbuttons2[client] && buttons & IN_USE)
{
if(informacje_itemu_gracza[client][1])
{
SetEntData(client, FindDataMapOffs(client, "m_iHealth"), maksymalne_zdrowie_gracza[client]);
informacje_itemu_gracza[client][1] --;
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wykorzystałeś już moc swojego itemu w tej rundzie!");
oldbuttons2[client] = true;
}
else if(oldbuttons2[client] && !(buttons & IN_USE))
oldbuttons2[client] = false;
}
case 13:
{
if(!oldbuttons2[client] && buttons & IN_USE)
{
if(GetEntProp(client, Prop_Send, "m_bNightVisionOn"))
SetEntProp(client, Prop_Send, "m_bNightVisionOn", 0);
else
SetEntProp(client, Prop_Send, "m_bNightVisionOn", 1);
oldbuttons2[client] = true;
}
else if(oldbuttons2[client] && !(buttons & IN_USE))
oldbuttons2[client] = false;
}
case 19:
{
if(!oldbuttons2[client] && buttons & IN_JUMP)
{
new flags = GetEntityFlags(client);
if(!(flags & FL_ONGROUND) && informacje_itemu_gracza[client][1])
{
new Float:fOrigin[3];
GetEntPropVector(client, Prop_Data, "m_vecVelocity", fOrigin);
fOrigin[2] += 250.0;
TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, fOrigin);
informacje_itemu_gracza[client][1] --;
}
else if(flags & FL_ONGROUND)
informacje_itemu_gracza[client][1] = 1;
oldbuttons2[client] = true;
}
else if(oldbuttons2[client] && !(buttons & IN_JUMP))
oldbuttons2[client] = false;
}
case 22:
{
if(!oldbuttons2[client] && buttons & IN_USE)
{
if(GetGameTime() >= informacje_itemu_gracza[client][1]+4.0)
{
new Float:velocity[3];
new Float:velocity0;
new Float:velocity1;
velocity0 = GetEntPropFloat(client, Prop_Send, "m_vecVelocity[0]");
velocity1 = GetEntPropFloat(client, Prop_Send, "m_vecVelocity[1]");
velocity[0] = (7.0*velocity0)*(1.0/4.1);
velocity[1] = (7.0*velocity1)*(1.0/4.1);
velocity[2] = 0.0;
SetEntPropVector(client, Prop_Send, "m_vecBaseVelocity", velocity);
informacje_itemu_gracza[client][1] = RoundFloat(GetGameTime());
}
oldbuttons2[client] = true;
}
else if(oldbuttons2[client] && !(buttons & IN_USE))
oldbuttons2[client] = false;
}
case 25:
{
if(!oldbuttons2[client] && buttons & IN_ATTACK2)
{
if(!StrEqual(weapon, nazwy_broni[25]) && !StrEqual(weapon, nazwy_broni[26]) && !StrEqual(weapon, nazwy_broni[27]) && !StrEqual(weapon, nazwy_broni[28]) && !StrEqual(weapon, nazwy_broni[29]) && !StrEqual(weapon, nazwy_broni[30]) && !StrEqual(weapon, nazwy_broni[33]) && !StrEqual(weapon, nazwy_broni[34]) && !StrEqual(weapon, nazwy_broni[35]) && !StrEqual(weapon, nazwy_broni[36]) && !StrEqual(weapon, nazwy_broni[37]) && !StrEqual(weapon, nazwy_broni[38]) && !StrEqual(weapon, nazwy_broni[40]) && !StrEqual(weapon, nazwy_broni[41]))
{
if(informacje_itemu_gracza[client][1])
{
informacje_itemu_gracza[client][1] --;
SetEntProp(client, Prop_Send, "m_iFOV", 270);
}
else
{
informacje_itemu_gracza[client][1] = 1;
SetEntProp(client, Prop_Send, "m_iFOV", 90);
}
}
oldbuttons2[client] = true;
}
else if(oldbuttons2[client] && !(buttons & IN_ATTACK2))
oldbuttons2[client] = false;
}
case 26:
{
if(GetGameTime() >= informacje_itemu_gracza[client][1]+20.0)
{
GivePlayerItem(client, nazwy_broni[34]);
informacje_itemu_gracza[client][1] = RoundFloat(GetGameTime());
}
}
case 31:
{
if(buttons & IN_ATTACK)
{
new ent = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
if(ent != -1)
SetEntData(ent, FindSendPropOffs("CWeaponCSBase", "m_iRecoilIndex"), 0);
}
}
case 34:
{
if(!StrEqual(weapon, nazwy_broni[33]) && !StrEqual(weapon, nazwy_broni[34]) && !StrEqual(weapon, nazwy_broni[35]) && !StrEqual(weapon, nazwy_broni[36]) && !StrEqual(weapon, nazwy_broni[37]) && !StrEqual(weapon, nazwy_broni[38]) && !StrEqual(weapon, nazwy_broni[39]) && !StrEqual(weapon, nazwy_broni[41]))
{
if(buttons & IN_ATTACK)
{
new ent = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
if(ent != -1)
SetEntData(ent, FindSendPropOffs("CWeaponCSBase", "m_iClip1"), 5);
}
}
}
case 35:
{
if(!StrEqual(weapon, nazwy_broni[33]) && !StrEqual(weapon, nazwy_broni[34]) && !StrEqual(weapon, nazwy_broni[35]) && !StrEqual(weapon, nazwy_broni[36]) && !StrEqual(weapon, nazwy_broni[37]) && !StrEqual(weapon, nazwy_broni[38]) && !StrEqual(weapon, nazwy_broni[41]))
{
if(buttons & IN_ATTACK)
{
new ent = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
if(ent != -1)
{
new Float:flNextPrimaryAttack = GetEntDataFloat(ent, FindSendPropOffs("CBaseCombatWeapon", "m_flNextPrimaryAttack"))-GetGameTime();
SetEntDataFloat(ent, FindSendPropOffs("CBaseCombatWeapon", "m_flNextPrimaryAttack"), (flNextPrimaryAttack/1.4)+GetGameTime());
}
}
}
}
case 38:
{
if(!oldbuttons2[client] && buttons & IN_USE)
{
if(informacje_itemu_gracza[client][1])
{
new Float:fOrigin[3];
new Float:iOrigin[3];
GetClientEyePosition(client, Float:fOrigin);
for(new i = 1; i <= MaxClients; i++)
{
if(!IsClientInGame(i) || !IsPlayerAlive(i))
continue;
if(GetClientTeam(client) == GetClientTeam(i))
continue;
if(informacje_itemu_gracza[i][0] == 29)
continue;
GetClientEyePosition(i, Float:iOrigin);
if(GetVectorDistance(fOrigin, iOrigin) <= 200.0)
{
if(GetEntProp(i, Prop_Send, "m_ArmorValue"))
SetEntProp(i, Prop_Send, "m_ArmorValue", 0);
IgniteEntity(i, 15.0);
}
}
TE_SetupBeamRingPoint(fOrigin, 20.0, 200.0, sprite_laser, sprite_halo, 0, 10, 0.6, 6.0, 0.0, {255, 255, 255, 128}, 10, 0);
TE_SendToAll();
informacje_itemu_gracza[client][1] --;
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wykorzystałeś już moc swojego itemu w tej rundzie!");
oldbuttons2[client] = true;
}
else if(oldbuttons2[client] && !(buttons & IN_USE))
oldbuttons2[client] = false;
}
}
}
public Action:TraceAttack(victim, &attacker, &inflictor, &Float:damage, &damagetype, &ammotype, hitbox, hitgroup)
{
if(!IsValidClient(victim) || !IsValidClient(attacker))
return Plugin_Continue;
if(GetClientTeam(victim) == GetClientTeam(attacker))
return Plugin_Continue;
if(klasa_gracza[attacker])
{
doswiadczenie_gracza[attacker] += RoundFloat(damage);
SprawdzPoziom(attacker);
}
if(hitgroup == 1)
headshot[victim] = true;
else
headshot[victim] = false;
if(hitgroup == 3)
tulow[victim] = true;
else
tulow[victim] = false;
return Plugin_Continue;
}
public Action:TakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype)
{
if(!IsValidClient(victim))
return Plugin_Continue;
if(informacje_itemu_gracza[victim][0] == 13 && damagetype & DMG_FALL)
return Plugin_Handled;
if(IsValidClient(attacker) && GetClientTeam(victim) != GetClientTeam(attacker))
{
new dmg = 0;
new zabicie = 0;
new odpornosc = 0;
new String:weapon[32];
GetClientWeapon(attacker, weapon, sizeof(weapon));
switch(klasa_gracza[attacker])
{
case Snajper:
{
if(klasa_gracza[victim] != Obronca && informacje_itemu_gracza[victim][0] != 30)
{
if(StrEqual(weapon, nazwy_broni[28]) && damagetype & DMG_BULLET)
dmg += 50+maksymalna_inteligencja_gracza[attacker];
}
}
case Komandos:
{
if(klasa_gracza[victim] != Obronca && informacje_itemu_gracza[victim][0] != 30)
{
if(StrEqual(weapon, nazwy_broni[40]) && damagetype & DMG_SLASH && GetClientButtons(attacker) & IN_ATTACK2)
dmg += 50+maksymalna_inteligencja_gracza[attacker];
}
}
case DGLMaster:
{
if(klasa_gracza[victim] != Obronca && informacje_itemu_gracza[victim][0] != 30)
{
if(StrEqual(weapon, nazwy_broni[7]) && damagetype & DMG_BULLET)
dmg += maksymalna_inteligencja_gracza[attacker];
}
}
case Scouter:
{
if(klasa_gracza[victim] != Obronca && informacje_itemu_gracza[victim][0] != 30)
{
if(GetRandomInt(1, 3) == 1 && StrEqual(weapon, nazwy_broni[27]) && damagetype & DMG_BULLET)
{
dmg += GetClientHealth(victim)+1;
zabicie = 1;
}
}
}
case Rambo:
{
if(klasa_gracza[victim] != Obronca && informacje_itemu_gracza[victim][0] != 30)
{
if(GetRandomInt(1, 2) == 1 && StrEqual(weapon, nazwy_broni[40]) && damagetype & DMG_SLASH && GetClientButtons(attacker) & IN_ATTACK2)
{
dmg += GetClientHealth(victim)+1;
zabicie = 1;
}
SetEntData(attacker, FindDataMapOffs(attacker, "m_iHealth"), (GetClientHealth(attacker)+RoundFloat(damage*0.1) > maksymalne_zdrowie_gracza[attacker])? maksymalne_zdrowie_gracza[attacker]: GetClientHealth(attacker)+RoundFloat(damage*0.1));
}
}
}
switch(klasa_gracza[victim])
{
case Mauser:
{
if(klasa_gracza[attacker] != Obronca && informacje_itemu_gracza[attacker][0] != 30)
{
if(tulow[victim])
odpornosc = 1;
}
}
}
switch(informacje_itemu_gracza[attacker][0])
{
case 6:
{
if(informacje_itemu_gracza[victim][0] != 29)
SetEntData(attacker, FindDataMapOffs(attacker, "m_iHealth"), (GetClientHealth(attacker)+RoundFloat(damage*0.3) > maksymalne_zdrowie_gracza[attacker])? maksymalne_zdrowie_gracza[attacker]: GetClientHealth(attacker)+RoundFloat(damage*0.3));
}
case 15:
{
if(informacje_itemu_gracza[victim][0] != 29)
dmg += 10;
}
case 16:
{
if(informacje_itemu_gracza[victim][0] != 29)
dmg += 15;
}
case 17:
{
if(informacje_itemu_gracza[victim][0] != 29)
{
if(StrEqual(weapon, nazwy_broni[40]) && damagetype & DMG_SLASH)
dmg += 60;
}
}
case 18:
{
if(informacje_itemu_gracza[victim][0] != 29)
{
if(StrEqual(weapon, nazwy_broni[40]) && damagetype & DMG_SLASH && GetClientButtons(attacker) & IN_ATTACK2)
{
dmg += GetClientHealth(victim)+1;
zabicie = 1;
}
}
}
case 23:
{
if(informacje_itemu_gracza[victim][0] != 29)
{
if(tulow[victim])
dmg += RoundFloat(damage*0.4);
}
}
case 24:
{
if(informacje_itemu_gracza[victim][0] != 29)
{
if((StrEqual(weapon, nazwy_broni[1]) || StrEqual(weapon, nazwy_broni[2]) || StrEqual(weapon, nazwy_broni[3]) || StrEqual(weapon, nazwy_broni[4]) || StrEqual(weapon, nazwy_broni[5]) || StrEqual(weapon, nazwy_broni[6]) || StrEqual(weapon, nazwy_broni[7]) || StrEqual(weapon, nazwy_broni[8]) || StrEqual(weapon, nazwy_broni[9])) && damagetype & DMG_BULLET)
dmg += RoundFloat(damage*0.4);
}
}
case 27:
{
if(informacje_itemu_gracza[victim][0] != 29)
{
if(GetRandomInt(1, informacje_itemu_gracza[attacker][1]) == 1)
ClientCommand(victim, "drop");
}
}
case 28:
{
if(informacje_itemu_gracza[victim][0] != 29)
{
if(GetRandomInt(1, informacje_itemu_gracza[attacker][1]) == 1)
{
if(GetEntProp(victim, Prop_Send, "m_ArmorValue"))
SetEntProp(victim, Prop_Send, "m_ArmorValue", 0);
IgniteEntity(victim, 3.0);
}
}
}
case 33:
{
if(informacje_itemu_gracza[victim][0] != 29)
dmg += informacje_itemu_gracza[attacker][1];
}
case 42:
{
if(informacje_itemu_gracza[victim][0] != 29)
{
if(GetRandomInt(1, informacje_itemu_gracza[attacker][1]) == 1)
{
dmg += GetClientHealth(victim)+1;
zabicie = 1;
}
}
}
case 46:
{
if(informacje_itemu_gracza[victim][0] != 29)
{
if(headshot[victim])
{
dmg += GetClientHealth(victim)+1;
zabicie = 1;
}
}
}
case 47:
{
if(informacje_itemu_gracza[victim][0] != 29)
dmg += informacje_itemu_gracza[attacker][1];
}
case 48:
{
if(informacje_itemu_gracza[victim][0] != 29)
{
if(GetRandomInt(1, informacje_itemu_gracza[attacker][1]) == 1)
dmg += RoundFloat(damage*0.4);
}
}
case 49:
{
if(informacje_itemu_gracza[victim][0] != 29)
{
if(GetRandomInt(1, informacje_itemu_gracza[attacker][1]) == 1)
{
new ent = GetEntPropEnt(victim, Prop_Send, "m_hActiveWeapon");
if(ent != -1)
SetEntData(ent, FindSendPropOffs("CWeaponCSBase", "m_iClip1"), 0);
}
}
}
}
switch(informacje_itemu_gracza[victim][0])
{
case 14:
{
if(informacje_itemu_gracza[attacker][0] != 29)
{
if(informacje_itemu_gracza[victim][1])
{
informacje_itemu_gracza[victim][1] --;
odpornosc = 1;
}
}
}
case 20:
{
if(informacje_itemu_gracza[attacker][0] != 29)
{
if(headshot[victim])
odpornosc = 1;
}
}
case 21:
{
if(informacje_itemu_gracza[attacker][0] != 29 && IsPlayerAlive(attacker))
{
if(GetRandomInt(1, informacje_itemu_gracza[victim][1]) == 1)
{
SDKHooks_TakeDamage(attacker, victim, victim, 0.0+float(RoundFloat(damage)), DMG_GENERIC);
odpornosc = 1;
}
}
}
}
if(odpornosc)
{
if(damagetype & (DMG_BULLET | DMG_SLASH))
return Plugin_Handled;
}
else
{
if(zabicie)
{
if(GetEntProp(victim, Prop_Send, "m_ArmorValue"))
SetEntProp(victim, Prop_Send, "m_ArmorValue", 0);
damage = RoundFloat(damage+dmg)*(1.0+maksymalne_obrazenia_gracza[attacker]);
}
else
damage = RoundFloat(damage+dmg)*(1.0+maksymalne_obrazenia_gracza[attacker]-maksymalna_wytrzymalosc_gracza[victim]);
return Plugin_Changed;
}
}
return Plugin_Continue;
}
public Action:WeaponCanUse(client, bron)
{
if(!IsValidClient(client) || IsFakeClient(client))
return Plugin_Continue;
new String:weapon[32];
GetEdictClassname(bron, weapon, sizeof(weapon));
switch(informacje_itemu_gracza[client][0])
{
case 26:
{
if(StrEqual(weapon, nazwy_broni[34]))
return Plugin_Continue;
}
case 32:
{
if(StrEqual(weapon, nazwy_broni[36]))
return Plugin_Continue;
}
case 33:
{
if(StrEqual(weapon, nazwy_broni[36]))
return Plugin_Continue;
}
case 36: SetEntityGravity(client, 0.5);
case 43: return Plugin_Continue;
}
switch(klasa_gracza[client])
{
case Thief: return Plugin_Continue;
case Terminator:
{
if(StrEqual(weapon, nazwy_broni[6]))
return Plugin_Continue;
}
case Szturmen:
{
if(StrEqual(weapon, nazwy_broni[5]) || StrEqual(weapon, nazwy_broni[23]))
return Plugin_Continue;
}
case Saper:
{
if(!oldbuttons1[client] && buttons & IN_USE)
{
if(ilosc_dynamitow_gracza[client])
{
new Float:fOrigin[3];
new Float:iOrigin[3];
GetClientEyePosition(client, Float:fOrigin);
for(new i = 1, max = GetMaxClients(); i <= max; ++ i)
{
if(!IsClientInGame(i) || !IsPlayerAlive(i))
continue;
if(GetClientTeam(client) == GetClientTeam(i))
continue;
GetClientEyePosition(i, Float:iOrigin);
if(GetVectorDistance(fOrigin, iOrigin) <= 200.0)
SDKHooks_TakeDamage(i, client, client, ((klasa_gracza[i] == Obronca || informacje_itemu_gracza[i][0] == 30)? 0.0: 40.0+(inteligencja_gracza[client]+bonusowa_inteligencja_gracza[client])/6), DMG_GENERIC);
}
TE_SetupBeamRingPoint(fOrigin, 20.0, 200.0, sprite_laser, sprite_halo, 0, 10, 0.6, 6.0, 0.0, {255, 255, 255, 128}, 10, 0);
TE_SendToAll();
ilosc_dynamitow_gracza[client]--;
}
else
PrintToChat(client, "[COD:MW] Wykorzystales juz moc swojej klasy w tej rundzie!");
oldbuttons1[client] = 1;
}
else if(oldbuttons1[client] && !(buttons & IN_USE))
oldbuttons1[client] = 0;
}
}
if(StrEqual(weapon, nazwy_broni[40]) || StrEqual(weapon, nazwy_broni[41]))
return Plugin_Continue;
if(!StrEqual(weapon, nazwy_broni[bronie_klas[klasa_gracza[client]][0]]) && !StrEqual(weapon, nazwy_broni[bronie_klas[klasa_gracza[client]][1]]) && !StrEqual(weapon, nazwy_broni[bronie_klas[klasa_gracza[client]][2]]) && !StrEqual(weapon, nazwy_broni[bronie_klas[klasa_gracza[client]][3]]) && !StrEqual(weapon, nazwy_broni[bronie_klas[klasa_gracza[client]][4]]))
return Plugin_Handled;
return Plugin_Continue;
}
public Action:NowaRunda(Handle:event, const String:name[],bool:dontBroadcast)
{
freezetime = true;
}
public Action:PoczatekRundy(Handle:event, const String:name[], bool:dontBroadcast)
{
freezetime = false;
}
public Action:KoniecRundy(Handle:event, const String:name[],bool:dontBroadcast)
{
for(new i = 1; i <= MaxClients; i++)
{
if(!IsClientInGame(i) || !klasa_gracza[i])
continue;
new doswiadczenie = 0;
new druzyna = GetEventInt(event, "winner");
if(druzyna == 2 && GetClientTeam(i) == CS_TEAM_T || druzyna == 3 && GetClientTeam(i) == CS_TEAM_CT)
{
if(vip_gracza[i])
doswiadczenie += xp_winround_vip;
else
doswiadczenie += xp_winround;
if(IsPlayerAlive(i))
{
PrintToChat(i, "[\x02COD MOD\x01]\x04 Dostałeś %i doświadczenia za wygranie rundy.", doswiadczenie);
doswiadczenie_gracza[i] += doswiadczenie;
}
else
{
PrintToChat(i, "[\x02COD MOD\x01]\x04 Dostałeś %i doświadczenia za wygranie rundy przez Twoją drużynę.", doswiadczenie/2);
doswiadczenie_gracza[i] += doswiadczenie/2;
}
SprawdzPoziom(i);
}
}
}
public Action:BombaPodlozona(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if(StrEqual(name, "bomb_planted"))
{
for(new i = 1; i <= MaxClients; i++)
{
if(!IsClientInGame(i) || !klasa_gracza[i])
continue;
if(GetClientTeam(i) != CS_TEAM_T)
continue;
new doswiadczenie = 0;
if(vip_gracza[i])
doswiadczenie += xp_objectives_vip;
else
doswiadczenie += xp_objectives;
if(i == client)
{
PrintToChat(i, "[\x02COD MOD\x01]\x04 Dostałeś %i doświadczenia za podłożenie bomby.", doswiadczenie);
doswiadczenie_gracza[i] += doswiadczenie;
}
else
{
PrintToChat(i, "[\x02COD MOD\x01]\x04 Dostałeś %i doświadczenia za podłożenie bomby przez Twoją drużynę.", doswiadczenie/2);
doswiadczenie_gracza[i] += doswiadczenie/2;
}
SprawdzPoziom(i);
}
}
}
public Action:BombaRozbrojona(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if(StrEqual(name, "bomb_defused"))
{
for(new i = 1; i <= MaxClients; i++)
{
if(!IsClientInGame(i) || !klasa_gracza[i])
continue;
if(GetClientTeam(i) != CS_TEAM_CT)
continue;
new doswiadczenie = 0;
if(vip_gracza[i])
doswiadczenie += xp_objectives_vip;
else
doswiadczenie += xp_objectives;
if(i == client)
{
PrintToChat(i, "[\x02COD MOD\x01]\x04 Dostałeś %i doświadczenia za rozbrojenie bomby.", doswiadczenie);
doswiadczenie_gracza[i] += doswiadczenie;
}
else
{
PrintToChat(i, "[\x02COD MOD\x01]\x04 Dostałeś %i doświadczenia za rozbrojenie bomby przez Twoją druzynę.", doswiadczenie/2);
doswiadczenie_gracza[i] += doswiadczenie/2;
}
SprawdzPoziom(i);
}
}
}
public Action:ZakladnikUratowany(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if(StrEqual(name, "hostage_rescued"))
{
for(new i = 1; i <= MaxClients; i++)
{
if(!IsClientInGame(i) || !klasa_gracza[i])
continue;
if(GetClientTeam(i) != CS_TEAM_CT)
continue;
new doswiadczenie = 0;
if(vip_gracza[i])
doswiadczenie += xp_objectives_vip;
else
doswiadczenie += xp_objectives;
if(i == client)
{
PrintToChat(i, "[\x02COD MOD\x01]\x04 Dostałeś %i doświadczenia za uratowanie zakładnika.", doswiadczenie);
doswiadczenie_gracza[i] += doswiadczenie;
}
else
{
PrintToChat(i, "[\x02COD MOD\x01]\x04 Dostałeś %i doświadczenia za uratowanie zakładnika przez Twoją drużynę.", doswiadczenie/2);
doswiadczenie_gracza[i] += doswiadczenie/2;
}
SprawdzPoziom(i);
}
}
}
public Action:CodMenu(client, args)
{
new Handle:menu = CreateMenu(CodMenu_Handler);
SetMenuTitle(menu, "CodMenu:");
AddMenuItem(menu, "1", "Sklep");
AddMenuItem(menu, "2", "Wybierz Klasę");
AddMenuItem(menu, "3", "Wyrzuć Item");
AddMenuItem(menu, "4", "Napraw Item");
AddMenuItem(menu, "5", "Opis Itemu");
AddMenuItem(menu, "6", "Menu Admina");
DisplayMenu(menu, client, 250);
return Plugin_Handled;
}
public CodMenu_Handler(Handle:classhandle, MenuAction:action, client, Position)
{
if(action == MenuAction_Select)
{
new String:Item[32];
GetMenuItem(classhandle, Position, Item, sizeof(Item));
if(StrEqual(Item, "1"))
CodSklep(client);
else if(StrEqual(Item, "2"))
WybierzKlase(client);
else if(StrEqual(Item, "3"))
WyrzucItem(client);
else if(StrEqual(Item, "4"))
NaprawItem(client);
else if(StrEqual(Item, "5"))
OpisItemu(client);
else if(StrEqual(Item, "6"))
ClientCommand(client, "sm_admin");
}
else if(action == MenuAction_End)
CloseHandle(classhandle);
}
public Action:CodSklep(client)
{
if(klasa_gracza[client])
{
new Handle:menu = CreateMenu(CodSklep_Handler);
SetMenuTitle(menu, "Cod Mod Sklep:");
AddMenuItem(menu, "1", "Mała Apteczka [Leczy 20 HP] Koszt: 2000$");
AddMenuItem(menu, "2", "Średnia Apteczka [Leczy 50 HP] Koszt: 5000$");
AddMenuItem(menu, "3", "Duża Apteczka [Leczy 100 HP] Koszt: 10000$");
AddMenuItem(menu, "4", "Duży Lotek [Wygraj Kasę] Koszt: 2000$");
AddMenuItem(menu, "5", "Doświadczenie [Dostajesz 100 Dośw.] Koszt: 6000$");
AddMenuItem(menu, "6", "Super Doświadczenie [Dostajesz 225 Dośw.] Koszt: 12000$");
AddMenuItem(menu, "7", "Losowy Item [Dostajesz Losowy Item] Koszt: 3000$");
AddMenuItem(menu, "8", "Sprzedaż Itemu [Dostajesz $ za Item] Dostajesz: 1500$");
AddMenuItem(menu, "9", "Moc Itemu [+20 Procent Mocy Itemu] Koszt: 8000$");
DisplayMenu(menu, client, 250);
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Musisz mieć wybraną klasę aby móc włączyć sklep!");
}
public CodSklep_Handler(Handle:classhandle, MenuAction:action, client, Position)
{
if(action == MenuAction_Select)
{
new String:Item[32];
GetMenuItem(classhandle, Position, Item, sizeof(Item));
CodSklep(client);
if(StrEqual(Item, "1"))
{
if(GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount")) >= 2000)
{
if(IsPlayerAlive(client))
{
if(maksymalne_zdrowie_gracza[client] > GetClientHealth(client))
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))-2000);
SetEntData(client, FindDataMapOffs(client, "m_iHealth"), GetClientHealth(client)+20<maksymalne_zdrowie_gracza[client]? GetClientHealth(client)+20: maksymalne_zdrowie_gracza[client]);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Kupiłeś Małą Apteczkę.");
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Jesteś w pełni uleczony!");
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Musisz być żywy aby móc kupić Małą Apteczkę!");
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Masz za mało pieniędzy!");
}
else if(StrEqual(Item, "2"))
{
if(GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount")) >= 5000)
{
if(IsPlayerAlive(client))
{
if(maksymalne_zdrowie_gracza[client] > GetClientHealth(client))
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))-5000);
SetEntData(client, FindDataMapOffs(client, "m_iHealth"), GetClientHealth(client)+50<maksymalne_zdrowie_gracza[client]? GetClientHealth(client)+50: maksymalne_zdrowie_gracza[client]);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Kupiłeś Średnią Apteczkę.");
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Jesteś w pełni uleczony!");
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Musisz być żywy aby móc kupić Średnią Apteczkę!");
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Masz za mało pieniędzy!");
}
else if(StrEqual(Item, "3"))
{
if(GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount")) >= 10000)
{
if(IsPlayerAlive(client))
{
if(maksymalne_zdrowie_gracza[client] > GetClientHealth(client))
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))-10000);
SetEntData(client, FindDataMapOffs(client, "m_iHealth"), GetClientHealth(client)+100<maksymalne_zdrowie_gracza[client]? GetClientHealth(client)+100: maksymalne_zdrowie_gracza[client]);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Kupiłeś Dużą Apteczkę.");
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Jesteś w pełni uleczony!");
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Musisz być żywy aby móc kupić Dużą Apteczkę!");
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Masz za mało pieniędzy!");
}
else if(StrEqual(Item, "4"))
{
if(GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount")) >= 2000)
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))-2000);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Zagrałeś w lotto...");
switch(GetRandomInt(0, 29))
{
case 0: PrintToChat(client, "[\x02COD MOD\x01]\x04 Niestety nic nie wygrałeś...");
case 1:
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+300);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wygrałeś 300$!");
}
case 2: PrintToChat(client, "[\x02COD MOD\x01]\x04 Niestety nic nie wygrałeś...");
case 3:
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+600);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wygrałeś 600$!");
}
case 4: PrintToChat(client, "[\x02COD MOD\x01]\x04 Niestety nic nie wygrałeś...");
case 5:
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+900);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wygrałeś 900$!");
}
case 6: PrintToChat(client, "[\x02COD MOD\x01]\x04 Niestety nic nie wygrałeś...");
case 7:
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+1200);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wygrałeś 1200$!");
}
case 8: PrintToChat(client, "[\x02COD MOD\x01]\x04 Niestety nic nie wygrałeś...");
case 9:
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+1500);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wygrałeś 1500$!");
}
case 10: PrintToChat(client, "[\x02COD MOD\x01]\x04 Niestety nic nie wygrałeś...");
case 11:
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+1800);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wygrałeś 1800$!");
}
case 12: PrintToChat(client, "[\x02COD MOD\x01]\x04 Niestety nic nie wygrałeś...");
case 13:
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+2100);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wygrałeś 2100$!");
}
case 14: PrintToChat(client, "[\x02COD MOD\x01]\x04 Niestety nic nie wygrałeś...");
case 15:
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+2400);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wygrałeś 2400$!");
}
case 16: PrintToChat(client, "[\x02COD MOD\x01]\x04 Niestety nic nie wygrałeś...");
case 17:
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+2700);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wygrałeś 2700$!");
}
case 18: PrintToChat(client, "[\x02COD MOD\x01]\x04 Niestety nic nie wygrałeś...");
case 19:
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+3000);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wygrałeś 3000$!");
}
case 20: PrintToChat(client, "[\x02COD MOD\x01]\x04 Niestety nic nie wygrałeś...");
case 21:
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+3300);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wygrałeś 3300$!");
}
case 22: PrintToChat(client, "[\x02COD MOD\x01]\x04 Niestety nic nie wygrałeś...");
case 23:
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+3600);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wygrałeś 3600$!");
}
case 24: PrintToChat(client, "[\x02COD MOD\x01]\x04 Niestety nic nie wygrałeś...");
case 25:
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+4200);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wygrałeś 4200$!");
}
case 26: PrintToChat(client, "[\x02COD MOD\x01]\x04 Niestety nic nie wygrałeś...");
case 27:
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+4800);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wygrałeś 4800$!");
}
case 28: PrintToChat(client, "[\x02COD MOD\x01]\x04 Niestety nic nie wygrałeś...");
case 29:
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+5400);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wygrałeś 5400$!");
}
}
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Masz za mało pieniędzy!");
}
else if(StrEqual(Item, "5"))
{
if(GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount")) >= 6000)
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))-6000);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Kupiłeś Doświadczenie.");
doswiadczenie_gracza[client] += 100;
SprawdzPoziom(client);
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Masz za mało pieniędzy!");
}
else if(StrEqual(Item, "6"))
{
if(GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount")) >= 12000)
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))-12000);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Kupiłeś Super Doświadczenie.");
doswiadczenie_gracza[client] += 225;
SprawdzPoziom(client);
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Masz za mało pieniędzy!");
}
else if(StrEqual(Item, "7"))
{
if(GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount")) >= 3000)
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))-3000);
DajItem(client, GetRandomInt(1, sizeof nazwy_itemow-1));
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wylosowałeś %s.", nazwy_itemow[informacje_itemu_gracza[client][0]]);
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Masz za mało pieniędzy!");
}
else if(StrEqual(Item, "8"))
{
if(GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount")) >= 1000)
{
if(informacje_itemu_gracza[client][0])
{
new losowanie = GetRandomInt(500, 1500);
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+1000+losowanie);
UsunItem(client);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Dostałeś +%i$ za sprzedaz swojego itemu.", losowanie);
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Nie masz żadnego itemu!");
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Masz za mało pieniędzy!");
}
else if(StrEqual(Item, "9"))
NaprawItem(client);
}
else if(action == MenuAction_End)
CloseHandle(classhandle);
}
public Action:NaprawItem(client)
{
if(GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount")) >= 8000)
{
if(informacje_itemu_gracza[client][0] && moc_itemu[client] < 100)
{
SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))-8000);
moc_itemu[client] += 20;
PrintToChat(client, "[\x02COD MOD\x01]\x04 Kupiłeś +20%% Mocy Itemu.");
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Twoj item nie jest uszkodzony!");
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Masz za mało pieniędzy!");
}
public Action:OpisStatystyk(client)
{
new String:opis[512];
Format(opis, sizeof(opis), "Klasa: %s\nPoziom: %i/%i\nDoświadczenie: %i\nKonto Premium: %s", nazwy_klas[klasa_gracza[client]], poziom_gracza[client], limit_poziomu, doswiadczenie_gracza[client], vip_gracza[client]? "Aktywne": "Nie Aktywne");
new Handle:menu = CreateMenu(OpisStatystyk_Handler);
SetMenuTitle(menu, opis);
AddMenuItem(menu, "1", "Punkty Klasy");
DisplayMenu(menu, client, 250);
}
public OpisStatystyk_Handler(Handle:classhandle, MenuAction:action, client, Position)
{
if(action == MenuAction_Select)
{
new String:Item[32];
GetMenuItem(classhandle, Position, Item, sizeof(Item));
if(StrEqual(Item, "1"))
PrzydzielPunkty(client);
}
else if(action == MenuAction_End)
CloseHandle(classhandle);
}
public Action:WybierzKlase(client)
{
if(!sql_baza)
{
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wystąpił błąd podczas pobierania danych z bazy!");
return;
}
if(polaczony_raz[client])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Trwa wczytywanie klas...");
else
{
if(klasa_gracza[client])
{
new klasa_g = klasa_gracza[client];
poziom_klasy_gracza[client][klasa_g] = poziom_gracza[client];
doswiadczenie_klasy_gracza[client][klasa_g] = doswiadczenie_gracza[client];
inteligencja_klasy_gracza[client][klasa_g] = inteligencja_gracza[client];
zdrowie_klasy_gracza[client][klasa_g] = zdrowie_gracza[client];
obrazenia_klasy_gracza[client][klasa_g] = obrazenia_gracza[client];
wytrzymalosc_klasy_gracza[client][klasa_g] = wytrzymalosc_gracza[client];
kondycja_klasy_gracza[client][klasa_g] = kondycja_gracza[client];
misja_klasy_gracza[client][klasa_g] = misja_gracza[client];
zabicia_klasy_gracza[client][klasa_g] = zabicia_gracza[client];
WybierzKlaseMenu(client);
}
else
{
new String:tmp[1024];
new String:authid[64];
if(!GetClientAuthId(client, AuthId_Steam2, authid, sizeof(authid)))
return;
Format(tmp, sizeof(tmp), "SELECT `lvl`, `xp`, `inteligencja`, `zdrowie`, `obrazenia`, `wytrzymalosc`, `kondycja`, `misja`, `zabicia`, `klasa` FROM `codmod` WHERE steamid = '%s';", authid);
SQL_TQuery(sql, WybierzKlase2, tmp, client);
polaczony_raz[client] = true;
}
}
}
public WybierzKlase2(Handle:owner, Handle:query, const String:error[], any:client)
{
if(query == INVALID_HANDLE)
{
LogError("Load error: %s", error);
return;
}
if(SQL_GetRowCount(query))
{
new poziom = 1, doswiadczenie = 0, inteligencja = 0, zdrowie = 0, obrazenia = 0, wytrzymalosc = 0, kondycja = 0, misja = 0, zabicia = 0;
new String:klasa[512];
while(SQL_MoreRows(query))
{
while(SQL_FetchRow(query))
{
poziom = SQL_FetchInt(query, 0);
doswiadczenie = SQL_FetchInt(query, 1);
inteligencja = SQL_FetchInt(query, 2);
zdrowie = SQL_FetchInt(query, 3);
obrazenia = SQL_FetchInt(query, 4);
wytrzymalosc = SQL_FetchInt(query, 5);
kondycja = SQL_FetchInt(query, 6);
misja = SQL_FetchInt(query, 7);
zabicia = SQL_FetchInt(query, 8);
SQL_FetchString(query, 9, klasa, sizeof(klasa));
for(new i = 1; i < sizeof nazwy_klas; i ++)
{
if(StrEqual(nazwy_klas[i], klasa))
{
poziom_klasy_gracza[client][i] = poziom;
doswiadczenie_klasy_gracza[client][i] = doswiadczenie;
inteligencja_klasy_gracza[client][i] = inteligencja;
zdrowie_klasy_gracza[client][i] = zdrowie;
obrazenia_klasy_gracza[client][i] = obrazenia;
wytrzymalosc_klasy_gracza[client][i] = wytrzymalosc;
kondycja_klasy_gracza[client][i] = kondycja;
misja_klasy_gracza[client][i] = misja;
zabicia_klasy_gracza[client][i] = zabicia;
}
}
}
}
}
WybierzKlaseMenu(client);
polaczony_raz[client] = false;
}
public Action:WybierzKlaseMenu(client)
{
new String:klasa[512];
new Handle:menu = CreateMenu(WybierzKlase_Handler);
SetMenuTitle(menu, "Wybierz Klasę:");
for(new i = 1; i < sizeof nazwy_klas; i ++)
{
Format(klasa, sizeof(klasa), "%s (Lv: %i)", nazwy_klas[i], poziom_klasy_gracza[client][i]);
AddMenuItem(menu, "1", klasa);
}
DisplayMenu(menu, client, 250);
}
public WybierzKlase_Handler(Handle:classhandle, MenuAction:action, client, Position)
{
if(action == MenuAction_Select)
{
new String:Item[32];
GetMenuItem(classhandle, Position, Item, sizeof(Item));
Position ++;
if(StrEqual(Item, "1"))
{
if(Position == klasa_gracza[client])
return;
new ma_poziom = 0;
for(new i = 1; i < sizeof nazwy_klas; i ++)
{
if(poziom_klasy_gracza[client][i] >= umiejetnosci_klas[Position][0])
ma_poziom = 1;
}
if(ma_poziom)
{
if(klasa_gracza[client])
{
nowa_klasa_gracza[client] = Position;
PrintToChat(client, "[\x02COD MOD\x01]\x04 Klasa zostanie zmieniona w następnej rundzie.");
}
else
{
klasa_gracza[client] = Position;
WczytajDane(client, klasa_gracza[client]);
Odrodzenie(client);
}
}
else
{
WybierzKlase(client)
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wybrana klasa dostępna jest od %dLv!", umiejetnosci_klas[Position][0]);
}
}
}
else if(action == MenuAction_End)
CloseHandle(classhandle);
}
public Action:OpisKlasy(client)
{
new String:klasa[512];
new Handle:menu = CreateMenu(OpisKlasy_Handler);
SetMenuTitle(menu, "Wybierz Klasę:");
for(new i = 1; i < sizeof nazwy_klas; i ++)
{
Format(klasa, sizeof(klasa), "%s", nazwy_klas[i]);
AddMenuItem(menu, "1", klasa);
}
DisplayMenu(menu, client, 250);
}
public OpisKlasy_Handler(Handle:classhandle, MenuAction:action, client, Position)
{
if(action == MenuAction_Select)
{
new String:Item[32];
GetMenuItem(classhandle, Position, Item, sizeof(Item));
Position ++;
if(StrEqual(Item, "1"))
{
new String:bronie_klasy[512];
Format(bronie_klasy, sizeof(bronie_klasy), "%s %s %s %s %s", nazwy_broni[bronie_klas[Position][0]], nazwy_broni[bronie_klas[Position][1]], nazwy_broni[bronie_klas[Position][2]], nazwy_broni[bronie_klas[Position][3]], nazwy_broni[bronie_klas[Position][4]]);
ReplaceString(bronie_klasy, sizeof(bronie_klasy), "weapon_", "");
PrintToChat(client, "[\x02COD MOD\x01]\x04 Klasa: %s - %s - %s.", nazwy_klas[Position], bronie_klasy, opisy_klas[Position]);
OpisKlasy(client);
}
}
else if(action == MenuAction_End)
CloseHandle(classhandle);
}
public Action:OpisItemow(client)
{
new String:item[512];
new Handle:menu = CreateMenu(OpisItemow_Handler);
SetMenuTitle(menu, "Wybierz Item:");
for(new i = 1; i <sizeof nazwy_itemow; i ++)
{
Format(item, sizeof(item), "%s", nazwy_itemow[i]);
AddMenuItem(menu, "1", item);
}
DisplayMenu(menu, client, 250);
}
public OpisItemow_Handler(Handle:classhandle, MenuAction:action, client, Position)
{
if(action == MenuAction_Select)
{
new String:Item[32];
GetMenuItem(classhandle, Position, Item, sizeof(Item));
Position ++;
if(StrEqual(Item, "1"))
{
PrintToChat(client, "[\x02COD MOD\x01]\x04 Item: %s - %s.", nazwy_itemow[Position], opisy_itemow[Position]);
OpisItemow(client);
}
}
else if(action == MenuAction_End)
CloseHandle(classhandle);
}
public Action:Odrodzenie(client)
{
if(!IsValidClient(client) || !IsPlayerAlive(client))
return;
if(nowa_klasa_gracza[client])
{
if(zapisz_dane[client])
{
ZapiszDane(client);
zapisz_dane[client] = false;
}
klasa_gracza[client] = nowa_klasa_gracza[client];
nowa_klasa_gracza[client] = 0;
ilosc_apteczek_gracza[client] = 0;
CS_UpdateClientModel(client);
WczytajDane(client, klasa_gracza[client]);
ilosc_dynamitow_gracza[client] = 0;
}
if(!klasa_gracza[client])
WybierzKlase(client);
else
{
switch(klasa_gracza[client])
{
case Saper: ilosc_dynamitow_gracza[client] = 2;
case Medyk: ilosc_apteczek_gracza[client] = 2;
case Kangur: czas_skokow_gracza[client] = 0;
case Szpieg: SetEntityModel(client, (GetClientTeam(client) == CS_TEAM_CT)? modele_serwera[GetRandomInt(6, 10)]: modele_serwera[GetRandomInt(1, 5)]);
}
switch(informacje_itemu_gracza[client][0])
{
case 4: informacje_itemu_gracza[client][1] = 1;
case 14: informacje_itemu_gracza[client][1] = 3;
case 19: informacje_itemu_gracza[client][1] = 1;
case 22: informacje_itemu_gracza[client][1] = 0;
case 25: informacje_itemu_gracza[client][1] = 1;
case 32:
{
if(klasa_gracza[client] != Szpieg)
SetEntityModel(client, (GetClientTeam(client) == CS_TEAM_CT)? modele_serwera[GetRandomInt(6, 10)]: modele_serwera[GetRandomInt(1, 5)]);
GivePlayerItem(client, nazwy_broni[36]);
}
case 33: GivePlayerItem(client, nazwy_broni[36]);
case 38: informacje_itemu_gracza[client][1] = 1;
case 45: SetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(client, FindSendPropOffs("CCSPlayer", "m_iAccount"))+1500);
}
if(punkty_gracza[client])
PrzydzielPunkty(client);
for(new slot = 0; slot < 5; slot ++)
{
if(!StrEqual(nazwy_broni[0], nazwy_broni[bronie_klas[klasa_gracza[client]][slot]]))
GivePlayerItem(client, nazwy_broni[bronie_klas[klasa_gracza[client]][slot]]);
}
}
maksymalna_inteligencja_gracza[client] = (inteligencja_gracza[client]+bonusowa_inteligencja_gracza[client])/6;
maksymalne_zdrowie_gracza[client] = umiejetnosci_klas[klasa_gracza[client]][1]+zdrowie_gracza[client]+bonusowe_zdrowie_gracza[client];
maksymalne_obrazenia_gracza[client] = (obrazenia_gracza[client]+bonusowe_obrazenia_gracza[client])*0.003;
maksymalna_wytrzymalosc_gracza[client] = (umiejetnosci_klas[klasa_gracza[client]][2]+wytrzymalosc_gracza[client]+bonusowa_wytrzymalosc_gracza[client])*0.001;
maksymalna_kondycja_gracza[client] = 0.9*(umiejetnosci_klas[klasa_gracza[client]][3]*0.01)+(kondycja_gracza[client]+bonusowa_kondycja_gracza[client])*0.0015;
SetEntData(client, FindDataMapOffs(client, "m_iHealth"), maksymalne_zdrowie_gracza[client]);
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", maksymalna_kondycja_gracza[client]);
}
public Action:DajItem(client, item)
{
if(informacje_itemu_gracza[client][0])
UsunItem(client);
moc_itemu[client] = 100;
informacje_itemu_gracza[client][0] = item;
switch(item)
{
case 1:
{
if(IsPlayerAlive(client))
SetEntData(client, FindDataMapOffs(client, "m_iHealth"), GetClientHealth(client)+30);
bonusowe_zdrowie_gracza[client] += 30;
bonusowa_kondycja_gracza[client] -= 30;
}
case 2:
{
if(IsPlayerAlive(client))
SetEntData(client, FindDataMapOffs(client, "m_iHealth"), GetClientHealth(client)+15);
bonusowe_zdrowie_gracza[client] += 15;
bonusowa_kondycja_gracza[client] -= 15;
}
case 4: informacje_itemu_gracza[client][1] = 1;
case 7: informacje_itemu_gracza[client][1] = GetRandomInt(2, 4);
case 10: bonusowa_wytrzymalosc_gracza[client] += 25;
case 11: bonusowa_kondycja_gracza[client] += 50;
case 12: bonusowa_inteligencja_gracza[client] += 25;
case 14: informacje_itemu_gracza[client][1] = 3;
case 19: informacje_itemu_gracza[client][1] = 1;
case 21: informacje_itemu_gracza[client][1] = GetRandomInt(3, 6);
case 25: informacje_itemu_gracza[client][1] = 1;
case 27: informacje_itemu_gracza[client][1] = GetRandomInt(3, 6);
case 28: informacje_itemu_gracza[client][1] = GetRandomInt(3, 6);
case 32:
{
if(IsPlayerAlive(client) && klasa_gracza[client] != Szpieg)
{
SetEntityModel(client, (GetClientTeam(client) == CS_TEAM_CT)? modele_serwera[GetRandomInt(6, 10)]: modele_serwera[GetRandomInt(1, 5)]);
GivePlayerItem(client, nazwy_broni[36]);
}
informacje_itemu_gracza[client][1] = GetRandomInt(1, 3);
}
case 33:
{
if(IsPlayerAlive(client))
GivePlayerItem(client, nazwy_broni[36]);
informacje_itemu_gracza[client][1] = GetRandomInt(4, 8);
}
case 36:
{
if(IsPlayerAlive(client))
SetEntityGravity(client, 0.5);
}
case 38: informacje_itemu_gracza[client][1] = 1;
case 40: bonusowe_obrazenia_gracza[client] += 25;
case 41:
{
if(IsPlayerAlive(client))
SetEntData(client, FindDataMapOffs(client, "m_iHealth"), GetClientHealth(client)+25);
bonusowa_inteligencja_gracza[client] += 15;
bonusowe_zdrowie_gracza[client] += 15;
bonusowe_obrazenia_gracza[client] += 15;
bonusowa_wytrzymalosc_gracza[client] += 15;
bonusowa_kondycja_gracza[client] += 15;
}
case 42: informacje_itemu_gracza[client][1] = GetRandomInt(10, 15);
case 47: informacje_itemu_gracza[client][1] = GetRandomInt(15, 25);
case 48: informacje_itemu_gracza[client][1] = GetRandomInt(3, 6);
case 49: informacje_itemu_gracza[client][1] = GetRandomInt(3, 6);
}
}
public Action:UsunItem(client)
{
switch(informacje_itemu_gracza[client][0])
{
case 1:
{
if(IsPlayerAlive(client) && GetClientHealth(client) > 100)
SetEntData(client, FindDataMapOffs(client, "m_iHealth"), GetClientHealth(client)-100);
bonusowe_zdrowie_gracza[client] -= 30;
bonusowa_kondycja_gracza[client] += 30;
}
case 2:
{
if(IsPlayerAlive(client) && GetClientHealth(client) > 50)
SetEntData(client, FindDataMapOffs(client, "m_iHealth"), GetClientHealth(client)-50);
bonusowe_zdrowie_gracza[client] -= 15;
bonusowa_kondycja_gracza[client] += 15;
}
case 10: bonusowa_wytrzymalosc_gracza[client] -= 100;
case 11: bonusowa_kondycja_gracza[client] -= 100;
case 12: bonusowa_inteligencja_gracza[client] -= 100;
case 13:
{
if(GetEntProp(client, Prop_Send, "m_bNightVisionOn"))
SetEntProp(client, Prop_Send, "m_bNightVisionOn", 0);
}
case 32:
{
if(IsPlayerAlive(client) && klasa_gracza[client] != Szpieg)
CS_UpdateClientModel(client);
}
case 36: SetEntityGravity(client, 1.0);
case 40: bonusowe_obrazenia_gracza[client] -= 50;
case 41:
{
if(IsPlayerAlive(client) && GetClientHealth(client) > 25)
SetEntData(client, FindDataMapOffs(client, "m_iHealth"), GetClientHealth(client)-25);
bonusowa_inteligencja_gracza[client] -= 15;
bonusowe_zdrowie_gracza[client] -= 15;
bonusowe_obrazenia_gracza[client] -= 15;
bonusowa_wytrzymalosc_gracza[client] -= 15;
bonusowa_kondycja_gracza[client] -= 15;
}
}
moc_itemu[client] = 0;
informacje_itemu_gracza[client][0] = 0;
informacje_itemu_gracza[client][1] = 0;
}
public Action:PlayerSpawn(Handle:event, String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if(!IsValidClient(client) || IsFakeClient(client))
return;
if(hud_task[client] == null)
hud_task[client] = CreateTimer(REFRESH_HUD, PokazInformacje, client, TIMER_FLAG_NO_MAPCHANGE);
if(GetUserFlagBits(client) & VIP_FLAG && !vip_gracza[client])
{
CS_SetClientClanTag(client, "[★VIP★]");
bonusowe_zdrowie_gracza[client] += 15;
bonusowa_wytrzymalosc_gracza[client] += 20;
bonusowa_kondycja_gracza[client] += 20;
vip_gracza[client] = true;
}
for(new slot = 0; slot < 4; slot ++)
{
new weapon_index = -1;
while((weapon_index = GetPlayerWeaponSlot(client, slot)) != -1)
{
if(IsValidEntity(weapon_index))
{
RemovePlayerItem(client, weapon_index);
AcceptEntityInput(weapon_index, "kill");
}
}
}
GivePlayerItem(client, nazwy_broni[40]);
Odrodzenie(client);
}
public Action:PlayerDeath(Handle:event, String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
new killer = GetClientOfUserId(GetEventInt(event, "attacker"));
if(!IsValidClient(client) || !IsValidClient(killer))
return;
if(klasa_gracza[killer] && GetClientTeam(client) != GetClientTeam(killer))
{
new doswiadczenie = 0;
switch(klasa_gracza[killer])
{
case Szturmen:
{
if(klasa_gracza[client] != Obronca && informacje_itemu_gracza[client][0] != 30)
SetEntData(killer, FindDataMapOffs(killer, "m_iHealth"), GetClientHealth(killer)+30<maksymalne_zdrowie_gracza[killer]? GetClientHealth(killer)+30: maksymalne_zdrowie_gracza[killer]);
}
}
switch(informacje_itemu_gracza[killer][0])
{
case 0:
{
DajItem(killer, GetRandomInt(1, sizeof nazwy_itemow-1));
PrintToChat(killer, "[\x02COD MOD\x01]\x04 Zdobyłeś %s.", nazwy_itemow[informacje_itemu_gracza[killer][0]]);
}
case 5:
{
if(informacje_itemu_gracza[client][0] != 29)
SetEntData(killer, FindDataMapOffs(killer, "m_iHealth"), GetClientHealth(killer)+15<maksymalne_zdrowie_gracza[killer]? GetClientHealth(killer)+15: maksymalne_zdrowie_gracza[killer]);
}
case 8:
{
if(informacje_itemu_gracza[client][0] != 29)
doswiadczenie += 10;
}
case 9:
{
if(informacje_itemu_gracza[client][0] != 29)
SetEntData(killer, FindSendPropOffs("CCSPlayer", "m_iAccount"), GetEntData(killer, FindSendPropOffs("CCSPlayer", "m_iAccount"))+300);
}
case 39:
{
if(informacje_itemu_gracza[client][0] != 29)
SetEntData(killer, FindDataMapOffs(killer, "m_iHealth"), GetClientHealth(killer)+20<maksymalne_zdrowie_gracza[killer]? GetClientHealth(killer)+20: maksymalne_zdrowie_gracza[killer]);
}
case 44:
{
if(informacje_itemu_gracza[client][0] != 29)
doswiadczenie += 20;
}
}
if(misja_gracza[killer])
{
if(klasa_gracza[client] == nazwy_misji[misja_gracza[killer]][2] || informacje_itemu_gracza[client][0] == nazwy_misji[misja_gracza[killer]][2])
zabicia_gracza[killer] ++;
if(zabicia_gracza[killer] == nazwy_misji[misja_gracza[killer]][1])
{
doswiadczenie += nazwy_misji[misja_gracza[killer]][3];
PrintToChat(killer, "[\x02COD MOD\x01]\x04 Wykonałeś zadanie: [%s]. Gratulacje!", opisy_misji[misja_gracza[killer]]);
misja_gracza[killer] = 0;
zabicia_gracza[killer] = 0;
}
}
if(headshot[client])
{
new String:godzina_str[8];
FormatTime(godzina_str, sizeof(godzina_str), "%H", GetTime());
new godzina = StringToInt(godzina_str);
if(godzina >= 6 && godzina < 24)
{
if(vip_gracza[killer])
doswiadczenie += RoundFloat(poziom_gracza[client]*0.75+xp_kill_vip+xp_kill_hs_vip);
else
doswiadczenie += RoundFloat(poziom_gracza[client]*0.375+xp_kill+xp_kill_hs);
}
else
{
if(vip_gracza[killer])
doswiadczenie += RoundFloat(poziom_gracza[client]*0.75+xp_kill_vip+xp_kill_hs_vip*2);
else
doswiadczenie += RoundFloat(poziom_gracza[client]*0.375+xp_kill+xp_kill_hs*2);
}
PrintToChat(killer, "[\x02COD MOD\x01]\x04 Dostałeś %i doświadczenia za zabicie przeciwnika strzałem w głowę.", doswiadczenie);
ClientCommand(killer, "play *%s", dzwieki_serwera[GetRandomInt(2, 5)]);
}
else
{
if(vip_gracza[killer])
doswiadczenie += RoundFloat(poziom_gracza[client]*0.75+xp_kill_vip);
else
doswiadczenie += RoundFloat(poziom_gracza[client]*0.375+xp_kill);
PrintToChat(killer, "[\x02COD MOD\x01]\x04 Dostałeś %i doświadczenia za zabicie przeciwnika.", doswiadczenie);
}
doswiadczenie_gracza[killer] += doswiadczenie;
SprawdzPoziom(killer);
}
switch(klasa_gracza[client])
{
case Terrorysta:
{
if(informacje_itemu_gracza[client][0] != 37)
{
new Float:fOrigin[3];
new Float:iOrigin[3];
GetClientEyePosition(client, Float:fOrigin);
for(new i = 1; i <= MaxClients; i++)
{
if(!IsClientInGame(i) || !IsPlayerAlive(i))
continue;
if(GetClientTeam(client) == GetClientTeam(i))
continue;
GetClientEyePosition(i, Float:iOrigin);
if(GetVectorDistance(fOrigin, iOrigin) <= 200.0)
SDKHooks_TakeDamage(i, client, client, ((klasa_gracza[i] == Obronca || informacje_itemu_gracza[i][0] == 30)? 0.0: 80.0+float(maksymalna_inteligencja_gracza[client])), DMG_GENERIC);
}
TE_SetupExplosion(fOrigin, sprite_blue, 10.0, 1, 0, 100, 100);
TE_SendToAll();
}
}
}
switch(informacje_itemu_gracza[client][0])
{
case 7:
{
if(GetRandomInt(1, informacje_itemu_gracza[client][1]) == 1)
CreateTimer(0.1, Wskrzes, client, TIMER_FLAG_NO_MAPCHANGE);
}
}
if(informacje_itemu_gracza[client][0])
{
if(moc_itemu[client] > 20)
moc_itemu[client] -= 20;
else
{
UsunItem(client);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Twój item uległ zniszczeniu.");
}
}
}
public Action:PlayerBlind(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if(!IsValidClient(oslepiajacy_gracz) || !IsValidClient(client))
return;
if(client == oslepiajacy_gracz)
return;
if(GetClientTeam(client) == GetClientTeam(oslepiajacy_gracz) || informacje_itemu_gracza[client][0] == 39 && informacje_itemu_gracza[oslepiajacy_gracz][0] != 29)
SetEntDataFloat(client, FindSendPropOffs("CCSPlayer", "m_flFlashMaxAlpha"), 0.5);
}
public Action:HeDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if(!IsValidClient(client))
return;
new damage = 0;
if(klasa_gracza[client] == Partyzant || informacje_itemu_gracza[client][0] == 32 && GetRandomInt(1, informacje_itemu_gracza[client][1]) == 1 || informacje_itemu_gracza[client][0] == 33)
damage = 1;
new Float:fOrigin[3];
new Float:iOrigin[3];
fOrigin[0] = GetEventFloat(event, "x");
fOrigin[1] = GetEventFloat(event, "y");
fOrigin[2] = GetEventFloat(event, "z");
for(new i = 1; i <= MaxClients; i++)
{
if(!IsClientInGame(i) || !IsPlayerAlive(i))
continue;
GetClientAbsOrigin(i, Float:iOrigin);
if(GetClientTeam(client) != GetClientTeam(i) && damage)
{
if(GetVectorDistance(fOrigin, iOrigin) <= 200.0)
{
if(GetEntProp(i, Prop_Send, "m_ArmorValue"))
SetEntProp(i, Prop_Send, "m_ArmorValue", 0);
SDKHooks_TakeDamage(i, client, client, (informacje_itemu_gracza[client][0] == 32 || informacje_itemu_gracza[client][0] == 33)? ((informacje_itemu_gracza[i][0] == 29)? 0.0: 1.0+float(GetClientHealth(i))): ((klasa_gracza[i] == Obronca || informacje_itemu_gracza[i][0] == 30)? 0.0: 50.0+float(maksymalna_inteligencja_gracza[client])), DMG_GENERIC);
}
}
else if(client == i)
{
new Float:dystans = GetVectorDistance(fOrigin, iOrigin);
if(dystans <= 200.0)
SlapPlayer(i, 201-RoundFloat(dystans), true);
}
}
if(damage)
{
TE_SetupBeamRingPoint(fOrigin, 20.0, 200.0, sprite_laser, sprite_halo, 0, 10, 0.6, 6.0, 0.0, {255, 255, 255, 128}, 10, 0);
TE_SendToAll();
}
}
public Action:FbDetonate(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if(!IsValidClient(client))
return;
oslepiajacy_gracz = client;
}
public Action:SprawdzPoziom(client)
{
if(!IsValidClient(client) || !klasa_gracza[client])
return;
while(doswiadczenie_gracza[client] >= doswiadczenie_poziomu[poziom_gracza[client]] && poziom_gracza[client] < limit_poziomu)
{
poziom_gracza[client] ++;
punkty_gracza[client] = (poziom_gracza[client]/co_ile_lv_punkt-1)-inteligencja_gracza[client]-zdrowie_gracza[client]-obrazenia_gracza[client]-wytrzymalosc_gracza[client]-kondycja_gracza[client];
ClientCommand(client, "play *%s", dzwieki_serwera[1]);
}
while(doswiadczenie_gracza[client] < doswiadczenie_poziomu[poziom_gracza[client]-1])
{
poziom_gracza[client] --;
ResetujPunkty(client);
}
if(poziom_gracza[client] > limit_poziomu)
{
poziom_gracza[client] = limit_poziomu;
ResetujPunkty(client);
}
if(!zapisz_dane[client])
zapisz_dane[client] = true;
}
public Action:PrzydzielPunkty(client)
{
new String:tytul[512];
new String:szybkosc[512];
new String:inteligencja[512];
new String:zdrowie[512];
new String:obrazenia[512];
new String:wytrzymalosc[512];
new String:kondycja[512];
Format(tytul, sizeof(tytul), "Przydziel Punkty (%i):", punkty_gracza[client]);
if(ile_rozdawac[szybkosc_rozdania[client]] == -1)
Format(szybkosc, sizeof(szybkosc), "Ile dodawac: ALL (Po ile punktow dodawac do statystyk)");
else
Format(szybkosc, sizeof(szybkosc), "Ile dodawać: %i (Po ile punktów dodawać do statystyk)", ile_rozdawac[szybkosc_rozdania[client]]);
Format(inteligencja, sizeof(inteligencja), "Inteligencja: %i/%i (Zwiększa umiejętności klasy o %i punktow)", inteligencja_gracza[client], limit_inteligencji, inteligencja_gracza[client]/6);
Format(zdrowie, sizeof(zdrowie), "Zdrowie: %i/%i (Zwieksza zdrowie o %i punktow)", zdrowie_gracza[client], limit_zdrowia, zdrowie_gracza[client]);
Format(obrazenia, sizeof(obrazenia), "Obrażenia: %i/%i (Zwiększa zadawane obrażenia o %i%%)", obrazenia_gracza[client], limit_obrazen, RoundFloat(obrazenia_gracza[client]*0.3));
Format(wytrzymalosc, sizeof(wytrzymalosc), "Wytrzymałość: %i/%i (Zmniejsza otrzymywane obrażenia o %i%%)", wytrzymalosc_gracza[client], limit_wytrzymalosci, RoundFloat(wytrzymalosc_gracza[client]*0.1));
Format(kondycja, sizeof(kondycja), "Kondycja: %i/%i (Zwiększa tempo chodu o %i%%)", kondycja_gracza[client], limit_kondycji, RoundFloat(kondycja_gracza[client]*0.15));
new Handle:menu = CreateMenu(PrzydzielPunkty_Handler);
SetMenuTitle(menu, tytul);
AddMenuItem(menu, "1", szybkosc);
AddMenuItem(menu, "2", inteligencja);
AddMenuItem(menu, "3", zdrowie);
AddMenuItem(menu, "4", obrazenia);
AddMenuItem(menu, "5", wytrzymalosc);
AddMenuItem(menu, "6", kondycja);
DisplayMenu(menu, client, 250);
}
public PrzydzielPunkty_Handler(Handle:classhandle, MenuAction:action, client, Position)
{
if(action == MenuAction_Select)
{
if(punkty_gracza[client])
{
new String:Item[32];
GetMenuItem(classhandle, Position, Item, sizeof(Item));
new ilosc;
if(ile_rozdawac[szybkosc_rozdania[client]] == -1)
ilosc = punkty_gracza[client];
else
ilosc = (ile_rozdawac[szybkosc_rozdania[client]] > punkty_gracza[client])? punkty_gracza[client]: ile_rozdawac[szybkosc_rozdania[client]];
if(StrEqual(Item, "1"))
{
if(szybkosc_rozdania[client] == 2)
szybkosc_rozdania[client] = 0;
else
szybkosc_rozdania[client] ++;
}
else if(StrEqual(Item, "2"))
{
if(inteligencja_gracza[client] != limit_inteligencji)
{
if(inteligencja_gracza[client] + ilosc <= limit_inteligencji)
{
inteligencja_gracza[client] += ilosc;
punkty_gracza[client] -= ilosc;
}
else
{
new punktydododania;
punktydododania = limit_inteligencji - inteligencja_gracza[client];
inteligencja_gracza[client] += punktydododania;
punkty_gracza[client] -= punktydododania;
}
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Maksymalny poziom inteligencji osiągnięty!");
}
else if(StrEqual(Item, "3"))
{
if(zdrowie_gracza[client] != limit_zdrowia)
{
if(zdrowie_gracza[client] + ilosc <= limit_zdrowia)
{
zdrowie_gracza[client] += ilosc;
punkty_gracza[client] -= ilosc;
}
else
{
new punktydododania;
punktydododania = limit_zdrowia - zdrowie_gracza[client];
zdrowie_gracza[client] += punktydododania;
punkty_gracza[client] -= punktydododania;
}
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Maksymalny poziom zdrowia osiągnięty!");
}
else if(StrEqual(Item, "4"))
{
if(obrazenia_gracza[client] != limit_obrazen)
{
if(obrazenia_gracza[client] + ilosc <= limit_obrazen)
{
obrazenia_gracza[client] += ilosc;
punkty_gracza[client] -= ilosc;
}
else
{
new punktydododania;
punktydododania = limit_obrazen - obrazenia_gracza[client];
obrazenia_gracza[client] += punktydododania;
punkty_gracza[client] -= punktydododania;
}
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Maksymalny poziom obrażeń osiągnięty!");
}
else if(StrEqual(Item, "5"))
{
if(wytrzymalosc_gracza[client] != limit_wytrzymalosci)
{
if(wytrzymalosc_gracza[client] + ilosc <= limit_wytrzymalosci)
{
wytrzymalosc_gracza[client] += ilosc;
punkty_gracza[client] -= ilosc;
}
else
{
new punktydododania;
punktydododania = limit_wytrzymalosci - wytrzymalosc_gracza[client];
wytrzymalosc_gracza[client] += punktydododania;
punkty_gracza[client] -= punktydododania;
}
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Maksymalny poziom wytrzymałości osiągnięty!");
}
else if(StrEqual(Item, "6"))
{
if(kondycja_gracza[client] != limit_kondycji)
{
if(kondycja_gracza[client] + ilosc <= limit_kondycji)
{
kondycja_gracza[client] += ilosc;
punkty_gracza[client] -= ilosc;
}
else
{
new punktydododania;
punktydododania = limit_kondycji - kondycja_gracza[client];
kondycja_gracza[client] += punktydododania;
punkty_gracza[client] -= punktydododania;
}
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Maksymalny poziom kondycji osiągnięty!");
}
if(punkty_gracza[client])
PrzydzielPunkty(client);
if(!zapisz_dane[client])
zapisz_dane[client] = true;
}
}
else if(action == MenuAction_End)
CloseHandle(classhandle);
}
public Action:ResetujPunkty(client)
{
punkty_gracza[client] = poziom_gracza[client]/co_ile_lv_punkt-1;
inteligencja_gracza[client] = 0;
zdrowie_gracza[client] = 0;
obrazenia_gracza[client] = 0;
wytrzymalosc_gracza[client] = 0;
kondycja_gracza[client] = 0;
PrintToChat(client, "[\x02COD MOD\x01]\x04 Umiejętności zostały zresetowane.");
if(punkty_gracza[client])
{
PrzydzielPunkty(client);
if(!zapisz_dane[client])
zapisz_dane[client] = true;
}
}
public Action:OpisItemu(client)
{
new String:opis_itemu[128];
new String:losowa_wartosc[4];
IntToString(informacje_itemu_gracza[client][1], losowa_wartosc, 3);
Format(opis_itemu, sizeof(opis_itemu), opisy_itemow[informacje_itemu_gracza[client][0]]);
ReplaceString(opis_itemu, sizeof(opis_itemu), "LW", losowa_wartosc);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Item: %s [%i%%].", nazwy_itemow[informacje_itemu_gracza[client][0]], moc_itemu[client]);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Opis: %s.", opis_itemu);
}
public Action:WyrzucItem(client)
{
if(informacje_itemu_gracza[client][0])
{
UsunItem(client);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wyrzuciłeś swój item.");
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Nie masz żadnego itemu.");
}
public Action:ZmienDruzyne(client)
{
if(GetClientTeam(client) == CS_TEAM_SPECTATOR)
{
switch(GetRandomInt(0, 1))
{
case 0:
{
ChangeClientTeam(client, CS_TEAM_T);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Zostałeś przeniesiony do TT.");
}
case 1:
{
ChangeClientTeam(client, CS_TEAM_CT);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Zostałeś przeniesiony do CT.");
}
}
}
else
ChangeClientTeam(client, CS_TEAM_SPECTATOR);
}
public Action:OddajItem(client)
{
if(klasa_gracza[client])
{
new Handle:menu = CreateMenu(OddajItem_Handler);
SetMenuTitle(menu, "Oddaj Item:");
for(new i = 1; i <= MaxClients; i++)
{
if(!IsClientInGame(i) || i == client)
continue;
AddMenuItem(menu, nazwa_gracza[i], nazwa_gracza[i]);
}
DisplayMenu(menu, client, 250);
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Musisz mieć wybraną klasę aby móc oddać item!");
}
public OddajItem_Handler(Handle:classhandle, MenuAction:action, client, Position)
{
if(action == MenuAction_Select)
{
new String:Item[64];
GetMenuItem(classhandle, Position, Item, sizeof(Item));
Position ++;
new userid = FindTarget(0, Item);
if(!IsValidClient(userid) || userid == -1)
PrintToChat(client, "[\x02COD MOD\x01]\x04 Nie odnaleziono wybranego gracza!");
else if(!klasa_gracza[userid])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wybrany gracz musi mieć klasę by móc mu przekazać item!");
else if(informacje_itemu_gracza[userid][0])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wybrany gracz ma już item!");
else if(!informacje_itemu_gracza[client][0])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Nie masz żadnego itemu!");
else
{
new String:nazwa[512];
Format(nazwa, sizeof(nazwa), "Czy chcesz przyjac item od %s?", nazwa_gracza[client]);
new Handle:menu = CreateMenu(OddajItem_Handler2);
SetMenuTitle(menu, nazwa);
AddMenuItem(menu, "1", "Tak");
AddMenuItem(menu, "2", "Nie");
DisplayMenu(menu, userid, 250);
client_gracza[userid] = client;
}
}
else if(action == MenuAction_End)
CloseHandle(classhandle);
}
public OddajItem_Handler2(Handle:classhandle, MenuAction:action, client, Position)
{
if(action == MenuAction_Select)
{
new String:Item[32];
GetMenuItem(classhandle, Position, Item, sizeof(Item));
new userid = client_gracza[client];
if(StrEqual(Item, "1"))
{
if(!IsValidClient(userid))
PrintToChat(client, "[\x02COD MOD\x01]\x04 Nie odnaleziono wybranego gracza!");
else if(!klasa_gracza[userid])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wybrany gracz musi mieć klasę by móc od niego odebrać item!");
else if(!informacje_itemu_gracza[userid][0])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wybrany gracz nie ma żadnego itemu!");
else if(informacje_itemu_gracza[client][0])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Masz już item!");
else
{
DajItem(client, informacje_itemu_gracza[userid][0]);
informacje_itemu_gracza[client][1] = informacje_itemu_gracza[userid][1];
UsunItem(userid);
PrintToChatAll("[\x02COD MOD\x01]\x04 Gracz %s przekazał item graczowi %s.", nazwa_gracza[userid], nazwa_gracza[client]);
}
}
else if(StrEqual(Item, "2"))
{
if(IsValidClient(userid))
PrintToChat(userid, "[\x02COD MOD\x01]\x04 Wybrany gracz nie zgodził się na przyjęcie itemu!");
}
}
else if(action == MenuAction_End)
CloseHandle(classhandle);
}
public Action:WymienItem(client)
{
if(klasa_gracza[client])
{
new Handle:menu = CreateMenu(WymienItem_Handler);
SetMenuTitle(menu, "Oddaj Item:");
for(new i = 1; i <= MaxClients; i++)
{
if(!IsClientInGame(i) || i == client)
continue;
AddMenuItem(menu, nazwa_gracza[i], nazwa_gracza[i]);
}
DisplayMenu(menu, client, 250);
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Musisz mieć wybraną klasę aby móc wymienić item!");
}
public WymienItem_Handler(Handle:classhandle, MenuAction:action, client, Position)
{
if(action == MenuAction_Select)
{
new String:Item[64];
GetMenuItem(classhandle, Position, Item, sizeof(Item));
Position ++;
new userid = FindTarget(0, Item);
if(!IsValidClient(userid) || userid == -1)
PrintToChat(client, "[\x02COD MOD\x01]\x04 Nie odnaleziono wybranego gracza!");
else if(!klasa_gracza[userid])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wybrany gracz musi mieć klasę by móc mu przekazać item!");
else if(!informacje_itemu_gracza[userid][0])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wybrany gracz nie ma żadnego itemu!");
else if(!informacje_itemu_gracza[client][0])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Nie masz żadnego itemu!");
else if(informacje_itemu_gracza[client][0] == informacje_itemu_gracza[userid][0])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Nie możesz wymienić swojego itemu na ten sam!");
else if(wymiana_gracza[userid])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wybrany gracz wymieniał już swój item!");
else if(wymiana_gracza[client])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Możesz wymienić item tylko raz na mapę!");
else if(blokada_gracza[userid])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wybrany gracz zablokował wymianę itemu!");
else if(blokada_gracza[client])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Masz zablokowaną wymianę itemu!");
else
{
new String:nazwa[512];
Format(nazwa, sizeof(nazwa), "Czy chcesz wymienic swój item na %s z graczem %s?", nazwy_itemow[informacje_itemu_gracza[client][0]], nazwa_gracza[client]);
new Handle:menu = CreateMenu(WymienItem_Handler2);
SetMenuTitle(menu, nazwa);
AddMenuItem(menu, "1", "Tak");
AddMenuItem(menu, "2", "Nie");
DisplayMenu(menu, userid, 250);
client_gracza[userid] = client;
}
}
else if(action == MenuAction_End)
CloseHandle(classhandle);
}
public WymienItem_Handler2(Handle:classhandle, MenuAction:action, client, Position)
{
if(action == MenuAction_Select)
{
new String:Item[32];
GetMenuItem(classhandle, Position, Item, sizeof(Item));
new userid = client_gracza[client];
if(StrEqual(Item, "1"))
{
if(!IsValidClient(userid))
PrintToChat(client, "[\x02COD MOD\x01]\x04 Nie odnaleziono wybranego gracza!");
else if(!klasa_gracza[userid])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wybrany gracz musi mieć klasę by móc od niego odebrać item!");
else if(!informacje_itemu_gracza[userid][0])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wybrany gracz nie ma żadnego itemu!");
else if(!informacje_itemu_gracza[client][0])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Nie masz żadnego itemu!");
else if(informacje_itemu_gracza[client][0] == informacje_itemu_gracza[userid][0])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Nie możesz wymienić swojego itemu na ten sam!");
else if(wymiana_gracza[userid])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wybrany gracz wymieniał już swój item!");
else if(wymiana_gracza[client])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Mozesz wymienić item tylko raz na mapę!");
else if(blokada_gracza[userid])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wybrany gracz zablokował wymianę itemu!");
else if(blokada_gracza[client])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Masz zablokowaną wymianę itemu!");
else
{
new item_zmienny[4];
item_zmienny[0] = informacje_itemu_gracza[userid][0];
item_zmienny[1] = informacje_itemu_gracza[client][0];
item_zmienny[2] = informacje_itemu_gracza[userid][1];
item_zmienny[3] = informacje_itemu_gracza[client][1];
DajItem(client, item_zmienny[0]);
DajItem(userid, item_zmienny[1]);
informacje_itemu_gracza[client][1] = item_zmienny[2];
informacje_itemu_gracza[userid][1] = item_zmienny[3];
wymiana_gracza[userid] = true;
wymiana_gracza[client] = true;
PrintToChatAll("[\x02COD MOD\x01]\x04 Gracz %s oraz %s wymienili sie itemami.", nazwa_gracza[userid], nazwa_gracza[client]);
}
}
else if(StrEqual(Item, "2"))
{
if(IsValidClient(userid))
PrintToChat(userid, "[\x02COD MOD\x01]\x04 Wybrany gracz nie zgodził się na wymianę itemu!");
}
}
else if(action == MenuAction_End)
CloseHandle(classhandle);
}
public Action:CmdExp(client, args)
{
new String:arg1[32];
new String:arg2[6];
GetCmdArg(1, arg1, sizeof(arg1));
GetCmdArg(2, arg2, sizeof(arg2));
new target = FindTarget(client, arg1);
new zmienna = StringToInt(arg2)-1;
if(target != -1)
{
if((-zmienna) > doswiadczenie_gracza[target])
PrintToConsole(client, "[\x02COD MOD\x01]\x04 Chciałeś odjąć graczowi zbyt dużo doświadczenia.");
else
{
doswiadczenie_gracza[target] += zmienna;
SprawdzPoziom(target);
LogMessage("%s - dał graczowi %s (%i expa).", nazwa_gracza[client], nazwa_gracza[target], zmienna);
PrintToConsole(client, "[\x02COD MOD\x01]\x04 Dałeś graczowi %s (%i expa).", nazwa_gracza[target], zmienna);
}
}
}
public Action:CmdLvl(client, args)
{
new String:arg1[32];
new String:arg2[6];
GetCmdArg(1, arg1, sizeof(arg1));
GetCmdArg(2, arg2, sizeof(arg2));
new target = FindTarget(client, arg1);
new zmienna = StringToInt(arg2)-1;
if(target != -1)
{
if((-zmienna) > poziom_gracza[target])
PrintToConsole(client, "[\x02COD MOD\x01]\x04 Chciałeś ustawić graczowi zbyt mały poziom.");
else
{
if(poziom_gracza[target] + zmienna > limit_poziomu)
PrintToConsole(client, "[\x02COD MOD\x01]\x04 Chciałeś ustawić graczowi zbyt duzy poziom.");
else
{
doswiadczenie_gracza[target] += doswiadczenie_poziomu[zmienna];
SprawdzPoziom(target);
LogMessage("%s - dal graczowi %s (%i Lv).", nazwa_gracza[client], nazwa_gracza[target], zmienna);
PrintToConsole(client, "[\x02COD MOD\x01]\x04 Dałeś graczowi %s (%i Lv).", nazwa_gracza[target], zmienna);
}
}
}
}
public Action:CmdItem(client, args)
{
new String:arg1[32];
new String:arg2[6];
GetCmdArg(1, arg1, sizeof(arg1));
GetCmdArg(2, arg2, sizeof(arg2));
new target = FindTarget(client, arg1);
new zmienna = StringToInt(arg2);
if(target != -1)
{
if(zmienna < 1 || zmienna > sizeof nazwy_itemow-1)
PrintToConsole(client, "[\x02COD MOD\x01]\x04 Podałeś nieprawidłowy numer itemu.");
else
{
DajItem(target, zmienna);
LogMessage("%s - dal graczowi %s (%i item).", nazwa_gracza[client], nazwa_gracza[target], zmienna);
PrintToConsole(client, "[\x02COD MOD\x01]\x04 Daleś graczowi %s (%i item).", nazwa_gracza[target], zmienna);
}
}
}
public Action:DataBaseConnect()
{
sql = SQL_Connect("codmod_lvl_sql", true, dbError, sizeof(dbError));
if(sql == INVALID_HANDLE)
{
LogError("Could not connect: %s", dbError);
sql_baza = 0;
}
else
{
SQL_LockDatabase(sql);
SQL_FastQuery(sql, "CREATE TABLE IF NOT EXISTS `codmod` (`id` INT(11) NOT NULL AUTO_INCREMENT, `steamid` VARCHAR(48) NOT NULL, `klasa` VARCHAR(48) NOT NULL, `lvl` INT(11) DEFAULT 1, `xp` INT(14), `inteligencja` INT(9), `zdrowie` INT(9), `obrazenia` INT(9), `wytrzymalosc` INT(9), `kondycja` INT(9), `misja` INT(9), `zabicia` INT(9), PRIMARY KEY (`id`), UNIQUE KEY `klasaid` (`klasa`,`steamid`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;");
SQL_UnlockDatabase(sql);
sql_baza = 1;
}
}
public Action:TaskZapiszDane(Handle:timer, any:client)
{
if(!IsValidClient(client))
return;
if(zapisz_dane[client])
{
ZapiszDane(client);
zapisz_dane[client] = false;
}
sql_task[client] = CreateTimer(float(co_ile_zapisywac), TaskZapiszDane, client, TIMER_FLAG_NO_MAPCHANGE);
}
public Action:ZapiszDane(client)
{
if(!sql_baza || !klasa_gracza[client])
return;
new String:tmp[1024];
new String:authid[64];
if(!GetClientAuthId(client, AuthId_Steam2, authid, sizeof(authid)))
return;
Format(tmp, sizeof(tmp), "INSERT INTO `codmod` (`steamid`, `klasa`, `lvl`, `xp`, `inteligencja`, `zdrowie`, `obrazenia`, `wytrzymalosc`, `kondycja`, `misja`, `zabicia`) VALUES ('%s', '%s', %d, %d, %d, %d, %d, %d, %d, %d, %d) ON DUPLICATE KEY UPDATE `lvl`=VALUES(`lvl`), `xp`=VALUES(`xp`), `inteligencja`=VALUES(`inteligencja`), `zdrowie`=VALUES(`zdrowie`), `obrazenia`=VALUES(`obrazenia`), `wytrzymalosc`=VALUES(`wytrzymalosc`), `kondycja`=VALUES(`kondycja`), `misja`=VALUES(`misja`), `zabicia`=VALUES(`zabicia`);", authid, nazwy_klas[klasa_gracza[client]], poziom_gracza[client], doswiadczenie_gracza[client], inteligencja_gracza[client], zdrowie_gracza[client], obrazenia_gracza[client], wytrzymalosc_gracza[client], kondycja_gracza[client], misja_gracza[client], zabicia_gracza[client])
SQL_TQuery(sql, ZapiszDane_Handler, tmp, client);
}
public ZapiszDane_Handler(Handle:owner, Handle:query, const String:error[], any:client)
{
if(query == INVALID_HANDLE)
{
LogError("Save error: %s", error);
return;
}
}
public Action:WczytajDane(client, klasa)
{
poziom_gracza[client] = poziom_klasy_gracza[client][klasa];
doswiadczenie_gracza[client] = doswiadczenie_klasy_gracza[client][klasa];
inteligencja_gracza[client] = inteligencja_klasy_gracza[client][klasa];
zdrowie_gracza[client] = zdrowie_klasy_gracza[client][klasa];
obrazenia_gracza[client] = obrazenia_klasy_gracza[client][klasa];
wytrzymalosc_gracza[client] = wytrzymalosc_klasy_gracza[client][klasa];
kondycja_gracza[client] = kondycja_klasy_gracza[client][klasa];
misja_gracza[client] = misja_klasy_gracza[client][klasa];
zabicia_gracza[client] = zabicia_klasy_gracza[client][klasa];
punkty_gracza[client] = (poziom_gracza[client]/co_ile_lv_punkt-1)-inteligencja_gracza[client]-zdrowie_gracza[client]-obrazenia_gracza[client]-wytrzymalosc_gracza[client]-kondycja_gracza[client];
sql_task[client] = CreateTimer(float(co_ile_zapisywac), TaskZapiszDane, client, TIMER_FLAG_NO_MAPCHANGE);
}
public Action:WybierzMisje(client)
{
if(klasa_gracza[client])
{
if(misja_gracza[client])
{
new Handle:menu = CreateMenu(WybierzMisje_Handler);
SetMenuTitle(menu, "Menu Misje:");
AddMenuItem(menu, "1", "Opis Misji");
AddMenuItem(menu, "2", "Anuluj Misje");
DisplayMenu(menu, client, 250);
}
else
{
new String:misja[512];
new Handle:menu = CreateMenu(WybierzMisje_Handler);
SetMenuTitle(menu, "Wybierz Misję:");
for(new i = 1; i <sizeof nazwy_misji; i ++)
{
Format(misja, sizeof(misja), "%s (Od %dLv)", opisy_misji[i], nazwy_misji[i][0]);
AddMenuItem(menu, "3", misja);
}
DisplayMenu(menu, client, 250);
}
}
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Musisz mieć wybraną klasę aby móc włączyć misję!");
}
public WybierzMisje_Handler(Handle:classhandle, MenuAction:action, client, Position)
{
if(action == MenuAction_Select)
{
new String:Item[32];
GetMenuItem(classhandle, Position, Item, sizeof(Item));
Position++;
if(StrEqual(Item, "1"))
OpisMisji(client);
else if(StrEqual(Item, "2"))
{
misja_gracza[client] = 0;
zabicia_gracza[client] = 0;
if(!zapisz_dane[client])
zapisz_dane[client] = true;
PrintToChat(client, "[\x02COD MOD\x01]\x04 Anulowałeś swoje aktualne zadanie! Wpisz /misja aby rozpocząć.");
}
else if(StrEqual(Item, "3"))
{
if(poziom_gracza[client] >= nazwy_misji[Position][0])
{
misja_gracza[client] = Position;
if(!zapisz_dane[client])
zapisz_dane[client] = true;
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wybrałeś zadanie: [%s]. Powodzenia!", opisy_misji[Position]);
}
else
{
WybierzMisje(client);
PrintToChat(client, "[\x02COD MOD\x01]\x04 Wybrane zadanie dostępne jest od %dLv!", nazwy_misji[Position][0]);
}
}
}
else if(action == MenuAction_End)
CloseHandle(classhandle);
}
public Action:OpisMisji(client)
{
if(klasa_gracza[client])
PrintToChat(client, "[\x02COD MOD\x01]\x04 Postep misji: %i/%i osob - Twoje zadanie: %s.", zabicia_gracza[client], nazwy_misji[misja_gracza[client]][1], opisy_misji[misja_gracza[client]]);
else
PrintToChat(client, "[\x02COD MOD\x01]\x04 Musisz mieć wybraną klasę aby móc sprawdzić misje!");
}
public Action:PokazInformacje(Handle:timer, any:client)
{
if(!IsValidClient(client))
return;
if(IsPlayerAlive(client))
{
new ile = poziom_gracza[client]-1 >= 0? doswiadczenie_poziomu[poziom_gracza[client]-1]: 0;
new Float:procent_gracza = (float(doswiadczenie_gracza[client]-ile)/float(doswiadczenie_poziomu[poziom_gracza[client]]-ile))*100.0;
PrintHintText(client, "[Klasa: <b>%s</b>]\n[<font color='#FF3333'>Xp: <b>%0.1f</b>/<b>100.0%%</b></font> | <font color='#FF3333'>Lv: <b>%i</b></font>]\n[Item:</font> <b>%s</b> [<b>%i%%</b>]]", nazwy_klas[klasa_gracza[client]], procent_gracza, poziom_gracza[client], nazwy_itemow[informacje_itemu_gracza[client][0]], moc_itemu[client]);
}
else
{
new spect = GetEntProp(client, Prop_Send, "m_iObserverMode");
if(spect == 4 || spect == 5)
{
new target = GetEntPropEnt(client, Prop_Send, "m_hObserverTarget");
if(target != -1 && IsValidClient(target))
{
new ile = poziom_gracza[target]-1 >= 0? doswiadczenie_poziomu[poziom_gracza[target]-1]: 0;
new Float:procent_gracza = (float(doswiadczenie_gracza[target]-ile)/float(doswiadczenie_poziomu[poziom_gracza[target]]-ile))*100.0;
PrintHintText(client, "[Klasa: <b>%s</b>]\n[<font color='#FF3333'>Xp: <b>%0.1f</b>/<b>100.0%%</b></font> | <font color='#FF3333'>Lv: <b>%i</b></font>]\n[Item:</font> <b>%s</b> [<b>%i%%</b>]]", nazwy_klas[klasa_gracza[target]], procent_gracza, poziom_gracza[target], nazwy_itemow[informacje_itemu_gracza[target][0]], moc_itemu[target]);
}
}
}
hud_task[client] = CreateTimer(REFRESH_HUD, PokazInformacje, client, TIMER_FLAG_NO_MAPCHANGE);
}
public Action:Wskrzes(Handle:timer, any:client)
{
if(!IsValidClient(client))
return;
CS_RespawnPlayer(client);
}
public bool:IsValidClient(client)
{
if(client >= 1 && client <= MaxClients && IsClientInGame(client))
return true;
return false;
}
Prevents people from talking too much
VoiceCooldown.sp
PHP Code:
/* Plugin Template generated by Pawn Studio */
#include <sourcemod>
#include <sdktools>
#include <voiceannounce_ex>
new Handle : VoiceCooldown = INVALID_HANDLE
bool : IsPlayerMuted [ MAXPLAYERS + 1 ]
public Plugin : myinfo = {
name = "Voice Control" ,
author = "Marele Maestru: tre3fla" ,
description = "Mue TheKing" ,
version = "1.0" ,
url = "http://dust2.ro pwd by tre3fla's brain"
}
public OnPluginStart ( ) {
VoiceCooldown = CreateConVar ( "sm_voice_cooldown" , "25" , "Cooldown primit de jucator dupa ce foloseste microfonul" )
}
public OnClientPutInServer ( client ) {
if( ! IsFakeClient ( client ) ) {
IsPlayerMuted [ client ] = false
}
}
public OnClientDisconnect ( client ) {
if( ! IsFakeClient ( client ) ) {
IsPlayerMuted [ client ] = false
}
}
public int OnClientSpeakingEnd ( int client ) {
if( IsClientInGame ( client ) && ! IsFakeClient ( client ) && ! IsPlayerMuted [ client ] ) {
SetClientListeningFlags ( client , VOICE_MUTED )
IsPlayerMuted [ client ] = true
new Float : iFloatCvar = GetConVarFloat ( VoiceCooldown )
CreateTimer ( iFloatCvar , RemoveVoiceCooldown , client )
}
}
public int OnClientSpeakingEx ( int client ) {
if( IsPlayerMuted [ client ] ) {
PrintCenterText ( client , "<font color='#00CC00'>Microphone Cooldown!!!\n You can speak one time at %d seconds</font>" , GetConVarInt ( VoiceCooldown ) )
}
}
public Action : RemoveVoiceCooldown ( Handle : timer , any : client ) {
if( IsClientInGame ( client ) ) {
SetClientListeningFlags ( client , VOICE_NORMAL )
IsPlayerMuted [ client ] = false
}
}
crates_arena.sp
PHP Code:
#include <hattrick_csgo>
#define SECUNDE_BHOP 30.0
#define X_CLASS_NAME ("prop_physics_multiplayer")
#define X_RANDOM_CHANCE 1 /* 0 = 100%, 1 = 50%, 2 = 33%, 3 = 25%, 4 = 20% */
char g_szCustomModels [][] =
{
"models/models_kit/xmas/giftbox_mini_octo.mdl" ,
"models/models_kit/xmas/giftbox_mini_quad.mdl" ,
"models/models_kit/xmas/giftbox_mini_round.mdl" ,
"models/models_kit/xmas/xmas_teddybear.mdl"
};
char g_szModels [][] =
{
"materials/models/models_kit/xmas/giftbox.vmt" ,
"materials/models/models_kit/xmas/giftbox.vtf" ,
"materials/models/models_kit/xmas/giftbox_NORM.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_flower.vmt" ,
"materials/models/models_kit/xmas/giftbox_ribbon_flower.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_flower_NORM.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_specialA.vmt" ,
"materials/models/models_kit/xmas/giftbox_ribbon_specialA.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_specialA_NORM.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_specialB.vmt" ,
"materials/models/models_kit/xmas/giftbox_ribbon_specialB.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_specialB_NORM.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_specialC.vmt" ,
"materials/models/models_kit/xmas/giftbox_ribbon_specialC.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_specialC_NORM.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_specialD.vmt" ,
"materials/models/models_kit/xmas/giftbox_ribbon_specialD.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_specialD_NORM.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag.vmt" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_norm.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin2.vmt" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin2.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin2_norm.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin3.vmt" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin3.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin3_norm.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin4.vmt" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin4.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin5.vmt" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin5.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin5_norm.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin6.vmt" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin6.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin6_norm.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin7.vmt" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin7.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin7_norm.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin8.vmt" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin8.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin8_norm.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin9.vmt" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin9.vtf" ,
"materials/models/models_kit/xmas/giftbox_ribbon_tag_skin9_norm.vtf" ,
"materials/models/models_kit/xmas/giftbox_skin2.vmt" ,
"materials/models/models_kit/xmas/giftbox_skin2.vtf" ,
"materials/models/models_kit/xmas/giftbox_skin2_NORM.vtf" ,
"materials/models/models_kit/xmas/giftbox_skin3.vmt" ,
"materials/models/models_kit/xmas/giftbox_skin3.vtf" ,
"materials/models/models_kit/xmas/giftbox_skin3_NORM.vtf" ,
"materials/models/models_kit/xmas/giftbox_skin4.vmt" ,
"materials/models/models_kit/xmas/giftbox_skin4.vtf" ,
"materials/models/models_kit/xmas/giftbox_skin4_NORM.vtf" ,
"materials/models/models_kit/xmas/giftbox_skin5.vmt" ,
"materials/models/models_kit/xmas/giftbox_skin5.vtf" ,
"materials/models/models_kit/xmas/giftbox_skin5_NORM.vtf" ,
"materials/models/models_kit/xmas/xmastree_miscA.vmt" ,
"materials/models/models_kit/xmas/xmastree_miscA.vtf" ,
"materials/models/models_kit/xmas/xmastree_miscA_skin2.vmt" ,
"materials/models/models_kit/xmas/xmastree_miscA_skin2.vtf" ,
"materials/models/models_kit/xmas/xmastree_miscB.vmt" ,
"materials/models/models_kit/xmas/xmastree_miscB.vtf" ,
"materials/models/models_kit/xmas/xmastree_miscB_skin2.vmt" ,
"materials/models/models_kit/xmas/xmastree_miscB_skin2.vtf" ,
"materials/models/models_kit/xmas/xmastree_miscB_spec.vtf" ,
"models/models_kit/xmas/giftbox128x128.dx80.vtx" ,
"models/models_kit/xmas/giftbox128x128.dx90.vtx" ,
"models/models_kit/xmas/giftbox128x128.mdl" ,
"models/models_kit/xmas/giftbox128x128.phy" ,
"models/models_kit/xmas/giftbox128x128.sw.vtx" ,
"models/models_kit/xmas/giftbox128x128.vvd" ,
"models/models_kit/xmas/giftbox128x128.xbox.vtx" ,
"models/models_kit/xmas/giftbox128x128_ribbon_butterfly.dx80.vtx" ,
"models/models_kit/xmas/giftbox128x128_ribbon_butterfly.dx90.vtx" ,
"models/models_kit/xmas/giftbox128x128_ribbon_butterfly.mdl" ,
"models/models_kit/xmas/giftbox128x128_ribbon_butterfly.sw.vtx" ,
"models/models_kit/xmas/giftbox128x128_ribbon_butterfly.vvd" ,
"models/models_kit/xmas/giftbox128x128_ribbon_butterfly.xbox.vtx" ,
"models/models_kit/xmas/giftbox128x128_ribbon_curly.dx80.vtx" ,
"models/models_kit/xmas/giftbox128x128_ribbon_curly.dx90.vtx" ,
"models/models_kit/xmas/giftbox128x128_ribbon_curly.mdl" ,
"models/models_kit/xmas/giftbox128x128_ribbon_curly.sw.vtx" ,
"models/models_kit/xmas/giftbox128x128_ribbon_curly.vvd" ,
"models/models_kit/xmas/giftbox128x128_ribbon_curly.xbox.vtx" ,
"models/models_kit/xmas/giftbox128x128_ribbon_special.dx80.vtx" ,
"models/models_kit/xmas/giftbox128x128_ribbon_special.dx90.vtx" ,
"models/models_kit/xmas/giftbox128x128_ribbon_special.mdl" ,
"models/models_kit/xmas/giftbox128x128_ribbon_special.sw.vtx" ,
"models/models_kit/xmas/giftbox128x128_ribbon_special.vvd" ,
"models/models_kit/xmas/giftbox128x128_ribbon_special.xbox.vtx" ,
"models/models_kit/xmas/giftbox64x128h.dx80.vtx" ,
"models/models_kit/xmas/giftbox64x128h.dx90.vtx" ,
"models/models_kit/xmas/giftbox64x128h.mdl" ,
"models/models_kit/xmas/giftbox64x128h.phy" ,
"models/models_kit/xmas/giftbox64x128h.sw.vtx" ,
"models/models_kit/xmas/giftbox64x128h.vvd" ,
"models/models_kit/xmas/giftbox64x128h.xbox.vtx" ,
"models/models_kit/xmas/giftbox64x128h_ribbon_flower.dx80.vtx" ,
"models/models_kit/xmas/giftbox64x128h_ribbon_flower.dx90.vtx" ,
"models/models_kit/xmas/giftbox64x128h_ribbon_flower.mdl" ,
"models/models_kit/xmas/giftbox64x128h_ribbon_flower.sw.vtx" ,
"models/models_kit/xmas/giftbox64x128h_ribbon_flower.vvd" ,
"models/models_kit/xmas/giftbox64x128h_ribbon_flower.xbox.vtx" ,
"models/models_kit/xmas/giftbox64x128h_ribbon_tag.dx80.vtx" ,
"models/models_kit/xmas/giftbox64x128h_ribbon_tag.dx90.vtx" ,
"models/models_kit/xmas/giftbox64x128h_ribbon_tag.mdl" ,
"models/models_kit/xmas/giftbox64x128h_ribbon_tag.sw.vtx" ,
"models/models_kit/xmas/giftbox64x128h_ribbon_tag.vvd" ,
"models/models_kit/xmas/giftbox64x128h_ribbon_tag.xbox.vtx" ,
"models/models_kit/xmas/giftbox64x128w.dx80.vtx" ,
"models/models_kit/xmas/giftbox64x128w.dx90.vtx" ,
"models/models_kit/xmas/giftbox64x128w.mdl" ,
"models/models_kit/xmas/giftbox64x128w.phy" ,
"models/models_kit/xmas/giftbox64x128w.sw.vtx" ,
"models/models_kit/xmas/giftbox64x128w.vvd" ,
"models/models_kit/xmas/giftbox64x128w.xbox.vtx" ,
"models/models_kit/xmas/giftbox64x128w_ribbon_special.dx80.vtx" ,
"models/models_kit/xmas/giftbox64x128w_ribbon_special.dx90.vtx" ,
"models/models_kit/xmas/giftbox64x128w_ribbon_special.mdl" ,
"models/models_kit/xmas/giftbox64x128w_ribbon_special.sw.vtx" ,
"models/models_kit/xmas/giftbox64x128w_ribbon_special.vvd" ,
"models/models_kit/xmas/giftbox64x128w_ribbon_special.xbox.vtx" ,
"models/models_kit/xmas/giftbox64x128w_ribbon_tag.dx80.vtx" ,
"models/models_kit/xmas/giftbox64x128w_ribbon_tag.dx90.vtx" ,
"models/models_kit/xmas/giftbox64x128w_ribbon_tag.mdl" ,
"models/models_kit/xmas/giftbox64x128w_ribbon_tag.sw.vtx" ,
"models/models_kit/xmas/giftbox64x128w_ribbon_tag.vvd" ,
"models/models_kit/xmas/giftbox64x128w_ribbon_tag.xbox.vtx" ,
"models/models_kit/xmas/giftbox64x64.dx80.vtx" ,
"models/models_kit/xmas/giftbox64x64.dx90.vtx" ,
"models/models_kit/xmas/giftbox64x64.mdl" ,
"models/models_kit/xmas/giftbox64x64.phy" ,
"models/models_kit/xmas/giftbox64x64.sw.vtx" ,
"models/models_kit/xmas/giftbox64x64.vvd" ,
"models/models_kit/xmas/giftbox64x64.xbox.vtx" ,
"models/models_kit/xmas/giftbox64x64_ribbon_butterfly.dx80.vtx" ,
"models/models_kit/xmas/giftbox64x64_ribbon_butterfly.dx90.vtx" ,
"models/models_kit/xmas/giftbox64x64_ribbon_butterfly.mdl" ,
"models/models_kit/xmas/giftbox64x64_ribbon_butterfly.sw.vtx" ,
"models/models_kit/xmas/giftbox64x64_ribbon_butterfly.vvd" ,
"models/models_kit/xmas/giftbox64x64_ribbon_butterfly.xbox.vtx" ,
"models/models_kit/xmas/giftbox64x64_ribbon_curly.dx80.vtx" ,
"models/models_kit/xmas/giftbox64x64_ribbon_curly.dx90.vtx" ,
"models/models_kit/xmas/giftbox64x64_ribbon_curly.mdl" ,
"models/models_kit/xmas/giftbox64x64_ribbon_curly.sw.vtx" ,
"models/models_kit/xmas/giftbox64x64_ribbon_curly.vvd" ,
"models/models_kit/xmas/giftbox64x64_ribbon_curly.xbox.vtx" ,
"models/models_kit/xmas/giftbox64x64_ribbon_special.dx80.vtx" ,
"models/models_kit/xmas/giftbox64x64_ribbon_special.dx90.vtx" ,
"models/models_kit/xmas/giftbox64x64_ribbon_special.mdl" ,
"models/models_kit/xmas/giftbox64x64_ribbon_special.sw.vtx" ,
"models/models_kit/xmas/giftbox64x64_ribbon_special.vvd" ,
"models/models_kit/xmas/giftbox64x64_ribbon_special.xbox.vtx" ,
"models/models_kit/xmas/giftbox64x96h.dx80.vtx" ,
"models/models_kit/xmas/giftbox64x96h.dx90.vtx" ,
"models/models_kit/xmas/giftbox64x96h.mdl" ,
"models/models_kit/xmas/giftbox64x96h.phy" ,
"models/models_kit/xmas/giftbox64x96h.sw.vtx" ,
"models/models_kit/xmas/giftbox64x96h.vvd" ,
"models/models_kit/xmas/giftbox64x96h.xbox.vtx" ,
"models/models_kit/xmas/giftbox64x96h_ribbon_diagonal.dx80.vtx" ,
"models/models_kit/xmas/giftbox64x96h_ribbon_diagonal.dx90.vtx" ,
"models/models_kit/xmas/giftbox64x96h_ribbon_diagonal.mdl" ,
"models/models_kit/xmas/giftbox64x96h_ribbon_diagonal.sw.vtx" ,
"models/models_kit/xmas/giftbox64x96h_ribbon_diagonal.vvd" ,
"models/models_kit/xmas/giftbox64x96h_ribbon_diagonal.xbox.vtx" ,
"models/models_kit/xmas/giftbox64x96h_ribbon_tag.dx80.vtx" ,
"models/models_kit/xmas/giftbox64x96h_ribbon_tag.dx90.vtx" ,
"models/models_kit/xmas/giftbox64x96h_ribbon_tag.mdl" ,
"models/models_kit/xmas/giftbox64x96h_ribbon_tag.sw.vtx" ,
"models/models_kit/xmas/giftbox64x96h_ribbon_tag.vvd" ,
"models/models_kit/xmas/giftbox64x96h_ribbon_tag.xbox.vtx" ,
"models/models_kit/xmas/giftbox96x96.dx80.vtx" ,
"models/models_kit/xmas/giftbox96x96.dx90.vtx" ,
"models/models_kit/xmas/giftbox96x96.mdl" ,
"models/models_kit/xmas/giftbox96x96.phy" ,
"models/models_kit/xmas/giftbox96x96.sw.vtx" ,
"models/models_kit/xmas/giftbox96x96.vvd" ,
"models/models_kit/xmas/giftbox96x96.xbox.vtx" ,
"models/models_kit/xmas/giftbox96x96_ribbon_special.dx80.vtx" ,
"models/models_kit/xmas/giftbox96x96_ribbon_special.dx90.vtx" ,
"models/models_kit/xmas/giftbox96x96_ribbon_special.mdl" ,
"models/models_kit/xmas/giftbox96x96_ribbon_special.sw.vtx" ,
"models/models_kit/xmas/giftbox96x96_ribbon_special.vvd" ,
"models/models_kit/xmas/giftbox96x96_ribbon_special.xbox.vtx" ,
"models/models_kit/xmas/giftbox96x96_ribbon_tag.dx80.vtx" ,
"models/models_kit/xmas/giftbox96x96_ribbon_tag.dx90.vtx" ,
"models/models_kit/xmas/giftbox96x96_ribbon_tag.mdl" ,
"models/models_kit/xmas/giftbox96x96_ribbon_tag.sw.vtx" ,
"models/models_kit/xmas/giftbox96x96_ribbon_tag.vvd" ,
"models/models_kit/xmas/giftbox96x96_ribbon_tag.xbox.vtx" ,
"models/models_kit/xmas/giftbox_mini_octo.dx80.vtx" ,
"models/models_kit/xmas/giftbox_mini_octo.dx90.vtx" ,
"models/models_kit/xmas/giftbox_mini_octo.mdl" ,
"models/models_kit/xmas/giftbox_mini_octo.phy" ,
"models/models_kit/xmas/giftbox_mini_octo.sw.vtx" ,
"models/models_kit/xmas/giftbox_mini_octo.vvd" ,
"models/models_kit/xmas/giftbox_mini_octo.xbox.vtx" ,
"models/models_kit/xmas/giftbox_mini_quad.dx80.vtx" ,
"models/models_kit/xmas/giftbox_mini_quad.dx90.vtx" ,
"models/models_kit/xmas/giftbox_mini_quad.mdl" ,
"models/models_kit/xmas/giftbox_mini_quad.phy" ,
"models/models_kit/xmas/giftbox_mini_quad.sw.vtx" ,
"models/models_kit/xmas/giftbox_mini_quad.vvd" ,
"models/models_kit/xmas/giftbox_mini_quad.xbox.vtx" ,
"models/models_kit/xmas/giftbox_mini_ribbon_curly.dx80.vtx" ,
"models/models_kit/xmas/giftbox_mini_ribbon_curly.dx90.vtx" ,
"models/models_kit/xmas/giftbox_mini_ribbon_curly.mdl" ,
"models/models_kit/xmas/giftbox_mini_ribbon_curly.sw.vtx" ,
"models/models_kit/xmas/giftbox_mini_ribbon_curly.vvd" ,
"models/models_kit/xmas/giftbox_mini_ribbon_curly.xbox.vtx" ,
"models/models_kit/xmas/giftbox_mini_ribbon_specialA.dx80.vtx" ,
"models/models_kit/xmas/giftbox_mini_ribbon_specialA.dx90.vtx" ,
"models/models_kit/xmas/giftbox_mini_ribbon_speciala.mdl" ,
"models/models_kit/xmas/giftbox_mini_ribbon_specialA.sw.vtx" ,
"models/models_kit/xmas/giftbox_mini_ribbon_speciala.vvd" ,
"models/models_kit/xmas/giftbox_mini_ribbon_specialA.xbox.vtx" ,
"models/models_kit/xmas/giftbox_mini_ribbon_specialB.dx80.vtx" ,
"models/models_kit/xmas/giftbox_mini_ribbon_specialB.dx90.vtx" ,
"models/models_kit/xmas/giftbox_mini_ribbon_specialb.mdl" ,
"models/models_kit/xmas/giftbox_mini_ribbon_specialB.sw.vtx" ,
"models/models_kit/xmas/giftbox_mini_ribbon_specialb.vvd" ,
"models/models_kit/xmas/giftbox_mini_ribbon_specialB.xbox.vtx" ,
"models/models_kit/xmas/giftbox_mini_round.dx80.vtx" ,
"models/models_kit/xmas/giftbox_mini_round.dx90.vtx" ,
"models/models_kit/xmas/giftbox_mini_round.mdl" ,
"models/models_kit/xmas/giftbox_mini_round.phy" ,
"models/models_kit/xmas/giftbox_mini_round.sw.vtx" ,
"models/models_kit/xmas/giftbox_mini_round.vvd" ,
"models/models_kit/xmas/giftbox_mini_round.xbox.vtx" ,
"models/models_kit/xmas/giftbox_nano.dx80.vtx" ,
"models/models_kit/xmas/giftbox_nano.dx90.vtx" ,
"models/models_kit/xmas/giftbox_nano.mdl" ,
"models/models_kit/xmas/giftbox_nano.phy" ,
"models/models_kit/xmas/giftbox_nano.sw.vtx" ,
"models/models_kit/xmas/giftbox_nano.vvd" ,
"models/models_kit/xmas/giftbox_nano.xbox.vtx" ,
"models/models_kit/xmas/xmastree.dx80.vtx" ,
"models/models_kit/xmas/xmastree.dx90.vtx" ,
"models/models_kit/xmas/xmastree.mdl" ,
"models/models_kit/xmas/xmastree.phy" ,
"models/models_kit/xmas/xmastree.sw.vtx" ,
"models/models_kit/xmas/xmastree.vvd" ,
"models/models_kit/xmas/xmastree.xbox.vtx" ,
"models/models_kit/xmas/xmastree_mini.dx80.vtx" ,
"models/models_kit/xmas/xmastree_mini.dx90.vtx" ,
"models/models_kit/xmas/xmastree_mini.mdl" ,
"models/models_kit/xmas/xmastree_mini.phy" ,
"models/models_kit/xmas/xmastree_mini.sw.vtx" ,
"models/models_kit/xmas/xmastree_mini.vvd" ,
"models/models_kit/xmas/xmastree_mini.xbox.vtx" ,
"models/models_kit/xmas/xmas_teddybear.dx80.vtx" ,
"models/models_kit/xmas/xmas_teddybear.dx90.vtx" ,
"models/models_kit/xmas/xmas_teddybear.mdl" ,
"models/models_kit/xmas/xmas_teddybear.phy" ,
"models/models_kit/xmas/xmas_teddybear.sw.vtx" ,
"models/models_kit/xmas/xmas_teddybear.vvd" ,
"models/models_kit/xmas/xmas_teddybear.xbox.vtx"
};
int g_iCurVictim = INVALID_ENT_REFERENCE ;
public void OnPluginStart ()
{
HookEventEx ( "player_death" , OnPlayerDeath , EventHookMode_Pre );
HookEventEx ( "round_start" , OnRoundStart );
}
public void OnMapStart ()
{
int iIter = 0 ;
for ( iIter = 0 ; iIter < sizeof ( g_szModels ); iIter ++)
{
PrecacheModel ( g_szModels [ iIter ], true );
AddFileToDownloadsTable ( g_szModels [ iIter ]);
}
CreateTimer ( 0.333333 , Timer_Check , _ , TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE );
}
public void OnPlayerDeath ( Handle E , const char [] N , bool NB )
{
g_iCurVictim = GetClientOfUserId ( GetEventInt ( E , "userid" ));
if ( GetRandomInt ( 0 , X_RANDOM_CHANCE ) == 0 && \
g_iCurVictim != INVALID_ENT_REFERENCE && \
g_iCurVictim >= 1 && g_iCurVictim <= MaxClients && \
IsClientInGame ( g_iCurVictim ) && \
! hCSGO_IsWarmup ())
{
Handle pPack = CreateDataPack ();
if ( pPack != INVALID_HANDLE )
{
float pOrigin [ 3 ];
GetClientEyePosition ( g_iCurVictim , pOrigin );
WritePackFloat ( pPack , pOrigin [ 0 ]);
WritePackFloat ( pPack , pOrigin [ 1 ]);
WritePackFloat ( pPack , pOrigin [ 2 ]);
CreateTimer ( 0.1 , Timer_CreateCrate , pPack );
}
}
}
public Action Timer_CreateCrate ( Handle pTimer , any _Data )
{
float pOrigin [ 3 ];
ResetPack ( _Data );
pOrigin [ 0 ] = ReadPackFloat ( _Data );
pOrigin [ 1 ] = ReadPackFloat ( _Data );
pOrigin [ 2 ] = ReadPackFloat ( _Data );
CloseHandle ( _Data );
_Data = INVALID_HANDLE ;
SpawnCrateToOrigin ( pOrigin );
}
public Action CS_OnTerminateRound ( float & fDelay , CSRoundEndReason & pReason )
{
CreateTimer ( fDelay - GetRandomFloat ( 1.0 , 1.5 ), Timer_RemoveStuff , _ , TIMER_FLAG_NO_MAPCHANGE );
}
public Action Timer_RemoveStuff ( Handle pTimer , any _Data )
{
int iEntity = INVALID_ENT_REFERENCE ;
while (( iEntity = FindEntityByClassname ( iEntity , X_CLASS_NAME )) != INVALID_ENT_REFERENCE )
{
AcceptEntityInput ( iEntity , "KillHierarchy" );
}
}
Handle g_pDb = INVALID_HANDLE ;
bool g_bBHOP [ MAXPLAYERS + 1 ] = { false , ... };
bool g_bDecoy [ MAXPLAYERS + 1 ] = { false , ... };
public APLRes AskPluginLoad2 ( Handle pSelf , bool bLateLoaded , char [] szError , int iSize )
{
CreateNative ( "HasBH" , __HasBH );
RegPluginLibrary ( "crates" );
return APLRes_Success ;
}
public int __HasBH ( Handle pPlugin , int Params )
{
return g_bBHOP [ GetNativeCell ( 1 )] ? 1 : 0 ;
}
public Action Timer_Check ( Handle pTimer , any _Data )
{
int iEntity = INVALID_ENT_REFERENCE , iVictim = INVALID_ENT_REFERENCE , iPlayer = INVALID_ENT_REFERENCE ;
float pOrigin [ 3 ], pPlayerOrigin [ 3 ], fDistance = 0.0 , fMaxDistance = 999999.0 ;
while (( iEntity = FindEntityByClassname ( iEntity , X_CLASS_NAME )) != INVALID_ENT_REFERENCE )
{
GetEntPropVector ( iEntity , Prop_Send , "m_vecOrigin" , pOrigin );
iVictim = INVALID_ENT_REFERENCE ;
fMaxDistance = 999999.0 ;
for ( iPlayer = 1 ; iPlayer <= MaxClients ; iPlayer ++)
{
if ( IsClientInGame ( iPlayer ) && IsPlayerAlive ( iPlayer ) && g_iCurVictim != iPlayer )
{
GetClientAbsOrigin ( iPlayer , pPlayerOrigin );
fDistance = GetVectorDistance ( pOrigin , pPlayerOrigin );
if ( fDistance < fMaxDistance )
{
fMaxDistance = fDistance ;
iVictim = iPlayer ;
}
}
}
if ( fMaxDistance < 72.5 )
{
if ( iVictim != INVALID_ENT_REFERENCE )
{
AcceptEntityInput ( iEntity , "KillHierarchy" );
if (! g_bBHOP [ iVictim ])
{
switch ( GetRandomInt ( 0 , 4 ))
{
case 0 :
{
g_bDecoy [ iVictim ] = true ;
PrintToChat ( iVictim , "\x05 +1 SNOW BALL\x09 (NEXT ROUND)" );
}
case 1 :
{
SetEntProp ( iVictim , Prop_Data , "m_iFrags" , GetEntProp ( iVictim , Prop_Send , "m_iFrags" ) + 3 );
PrintToChat ( iVictim , "\x06 +3 FRAGS" );
}
case 2 :
{
if ( g_pDb == INVALID_HANDLE )
{
char szErr [ PLATFORM_MAX_PATH ];
g_pDb = SQL_Connect ( "main_db" , true , szErr , sizeof ( szErr ));
}
char szSteam [ MAX_NAME_LENGTH ];
GetClientAuthId ( iVictim , AuthId_Engine , szSteam , sizeof ( szSteam ));
hCSGO_ExtractSteamID ( szSteam , szSteam , sizeof ( szSteam ));
char szQry [ PLATFORM_MAX_PATH ];
FormatEx ( szQry , sizeof ( szQry ), "update ore set mins = mins + 5 where steam like '%s%s%s';" , "%" , szSteam , "%" );
SQL_TQuery ( g_pDb , __Empty , szQry );
PrintToChat ( iVictim , "\x04 +5 MINUTES" );
}
case 3 :
{
PrintToChat ( iVictim , "\x07 SORRY, THIS BOX WAS EMPTY .." );
}
case 4 :
{
PrintToChat ( iVictim , "\x0B 60 SECONDS\x09 BUNNY HOP" );
g_bBHOP [ iVictim ] = true ;
CreateTimer ( SECUNDE_BHOP , Timer_No , iVictim , TIMER_FLAG_NO_MAPCHANGE );
}
}
}
else
{
switch ( GetRandomInt ( 0 , 3 ))
{
case 0 :
{
g_bDecoy [ iVictim ] = true ;
PrintToChat ( iVictim , "\x05 +1 SNOW BALL\x09 (NEXT SPAWN)" );
}
case 1 :
{
SetEntProp ( iVictim , Prop_Data , "m_iFrags" , GetEntProp ( iVictim , Prop_Send , "m_iFrags" ) + 3 );
PrintToChat ( iVictim , "\x06 +3 FRAGS" );
}
case 2 :
{
if ( g_pDb == INVALID_HANDLE )
{
char szErr [ PLATFORM_MAX_PATH ];
g_pDb = SQL_Connect ( "main_db" , true , szErr , sizeof ( szErr ));
}
char szSteam [ MAX_NAME_LENGTH ];
GetClientAuthId ( iVictim , AuthId_Engine , szSteam , sizeof ( szSteam ));
hCSGO_ExtractSteamID ( szSteam , szSteam , sizeof ( szSteam ));
char szQry [ PLATFORM_MAX_PATH ];
FormatEx ( szQry , sizeof ( szQry ), "update ore set mins = mins + 5 where steam like '%s%s%s';" , "%" , szSteam , "%" );
SQL_TQuery ( g_pDb , __Empty , szQry );
PrintToChat ( iVictim , "\x04 +5 MINUTES" );
}
case 3 :
{
PrintToChat ( iVictim , "\x07 SORRY, THIS BOX WAS EMPTY .." );
}
}
}
}
}
}
}
public Action Timer_No ( Handle pTimer , any Data )
{
g_bBHOP [ Data ] = false ;
if ( IsClientInGame ( Data ))
PrintToChat ( Data , "\x09 BUNNY HOP\x07 EXPIRED" );
}
public void OnClientDisconnect ( int iId )
{
g_bBHOP [ iId ] = false ;
g_bDecoy [ iId ] = false ;
}
public void __Empty ( Handle pDb , Handle pQuery , char [] Error , any Data )
{
}
void SpawnCrateToOrigin ( float pOrigin [ 3 ])
{
int iEntity = CreateEntityByName ( X_CLASS_NAME );
if ( iEntity != INVALID_ENT_REFERENCE )
{
int iRandom = GetRandomInt ( 0 , sizeof ( g_szCustomModels ) - 1 );
DispatchKeyValue ( iEntity , "model" , g_szCustomModels [ iRandom ]);
DispatchKeyValue ( iEntity , "classname" , X_CLASS_NAME );
DispatchKeyValue ( iEntity , "disableselfshadowing" , "0" );
DispatchKeyValue ( iEntity , "disablevertexlighting" , "0" );
DispatchKeyValue ( iEntity , "fademindist" , "-1" );
DispatchKeyValue ( iEntity , "fadescale" , "1" );
DispatchKeyValue ( iEntity , "rendermode" , "1" );
DispatchKeyValue ( iEntity , "physdamagescale" , "0.0" );
DispatchKeyValue ( iEntity , "renderamt" , "255" );
DispatchKeyValue ( iEntity , "rendercolor" , "255 255 255" );
DispatchKeyValue ( iEntity , "skin" , "0" );
DispatchKeyValue ( iEntity , "solid" , "2" );
DispatchKeyValue ( iEntity , "takedamage" , "2" );
DispatchKeyValue ( iEntity , "health" , "8192" );
DispatchKeyValue ( iEntity , "flags" , "64" );
DispatchKeyValue ( iEntity , "spawnflags" , "64" );
DispatchKeyValueVector ( iEntity , "origin" , pOrigin );
DispatchSpawn ( iEntity );
ActivateEntity ( iEntity );
AcceptEntityInput ( iEntity , "wake" );
AcceptEntityInput ( iEntity , "disablefloating" );
AcceptEntityInput ( iEntity , "enablemotion" );
AcceptEntityInput ( iEntity , "enablepuntsound" );
AcceptEntityInput ( iEntity , "enabledamageforces" );
AcceptEntityInput ( iEntity , "enablephyscannonpickup" );
AcceptEntityInput ( iEntity , "enablecollision" );
AcceptEntityInput ( iEntity , "turnon" );
SetEntProp ( iEntity , Prop_Data , "m_iHealth" , 8192 );
SetEntProp ( iEntity , Prop_Data , "m_takedamage" , 2 );
ActivateEntity ( iEntity );
SetEntProp ( iEntity , Prop_Data , "m_iHealth" , 8192 );
SetEntProp ( iEntity , Prop_Data , "m_takedamage" , 2 );
}
}
public void OnRoundStart ( Handle E , const char [] N , bool NB )
{
CreateTimer ( 0.125 , Timer_Decoys , _ , TIMER_FLAG_NO_MAPCHANGE );
}
public Action Timer_Decoys ( Handle pTimer , any Data )
{
for ( int iId = 1 ; iId <= MaxClients ; iId ++)
{
if ( IsClientInGame ( iId ) && IsPlayerAlive ( iId ) && g_bDecoy [ iId ])
{
g_bDecoy [ iId ] = false ;
GivePlayerItem ( iId , "weapon_decoy" );
}
}
}
Feel free to post some of your own finds
Last edited by headline; 03-16-2017 at 21:45 .