Czy ktoś mógł by mi spolszczyć plugin?
Ponieważ sam nie wiem co mogę spolszczyć, a co nie...
/* Plugin generated by AMXX-Studio */
/*********************************************************************************
Superweapon -- M4 with M203 Edition
This plugin supply a sort of special weapon: M4A1 with M203 grenade launcher.
The M203 can launch 2 type of grenades: He-grenade & Gas-grenade.
He-grenade can hurt players spang with blast damage & Gas-grenade hurt player who touch the "gas".
----------------------------------------------------------------------------------
Modul & Require:
<amxmisc>
<cstrike>
<fakemeta>
----------------------------------------------------------------------------------
CAVR:
SW_SpawnMode 0|1|2 //define superweapon spawn mode,
//"0" means superweapon never spawn, (admin still can give it to any player by admin command)
//"1" means auto, superweapon will auto spawn in general maps(DE|CS|AS|ES)
//"2" means superweapon will auto spawn in all type of maps
SW_MaxAmount_TE 3 //max amount of terrorists can holded m4 with m203
SW_MaxAmount_CT 3 //max amount of cts can holded m4 with m203
SW_GrenadeTK 0 //40mm hegrenade team kill,"0" is secundum server's rule, "1" is TK in any case
SW_GrenadeRT 3.0 //grenade reload time
SW_HeGrenadeMD 100 //40mm he grenade max damage
SW_HeGrenadeDR 400 //40mm he grenade damage radius
SW_HeGrenadeMC 3 //40mm he grenade's max amount can been carried
SW_HeGrenadePR 500 //40mm he grenade's price
SW_GasGrenadeMD 100 //40mm gas grenade max damage
SW_GasGrenadeDR 100 //40mm gas grenade damage radius
SW_GasGrenadeMC 1 //40mm gas grenade's max amount can been carried
SW_GasGrenadePR 500 //40mm gas grenade's price
----------------------------------------------------------------------------------
About the superweapon spawn:
Generally(can change by CVAR or Admin), superweapons will spawn after 1th round, stochastic
locality in map, with specifically amount(by CVAR setting).
----------------------------------------------------------------------------------
Command:
1.Admin command(ADMIN_IMMUNITY): give or strip player's superweapon
amx_sw_m4 <#id | name> <give | strip>
{<#playerindex|name(can be partial)> <g(means give M4A1/W M203)|s(means strip target's superweapon if he has>}")
2.Admin command(ADMIN_IMMUNITY): change superweapon mode
amx_sw_set <0 | 1 | 2>
"0" means stop SW mode(also strip all sw)
"1" means start it by CVAR(SW_SpawnMode)'s setting
"2" means start anywise
3.Player command: open superweapon menu
When player's Current weapon is "superweapon", press "spray key" will openning menu of grenade setting,
menu include:
1.Switch current grenade type to he-grenade
2.Switch current grenade type to gas-grenade
3.Setting|Offload muffler
4.Buy he-grenade
5.Buy gas-grenade
4.Fire 40mm grenade:
press "+attack2" key to launch grenade
----------------------------------------------------------------------------------
Credit:
code and more: VEN & more
model maker: Ankalar, CJ, TinSoldier, S7ok3, Dirtball, Pr0d!gy, Ritual, Rob O, Jennifer!!,
SureShot, Nightshade, Sas.stu, -X-, Vunsata
*********************************************************************************/
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#define PLUGIN "Ryu_SuperWeapon"
#define VERSION "0.3"
#define AUTHOR "CZ*Ryu"
#define MAXPLAYERS 32
#define MAXNUM 64
#define SW_BOX_PARAM_NOTOUCH 0
#define SW_BOX_PARAM_TRIGGER 1
#define SW_BOX_SILEN_OFF 0
#define SW_BOX_SILEN_ON 1
//grenade tyep, ItemPickup & Scenario: grenade type(he|gasun-use) sprite string num constant,
#define TYPE_HENADE 0
#define TYPE_GASNADE 1
#define TYPE_INCENDIARY 2
#define NOT_SHOW_NUM 10
//team kill check constant
#define HURT_ENEMY 0
#define HURT_TEAMMATE 1
#define HURT_SELF 2
#define HURT_NONE 3
//effect entity
#define EFFECT_EXPLO 0
#define EFFECT_BLOOD 1
#pragma dynamic 32768
//common value
new iRoundCount
new iServerTK //expression of server's team-kill rule
new bool:bIsCsSeries = false
new bool:bHasNewWeapon = true
new bool:bRightMapType = false
new bool:bSpawnSwBox
//team
new const TE = 1
new const CT = 2
new const SPECTATOR = 3
//icon state constant
new const CLEAR = 0
new const SHOW = 1
//take count of superweapon
new const COUNT = 1
//task id
new const iTaskSpanwSwBox = 33333
new const iTaskBuyTimeOver = 33334
//message id
new iDeathMsgID
new iItemPickupMsgID
new iSayTextMsgID
new iScenarioMsgID
new iStatusIconMsgID
new const sNadeStateString[2][] = {"dmg_rad", "item_healthkit"}//,"dmg_heat"}
//------ pcvar -------------------------------
new cvar_SwSpawnMode_num
new cvar_SwMaxHolders_TE_num
new cvar_SwMaxHolders_CT_num
new cvar_SwNadeReloadTime_flo
new cvar_SwNadeTeamKill_num
//40mm hegrenade
new cvar_SwNadeMaxDmg_HE_num
new cvar_SwNadeDmgRadius_HE_num
new cvar_SwNadeMaxCarried_HE_num
new cvar_SwNadePrice_HE_num
//40mm gas grenade
new cvar_SwNadeMaxDmg_GAS_num
new cvar_SwNadeDmgRadius_GAS_num
new cvar_SwNadeMaxCarried_GAS_num
new cvar_SwNadePrice_GAS_num
new iSwSpawnMode
new bool:bSwNadeTK
new Float:fSwNadeReloadTime //grenade reload time
new iSwNadePrice[2] //[0] is hegrenade's price, [1] store gas grenade's
new iSwNadeMaxCarried[2] //how many grenades can been tote, [0] is hegrenade, [1] store gas grenade
new Float:fSwNadeMaxDmg_HE //hegrenade max damage
new sSwNadeMaxDmg_GAS[4] //gas grenade max damage
new Float:fSwNadeDmgRadius[2] //grenade damage radius
//---------------------------------------------
//correlative variable of superweapon spawn
new iInfoEntAmount //count of player spawn points
new Float:fInfoEntOrigin[MAXNUM][3] //origin of player spawn points
new iGhostEntID[MAXNUM] //assistant entity(for get superweapon spawn point) id
new bool:bGhostEntRemoved = false
new const sGhostEntClassname[] = "Sw_AssistEntity"
new const sSwClassname_Prefix[] = "Sw_"
new const sSwM4BoxClassname[] = "Sw_Box_M4withM203"
new const sSwM4BoxSpriteClassname[] = "Sw_Sprite"
new sSwM4BoxSprite[] = "sprites/3dmflaora.spr"
new iSwM4MaxAmount //max sueprweapon amount
new iSwM4MaxTeamHolders[4] //max sueprweapon amount of each team(te|ct) can hold
new iSwM4CurTeamHolders[4] //current amount of each team hold
new const iSwM4WeaponID = CSW_M4A1
new sSwM4WeaponName[] = "weapon_m4a1"
new const sSwM4Model_v[] = "models/v_m4a1_sw.mdl"
new const sSwM4Model_p[] = "models/p_m4a1_sw.mdl"
new const sSwM4Model_w[] = "models/w_m4a1_sw.mdl"
//some player personal parameter
new iUserHoldSwM4[MAXPLAYERS+1] = 0 //player(id) has superweapon?
new iUserNadeCurType[MAXPLAYERS+1] //player current animated type of grenade
new iUserNadeAmount[MAXPLAYERS+1][3] //player's 40mm grenade amount, [0] is "he", [1] is "gas"
new iUserTouchTimes[MAXPLAYERS+1]
new iUserHasHurtEnt[MAXPLAYERS+1]
new iSwM4SilenStatus[MAXPLAYERS+1]
new iSwM4ClipAmmo[MAXPLAYERS+1]
new iSwM4BpAmmo[MAXPLAYERS+1]
new bool:bRestartAttempt[MAXPLAYERS+1]
new bool:bInBuyzone[MAXPLAYERS+1] = true
new bool:bNadeReloaded[MAXPLAYERS+1] = true
new bool:bInBuyTime
new bool:bInFreezeTime
//grenade's value
//menu
new iSwNadeMenuID
new sSwNadeMenuBody[512]
new sSwNadeMenuTitle[] = "M4withM203"
new iMenuKeys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_0
new iSwNadeSprite_Trail
new iSwNadeSprite_GasExplode
new iSwNadeSprite_GasFog
new const sSwNadeClassname[2][] = {"Sw_Grenade_HE","Sw_Grenade_GAS"} //40mm grenade(type he & gas) of m203
new const sSwNadeFakeGasClassname[] = "Sw_FakeGas"
new const sSwNadeFakeHurtClassname[] = "Sw_HurtEnt"
new const sSwNadeSprite_Trail[] = "sprites/smoke.spr"
new const sSwNadeSprite_GasExplode[] = "sprites/WXplo1.spr"
new const sSwNadeSprite_GasFog[] = "sprites/fakefog.spr"
new const sSwNadeModel_w[] = "models/grenade.mdl"
new sSwNadeSound_Launch[] = "launch40mm.wav"
new sSwNadeSound_Buy[] = "items/gunpickup2.wav"
new sSwNadeSound_Change[] = "items/gunpickup1.wav"
new sSwNadeSound_GasExplode[] = "weapons/sg_explode.wav"
new sSwNadeSound_UseUp[] = "weapons/dryfire_rifle.wav"
new sMsgCannotGetSw[] = "^x03 It is max amount of^x03 your team^x04 can took superweapons now, cannot take more."
new sMsgStripSw[] = "^x03 Sorry! System strip you superweapon by max team-holders's limit."
//some common constant
new const sClassname[] = "classname"
new const sWeaponbox[] = "weaponbox"
new const sPlayer[] = "player"
new const sFuncBreakable[] = "func_breakable"
new const sFuncPushable[] = "func_pushable"
new const sHostageEntity[] = "hostage_entity"
new const sMonsterScientist[] = "monster_scientist"
new const sInfoPlayerStart[] = "info_player_start"
new const sInfoPlayerDeathmatch[] = "info_player_deathmatch"
new const sNamedEntEnvSprite[] = "env_sprite"
new const sNamedEntEnvExplosion[] = "env_explosion"
new const sNamedEntEnvBlood[] = "env_blood"
new const sNamedEntInfoTarget[] = "info_target"
new const sNamedEntTriggerHurt[] = "trigger_hurt"
new const sModel_Weaponbox_w[] = "models/w_weaponbox.mdl"
new const sModel_M4_w[] = "models/w_m4a1.mdl"
new const sModel_Prefix_w[] = "models/w_"
new iSwEffectID[2]
new const sSwEffectClassname[] = "Sw_EffectEnt"
//stock const
stock const pev_SwBox_Param_e = pev_euser1
stock const pev_SwBox_Silen_e = pev_euser2
stock const pev_SwBox_ClipAmmo_e = pev_euser3
stock const pev_SwBox_BpAmmo_e = pev_euser4
stock const pev_SwBox_HeAmount_i = pev_iuser1
stock const pev_SwBox_GasAmount_i = pev_iuser2
stock const pev_SwNade_HurtEnt_i = pev_iuser1
stock const pev_SwNade_ExploPoint_v = pev_vuser1
new const iPrimaryWeaponTable[] = {
CSW_AK47,
CSW_M4A1,
CSW_AWP,
CSW_MP5NAVY,
CSW_SG552,
CSW_AUG,
CSW_SCOUT,
CSW_UMP45,
CSW_P90,
CSW_M249,
CSW_M3,
CSW_XM1014,
CSW_TMP,
CSW_MAC10,
CSW_G3SG1,
CSW_SG550,
CSW_GALIL,
CSW_FAMAS,
2 //shield
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
iDeathMsgID = get_user_msgid("DeathMsg")
iItemPickupMsgID = get_user_msgid("ItemPickup")
iSayTextMsgID = get_user_msgid("SayText")
iScenarioMsgID = get_user_msgid("Scenario")
iStatusIconMsgID = get_user_msgid("StatusIcon")
register_event("HLTV", "event_new_round", "a", "1=0", "2=0")
register_event("ResetHUD", "event_client_spawn", "be")
register_event("CurWeapon", "event_check_superweapon", "be", "1>0", "2=22")
register_event("TextMsg", "event_reset_round", "a", "2Game_C", "2Game_w")
register_event("StatusIcon", "event_check_in_buyzone", "be", "2=buyzone")
register_event("DeathMsg", "event_DeathMsg", "a")//, "4=65536")//DMG_NERVEGAS
register_logevent("logevent_round_start", 2, "0=World triggered", "1=Round_Start")
register_forward(FM_Touch, "forward_touch")
register_forward(FM_SetModel, "forward_reset_model")
register_forward(FM_CmdStart, "forward_CmdStart")
register_forward(FM_Think, "forward_SW_think")
iSwNadeMenuID = register_menuid(sSwNadeMenuTitle)
register_menucmd(iSwNadeMenuID, 1023, "menu_SwGrenade_option")
register_clcmd("fullupdate", "hook_clcmd_fullupdate")
register_concmd("amx_sw_m4", "hook_concmd_sw_m4",ADMIN_IMMUNITY, "{<#playerindex|name(can be partial)> <g(means give M4A1/W M203)|s(means strip target's superweapon if he has>}")
register_concmd("amx_sw_set", "hook_concmd_sw_set",ADMIN_IMMUNITY, "{<0>|<1>|<2>, ^"0^" stop SW mode(also strip all sw) & ^"1^" start it by SW_SpawnMode's setting & ^"2^" start anywise}")
cvar_SwSpawnMode_num = register_cvar("SW_SpawnMode", "1")//define superweapon appear mode,
//"0" means superweapon never spawn, (admin still can give it to any player by admin command)
//"1" means auto, superweapon will auto spawn in general maps
//"2" means superweapon will auto spawn in all type of maps
cvar_SwMaxHolders_TE_num = register_cvar("SW_MaxAmount_TE", "3")//max amount of terrorists can holded m4 with m203
cvar_SwMaxHolders_CT_num = register_cvar("SW_MaxAmount_CT", "3")//max amount of cts can holded m4 with m203
cvar_SwNadeTeamKill_num = register_cvar("SW_GrenadeTK", "0")//grenade team kill,"0" is secundum server's rule, "1" is TK in any case
cvar_SwNadeReloadTime_flo = register_cvar("SW_GrenadeRT", "3.0")//grenade reload time
cvar_SwNadeMaxDmg_HE_num = register_cvar("SW_HeGrenadeMD", "100") //40mm he grenade max damage
cvar_SwNadeDmgRadius_HE_num = register_cvar("SW_HeGrenadeDR", "400") //40mm he grenade damage radius
cvar_SwNadeMaxCarried_HE_num = register_cvar("SW_HeGrenadeMC", "2") //40mm he grenade's max amount can been took
cvar_SwNadePrice_HE_num = register_cvar("SW_HeGrenadePR", "500") //40mm he grenade's price
cvar_SwNadeMaxDmg_GAS_num = register_cvar("SW_GasGrenadeMD", "100") //40mm gas grenade max damage
cvar_SwNadeDmgRadius_GAS_num = register_cvar("SW_GasGrenadeDR", "100") //40mm gas grenade damage radius
cvar_SwNadeMaxCarried_GAS_num = register_cvar("SW_GasGrenadeMC", "1") //40mm gas grenade's max amount can been took
cvar_SwNadePrice_GAS_num = register_cvar("SW_GasGrenadePR", "500") //40mm gas grenade's price
iInfoEntAmount = get_InfoEnt_origin()
new len = format(sSwNadeMenuBody, 511, "w[ E-M4 opcje broni ]^n^n")
len += format(sSwNadeMenuBody[len], 511 - len, "y1.Przelacz granatnik na typ HE^n")
len += format(sSwNadeMenuBody[len], 511 - len, "y2.Przelacz granatnik na typ GAS^n")
len += format(sSwNadeMenuBody[len], 511 - len, "y3.Opcja | Zrzuc tlumik^n")
len += format(sSwNadeMenuBody[len], 511 - len, "w4.Zakup granaty HE^n")
len += format(sSwNadeMenuBody[len], 511 - len, "w5.Zakup granaty GAS^n^n")
format(sSwNadeMenuBody[len], 511 - len, "r0.Wyjdz")
iSwSpawnMode = get_pcvar_num(cvar_SwSpawnMode_num)
switch ( iSwSpawnMode )
{
case 0:
{
bSpawnSwBox = false
bRightMapType = false
}
case 1:
{
bRightMapType = ( engfunc(EngFunc_FindEntityByString, -1, sClassname, sHostageEntity)
|| engfunc(EngFunc_FindEntityByString, -1, sClassname, sMonsterScientist)
|| engfunc(EngFunc_FindEntityByString, -1, sClassname, "func_hostage_rescue")
|| engfunc(EngFunc_FindEntityByString, -1, sClassname, "info_hostage_rescue")
|| engfunc(EngFunc_FindEntityByString, -1, sClassname, "func_bomb_target")
|| engfunc(EngFunc_FindEntityByString, -1, sClassname, "info_bomb_target")
|| engfunc(EngFunc_FindEntityByString, -1, sClassname, "func_vip_start")
|| engfunc(EngFunc_FindEntityByString, -1, sClassname, "info_vip_start")
|| engfunc(EngFunc_FindEntityByString, -1, sClassname, "func_vip_safetyzone")
|| engfunc(EngFunc_FindEntityByString, -1, sClassname, "func_escapezone") )?true:false
bSpawnSwBox = bRightMapType
}
case 2:
{
bSpawnSwBox = true
bRightMapType = true
}
}
iServerTK = HURT_TEAMMATE
if ( cvar_exists("mp_friendlyfire") )
iServerTK = ( get_cvar_num("mp_friendlyfire") )?HURT_TEAMMATE:HURT_NONE
}
public plugin_precache()
{
new sModName[32]
get_modname(sModName,31)
if ( equal(sModName,"cstrike") || equal(sModName,"czero") )
bIsCsSeries = true
else if ( equal(sModName,"csv15") || equal(sModName,"cs13") )
{
bIsCsSeries = true
bHasNewWeapon = false
}
if ( !bIsCsSeries )
pause("ae")
precache_model(sSwM4Model_v)
precache_model(sSwM4Model_p)
precache_model(sSwM4Model_w)
precache_model(sSwNadeModel_w)
precache_sound(sSwNadeSound_Launch)
precache_sound(sSwNadeSound_Buy) //buy grenades
precache_sound(sSwNadeSound_Change) //grenades type change
precache_sound(sSwNadeSound_GasExplode)
precache_sound(sSwNadeSound_UseUp)
precache_model(sSwM4BoxSprite)
iSwNadeSprite_Trail = precache_model(sSwNadeSprite_Trail)
iSwNadeSprite_GasExplode = precache_model(sSwNadeSprite_GasExplode)
iSwNadeSprite_GasFog = precache_model(sSwNadeSprite_GasFog)
return PLUGIN_CONTINUE
}
public event_new_round()
{
iRoundCount++
new iSpawnAmount = get_cvar_param()
new iMaxEntities = global_get(glb_maxEntities)
new i,sClass[32]
for ( i=MAXPLAYERS+1; i<iMaxEntities; i++ )
{
if ( !pev_valid(i) )
continue
pev(i, pev_classname, sClass, sizeof sClass - 1 )
if ( equal(sClass, sSwClassname_Prefix, 3) )
engfunc(EngFunc_RemoveEntity, i)
}
create_effect_entity()
if ( !bGhostEntRemoved )
bGhostEntRemoved = remove_GhostEnt()
if ( bSpawnSwBox && iRoundCount > 1 && iSpawnAmount > 0 )
bGhostEntRemoved = bool:spawn_GhostEnt(iSpawnAmount)
return PLUGIN_CONTINUE
}
public hook_clcmd_fullupdate(id)
{
return PLUGIN_HANDLED
}
public event_client_spawn(id)
{
new iMenuID,iKeys
get_user_menu(id, iMenuID, iKeys)
if ( iMenuID == iSwNadeMenuID )
client_cmd(id, "slot10")
if ( bRestartAttempt[id] )
{
bRestartAttempt[id] = false
return
}
iUserHasHurtEnt[id] = 0
bNadeReloaded[id] = true
if ( iUserHoldSwM4[id] > MAXPLAYERS && pev(id, pev_weapons) & (1<<iSwM4WeaponID) )
{


Dodatki SourceMod



Temat jest zamknięty








