Pentru ca ma numesc Craciun, am decis sa refac pluginul, cu noi imbunatatiri, fara a mai da crash serverului si sa fac pe plac jucatorilor care imi cereau pe privat sa le rezolv pluginul.
Descarcare: GirlShare! ZippyShare!
Nume: Salvatorul Craciunului
Versiune: 3.0
Autor: ^S3ekEr (eu doar l-am modificat si fixat bugurile)
Link oficial: http://www.extreamcs.com/forum/
- SMA | Afiseaza codul
#include < amxmodx > #include < fakemeta > #include < cstrike > #include < hamsandwich > #include < fun > #define PLUGIN_NAME "Xmas Random" #define PLUGIN_VERSION "3.0" #define PLUGIN_AUTHOR "S3ekEr" #define PLUGIN_EDITOR "YONTU" #define TASK_MODEL 12012 #define TASK_HE 12812 #define fm_get_user_model(%1,%2,%3) engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, %1), "model", %2, %3) #define ITEM_HE (1<<0) // "a" #define ITEM_FB (1<<1) // "b" #define ITEM_SG (1<<2) // "c" #define ITEM_DEAGLE (1<<3) // "d" #define ITEM_AWP (1<<4) // "e" #define ITEM_M4A1 (1<<5) // "f" #define ITEM_AK47 (1<<6) // "g" #define ITEM_SPEED (1<<7) // "h" #define ITEM_DEFUSEKIT (1<<8) // "i" #define ITEM_UNHE (1<<9) // "j" new Snow, g_iLastId; new g_has_custom_model[ 33 ], g_player_model[ 33 ][ 32 ], Float:g_models_counter; new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame; new bool:g_Speed[ 33 ], bool:g_HE[ 33 ], TimeReciveHe[ 33 ] = 0; new cvar_health, cvar_armor, cvar_effects, cvar_speed, cvar_items, cvar_team; new const SpriteSnow[ ] = "sprites/snowflakes.spr"; new const xmas_model[ ] = "xmas"; new const Tag[ ] = "[Xmas]"; public plugin_init( ) { register_plugin( PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR ); register_logevent( "logevent_RoundStart", 2, "1=Round_Start" ); register_logevent( "logevent_RoundEnd", 2, "1=Round_End" ); register_event( "DeathMsg", "event_DeathMsg", "a" ); register_event( "CurWeapon", "event_CurWeapon", "be", "1=1" ); RegisterHam( Ham_Spawn, "player", "fw_HamPlayerSpawnPost", 1 ); RegisterHam( Ham_Player_ResetMaxSpeed, "player", "fw_ResetMaxSpeedPost", 1 ); register_forward( FM_SetClientKeyValue, "fw_SetClientKeyValue" ); register_forward( FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged" ); cvar_health = register_cvar( "xmas_health", "200" ); cvar_armor = register_cvar( "xmas_armor", "200" ); cvar_speed = register_cvar( "xmas_speed", "400.0" ); cvar_effects = register_cvar( "xmas_effects", "1" ); cvar_items = register_cvar( "xmas_items", "abcdefghij" ); cvar_team = register_cvar( "xmas_team", "ALL" ); // ALL, T, CT } public plugin_precache( ) { Snow = precache_model( SpriteSnow ); new _model[ 200 ]; format( _model, charsmax( _model ), "models/player/%s/%s.mdl", xmas_model, xmas_model ); if( file_exists( _model ) ) precache_model( _model ); else set_fail_state( "Models ^"xmas.mdl^" does not exists in cstrike/models/player/." ); } public client_putinserver( id ) { g_Speed[ id ] = false; g_HE[ id ] = false; TimeReciveHe[ id ] = 0; } public logevent_RoundStart( ) set_task( 1.0, "task_SetSanta" ); public logevent_RoundEnd( ) g_models_counter = 0.0; public task_SetSanta( ) { new team_access[ 11 ], Flags[ 4 ], Team[ 11 ]; get_pcvar_string( cvar_team, team_access, charsmax( team_access ) ); if( equal( team_access, "T" ) ) { formatex( Flags, charsmax( Flags ), "aeh" ); formatex( Team, charsmax( Team ), "TERRORIST" ); } if( equal( team_access, "CT" ) ) { formatex( Flags, charsmax( Flags ), "aeh" ); formatex( Team, charsmax( Team ), "CT" ); } if( equal( team_access, "ALL" ) ) { formatex( Flags, charsmax( Flags ), "ah" ); formatex( Team, charsmax( Team ), "" ); } new id = GetRandomPlayer( Flags, Team ); if( !id ) return; fm_strip_user_weapons( id ); give_item( id, "weapon_knife" ); set_user_health( id, get_pcvar_num( cvar_health ) ); set_user_armor( id, get_pcvar_num( cvar_armor ) ); set_model( id ); set_items( id ); if( get_pcvar_num( cvar_effects ) ) make_effect( id ); ColorChat( 0, "!1---!4 HO!3 HO!1 HO" ); ColorChat( 0, "!3%s!4 %s!1 a fost ales Salvatorul Craciunului!", Tag, get_name( id ) ); ColorChat( 0, "!1---!4 HO!3 HO!1 HO" ); g_iLastId = id; } public event_DeathMsg( ) { new iKiller = read_data( 1 ); new iVictim = read_data( 2 ); new HitSelf = ( iVictim == iKiller ) ? 1 : 0; if( iVictim == g_iLastId ) { g_Speed[ iVictim ] = false; g_HE[ iVictim ] = false; new Origin[ 3 ]; get_user_origin( iVictim, Origin ); UTIL_CreateSnow( Origin, Snow, random_num( 40, 60 ), random_num( 10, 15 ), random_num( 5, 10 ), random_num( 40, 55 ) ); !HitSelf ? ColorChat( 0, "!3%s!4 Salvatorul Craciunului!1 %s!4 a fost omorat de!1 %s!4 !", Tag, get_name( iVictim ), get_name( iKiller ) ) : ColorChat( 0, "!3%s!4 Salvatorul Craciunului!1 %s!4 a murit !", Tag, get_name( iVictim ) ); } } public event_CurWeapon( id ) { if( id == g_iLastId ) { if( !g_HE[ id ] ) return PLUGIN_HANDLED; if( !user_has_weapon( id, CSW_HEGRENADE ) && !TimeReciveHe[ id ] ) { TimeReciveHe[ id ] = 1; set_task( 1.0, "give_user_he", id + TASK_HE, _, _, "b" ); } return PLUGIN_HANDLED; } return PLUGIN_HANDLED; } public fw_HamPlayerSpawnPost( id ) { if( !is_user_connected( id ) ) return HAM_IGNORED; if( id == g_iLastId ) { remove_task( id + TASK_HE ); TimeReciveHe[ id ] = 0; g_Speed[ id ] = false; g_HE[ id ] = false; set_user_armor( id, 0 ); fm_reset_user_model( id ); fm_strip_user_weapons( id ); give_item( id, "weapon_knife" ); switch( _:cs_get_user_team( id ) ) { case CS_TEAM_CT: { give_item( id, "weapon_usp" ); cs_set_user_bpammo( id, CSW_USP, 24 ); } case CS_TEAM_T: { give_item( id, "weapon_glock18" ); cs_set_user_bpammo( id, CSW_GLOCK18, 20 ); } } return HAM_IGNORED; } return HAM_IGNORED; } public fw_ResetMaxSpeedPost( id ) { if( !is_user_alive( id ) ) return HAM_IGNORED; if( id == g_iLastId ) { if( g_Speed[ id ] ) { new Float:flMaxSpeed = get_pcvar_float( cvar_speed ); if( flMaxSpeed > 0.0 ) { set_user_maxspeed( id, flMaxSpeed ); new szCommand[ 128 ]; formatex( szCommand, sizeof( szCommand ) - 1, "cl_forwardspeed %.1f;cl_sidespeed %.1f;cl_backspeed %.1f", flMaxSpeed, flMaxSpeed, flMaxSpeed ); client_cmd( id, szCommand ); } } else return HAM_HANDLED; } return HAM_IGNORED; } public fw_SetClientKeyValue( id, const infobuffer[ ], const key[ ] ) { if( g_has_custom_model[ id ] && equal( key, "model" ) ) return FMRES_SUPERCEDE; return FMRES_IGNORED; } public fw_ClientUserInfoChanged( id ) { if( !g_has_custom_model[ id ] ) return FMRES_IGNORED; static szCurrentModel[ 32 ]; fm_get_user_model( id, szCurrentModel, charsmax( szCurrentModel ) ); if( !equal( szCurrentModel, g_player_model[ id ] ) ) fm_set_user_model( id, g_player_model[ id ] ); return FMRES_IGNORED; } public set_model( id ) { remove_task( id + TASK_MODEL ); copy( g_player_model[ id ], charsmax( g_player_model[ ] ), xmas_model ); static szCurrentModel[ 32 ]; fm_get_user_model( id, szCurrentModel, charsmax( szCurrentModel ) ); if( !equal( szCurrentModel, g_player_model[ id ] ) ) { set_task( 1.0 + g_models_counter, "task_setmodel2", id + TASK_MODEL ); g_models_counter += 0.25; } else if( g_has_custom_model[ id ] ) { fm_reset_user_model( id ); set_task( 1.0, "set_model", id ); } } public task_setmodel2( id ) { id -= TASK_MODEL; fm_set_user_model( id, g_player_model[ id ] ); } public set_items( id ) { new Flag = GetItemFlags( ); if( Flag & ITEM_HE ) give_item( id, "weapon_hegrenade" ); if( Flag & ITEM_FB ) { give_item( id, "weapon_flashbang" ); cs_set_user_bpammo( id, CSW_FLASHBANG, cs_get_user_bpammo( id, CSW_FLASHBANG ) + 1 ); } if( Flag & ITEM_SG ) give_item( id, "weapon_smokegrenade" ); if( Flag & ITEM_DEAGLE ) { give_item( id, "weapon_deagle" ); cs_set_user_bpammo( id, CSW_DEAGLE, 35 ); } if( Flag & ITEM_AWP ) { give_item( id, "weapon_awp" ); cs_set_user_bpammo( id, CSW_AWP, 30 ); } if( Flag & ITEM_M4A1 ) { give_item( id, "weapon_m4a1" ); cs_set_user_bpammo( id, CSW_M4A1, 90 ); } if( Flag & ITEM_AK47 ) { give_item( id, "weapon_ak47" ); cs_set_user_bpammo( id, CSW_AK47, 90 ); } if( Flag & ITEM_SPEED ) g_Speed[ id ] = true; if( cs_get_user_team( id ) == CS_TEAM_CT && Flag & ITEM_DEFUSEKIT ) give_item( id, "item_thighpack" ); if( Flag & ITEM_UNHE ) g_HE[ id ] = true; } public make_effect( id ) { static g_msg_ScreenFade = 0; if( !g_msg_ScreenFade ) g_msg_ScreenFade = get_user_msgid( "ScreenFade" ); message_begin( MSG_ONE, g_msg_ScreenFade, _, id ); write_short( 4<<10 ); write_short( 5<<10 ); write_short( 3<<12 ); write_byte( 0 ); write_byte( 0 ); write_byte( 0 ); write_byte( 255 ); message_end( ); } public give_user_he( id ) { id -= TASK_HE; if( id == g_iLastId ) { if( !g_HE[ id ] ) return PLUGIN_HANDLED; else if( !is_user_alive( id ) || user_has_weapon( id, CSW_HEGRENADE ) ) { remove_task( id + TASK_HE ); TimeReciveHe[ id ] = 0; return PLUGIN_HANDLED; } else if( TimeReciveHe[ id ] > 0 ) TimeReciveHe[ id ]--; else {// if( TimeReciveHe[ id ] <= 0 ) { remove_task( id + TASK_HE ); TimeReciveHe[ id ] = 0; give_item( id, "weapon_hegrenade" ); } } return PLUGIN_HANDLED; } stock GetRandomPlayer( const flags[ ] = "", const team[ ] = "" ) { // thx Exolent new iPlayers[ 32 ], iNum; get_players( iPlayers, iNum, flags, team ); return iNum ? iPlayers[ random_num( 0, iNum - 1 ) ] : 0; } stock GetItemFlags( ) { new Flags[ 26 ]; get_pcvar_string( cvar_items, Flags, charsmax( Flags ) ); return read_flags( Flags ); } stock ColorChat( id, String[ ], any:... ) { static szMesage[ 192 ]; vformat( szMesage, charsmax( szMesage ), String, 3 ); replace_all( szMesage, charsmax( szMesage ), "!1", "^1" ); replace_all( szMesage, charsmax( szMesage ), "!3", "^3" ); replace_all( szMesage, charsmax( szMesage ), "!4", "^4" ); static g_msg_SayText = 0; if( !g_msg_SayText ) g_msg_SayText = get_user_msgid( "SayText" ); new Players[ 32 ], iNum = 1, i; if( id ) Players[ 0 ] = id; else get_players( Players, iNum, "ch" ); for( --iNum; iNum >= 0; iNum-- ) { i = Players[ iNum ]; message_begin( MSG_ONE_UNRELIABLE, g_msg_SayText, _, i ); write_byte( i ); write_string( szMesage ); message_end( ); } } stock UTIL_CreateSnow( const iOrigin[ 3 ], const iSpriteID, const iCount, const iLife, const iScale, const velo ) { message_begin( MSG_BROADCAST,SVC_TEMPENTITY ); write_byte( TE_SPRITETRAIL ); write_coord( iOrigin[ 0 ] ); // start position (X) write_coord( iOrigin[ 1 ] ); // start position (Y) write_coord( iOrigin[ 2 ] ); // start position (Z) write_coord( iOrigin[ 0 ] ); // end position (X) write_coord( iOrigin[ 1 ] ); // end position (Y) write_coord( iOrigin[ 2 ] + random_num( 40, 60 ) ); // end position (Z) write_short( iSpriteID ); // sprite index write_byte( iCount ); // number of snow write_byte( iLife ); // life in 0.1's write_byte( iScale ); // scale in 0.1's write_byte( velo ); // velocity along vector in 10's write_byte( random_num( 15, 15 ) ); // randomness of velocity in 10's message_end( ); } stock get_name( id ) { new szName[ 32 ]; get_user_name( id, szName, charsmax( szName ) ); return szName; } stock fm_set_user_model( id, const modelname[ ] ) { engfunc( EngFunc_SetClientKeyValue, id, engfunc( EngFunc_GetInfoKeyBuffer, id ), "model", modelname ); g_has_custom_model[ id ] = true; } stock fm_reset_user_model( id ) { g_has_custom_model[ id ] = false; dllfunc( DLLFunc_ClientUserInfoChanged, id, engfunc( EngFunc_GetInfoKeyBuffer, id ) ); } stock fm_strip_user_weapons( id ) { static stripent; if( !pev_valid( stripent ) ) { stripent = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "player_weaponstrip" ) ); dllfunc( DLLFunc_Spawn, stripent ); set_pev( stripent, pev_solid, SOLID_NOT ); } dllfunc( DLLFunc_Use, stripent, id ); return PLUGIN_HANDLED; } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par } */
1. Fisierul salvatorul_craciunului.sma il puneti in addons/amxmodx/scripting
2. Fisierul salvatorul_craciunului.amxx il puneti in addons/amxmodx/plugins
3. Fisierul xmas.mdl il puneti in cstrike/models/player/xmas
4. Fisierul snowflakes.spr il puneti in cstrike/sprites
5. Intrati in fisierul addons/amxmodx/configs/plugins.ini si adaugati la urma:
Code: Select all
salvatorul_craciunului.amxx
Cvar-uri (se adauga in fisierul amxmodx\configs\amxx.cfg):
- xmas_health "200" - viata 'salvatorului'
xmas_armor "200" - armura 'salvatorului'
xmas_speed "280.0" - viteza 'salvatorului' (cu zecimala)
xmas_effects "1" - 1 - ON, 0 - OFF (efecte: la inceput de runda i se inegreste ecranul)
xmas_team "ALL" - din ce echipa sa fie ales 'salvatorul'? T - din echipa Teroristilor | CT - din echipa Anti Teroristilor | ALL - din ambele echipe
xmas_items "abcdefghij" - ce iteme sa primeasca 'salvatorului'- Flaguri Iteme | Afiseaza codul
a - 1 grenada HE b - 2 grenade flashbang c - 1 grenada smoke d - un deagle cu 35 gloante e - un awp cu 30 gloante f - m4a1 cu 90 gloante g - ak47 cu 90 gloante h - daca folosim flagul "h", ii vom activa viteza, daca nu, nu va primi viteza i - defuse kit (doar daca e CT) j - grenade HE infinite // puteti seta sa primeasca toate itemele (ex: xmas_items "abcdefghij") // daca nu doresti ca 'salvatorul' sa primeasca viteza sau grenade he infinite setezi astfel: (ex: xmas_items "abcdefgi") // puteti seta itemele dupa bunul plac
- Nu are
- Nu are
- CStrike
- Fun
- Hamsandwich
- Fakemeta
- Fun
Alte informatii:
Daca intampinati buguri, sau erori in log sau ceva de genul, nu ezitati sa postati mai jos
- Imagini | Afiseaza codul