Work towards grenades, translations etc.
|
@ -18,6 +18,10 @@ along with this program; if not, write to the Free Software
|
|||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
void CSQC_ambient_generic( string sSample, float fVolume, float fAttenuation ) {
|
||||
//print( sprintf( "SOUND: %s, %f, %d\n%d %d %d", sSample, fVolume, fAttenuation, self.origin_x, self.origin_y, self.origin_z ) );
|
||||
sound( self, CHAN_VOICE, sSample, fVolume, fAttenuation, 0, SOUNDFLAG_FORCELOOP );
|
||||
}
|
||||
|
||||
/*
|
||||
=================
|
||||
|
@ -57,6 +61,14 @@ void CSQC_Ent_Update( float flIsNew ) {
|
|||
}
|
||||
|
||||
setorigin( self, self.origin );
|
||||
} else if ( fEntType == ENT_AMBIENTSOUND ) {
|
||||
self.origin_x = readcoord();
|
||||
self.origin_y = readcoord();
|
||||
self.origin_z = readcoord();
|
||||
|
||||
setorigin( self, self.origin );
|
||||
|
||||
CSQC_ambient_generic( readstring(), readfloat(), readbyte() );
|
||||
} else if ( fEntType == ENT_SPRITE ) {
|
||||
self.origin_x = readcoord();
|
||||
self.origin_y = readcoord();
|
||||
|
|
|
@ -279,31 +279,31 @@ float CSQC_ConsoleCommand( string sCMD ) {
|
|||
return TRUE;
|
||||
break;
|
||||
case "vest":
|
||||
sendevent( "PlayerBuyEquipment", "f", EQUIPMENT_KEVLAR );
|
||||
sendevent( "PlayerBuyEquipment", "f", 0 );
|
||||
return TRUE;
|
||||
break;
|
||||
case "vesthelm":
|
||||
sendevent( "PlayerBuyEquipment", "f", EQUIPMENT_HELMET );
|
||||
sendevent( "PlayerBuyEquipment", "f", 1 );
|
||||
return TRUE;
|
||||
break;
|
||||
case "flash":
|
||||
sendevent( "PlayerBuyEquipment", "f", EQUIPMENT_FLASHBANG );
|
||||
sendevent( "PlayerBuyEquipment", "f", 2 );
|
||||
return TRUE;
|
||||
break;
|
||||
case "hegren":
|
||||
sendevent( "PlayerBuyEquipment", "f", EQUIPMENT_HEGRENADE );
|
||||
sendevent( "PlayerBuyEquipment", "f", 3 );
|
||||
return TRUE;
|
||||
break;
|
||||
case "vsgren":
|
||||
sendevent( "PlayerBuyEquipment", "f", EQUIPMENT_SMOKEGRENADE );
|
||||
sendevent( "PlayerBuyEquipment", "f", 4 );
|
||||
return TRUE;
|
||||
break;
|
||||
case "defuser":
|
||||
sendevent( "PlayerBuyEquipment", "f", EQUIPMENT_DEFUSALKIT );
|
||||
sendevent( "PlayerBuyEquipment", "f", 5 );
|
||||
return TRUE;
|
||||
break;
|
||||
case "nvg":
|
||||
sendevent( "PlayerBuyEquipment", "f", EQUIPMENT_NIGHTVISION );
|
||||
sendevent( "PlayerBuyEquipment", "f", 6 );
|
||||
return TRUE;
|
||||
break;
|
||||
case "coverme":
|
||||
|
|
|
@ -18,6 +18,10 @@ along with this program; if not, write to the Free Software
|
|||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
// We can only carry one item per slot, so this is hacking around the last one
|
||||
int iHUDGrenades;
|
||||
int iHUDGrenadesSelected;
|
||||
|
||||
typedef struct {
|
||||
string sSprite;
|
||||
vector vOrigin;
|
||||
|
@ -48,8 +52,8 @@ weaponsymbolinfo_t wpSymbolTable[ CS_WEAPON_COUNT ] = {
|
|||
{ "sprites/640hud2.spr_0.tga", '0 0.703125' }, //WEAPON_G3SG1
|
||||
{ "sprites/640hud14.spr_0.tga", '0 0.703125' }, //WEAPON_SG550
|
||||
{ "sprites/640hud3.spr_0.tga", '0 0' }, //WEAPON_PARA
|
||||
{ "sprites/640hud1.spr_0.tga", '0 0' }, //WEAPON_C4BOMB
|
||||
{ "sprites/640hud3.spr_0.tga", '0 0.3515625' }, //WEAPON_FLASHBANG
|
||||
{ "sprites/640hud1.spr_0.tga", '0 0' }, //WEAPON_C4BOMB
|
||||
{ "sprites/640hud3.spr_0.tga", '0 0.3515625' }, //WEAPON_FLASHBANG
|
||||
{ "sprites/640hud3.spr_0.tga", '0 0.17578125' }, //WEAPON_HEGRENADE
|
||||
{ "sprites/640hud3.spr_0.tga", '0 0.52734375' } //WEAPON_SMOKEGRENADE
|
||||
};
|
||||
|
@ -85,12 +89,48 @@ float HUD_DrawWeaponSelect_NextItem( float fSlot ) {
|
|||
return HUD_DrawWeaponSelect_NextItem( SLOT_MELEE );
|
||||
}
|
||||
} else if ( fSlot == SLOT_MELEE ) {
|
||||
if ( getstatf( STAT_SLOT_GRENADE ) ) {
|
||||
// This happens when we go into the slot for the first time
|
||||
iHUDGrenades = 0;
|
||||
|
||||
// Keep this order in order for the selection to work
|
||||
if ( getstati_punf( STAT_ITEM_SMOKEGRENADE ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_SMOKEGRENADE;
|
||||
iHUDGrenades++;
|
||||
}
|
||||
if ( getstati_punf( STAT_ITEM_FLASHBANG ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_FLASHBANG;
|
||||
iHUDGrenades++;
|
||||
}
|
||||
|
||||
if ( getstati_punf( STAT_ITEM_HEGRENADE ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_HEGRENADE;
|
||||
iHUDGrenades++;
|
||||
}
|
||||
|
||||
// If we have any grenades, proceed with that slot
|
||||
if ( iHUDGrenades ) {
|
||||
return SLOT_GRENADE;
|
||||
} else {
|
||||
} else {
|
||||
return HUD_DrawWeaponSelect_NextItem( SLOT_GRENADE );
|
||||
}
|
||||
} else {
|
||||
// If we're in the grenade slot, go down
|
||||
if ( iHUDGrenadesSelected == WEAPON_HEGRENADE ) {
|
||||
// Do we have a flash bang? If yes, select that thing
|
||||
if ( getstatf( STAT_ITEM_FLASHBANG ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_FLASHBANG;
|
||||
return SLOT_GRENADE;
|
||||
} else if ( getstatf( STAT_ITEM_SMOKEGRENADE ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_SMOKEGRENADE;
|
||||
return SLOT_GRENADE;
|
||||
}
|
||||
} else if ( iHUDGrenadesSelected == WEAPON_FLASHBANG ) {
|
||||
if ( getstatf( STAT_ITEM_SMOKEGRENADE ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_SMOKEGRENADE;
|
||||
return SLOT_GRENADE;
|
||||
}
|
||||
}
|
||||
|
||||
if ( getstatf( STAT_SLOT_PRIMARY ) ) {
|
||||
return SLOT_PRIMARY;
|
||||
} else {
|
||||
|
@ -108,7 +148,23 @@ Checks and returns the previous slot with a weapon in it
|
|||
*/
|
||||
float HUD_DrawWeaponSelect_PreviousItem( float fSlot ) {
|
||||
if ( fSlot == SLOT_PRIMARY ) {
|
||||
if ( getstatf( STAT_SLOT_GRENADE ) ) {
|
||||
iHUDGrenades = 0;
|
||||
|
||||
// Keep this order in order for the selection to work
|
||||
if ( getstati_punf( STAT_ITEM_HEGRENADE ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_HEGRENADE;
|
||||
iHUDGrenades++;
|
||||
}
|
||||
if ( getstati_punf( STAT_ITEM_FLASHBANG ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_FLASHBANG;
|
||||
iHUDGrenades++;
|
||||
}
|
||||
if ( getstati_punf( STAT_ITEM_SMOKEGRENADE ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_SMOKEGRENADE;
|
||||
iHUDGrenades++;
|
||||
}
|
||||
|
||||
if ( iHUDGrenades ) {
|
||||
return SLOT_GRENADE;
|
||||
} else {
|
||||
return HUD_DrawWeaponSelect_PreviousItem( SLOT_GRENADE );
|
||||
|
@ -126,10 +182,24 @@ float HUD_DrawWeaponSelect_PreviousItem( float fSlot ) {
|
|||
return HUD_DrawWeaponSelect_PreviousItem( SLOT_SECONDARY );
|
||||
}
|
||||
} else {
|
||||
if ( getstatf( STAT_SLOT_MELEE ) ) {
|
||||
return SLOT_MELEE;
|
||||
if ( iHUDGrenadesSelected == WEAPON_SMOKEGRENADE ) {
|
||||
if ( getstatf( STAT_ITEM_FLASHBANG ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_FLASHBANG;
|
||||
return SLOT_GRENADE;
|
||||
} else if ( getstatf( STAT_ITEM_HEGRENADE ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_HEGRENADE;
|
||||
return SLOT_GRENADE;
|
||||
}
|
||||
} else if ( iHUDGrenadesSelected == WEAPON_FLASHBANG ) {
|
||||
if ( getstatf( STAT_ITEM_HEGRENADE ) ) {
|
||||
iHUDGrenadesSelected = WEAPON_HEGRENADE;
|
||||
return SLOT_GRENADE;
|
||||
}
|
||||
}
|
||||
if ( getstatf( STAT_SLOT_PRIMARY ) ) {
|
||||
return SLOT_PRIMARY;
|
||||
} else {
|
||||
return HUD_DrawWeaponSelect_PreviousItem( SLOT_MELEE );
|
||||
return HUD_DrawWeaponSelect_NextItem( SLOT_PRIMARY );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -149,7 +219,7 @@ float HUD_DrawWeaponSelect_GetWeapon( float fSlot ) {
|
|||
} else if ( fSlot == SLOT_MELEE ) {
|
||||
return getstatf( STAT_SLOT_MELEE );
|
||||
} else {
|
||||
return getstatf( STAT_SLOT_GRENADE );
|
||||
return iHUDGrenadesSelected;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -217,7 +287,7 @@ HUD_DrawWeaponSelect
|
|||
Drawn every frame through HUD.c
|
||||
=================
|
||||
*/
|
||||
void HUD_DrawWeaponSelect( void ) {
|
||||
void HUD_DrawWeaponSelect( void ) {
|
||||
if ( fHUDWeaponSelectTime < time ) {
|
||||
if ( fHUDWeaponSelected ) {
|
||||
sound( self, CHAN_ITEM, "common/wpn_hudoff.wav", 0.5, ATTN_NONE );
|
||||
|
@ -231,11 +301,30 @@ void HUD_DrawWeaponSelect( void ) {
|
|||
for ( int i = 0; i < 4; i++ ) {
|
||||
HUD_DrawWeaponSelect_Num( vSelectPos, i );
|
||||
|
||||
if ( wptTable[ fHUDWeaponSelected ].iSlot == i ) {
|
||||
drawsubpic( vSelectPos + '0 20', '170 45', wpSymbolTable[ fHUDWeaponSelected ].sSprite, wpSymbolTable[ fHUDWeaponSelected ].vOrigin, [ 0.6640625, 0.17578125 ], vHUDColor, 1, DRAWFLAG_ADDITIVE );
|
||||
vSelectPos_x += 170;
|
||||
// Again, grenades are treated seperately
|
||||
if ( i == SLOT_GRENADE ) {
|
||||
if ( wptTable[ fHUDWeaponSelected ].iSlot == SLOT_GRENADE ) {
|
||||
if ( iHUDGrenadesSelected == WEAPON_HEGRENADE ) {
|
||||
drawsubpic( vSelectPos + '0 20', '170 45', wpSymbolTable[ WEAPON_HEGRENADE ].sSprite, wpSymbolTable[ WEAPON_HEGRENADE ].vOrigin, [ 0.6640625, 0.17578125 ], vHUDColor, 1, DRAWFLAG_ADDITIVE );
|
||||
}
|
||||
vSelectPos_y += 45;
|
||||
|
||||
if ( iHUDGrenadesSelected == WEAPON_FLASHBANG ) {
|
||||
drawsubpic( vSelectPos + '0 20', '170 45', wpSymbolTable[ WEAPON_FLASHBANG ].sSprite, wpSymbolTable[ WEAPON_FLASHBANG ].vOrigin, [ 0.6640625, 0.17578125 ], vHUDColor, 1, DRAWFLAG_ADDITIVE );
|
||||
}
|
||||
vSelectPos_y += 45;
|
||||
|
||||
if ( iHUDGrenadesSelected == WEAPON_SMOKEGRENADE ) {
|
||||
drawsubpic( vSelectPos + '0 20', '170 45', wpSymbolTable[ WEAPON_SMOKEGRENADE ].sSprite, wpSymbolTable[ WEAPON_SMOKEGRENADE ].vOrigin, [ 0.6640625, 0.17578125 ], vHUDColor, 1, DRAWFLAG_ADDITIVE );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
vSelectPos_x += 20;
|
||||
if ( wptTable[ fHUDWeaponSelected ].iSlot == i ) {
|
||||
drawsubpic( vSelectPos + '0 20', '170 45', wpSymbolTable[ fHUDWeaponSelected ].sSprite, wpSymbolTable[ fHUDWeaponSelected ].vOrigin, [ 0.6640625, 0.17578125 ], vHUDColor, 1, DRAWFLAG_ADDITIVE );
|
||||
vSelectPos_x += 170;
|
||||
} else {
|
||||
vSelectPos_x += 20;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,17 +22,17 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
||||
// Menus with their window titles and draw functions
|
||||
vguiwindow_t vguiMenus[11] = {
|
||||
{ "Message Of The Day", VGUI_MessageOfTheDay },
|
||||
{ "Team Selection", VGUI_TeamSelect_Main },
|
||||
{ "Terrorist Selection", VGUI_TeamSelect_T },
|
||||
{ "Counter-Terrorist Selection", VGUI_TeamSelect_CT },
|
||||
{ "Buy Menu", VGUI_BuyMenu_Main },
|
||||
{ "Handguns", VGUI_BuyMenu_Handguns },
|
||||
{ "Shotgun", VGUI_BuyMenu_Shotguns },
|
||||
{ "Sub-Machine-Guns", VGUI_BuyMenu_SMGs },
|
||||
{ "Rifles", VGUI_BuyMenu_Rifles },
|
||||
{ "Machineguns", VGUI_BuyMenu_Machineguns },
|
||||
{ "Equipment", VGUI_BuyMenu_Equipment }
|
||||
{ _("Message Of The Day"), VGUI_MessageOfTheDay },
|
||||
{ _("Team Selection"), VGUI_TeamSelect_Main },
|
||||
{ _("Terrorist Selection"), VGUI_TeamSelect_T },
|
||||
{ _("Counter-Terrorist Selection"), VGUI_TeamSelect_CT },
|
||||
{ _("Buy Menu"), VGUI_BuyMenu_Main },
|
||||
{ _("Handguns"), VGUI_BuyMenu_Handguns },
|
||||
{ _("Shotgun"), VGUI_BuyMenu_Shotguns },
|
||||
{ _("Sub-Machine-Guns"), VGUI_BuyMenu_SMGs },
|
||||
{ _("Rifles"), VGUI_BuyMenu_Rifles },
|
||||
{ _("Machineguns"), VGUI_BuyMenu_Machineguns },
|
||||
{ _("Equipment"), VGUI_BuyMenu_Equipment }
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
@ -21,40 +21,40 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include "VGUI.h"
|
||||
|
||||
vguiweaponobject_t vguiWeaponTable[ CS_WEAPON_COUNT ] = {
|
||||
{ "None", "" },
|
||||
{ "Knife", "" },
|
||||
{ "H&K USP .45 Tactical", "gfx/vgui/640_usp" },
|
||||
{ "Glock18 Select Fire", "gfx/vgui/640_glock18" },
|
||||
{ "Desert Eagle .50AE", "gfx/vgui/640_deagle" },
|
||||
{ "SIG P228", "gfx/vgui/640_p228" },
|
||||
{ "Dual Beretta 96G Elite", "gfx/vgui/640_elite" },
|
||||
{ "FN Five-Seven", "gfx/vgui/640_fiveseven" },
|
||||
{ "Benelli M3 Super90", "gfx/vgui/640_m3" },
|
||||
{ "Benelli XM1014", "gfx/vgui/640_xm1014" },
|
||||
{ "H&K MP5-Navy", "gfx/vgui/640_mp5" },
|
||||
{ "FN P90", "gfx/vgui/640_p90" },
|
||||
{ "H&K UMP45", "gfx/vgui/640_ump45" },
|
||||
{ "Ingram MAC-10", "gfx/vgui/640_mac10" },
|
||||
{ "Steyr Tactical Machine Pistol", "gfx/vgui/640_tmp" },
|
||||
{ "AK-47", "gfx/vgui/640_ak47" },
|
||||
{ "Sig SG-552 Commando", "gfx/vgui/640_sg552" },
|
||||
{ "Colt M4A1 Carbine", "gfx/vgui/640_m4a1" },
|
||||
{ "Steyr Aug", "gfx/vgui/640_aug" },
|
||||
{ "Steyr Scout", "gfx/vgui/640_scout" },
|
||||
{ "AI Arctic Warfare/Magnum", "gfx/vgui/640_awp" },
|
||||
{ "H&K G3/SG-1 Sniper Rifle", "gfx/vgui/640_g3sg1" },
|
||||
{ "Sig SG-550 Sniper", "gfx/vgui/640_sg550" },
|
||||
{ "FN M249 Para", "gfx/vgui/640_m249" }
|
||||
{ _("None"), "" },
|
||||
{ _("Knife"), "" },
|
||||
{ _("H&K USP .45 Tactical"), "gfx/vgui/640_usp" },
|
||||
{ _("Glock18 Select Fire"), "gfx/vgui/640_glock18" },
|
||||
{ _("Desert Eagle .50AE"), "gfx/vgui/640_deagle" },
|
||||
{ _("SIG P228"), "gfx/vgui/640_p228" },
|
||||
{ _("Dual Beretta 96G Elite"), "gfx/vgui/640_elite" },
|
||||
{ _("FN Five-Seven"), "gfx/vgui/640_fiveseven" },
|
||||
{ _("Benelli M3 Super90"), "gfx/vgui/640_m3" },
|
||||
{ _("Benelli XM1014"), "gfx/vgui/640_xm1014" },
|
||||
{ _("H&K MP5-Navy"), "gfx/vgui/640_mp5" },
|
||||
{ _("FN P90"), "gfx/vgui/640_p90" },
|
||||
{ _("H&K UMP45"), "gfx/vgui/640_ump45" },
|
||||
{ _("Ingram MAC-10"), "gfx/vgui/640_mac10" },
|
||||
{ _("Steyr Tactical Machine Pistol"), "gfx/vgui/640_tmp" },
|
||||
{ _("AK-47"), "gfx/vgui/640_ak47" },
|
||||
{ _("Sig SG-552 Commando"), "gfx/vgui/640_sg552" },
|
||||
{ _("Colt M4A1 Carbine"), "gfx/vgui/640_m4a1" },
|
||||
{ _("Steyr Aug"), "gfx/vgui/640_aug" },
|
||||
{ _("Steyr Scout"), "gfx/vgui/640_scout" },
|
||||
{ _("AI Arctic Warfare/Magnum"), "gfx/vgui/640_awp" },
|
||||
{ _("H&K G3/SG-1 Sniper Rifle"), "gfx/vgui/640_g3sg1" },
|
||||
{ _("Sig SG-550 Sniper"), "gfx/vgui/640_sg550" },
|
||||
{ _("FN M249 Para"), "gfx/vgui/640_m249" }
|
||||
};
|
||||
|
||||
vguiequipobject_t vguiEquipmentTable[ 7 ] = {
|
||||
{ EQUIPMENT_KEVLAR, "Kevlar", "gfx/vgui/640_kevlar" },
|
||||
{ EQUIPMENT_HELMET, "Kevlar & Helmet", "gfx/vgui/640_kevlar_helmet" },
|
||||
{ EQUIPMENT_FLASHBANG, "Flashband", "gfx/vgui/640_flashbang" },
|
||||
{ EQUIPMENT_HEGRENADE, "HE Grenade", "gfx/vgui/640_hegrenade" },
|
||||
{ EQUIPMENT_SMOKEGRENADE, "Smoke Grenade", "gfx/vgui/640_smokegrenade" },
|
||||
{ EQUIPMENT_DEFUSALKIT, "Defusal Kit", "gfx/vgui/640_defuser" },
|
||||
{ EQUIPMENT_NIGHTVISION, "NightVision", "gfx/vgui/640_nightvision" },
|
||||
{ EQUIPMENT_KEVLAR, _("Kevlar"), "gfx/vgui/640_kevlar" },
|
||||
{ EQUIPMENT_HELMET, _("Kevlar & Helmet"), "gfx/vgui/640_kevlar_helmet" },
|
||||
{ WEAPON_FLASHBANG, _("Flashbang"), "gfx/vgui/640_flashbang" },
|
||||
{ WEAPON_HEGRENADE, _("HE Grenade"), "gfx/vgui/640_hegrenade" },
|
||||
{ WEAPON_SMOKEGRENADE, _("Smoke Grenade"), "gfx/vgui/640_smokegrenade" },
|
||||
{ EQUIPMENT_DEFUSALKIT, _("Defusal Kit"), "gfx/vgui/640_defuser" },
|
||||
{ EQUIPMENT_NIGHTVISION, _("NightVision"), "gfx/vgui/640_nightvision" },
|
||||
};
|
||||
|
||||
// TODO: Clean this up
|
||||
|
@ -89,17 +89,17 @@ void VGUI_BuyMenu_Main( vector vPos ) {
|
|||
fVGUI_Display = VGUI_NONE;
|
||||
}
|
||||
|
||||
VGUI_Button( "Handguns", BuyMenu_Main_1, vPos + '16 116 0', '180 24 0' );
|
||||
VGUI_Button( "Shotguns", BuyMenu_Main_2, vPos + '16 148 0', '180 24 0' );
|
||||
VGUI_Button( "SMGs", BuyMenu_Main_3, vPos + '16 180 0', '180 24 0' );
|
||||
VGUI_Button( "Rifles", BuyMenu_Main_4, vPos + '16 212 0', '180 24 0' );
|
||||
VGUI_Button( "Machine Gun", BuyMenu_Main_5, vPos + '16 244 0', '180 24 0' );
|
||||
VGUI_Button( _("Handguns"), BuyMenu_Main_1, vPos + '16 116 0', '180 24 0' );
|
||||
VGUI_Button( _("Shotguns"), BuyMenu_Main_2, vPos + '16 148 0', '180 24 0' );
|
||||
VGUI_Button( _("SMGs"), BuyMenu_Main_3, vPos + '16 180 0', '180 24 0' );
|
||||
VGUI_Button( _("Rifles"), BuyMenu_Main_4, vPos + '16 212 0', '180 24 0' );
|
||||
VGUI_Button( _("Machine Gun"), BuyMenu_Main_5, vPos + '16 244 0', '180 24 0' );
|
||||
|
||||
VGUI_Button( "Primary Ammo", BuyMenu_Main_6, vPos + '16 308 0', '180 24 0' );
|
||||
VGUI_Button( "Secondary Ammo", BuyMenu_Main_7, vPos + '16 340 0', '180 24 0' );
|
||||
VGUI_Button( "Equipment", BuyMenu_Main_8, vPos + '16 372 0', '180 24 0' );
|
||||
VGUI_Button( _("Primary Ammo"), BuyMenu_Main_6, vPos + '16 308 0', '180 24 0' );
|
||||
VGUI_Button( _("Secondary Ammo"), BuyMenu_Main_7, vPos + '16 340 0', '180 24 0' );
|
||||
VGUI_Button( _("Equipment"), BuyMenu_Main_8, vPos + '16 372 0', '180 24 0' );
|
||||
|
||||
VGUI_Button( "Exit", BuyMenu_Main_9, vPos + '16 440 0', '180 24 0' );
|
||||
VGUI_Button( _("Exit"), BuyMenu_Main_9, vPos + '16 440 0', '180 24 0' );
|
||||
}
|
||||
|
||||
void VGUI_BuyMenu_Back( void ) {
|
||||
|
@ -144,9 +144,9 @@ void VGUI_BuyMenu_WeaponButton( float fWeapon ) {
|
|||
if ( wptTable[ fWeapon ].iPrice <= getstatf( STAT_MONEY ) ) {
|
||||
if ( VGUI_Button( vguiWeaponTable[ fWeapon ].sName, VGUI_BuyMenu_BuyWeapon, vVGUIButtonPos, '264 24 0' ) == TRUE ) {
|
||||
drawpic( vVGUIWindowPos + '328 116', vguiWeaponTable[ fWeapon ].sImage, '256 64', '1 1 1', 1 );
|
||||
VGUI_Text( sprintf( "Price: %i", wptTable[ fWeapon ].iPrice ), vVGUIWindowPos + '328 250', '8 8 0' );
|
||||
VGUI_Text( sprintf( "Caliber: %i", wptTable[ fWeapon ].iCaliber ), vVGUIWindowPos + '328 260', '8 8 0' );
|
||||
VGUI_Text( sprintf( "Rounds Per Minute: %d", ( wptTable[ fWeapon ].fAttackFinished) * 3600 ), vVGUIWindowPos + '328 270', '8 8 0' );
|
||||
VGUI_Text( sprintf( _("Price: %i"), wptTable[ fWeapon ].iPrice ), vVGUIWindowPos + '328 250', '8 8 0' );
|
||||
VGUI_Text( sprintf( _("Caliber: %i"), wptTable[ fWeapon ].iCaliber ), vVGUIWindowPos + '328 260', '8 8 0' );
|
||||
VGUI_Text( sprintf( _("Rounds Per Minute: %d"), ( wptTable[ fWeapon ].fAttackFinished) * 3600 ), vVGUIWindowPos + '328 270', '8 8 0' );
|
||||
}
|
||||
} else {
|
||||
VGUI_FakeButton( vguiWeaponTable[ fWeapon ].sName, vVGUIButtonPos, '264 24 0' );
|
||||
|
@ -168,7 +168,7 @@ void VGUI_BuyMenu_EquipmentButton( float fID ) {
|
|||
if ( eqptTable[ fID ].iPrice <= getstatf( STAT_MONEY ) ) {
|
||||
if ( VGUI_Button( vguiEquipmentTable[ fID ].sName, VGUI_BuyMenu_BuyEquipment, vVGUIButtonPos, '180 24 0' ) == TRUE ) {
|
||||
drawpic( vVGUIWindowPos + '290 116', vguiEquipmentTable[ fID ].sImage, '256 64', '1 1 1', 1 );
|
||||
VGUI_Text( sprintf( "Price: %i", eqptTable[ fID ].iPrice ) , vVGUIWindowPos + '256 250', '8 8 0' );
|
||||
VGUI_Text( sprintf( _("Price: %i"), eqptTable[ fID ].iPrice ) , vVGUIWindowPos + '256 250', '8 8 0' );
|
||||
}
|
||||
} else {
|
||||
VGUI_FakeButton( vguiEquipmentTable[ fID ].sName, vVGUIButtonPos, '180 24 0' );
|
||||
|
@ -198,7 +198,7 @@ void VGUI_BuyMenu_Handguns( vector vPos ) {
|
|||
VGUI_BuyMenu_WeaponButton( WEAPON_FIVESEVEN );
|
||||
}
|
||||
|
||||
VGUI_Button( "Back", VGUI_BuyMenu_Back, vPos + '16 440 0', '180 24 0' );
|
||||
VGUI_Button( _("Back"), VGUI_BuyMenu_Back, vPos + '16 440 0', '180 24 0' );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -212,7 +212,7 @@ void VGUI_BuyMenu_Shotguns( vector vPos ) {
|
|||
VGUI_BuyMenu_WeaponButton( WEAPON_M3 );
|
||||
VGUI_BuyMenu_WeaponButton( WEAPON_XM1014 );
|
||||
|
||||
VGUI_Button( "Back", VGUI_BuyMenu_Back, vPos + '16 440 0', '180 24 0' );
|
||||
VGUI_Button( _("Back"), VGUI_BuyMenu_Back, vPos + '16 440 0', '180 24 0' );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -236,7 +236,7 @@ void VGUI_BuyMenu_SMGs( vector vPos ) {
|
|||
VGUI_BuyMenu_WeaponButton( WEAPON_TMP );
|
||||
}
|
||||
|
||||
VGUI_Button( "Back", VGUI_BuyMenu_Back, vPos + '16 440 0', '180 24 0' );
|
||||
VGUI_Button( _("Back"), VGUI_BuyMenu_Back, vPos + '16 440 0', '180 24 0' );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -267,7 +267,7 @@ void VGUI_BuyMenu_Rifles( vector vPos ) {
|
|||
VGUI_BuyMenu_WeaponButton( WEAPON_SG550 );
|
||||
}
|
||||
|
||||
VGUI_Button( "Back", VGUI_BuyMenu_Back, vPos + '16 440 0', '180 24 0' );
|
||||
VGUI_Button( _("Back"), VGUI_BuyMenu_Back, vPos + '16 440 0', '180 24 0' );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -280,7 +280,7 @@ void VGUI_BuyMenu_Machineguns( vector vPos ) {
|
|||
|
||||
VGUI_BuyMenu_WeaponButton( WEAPON_PARA );
|
||||
|
||||
VGUI_Button( "Back", VGUI_BuyMenu_Back, vPos + '16 440 0', '180 24 0' );
|
||||
VGUI_Button( _("Back"), VGUI_BuyMenu_Back, vPos + '16 440 0', '180 24 0' );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -303,5 +303,5 @@ void VGUI_BuyMenu_Equipment( vector vPos ) {
|
|||
|
||||
VGUI_BuyMenu_EquipmentButton( 6 );
|
||||
|
||||
VGUI_Button( "Back", VGUI_BuyMenu_Back, vPos + '16 440 0', '180 24 0' );
|
||||
VGUI_Button( _("Back"), VGUI_BuyMenu_Back, vPos + '16 440 0', '180 24 0' );
|
||||
}
|
||||
|
|
|
@ -35,5 +35,5 @@ void VGUI_MessageOfTheDay( vector vPos ) {
|
|||
vTextPos_y += 10;
|
||||
}
|
||||
|
||||
VGUI_Button( "OK", MessageOfTheDay_ButtonOK, vPos + '16 440 0', '80 24 0' );
|
||||
VGUI_Button( _("OK"), MessageOfTheDay_ButtonOK, vPos + '16 440 0', '80 24 0' );
|
||||
}
|
||||
|
|
|
@ -73,7 +73,7 @@ void VGUI_Radio_Draw( void ) {
|
|||
vSize_y = ( 10 * VGUIRADIO_COMMANDS ) + 64;
|
||||
vPos = [ 16, vVideoResolution_y - 148 - vSize_y ];
|
||||
|
||||
VGUI_WindowSmall( "Radio Commands", vPos, vSize );
|
||||
VGUI_WindowSmall( _("Radio Commands"), vPos, vSize );
|
||||
|
||||
vPos_y += 24;
|
||||
vPos_x += 8;
|
||||
|
@ -86,7 +86,7 @@ void VGUI_Radio_Draw( void ) {
|
|||
vSize_y = ( 10 * VGUIRADIO_GROUPCOMMANDS ) + 64;
|
||||
vPos = [ 16, vVideoResolution_y - 148 - vSize_y ];
|
||||
|
||||
VGUI_WindowSmall( "Group Radio Commands", vPos, vSize );
|
||||
VGUI_WindowSmall( _("Group Radio Commands"), vPos, vSize );
|
||||
|
||||
vPos_y += 24;
|
||||
vPos_x += 8;
|
||||
|
@ -99,7 +99,7 @@ void VGUI_Radio_Draw( void ) {
|
|||
vSize_y = ( 10 * VGUIRADIO_RESPONSES ) + 64;
|
||||
vPos = [ 16, vVideoResolution_y - 148 - vSize_y ];
|
||||
|
||||
VGUI_WindowSmall( "Radio Responses", vPos, vSize );
|
||||
VGUI_WindowSmall( _("Radio Responses"), vPos, vSize );
|
||||
|
||||
vPos_y += 24;
|
||||
vPos_x += 8;
|
||||
|
@ -110,7 +110,7 @@ void VGUI_Radio_Draw( void ) {
|
|||
}
|
||||
|
||||
vPos_y += 20;
|
||||
VGUI_Text( "0) Back", vPos, '8 8 0' );
|
||||
VGUI_Text( sprintf( "0) %s", _("Back") ), vPos, '8 8 0' );
|
||||
|
||||
if ( fInputKeyCode == 48 ) {
|
||||
fVGUI_Display = VGUI_NONE;
|
||||
|
|
|
@ -21,10 +21,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include "VGUI.h"
|
||||
|
||||
string sScoreTeams[4] = {
|
||||
"Spectator",
|
||||
"Terrorists",
|
||||
"CT Forces",
|
||||
"VIP",
|
||||
_("Spectator"),
|
||||
_("Terrorists"),
|
||||
_("CT Forces"),
|
||||
_("VIP"),
|
||||
};
|
||||
|
||||
// This is seperated from the other VGUI stuff so we can check scores while buying and whatnot
|
||||
|
@ -52,9 +52,9 @@ vector VGUI_Scores_DrawTeam( vector vPos, float fTeam ) {
|
|||
}
|
||||
|
||||
if ( getplayerkeyvalue( i, "*dead" ) == "1" ) {
|
||||
drawstring( vNewPos + '38 0', sprintf( "%s [DEAD]", getplayerkeyvalue( i, "name" ) ), '8 8 0', vColor, 1, 0 );
|
||||
drawstring( vNewPos + '38 0', sprintf( _("%s [DEAD]"), getplayerkeyvalue( i, "name" ) ), '8 8 0', vColor, 1, 0 );
|
||||
} else if ( getplayerkeyvalue( i, "*dead" ) == "2" ) {
|
||||
drawstring( vNewPos + '38 0', sprintf( "%s [VIP]", getplayerkeyvalue( i, "name" ) ), '8 8 0', vColor, 1, 0 );
|
||||
drawstring( vNewPos + '38 0', sprintf( _("%s [VIP]"), getplayerkeyvalue( i, "name" ) ), '8 8 0', vColor, 1, 0 );
|
||||
} else {
|
||||
drawstring( vNewPos + '38 0', getplayerkeyvalue( i, "name" ), '8 8 0', vColor, 1, 0 );
|
||||
}
|
||||
|
@ -98,7 +98,7 @@ vector VGUI_Scores_DrawTeam( vector vPos, float fTeam ) {
|
|||
// Now we know the playercount, so let's calculate the position next to the Teamname String and print it
|
||||
vector vCountPos = vPos + '24 6';
|
||||
vCountPos_x += stringwidth( sScoreTeams[ fTeam ], FALSE, '16 16 0' ) + 8;
|
||||
drawstring( vCountPos, sprintf( "(%i players)", iPlayerCount ), '8 8 0', vColor, 1, 0 );
|
||||
drawstring( vCountPos, sprintf( _("(%i players)"), iPlayerCount ), '8 8 0', vColor, 1, 0 );
|
||||
}
|
||||
return vNewPos + '0 24';
|
||||
}
|
||||
|
@ -135,7 +135,7 @@ void VGUI_Scores_Show( void ) {
|
|||
drawstring( vMainPos + '24 13', serverkey( "hostname" ), '16 16 0', VGUI_WINDOW_FGCOLOR, 1, 0 );
|
||||
|
||||
// Tabs like Score, Ping etc.
|
||||
drawstring( vMainPos + '280 32', "SCORE DEATHS LATENCY VOICE", '8 8 0', VGUI_WINDOW_FGCOLOR, 1, 0 );
|
||||
drawstring( vMainPos + '280 32', _("SCORE DEATHS LATENCY VOICE"), '8 8 0', VGUI_WINDOW_FGCOLOR, 1, 0 );
|
||||
|
||||
vector vOffset = VGUI_Scores_DrawTeam( vMainPos + '0 50', TEAM_CT );
|
||||
vOffset = VGUI_Scores_DrawTeam( vOffset, TEAM_T );
|
||||
|
|
|
@ -21,69 +21,69 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include "VGUI.h"
|
||||
|
||||
string sClassInfo[64] = {
|
||||
"Phoenix Connexion", "gfx/vgui/640_terror",
|
||||
"The Phoenix Faction was formed shortly",
|
||||
"after the breakup of the USSR. Having",
|
||||
"established a reputation for killing ",
|
||||
"anyone that gets in their way, the",
|
||||
"the Phoenix Faction is one of the most",
|
||||
"feared terrorist groups in Eastern Europe.",
|
||||
_("Phoenix Connexion"), "gfx/vgui/640_terror",
|
||||
_("The Phoenix Faction was formed shortly"),
|
||||
_("after the breakup of the USSR. Having"),
|
||||
_("established a reputation for killing "),
|
||||
_("anyone that gets in their way, the"),
|
||||
_("the Phoenix Faction is one of the most"),
|
||||
_("feared terrorist groups in Eastern Europe."),
|
||||
|
||||
"L337 Krew", "gfx/vgui/640_leet",
|
||||
"Middle Eastern fundamentalist group bent",
|
||||
"on world domination and various other",
|
||||
"evil deeds",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
_("L337 Krew"), "gfx/vgui/640_leet",
|
||||
_("Middle Eastern fundamentalist group bent"),
|
||||
_("on world domination and various other"),
|
||||
_("evil deeds"),
|
||||
_(""),
|
||||
_(""),
|
||||
_(""),
|
||||
|
||||
"Arctic Avengers", "gfx/vgui/640_arctic",
|
||||
"Swedish terrorist faction founded in 1977.",
|
||||
"Famous for their bombing of the Canadian",
|
||||
"embassy in 1990.",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
_("Arctic Avengers"), "gfx/vgui/640_arctic",
|
||||
_("Swedish terrorist faction founded in 1977."),
|
||||
_("Famous for their bombing of the Canadian"),
|
||||
_("embassy in 1990."),
|
||||
_(""),
|
||||
_(""),
|
||||
_(""),
|
||||
|
||||
"Guerilla Warfare", "gfx/vgui/640_guerilla",
|
||||
"A terrorist faction founded in the",
|
||||
"Middle East, Guerilla Warfare, has a",
|
||||
"reputation for ruthlessness. Their disgust",
|
||||
"for the American lifestyle was demonstrated",
|
||||
"in their 1982 bombing of a school bus full",
|
||||
"of Rock and Roll musicians.",
|
||||
_("Guerilla Warfare"), "gfx/vgui/640_guerilla",
|
||||
_("A terrorist faction founded in the"),
|
||||
_("Middle East, Guerilla Warfare, has a"),
|
||||
_("reputation for ruthlessness. Their disgust"),
|
||||
_("for the American lifestyle was demonstrated"),
|
||||
_("in their 1982 bombing of a school bus full"),
|
||||
_("of Rock and Roll musicians."),
|
||||
|
||||
"Seal Team 6", "gfx/vgui/640_urban",
|
||||
"Seal Team 6 (to be known later as DEVGRU)",
|
||||
"was founded in 1980 under the command of",
|
||||
"Lieutenant-Commander Richard Marcincko.",
|
||||
"ST-6 was placed on permanent alert to",
|
||||
"respond to terrorist attacks against ",
|
||||
"American targets worldwide.",
|
||||
_("Seal Team 6"), "gfx/vgui/640_urban",
|
||||
_("Seal Team 6 (to be known later as DEVGRU)"),
|
||||
_("was founded in 1980 under the command of"),
|
||||
_("Lieutenant-Commander Richard Marcincko."),
|
||||
_("ST-6 was placed on permanent alert to"),
|
||||
_("respond to terrorist attacks against"),
|
||||
_("American targets worldwide."),
|
||||
|
||||
"German GSG9", "gfx/vgui/640_gsg9",
|
||||
"GSG-9 was born out of the tragic events",
|
||||
"that led to the death of several",
|
||||
"Israeli athletes during the 1972 Olympic",
|
||||
"games in Munich, Germany.",
|
||||
"",
|
||||
"",
|
||||
_("German GSG9"), "gfx/vgui/640_gsg9",
|
||||
_("GSG-9 was born out of the tragic events"),
|
||||
_("that led to the death of several"),
|
||||
_("Israeli athletes during the 1972 Olympic"),
|
||||
_("games in Munich, Germany."),
|
||||
_(""),
|
||||
_(""),
|
||||
|
||||
"UK SAS", "gfx/vgui/640_sas",
|
||||
"The world-renowned British SAS was founded",
|
||||
"in the Second World War by a man named",
|
||||
"David Stirling. Their role during WW2",
|
||||
"involved gathering intelligence behind enemy",
|
||||
"lines and executing sabotage strikes and",
|
||||
"assassinations against key targets.",
|
||||
_("UK SAS"), "gfx/vgui/640_sas",
|
||||
_("The world-renowned British SAS was founded"),
|
||||
_("in the Second World War by a man named"),
|
||||
_("David Stirling. Their role during WW2"),
|
||||
_("involved gathering intelligence behind enemy"),
|
||||
_("lines and executing sabotage strikes and"),
|
||||
_("assassinations against key targets."),
|
||||
|
||||
"French GIGN", "gfx/vgui/640_gign",
|
||||
"France's elite Counter-Terrorist unit was",
|
||||
"designed to be a fast response force",
|
||||
"that could decisively react to any large-",
|
||||
"scale terrorist incident. Consisting of no",
|
||||
"more than 100 men, the GIGN has earned its",
|
||||
"reputation through a history of successful ops."
|
||||
_("French GIGN"), "gfx/vgui/640_gign",
|
||||
_("France's elite Counter-Terrorist unit was"),
|
||||
_("designed to be a fast response force"),
|
||||
_("that could decisively react to any large-"),
|
||||
_("scale terrorist incident. Consisting of no"),
|
||||
_("more than 100 men, the GIGN has earned its"),
|
||||
_("reputation through a history of successful ops.")
|
||||
};
|
||||
|
||||
void VGUI_TeamSelect_Main( vector vPos ) {
|
||||
|
@ -127,13 +127,13 @@ void VGUI_TeamSelect_Main( vector vPos ) {
|
|||
vTextPos_y += 10;
|
||||
}
|
||||
|
||||
VGUI_Button( "Terrorists", TeamSelect_Main_ButtonT, vPos + '16 116 0', '180 24 0' );
|
||||
VGUI_Button( "Counter-Terrorists", TeamSelect_Main_ButtonCT, vPos + '16 148 0', '180 24 0' );
|
||||
VGUI_Button( _("Terrorists"), TeamSelect_Main_ButtonT, vPos + '16 116 0', '180 24 0' );
|
||||
VGUI_Button( _("Counter-Terrorists"), TeamSelect_Main_ButtonCT, vPos + '16 148 0', '180 24 0' );
|
||||
|
||||
VGUI_Button( "Auto-Assign", TeamSelect_Main_ButtonAuto, vPos + '16 336 0', '180 24 0' );
|
||||
VGUI_Button( "Spectate", TeamSelect_Main_ButtonSpectate, vPos + '16 368 0', '180 24 0' );
|
||||
VGUI_Button( _("Auto-Assign"), TeamSelect_Main_ButtonAuto, vPos + '16 336 0', '180 24 0' );
|
||||
VGUI_Button( _("Spectate"), TeamSelect_Main_ButtonSpectate, vPos + '16 368 0', '180 24 0' );
|
||||
|
||||
VGUI_Button( "Exit", TeamSelect_Main_Exit, vPos + '16 440 0', '120 24 0' );
|
||||
VGUI_Button( _("Exit"), TeamSelect_Main_Exit, vPos + '16 440 0', '120 24 0' );
|
||||
}
|
||||
|
||||
void VGUI_TeamSelect_Back( void ) {
|
||||
|
@ -175,7 +175,7 @@ void VGUI_TeamSelect_T( vector vPos ) {
|
|||
VGUI_TeamSelect_Button( 1, TeamSelect_T2, vPos + '16 192 0', '180 24 0' );
|
||||
VGUI_TeamSelect_Button( 2, TeamSelect_T3, vPos + '16 224 0', '180 24 0' );
|
||||
VGUI_TeamSelect_Button( 3, TeamSelect_T4, vPos + '16 256 0', '180 24 0' );
|
||||
VGUI_Button( "Back", VGUI_TeamSelect_Back, vPos + '16 440 0', '120 24 0' );
|
||||
VGUI_Button( _("Back"), VGUI_TeamSelect_Back, vPos + '16 440 0', '120 24 0' );
|
||||
}
|
||||
|
||||
void VGUI_TeamSelect_CT ( vector vPos ) {
|
||||
|
@ -200,5 +200,5 @@ void VGUI_TeamSelect_CT ( vector vPos ) {
|
|||
VGUI_TeamSelect_Button( 5, TeamSelect_CT2, vPos + '16 192 0', '180 24 0' );
|
||||
VGUI_TeamSelect_Button( 6, TeamSelect_CT3, vPos + '16 224 0', '180 24 0' );
|
||||
VGUI_TeamSelect_Button( 7, TeamSelect_CT4, vPos + '16 256 0', '180 24 0' );
|
||||
VGUI_Button( "Back", VGUI_TeamSelect_Back, vPos + '16 440 0', '120 24 0' );
|
||||
VGUI_Button( _("Back"), VGUI_TeamSelect_Back, vPos + '16 440 0', '120 24 0' );
|
||||
}
|
||||
|
|
118
Source/FreeCS-CE.prj
Executable file
|
@ -0,0 +1,118 @@
|
|||
<project version="Crimson Editor 3.60">
|
||||
<category name="Client" expanded="no">
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\Defs.h" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\Draw.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\Entities.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\Event.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\HUD.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\HUDCrosshair.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\HUDOrbituaries.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\HUDWeaponSelect.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\Init.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\Nightvision.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\Player.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\progs.src" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\Sound.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\VGUI.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\VGUI.h" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\VGUIBuyMenu.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\VGUIMOTD.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\VGUIObjects.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\VGUIRadio.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\VGUIScoreboard.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\VGUISpectator.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\VGUITeamSelect.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\View.c" />
|
||||
</category>
|
||||
<category name="Server" expanded="no">
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\AmbientSound.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Ammo.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\ArmouryEntity.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Client.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Damage.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Defs.h" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\EntHostage.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Entities.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\EnvObjects.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Footsteps.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\FuncBombTarget.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\FuncBreakable.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\FuncButton.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\FuncBuyZone.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\FuncDoor.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\FuncDoorRotating.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\FuncEscapeZone.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\FuncHostageRescue.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\FuncLadder.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\FuncPushable.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\FuncVIPSafetyZone.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Input.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Light.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Main.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Money.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\PhysicsMove.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Player.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\progs.src" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Rules.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Spawn.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Timer.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\TraceAttack.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Triggers.c" />
|
||||
</category>
|
||||
<category name="Menu" expanded="yes">
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\Defs.h" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\Draw.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\Init.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\Input.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\Menu_Create.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\Menu_Options.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\Menu_Quit.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\Menu_Replays.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\Menu_Servers.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\Objects.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\progs.src" />
|
||||
</category>
|
||||
<category name="Shared" expanded="no">
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\Animations.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\BaseMelee.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\Effects.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\Equipment.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\Radio.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponAK47.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponAUG.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponAWP.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponBase.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponC4Bomb.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponDeagle.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponElites.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponFiveSeven.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponFlashbang.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponG3SG1.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponGlock18.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponHEGrenade.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponKnife.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponM3.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponM4A1.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponMac10.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponMP5.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponP228.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponP90.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponPara.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\Weapons.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponScout.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponSG550.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponSG552.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponSmokeGrenade.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponTMP.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponUMP45.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponUSP45.c" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponXM1014.c" />
|
||||
</category>
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Builtins.h" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Globals.h" />
|
||||
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Math.h" />
|
||||
</project>
|
||||
|
||||
<workspace version="Crimson Editor 3.60">
|
||||
</workspace>
|
||||
|
|
@ -27,7 +27,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#define PLAYER_SENDFLAG_UPDATE 1
|
||||
#define PLAYER_SENDFLAG_INGAME 2
|
||||
|
||||
string sCSPlayers[9] = {
|
||||
string sCSPlayers[ 9 ] = {
|
||||
"",
|
||||
"models/player/terror/terror.mdl",
|
||||
"models/player/leet/leet.mdl",
|
||||
|
@ -58,6 +58,9 @@ enum {
|
|||
STAT_SLOT_SECONDARY,
|
||||
STAT_SLOT_GRENADE,
|
||||
STAT_EQUIPMENT,
|
||||
STAT_ITEM_FLASHBANG,
|
||||
STAT_ITEM_HEGRENADE,
|
||||
STAT_ITEM_SMOKEGRENADE,
|
||||
STAT_CURRENT_MAG,
|
||||
STAT_CURRENT_CALIBER,
|
||||
STAT_PROGRESS,
|
||||
|
@ -114,17 +117,11 @@ enum {
|
|||
WEAPON_SMOKEGRENADE
|
||||
};
|
||||
|
||||
#define CS_EQUIPMENT_COUNT 7
|
||||
#define CS_EQUIPMENT_COUNT 7
|
||||
#define EQUIPMENT_KEVLAR 1
|
||||
#define EQUIPMENT_HELMET 2
|
||||
|
||||
#define EQUIPMENT_DEFUSALKIT 32
|
||||
#define EQUIPMENT_NIGHTVISION 64
|
||||
|
||||
//#define WEAPON_C4BOMB 32
|
||||
#define EQUIPMENT_FLASHBANG 64
|
||||
#define EQUIPMENT_HEGRENADE 128
|
||||
#define EQUIPMENT_SMOKEGRENADE 256
|
||||
#define EQUIPMENT_DEFUSALKIT 4
|
||||
#define EQUIPMENT_NIGHTVISION 8
|
||||
|
||||
enum {
|
||||
CALIBER_50AE = 1,
|
||||
|
|
|
@ -44,8 +44,14 @@ Not Toggled (32) - Older FGDs show this as Not Looped.
|
|||
.float pitch;
|
||||
void ambient_generic( void ) {
|
||||
static float ambient_generic_send( entity ePEnt, float fChanged ) {
|
||||
sound( self, CHAN_VOICE, self.message, self.health, self.style, self.pitch, 0, SOUNDFLAG_FORCELOOP );
|
||||
return FALSE;
|
||||
WriteByte( MSG_ENTITY, ENT_AMBIENTSOUND );
|
||||
WriteCoord( MSG_ENTITY, self.origin_x );
|
||||
WriteCoord( MSG_ENTITY, self.origin_y );
|
||||
WriteCoord( MSG_ENTITY, self.origin_z );
|
||||
WriteString( MSG_ENTITY, self.message );
|
||||
WriteFloat( MSG_ENTITY, self.health );
|
||||
WriteByte( MSG_ENTITY, self.style );
|
||||
return TRUE;
|
||||
}
|
||||
static void ambient_generic_use( void ) {
|
||||
sound( self, CHAN_VOICE, self.message, self.health, self.style, self.pitch );
|
||||
|
@ -88,7 +94,7 @@ void ambient_generic( void ) {
|
|||
self.vUse = ambient_generic_use;
|
||||
} else {
|
||||
self.noise = self.message; // Needed later for resuming
|
||||
self.pvsflags = PVSF_USEPHS;
|
||||
self.pvsflags = PVSF_NOREMOVE | PVSF_IGNOREPVS;
|
||||
self.vUse = ambient_generic_useloop;
|
||||
self.SendEntity = ambient_generic_send;
|
||||
self.state = TRUE;
|
||||
|
|
|
@ -33,11 +33,11 @@ int iArmouryItems[ 19 ] = {
|
|||
WEAPON_M3,
|
||||
WEAPON_XM1014,
|
||||
WEAPON_PARA,
|
||||
EQUIPMENT_FLASHBANG,
|
||||
EQUIPMENT_HEGRENADE,
|
||||
WEAPON_FLASHBANG,
|
||||
WEAPON_HEGRENADE,
|
||||
EQUIPMENT_KEVLAR,
|
||||
EQUIPMENT_HELMET,
|
||||
EQUIPMENT_SMOKEGRENADE,
|
||||
WEAPON_SMOKEGRENADE,
|
||||
};
|
||||
|
||||
string sArmouryModels[ 19 ] = {
|
||||
|
|
|
@ -43,6 +43,13 @@ enum {
|
|||
BODY_LEGRIGHT
|
||||
};
|
||||
|
||||
// Grenade states
|
||||
enum {
|
||||
GRENADE_UNREADY,
|
||||
GRENADE_PULLING,
|
||||
GRENADE_READY
|
||||
};
|
||||
|
||||
// Player specific fields
|
||||
.float fInBuyZone;
|
||||
.float fInHostageZone;
|
||||
|
|
|
@ -91,6 +91,10 @@ void worldspawn( void ) {
|
|||
precache_model( sWeaponModels[ i ] );
|
||||
}
|
||||
|
||||
precache_model( "models/w_flashbang.mdl" );
|
||||
precache_model( "models/w_hegrenade.mdl" );
|
||||
precache_model( "models/w_smokegrenade.mdl" );
|
||||
|
||||
precache_model( sCSPlayers[1] );
|
||||
precache_model( sCSPlayers[2] );
|
||||
precache_model( sCSPlayers[3] );
|
||||
|
@ -369,6 +373,9 @@ void worldspawn( void ) {
|
|||
clientstat( STAT_SLOT_PRIMARY, EV_FLOAT, fSlotPrimary );
|
||||
clientstat( STAT_SLOT_SECONDARY, EV_FLOAT, fSlotSecondary );
|
||||
clientstat( STAT_SLOT_GRENADE, EV_FLOAT, fSlotGrenade );
|
||||
clientstat( STAT_ITEM_FLASHBANG, EV_INTEGER, iAmmo_FLASHBANG );
|
||||
clientstat( STAT_ITEM_HEGRENADE, EV_INTEGER, iAmmo_HEGRENADE );
|
||||
clientstat( STAT_ITEM_SMOKEGRENADE, EV_INTEGER, iAmmo_SMOKEGRENADE );
|
||||
clientstat( STAT_EQUIPMENT, EV_INTEGER, iEquipment );
|
||||
clientstat( STAT_CURRENT_MAG, EV_INTEGER, iCurrentMag );
|
||||
clientstat( STAT_CURRENT_CALIBER, EV_INTEGER, iCurrentCaliber );
|
||||
|
|
|
@ -21,9 +21,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
equipmentinfo_t eqptTable [ CS_EQUIPMENT_COUNT ] = {
|
||||
{ EQUIPMENT_KEVLAR, 650 },
|
||||
{ EQUIPMENT_HELMET, 1000 },
|
||||
{ EQUIPMENT_FLASHBANG, 300 },
|
||||
{ EQUIPMENT_HEGRENADE, 300 },
|
||||
{ EQUIPMENT_SMOKEGRENADE, 300 },
|
||||
{ WEAPON_FLASHBANG, 300 },
|
||||
{ WEAPON_HEGRENADE, 300 },
|
||||
{ WEAPON_SMOKEGRENADE, 300 },
|
||||
{ EQUIPMENT_DEFUSALKIT, 200 },
|
||||
{ EQUIPMENT_NIGHTVISION, 1250 },
|
||||
};
|
||||
|
@ -35,7 +35,25 @@ void CSEv_PlayerBuyEquipment_f( float fID ) {
|
|||
}
|
||||
|
||||
if ( ( self.fMoney - eqptTable[ fID ].iPrice ) >= 0 ) {
|
||||
if ( eqptTable[ fID ].iID == EQUIPMENT_KEVLAR ) {
|
||||
if ( eqptTable[ fID ].iID == WEAPON_HEGRENADE ) {
|
||||
if ( self.iAmmo_HEGRENADE < 2 ) {
|
||||
self.iAmmo_HEGRENADE++;
|
||||
} else {
|
||||
centerprint( self, "You can't carry any more!" );
|
||||
}
|
||||
} else if ( eqptTable[ fID ].iID == WEAPON_FLASHBANG ) {
|
||||
if ( self.iAmmo_FLASHBANG < 2 ) {
|
||||
self.iAmmo_FLASHBANG++;
|
||||
} else {
|
||||
centerprint( self, "You can't carry any more!" );
|
||||
}
|
||||
} else if ( eqptTable[ fID ].iID == WEAPON_SMOKEGRENADE ) {
|
||||
if ( self.iAmmo_SMOKEGRENADE < 2 ) {
|
||||
self.iAmmo_SMOKEGRENADE++;
|
||||
} else {
|
||||
centerprint( self, "You can't carry any more!" );
|
||||
}
|
||||
} else if ( eqptTable[ fID ].iID == EQUIPMENT_KEVLAR ) {
|
||||
if ( self.armor == 100 ) {
|
||||
// You already own kevlar etc.
|
||||
centerprint( self, "You already have kevlar!" );
|
||||
|
@ -76,7 +94,7 @@ void CSEv_PlayerBuyEquipment_f( float fID ) {
|
|||
|
||||
self.fAttackFinished = time + 1.0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Money_AddMoney( self, -eqptTable[ fID ].iPrice );
|
||||
self.iEquipment = self.iEquipment | ( eqptTable[ fID ].iID );
|
||||
|
|
|
@ -18,33 +18,38 @@ along with this program; if not, write to the Free Software
|
|||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
.int iMag_GLOCK18;
|
||||
.int iAmmo_FLASHBANG;
|
||||
|
||||
// This is to keep track of us holding down the nade
|
||||
#ifdef SSQC
|
||||
.int iMode_FLASHBANG;
|
||||
#endif
|
||||
|
||||
// Weapon Info
|
||||
weaponinfo_t wptFLASHBANG = {
|
||||
WEAPON_FLASHBANG, // Identifier
|
||||
SLOT_GRENADE, // Slot
|
||||
0, // Price
|
||||
0, // Caliber ID
|
||||
1.0, // Max Player Speed
|
||||
1, // Bullets Per Shot
|
||||
1, // Clip/MagSize
|
||||
50, // Damage Per Bullet
|
||||
1, // Penetration Multiplier
|
||||
64, // Bullet Range
|
||||
0.75, // Range Modifier
|
||||
TYPE_SEMI, // Firing Type
|
||||
1.0, // Attack-Delay
|
||||
1.0, // Reload-Delay
|
||||
iAmmo_9MM, // Caliber Pointer
|
||||
iMag_GLOCK18, // Clip Pointer
|
||||
1, // Accuracy Divisor
|
||||
1.0, // Accuracy Offset
|
||||
1.0, // Max Inaccuracy
|
||||
7, // Minimum Crosshair Distance
|
||||
3, // Crosshair Movement Delta
|
||||
1.0, // Armor penetration ratio
|
||||
ATYPE_GRENADE // Animation Type
|
||||
WEAPON_FLASHBANG, // Identifier
|
||||
SLOT_GRENADE, // Slot
|
||||
200, // Price
|
||||
0, // Caliber ID
|
||||
1.0, // Max Player Speed
|
||||
1, // Bullets Per Shot
|
||||
1, // Clip/MagSize
|
||||
50, // Damage Per Bullet
|
||||
1, // Penetration Multiplier
|
||||
64, // Bullet Range
|
||||
0.75, // Range Modifier
|
||||
TYPE_SEMI, // Firing Type
|
||||
1.0, // Attack-Delay
|
||||
1.0, // Reload-Delay
|
||||
iAmmo_9MM, // Caliber Pointer
|
||||
iAmmo_FLASHBANG, // Clip Pointer
|
||||
1, // Accuracy Divisor
|
||||
1.0, // Accuracy Offset
|
||||
1.0, // Max Inaccuracy
|
||||
7, // Minimum Crosshair Distance
|
||||
3, // Crosshair Movement Delta
|
||||
1.0, // Armor penetration ratio
|
||||
ATYPE_GRENADE // Animation Type
|
||||
};
|
||||
|
||||
// Anim Table
|
||||
|
@ -58,6 +63,7 @@ enum {
|
|||
void WeaponFLASHBANG_Draw( void ) {
|
||||
#ifdef SSQC
|
||||
BaseMelee_Draw();
|
||||
self.iMode_FLASHBANG = GRENADE_UNREADY;
|
||||
#else
|
||||
View_PlayAnimation( ANIM_FLASHBANG_DRAW );
|
||||
#endif
|
||||
|
@ -65,10 +71,75 @@ void WeaponFLASHBANG_Draw( void ) {
|
|||
|
||||
void WeaponFLASHBANG_PrimaryFire( void ) {
|
||||
#ifdef SSQC
|
||||
static void WeaponFLASHBANG_Release_Ready( void ) {
|
||||
self.iMode_FLASHBANG = GRENADE_READY;
|
||||
}
|
||||
|
||||
if ( self.iMode_FLASHBANG != GRENADE_UNREADY ) {
|
||||
return;
|
||||
}
|
||||
|
||||
Client_SendEvent( self, EV_WEAPON_PRIMARYATTACK );
|
||||
Animation_ShootWeapon();
|
||||
self.fAttackFinished = time + wptFLASHBANG.fAttackFinished;
|
||||
|
||||
// Mark the nade as ready once the pin has been pulled
|
||||
self.iMode_FLASHBANG = GRENADE_PULLING;
|
||||
self.think = WeaponFLASHBANG_Release_Ready;
|
||||
self.nextthink = self.fAttackFinished;
|
||||
#else
|
||||
View_PlayAnimation( ANIM_FLASHBANG_PULLPIN );
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef SSQC
|
||||
void WeaponFLASHBANG_Throw( void ) {
|
||||
static void WeaponFLASHBANG_Explode( void ) {
|
||||
remove( self );
|
||||
}
|
||||
static void Weapon_FLASHBANG_Touch( void ) {
|
||||
if ( other.classname == "func_breakable" ) {
|
||||
Damage_Apply( other, self, 10, self.origin );
|
||||
}
|
||||
sound( self, CHAN_WEAPON, sprintf( "weapons/grenade_hit%d.wav", floor( random() * 3 ) + 1 ), 1, ATTN_NORM );
|
||||
}
|
||||
|
||||
makevectors( self.v_angle );
|
||||
entity eNade = spawn();
|
||||
setorigin( eNade, ( self.origin + self.view_ofs ) + ( v_forward * 16 ) );
|
||||
setmodel( eNade, "models/w_flashbang.mdl" );
|
||||
setsize( eNade, '-4 -4 -4', '4 4 4' );
|
||||
|
||||
vector vDir = aim ( self, 100000 );
|
||||
eNade.owner = self;
|
||||
eNade.solid = SOLID_TRIGGER;
|
||||
eNade.angles = vectoangles( vDir );
|
||||
eNade.velocity = ( vDir * 800 );
|
||||
eNade.avelocity = ( v_forward * 600 );
|
||||
eNade.movetype = MOVETYPE_BOUNCE;
|
||||
eNade.touch = Weapon_FLASHBANG_Touch;
|
||||
|
||||
eNade.think = WeaponFLASHBANG_Explode;
|
||||
eNade.nextthink = time + 3.0f;
|
||||
|
||||
self.iAmmo_FLASHBANG--;
|
||||
|
||||
if ( !self.iAmmo_FLASHBANG ) {
|
||||
Weapon_SwitchBest();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void WeaponFLASHBANG_Release( void ) {
|
||||
#ifdef SSQC
|
||||
if ( self.iMode_FLASHBANG == GRENADE_READY ) {
|
||||
// Throw immediately
|
||||
WeaponFLASHBANG_Throw();
|
||||
self.iMode_FLASHBANG = GRENADE_UNREADY;
|
||||
} else if ( self.iMode_FLASHBANG == GRENADE_PULLING ) {
|
||||
// Trying to release the grenade before it's done pulling, throw asap
|
||||
self.iMode_FLASHBANG = GRENADE_UNREADY;
|
||||
self.think = WeaponFLASHBANG_Throw;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -18,33 +18,38 @@ along with this program; if not, write to the Free Software
|
|||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
.int iMag_HEGRENADE;
|
||||
.int iAmmo_HEGRENADE;
|
||||
|
||||
// This is to keep track of us holding down the nade
|
||||
#ifdef SSQC
|
||||
.int iMode_HEGRENADE;
|
||||
#endif
|
||||
|
||||
// Weapon Info
|
||||
weaponinfo_t wptHEGRENADE = {
|
||||
WEAPON_HEGRENADE, // Identifier
|
||||
SLOT_GRENADE, // Slot
|
||||
0, // Price
|
||||
0, // Caliber ID
|
||||
1.0, // Max Player Speed
|
||||
1, // Bullets Per Shot
|
||||
1, // Clip/MagSize
|
||||
50, // Damage Per Bullet
|
||||
1, // Penetration Multiplier
|
||||
64, // Bullet Range
|
||||
0.75, // Range Modifier
|
||||
TYPE_SEMI, // Firing Type
|
||||
1.0, // Attack-Delay
|
||||
1.0, // Reload-Delay
|
||||
iAmmo_9MM, // Caliber Pointer
|
||||
iMag_HEGRENADE, // Clip Pointer
|
||||
1, // Accuracy Divisor
|
||||
1.0, // Accuracy Offset
|
||||
1.0, // Max Inaccuracy
|
||||
7, // Minimum Crosshair Distance
|
||||
3, // Crosshair Movement Delta
|
||||
1.0, // Armor penetration ratio
|
||||
ATYPE_GRENADE // Animation Type
|
||||
WEAPON_HEGRENADE, // Identifier
|
||||
SLOT_GRENADE, // Slot
|
||||
200, // Price
|
||||
0, // Caliber ID
|
||||
1.0, // Max Player Speed
|
||||
1, // Bullets Per Shot
|
||||
1, // Clip/MagSize
|
||||
50, // Damage Per Bullet
|
||||
1, // Penetration Multiplier
|
||||
64, // Bullet Range
|
||||
0.75, // Range Modifier
|
||||
TYPE_SEMI, // Firing Type
|
||||
1.0, // Attack-Delay
|
||||
1.0, // Reload-Delay
|
||||
iAmmo_9MM, // Caliber Pointer
|
||||
iAmmo_HEGRENADE, // Clip Pointer
|
||||
1, // Accuracy Divisor
|
||||
1.0, // Accuracy Offset
|
||||
1.0, // Max Inaccuracy
|
||||
7, // Minimum Crosshair Distance
|
||||
3, // Crosshair Movement Delta
|
||||
1.0, // Armor penetration ratio
|
||||
ATYPE_GRENADE // Animation Type
|
||||
};
|
||||
|
||||
// Anim Table
|
||||
|
@ -58,6 +63,7 @@ enum {
|
|||
void WeaponHEGRENADE_Draw( void ) {
|
||||
#ifdef SSQC
|
||||
BaseMelee_Draw();
|
||||
self.iMode_HEGRENADE = GRENADE_UNREADY;
|
||||
#else
|
||||
View_PlayAnimation( ANIM_HEGRENADE_DRAW );
|
||||
#endif
|
||||
|
@ -65,10 +71,75 @@ void WeaponHEGRENADE_Draw( void ) {
|
|||
|
||||
void WeaponHEGRENADE_PrimaryFire( void ) {
|
||||
#ifdef SSQC
|
||||
static void WeaponHEGRENADE_Release_Ready( void ) {
|
||||
self.iMode_HEGRENADE = GRENADE_READY;
|
||||
}
|
||||
|
||||
if ( self.iMode_HEGRENADE != GRENADE_UNREADY ) {
|
||||
return;
|
||||
}
|
||||
|
||||
Client_SendEvent( self, EV_WEAPON_PRIMARYATTACK );
|
||||
Animation_ShootWeapon();
|
||||
self.fAttackFinished = time + wptHEGRENADE.fAttackFinished;
|
||||
|
||||
// Mark the nade as ready once the pin has been pulled
|
||||
self.iMode_HEGRENADE = GRENADE_PULLING;
|
||||
self.think = WeaponHEGRENADE_Release_Ready;
|
||||
self.nextthink = self.fAttackFinished;
|
||||
#else
|
||||
View_PlayAnimation( ANIM_HEGRENADE_PULLPIN );
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef SSQC
|
||||
void WeaponHEGRENADE_Throw( void ) {
|
||||
static void WeaponHEGRENADE_Explode( void ) {
|
||||
remove( self );
|
||||
}
|
||||
static void Weapon_HEGRENADE_Touch( void ) {
|
||||
if ( other.classname == "func_breakable" ) {
|
||||
Damage_Apply( other, self, 10, self.origin );
|
||||
}
|
||||
sound( self, CHAN_WEAPON, sprintf( "weapons/grenade_hit%d.wav", floor( random() * 3 ) + 1 ), 1, ATTN_NORM );
|
||||
}
|
||||
|
||||
makevectors( self.v_angle );
|
||||
entity eNade = spawn();
|
||||
setorigin( eNade, ( self.origin + self.view_ofs ) + ( v_forward * 16 ) );
|
||||
setmodel( eNade, "models/w_hegrenade.mdl" );
|
||||
setsize( eNade, '-4 -4 -4', '4 4 4' );
|
||||
|
||||
vector vDir = aim ( self, 100000 );
|
||||
eNade.owner = self;
|
||||
eNade.solid = SOLID_TRIGGER;
|
||||
eNade.angles = vectoangles( vDir );
|
||||
eNade.velocity = ( vDir * 800 );
|
||||
eNade.avelocity = ( v_forward * 600 );
|
||||
eNade.movetype = MOVETYPE_BOUNCE;
|
||||
eNade.touch = Weapon_HEGRENADE_Touch;
|
||||
|
||||
eNade.think = WeaponHEGRENADE_Explode;
|
||||
eNade.nextthink = time + 3.0f;
|
||||
|
||||
self.iAmmo_HEGRENADE--;
|
||||
|
||||
if ( !self.iAmmo_HEGRENADE ) {
|
||||
Weapon_SwitchBest();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void WeaponHEGRENADE_Release( void ) {
|
||||
#ifdef SSQC
|
||||
if ( self.iMode_HEGRENADE == GRENADE_READY ) {
|
||||
// Throw immediately
|
||||
WeaponHEGRENADE_Throw();
|
||||
self.iMode_HEGRENADE = GRENADE_UNREADY;
|
||||
} else if ( self.iMode_HEGRENADE == GRENADE_PULLING ) {
|
||||
// Trying to release the grenade before it's done pulling, throw asap
|
||||
self.iMode_HEGRENADE = GRENADE_UNREADY;
|
||||
self.think = WeaponHEGRENADE_Throw;
|
||||
}
|
||||
#endif
|
||||
}
|
|
@ -97,6 +97,9 @@ void WeaponM3_PrimaryFire( void ) {
|
|||
#endif
|
||||
}
|
||||
|
||||
// The gun has no real secondary mode, but part of the reloading uses this function
|
||||
// mainly for client-side cosmetics. The server doesn't have a function telling
|
||||
// the client to switch animations (we save 1 byte in networking by reusing this)
|
||||
void WeaponM3_Reload( void);
|
||||
void WeaponM3_Secondary( void ) {
|
||||
#ifdef SSQC
|
||||
|
|
|
@ -18,33 +18,38 @@ along with this program; if not, write to the Free Software
|
|||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
.int iMag_SMOKEGRENADE;
|
||||
.int iAmmo_SMOKEGRENADE;
|
||||
|
||||
// This is to keep track of us holding down the nade
|
||||
#ifdef SSQC
|
||||
.int iMode_SMOKEGRENADE;
|
||||
#endif
|
||||
|
||||
// Weapon Info
|
||||
weaponinfo_t wptSMOKEGRENADE = {
|
||||
WEAPON_SMOKEGRENADE, // Identifier
|
||||
SLOT_GRENADE, // Slot
|
||||
0, // Price
|
||||
0, // Caliber ID
|
||||
1.0, // Max Player Speed
|
||||
1, // Bullets Per Shot
|
||||
1, // Clip/MagSize
|
||||
50, // Damage Per Bullet
|
||||
1, // Penetration Multiplier
|
||||
64, // Bullet Range
|
||||
0.75, // Range Modifier
|
||||
TYPE_SEMI, // Firing Type
|
||||
1.0, // Attack-Delay
|
||||
1.0, // Reload-Delay
|
||||
iAmmo_9MM, // Caliber Pointer
|
||||
iMag_SMOKEGRENADE, // Clip Pointer
|
||||
1, // Accuracy Divisor
|
||||
1.0, // Accuracy Offset
|
||||
1.0, // Max Inaccuracy
|
||||
7, // Minimum Crosshair Distance
|
||||
3, // Crosshair Movement Delta
|
||||
1.0, // Armor penetration ratio
|
||||
ATYPE_GRENADE // Animation Type
|
||||
WEAPON_SMOKEGRENADE, // Identifier
|
||||
SLOT_GRENADE, // Slot
|
||||
200, // Price
|
||||
0, // Caliber ID
|
||||
1.0, // Max Player Speed
|
||||
1, // Bullets Per Shot
|
||||
1, // Clip/MagSize
|
||||
50, // Damage Per Bullet
|
||||
1, // Penetration Multiplier
|
||||
64, // Bullet Range
|
||||
0.75, // Range Modifier
|
||||
TYPE_SEMI, // Firing Type
|
||||
1.0, // Attack-Delay
|
||||
1.0, // Reload-Delay
|
||||
iAmmo_9MM, // Caliber Pointer
|
||||
iAmmo_SMOKEGRENADE, // Clip Pointer
|
||||
1, // Accuracy Divisor
|
||||
1.0, // Accuracy Offset
|
||||
1.0, // Max Inaccuracy
|
||||
7, // Minimum Crosshair Distance
|
||||
3, // Crosshair Movement Delta
|
||||
1.0, // Armor penetration ratio
|
||||
ATYPE_GRENADE // Animation Type
|
||||
};
|
||||
|
||||
// Anim Table
|
||||
|
@ -58,6 +63,7 @@ enum {
|
|||
void WeaponSMOKEGRENADE_Draw( void ) {
|
||||
#ifdef SSQC
|
||||
BaseMelee_Draw();
|
||||
self.iMode_SMOKEGRENADE = GRENADE_UNREADY;
|
||||
#else
|
||||
View_PlayAnimation( ANIM_SMOKEGRENADE_DRAW );
|
||||
#endif
|
||||
|
@ -65,10 +71,75 @@ void WeaponSMOKEGRENADE_Draw( void ) {
|
|||
|
||||
void WeaponSMOKEGRENADE_PrimaryFire( void ) {
|
||||
#ifdef SSQC
|
||||
static void WeaponSMOKEGRENADE_Release_Ready( void ) {
|
||||
self.iMode_SMOKEGRENADE = GRENADE_READY;
|
||||
}
|
||||
|
||||
if ( self.iMode_SMOKEGRENADE != GRENADE_UNREADY ) {
|
||||
return;
|
||||
}
|
||||
|
||||
Client_SendEvent( self, EV_WEAPON_PRIMARYATTACK );
|
||||
Animation_ShootWeapon();
|
||||
self.fAttackFinished = time + wptSMOKEGRENADE.fAttackFinished;
|
||||
|
||||
// Mark the nade as ready once the pin has been pulled
|
||||
self.iMode_SMOKEGRENADE = GRENADE_PULLING;
|
||||
self.think = WeaponSMOKEGRENADE_Release_Ready;
|
||||
self.nextthink = self.fAttackFinished;
|
||||
#else
|
||||
View_PlayAnimation( ANIM_SMOKEGRENADE_PULLPIN );
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef SSQC
|
||||
void WeaponSMOKEGRENADE_Throw( void ) {
|
||||
static void WeaponSMOKEGRENADE_Explode( void ) {
|
||||
remove( self );
|
||||
}
|
||||
static void Weapon_SMOKEGRENADE_Touch( void ) {
|
||||
if ( other.classname == "func_breakable" ) {
|
||||
Damage_Apply( other, self, 10, self.origin );
|
||||
}
|
||||
sound( self, CHAN_WEAPON, sprintf( "weapons/grenade_hit%d.wav", floor( random() * 3 ) + 1 ), 1, ATTN_NORM );
|
||||
}
|
||||
|
||||
makevectors( self.v_angle );
|
||||
entity eNade = spawn();
|
||||
setorigin( eNade, ( self.origin + self.view_ofs ) + ( v_forward * 16 ) );
|
||||
setmodel( eNade, "models/w_smokegrenade.mdl" );
|
||||
setsize( eNade, '-4 -4 -4', '4 4 4' );
|
||||
|
||||
vector vDir = aim ( self, 100000 );
|
||||
eNade.owner = self;
|
||||
eNade.solid = SOLID_TRIGGER;
|
||||
eNade.angles = vectoangles( vDir );
|
||||
eNade.velocity = ( vDir * 800 );
|
||||
eNade.avelocity = ( v_forward * 600 );
|
||||
eNade.movetype = MOVETYPE_BOUNCE;
|
||||
eNade.touch = Weapon_SMOKEGRENADE_Touch;
|
||||
|
||||
eNade.think = WeaponSMOKEGRENADE_Explode;
|
||||
eNade.nextthink = time + 3.0f;
|
||||
|
||||
self.iAmmo_SMOKEGRENADE--;
|
||||
|
||||
if ( !self.iAmmo_SMOKEGRENADE ) {
|
||||
Weapon_SwitchBest();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void WeaponSMOKEGRENADE_Release( void ) {
|
||||
#ifdef SSQC
|
||||
if ( self.iMode_SMOKEGRENADE == GRENADE_READY ) {
|
||||
// Throw immediately
|
||||
WeaponSMOKEGRENADE_Throw();
|
||||
self.iMode_SMOKEGRENADE = GRENADE_UNREADY;
|
||||
} else if ( self.iMode_SMOKEGRENADE == GRENADE_PULLING ) {
|
||||
// Trying to release the grenade before it's done pulling, throw asap
|
||||
self.iMode_SMOKEGRENADE = GRENADE_UNREADY;
|
||||
self.think = WeaponSMOKEGRENADE_Throw;
|
||||
}
|
||||
#endif
|
||||
}
|
|
@ -206,6 +206,14 @@ Called when letting go one of the weapon firing buttons
|
|||
*/
|
||||
void Weapon_Release( void ) {
|
||||
self.flags = self.flags | FL_SEMI_TOGGLED;
|
||||
|
||||
if ( self.weapon == WEAPON_FLASHBANG ) {
|
||||
WeaponFLASHBANG_Release();
|
||||
} else if ( self.weapon == WEAPON_HEGRENADE ) {
|
||||
WeaponHEGRENADE_Release();
|
||||
} else if ( self.weapon == WEAPON_SMOKEGRENADE ) {
|
||||
WeaponSMOKEGRENADE_Release();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
47
Source/Web/about.html
Executable file
|
@ -0,0 +1,47 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html><head>
|
||||
|
||||
|
||||
<link rel="SHORTCUT ICON" href="site.ico">
|
||||
|
||||
|
||||
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>FreeCS - About FreeCS</title>
|
||||
|
||||
|
||||
|
||||
|
||||
<meta content="eukara" name="author"></head>
|
||||
<body style="color: white; background-color: transparent; background-image: url(back.gif);" alink="#99ffff" link="#ccccff" vlink="#ccccff">
|
||||
<table style="text-align: left; height: 149px; width: 636px; font-family: Times New Roman,Times,serif; margin-left: auto; margin-right: auto;" border="0" cellpadding="2" cellspacing="2">
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align: top; text-align: center; height: 74px; width: 128px;"><img style="width: 128px; height: 128px;" alt="" src="logo_m.png"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top; height: 74px; width: 398px;"><img src="header.png" alt="" style="width: 450px; height: 128px;"><br>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top; height: 220px; width: 128px;">
|
||||
<hr style="width: 100%; height: 2px;"><a href="index.html"><span style="font-weight: bold;"></span></a><a href="index.html">Main Page</a><br><a href="about.html">About FreeCS</a><br><a href="team.html">The Team</a><br><a href="faq.html">The FAQ</a><br><a href="screens.html">Screenshots</a><br><a href="dloads.html">Downloads</a><br>
|
||||
</td>
|
||||
<td style="vertical-align: top; height: 220px; width: 398px;">
|
||||
|
||||
<hr style="width: 100%; height: 2px;"><span style="font-weight: bold; text-decoration: underline;">About FreeCS</span><br><p>The goal of this project is to provide a documented, open-source version of Counter-Strike 1.5. </p><p>Counter-Strike, being one of the most popular multiplayer games to exist, surprisingly hasn't had
|
||||
a free-software implementation done until now.</p>
|
||||
<p>Six cool random things you can do with this:</p>
|
||||
<ol><li>Play/Host CS on virtually every platform.</li><li>Customize the game to whatever extent you like.</li><li>Create entirely new weapons!</li><li>Create completely new and refreshing gamemodes!</li><li>Have a guarantee to be able to play it 20 years into the future!</li><li>Use it as a base for your own games/mods!</li></ol>
|
||||
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div style="text-align: center; font-family: Times New Roman,Times,serif;">
|
||||
<small><span style="font-style: italic;">1995 - 2017 - by Marco 'eukara' Hladik</span></small>
|
||||
</div>
|
||||
|
||||
</body></html>
|
BIN
Source/Web/back.gif
Executable file
After Width: | Height: | Size: 62 B |
43
Source/Web/dloads.html
Executable file
|
@ -0,0 +1,43 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html><head>
|
||||
|
||||
|
||||
<link rel="SHORTCUT ICON" href="site.ico">
|
||||
|
||||
|
||||
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>FreeCS - Downloads</title>
|
||||
|
||||
|
||||
|
||||
|
||||
<meta content="eukara" name="author"></head>
|
||||
<body style="color: white; background-color: transparent; background-image: url(back.gif);" alink="#99ffff" link="#ccccff" vlink="#ccccff">
|
||||
<table style="text-align: left; height: 149px; width: 636px; font-family: Times New Roman,Times,serif; margin-left: auto; margin-right: auto;" border="0" cellpadding="2" cellspacing="2">
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align: top; text-align: center; height: 74px; width: 128px;"><img style="width: 128px; height: 128px;" alt="" src="logo_m.png"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top; height: 74px; width: 398px;"><img src="header.png" alt="" style="width: 450px; height: 128px;"><br>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top; height: 220px; width: 128px;">
|
||||
<hr style="width: 100%; height: 2px;"><a href="index.html"><span style="font-weight: bold;"></span></a><a href="index.html">Main Page</a><br><a href="about.html">About FreeCS</a><br><a href="team.html">The Team</a><br><a href="faq.html">The FAQ</a><br><a href="screens.html">Screenshots</a><br><a href="dloads.html">Downloads</a><br>
|
||||
</td>
|
||||
<td style="vertical-align: top; height: 220px; width: 398px;">
|
||||
|
||||
<hr style="width: 100%; height: 2px;"><span style="font-weight: bold; text-decoration: underline;">Downloads</span><br><br>Windows 32-bit: Coming soon, check repo!<br>Windows 64-bit: Coming soon, check repo!<br>Linux 32-bit: Coming soon, check repo!<br>Linux 64-bit: Coming soon, check repo!<br><br>Due to inconsistent packaging methods across all Linux distributions, I will only provide a tarball for the binaries. Sorry.<br><br>Check out the source-repo here:<br><a href="https://github.com/eukara/FreeCS">https://github.com/eukara/FreeCS</a><br><br>This is where you can find FTE QuakeWorlds source-repo:<br><a href="https://sourceforge.net/p/fteqw/">https://sourceforge.net/p/fteqw/</a><br><br>Currently hosted at GitHub. Will move it over to icculus hopefully<br>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div style="text-align: center; font-family: Times New Roman,Times,serif;">
|
||||
<small><span style="font-style: italic;">1995 - 2017 - by Marco 'eukara' Hladik</span></small>
|
||||
</div>
|
||||
|
||||
</body></html>
|
61
Source/Web/faq.html
Executable file
|
@ -0,0 +1,61 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html><head>
|
||||
|
||||
|
||||
<link rel="SHORTCUT ICON" href="site.ico">
|
||||
|
||||
|
||||
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>FreeCS - The FAQ</title>
|
||||
|
||||
|
||||
|
||||
|
||||
<meta content="eukara" name="author"></head>
|
||||
<body style="color: white; background-color: transparent; background-image: url(back.gif);" alink="#99ffff" link="#ccccff" vlink="#ccccff">
|
||||
<table style="text-align: left; height: 149px; width: 636px; font-family: Times New Roman,Times,serif; margin-left: auto; margin-right: auto;" border="0" cellpadding="2" cellspacing="2">
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align: top; text-align: center; height: 74px; width: 128px;"><img style="width: 128px; height: 128px;" alt="" src="logo_m.png"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top; height: 74px; width: 398px;"><img src="header.png" alt="" style="width: 450px; height: 128px;"><br>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top; height: 220px; width: 128px;">
|
||||
<hr style="width: 100%; height: 2px;"><a href="index.html"><span style="font-weight: bold;"></span></a><a href="index.html">Main Page</a><br><a href="about.html">About FreeCS</a><br><a href="team.html">The Team</a><br><a href="faq.html">The FAQ</a><br><a href="screens.html">Screenshots</a><br><a href="dloads.html">Downloads</a><br>
|
||||
</td>
|
||||
<td style="vertical-align: top; height: 220px; width: 398px;">
|
||||
|
||||
<hr style="width: 100%; height: 2px;"><span style="font-weight: bold; text-decoration: underline;">The Frequently Asked Questions</span><br><br>Please refer to this FAQ before sending any mails or C&D letters to my door.<br><br>Q: Is this the full version of Counter-Strike?<br>A:
|
||||
These are only binaries for a rewritten, specific version of
|
||||
Counter-Strike, the mod. It has nothing to do with the CS games of the
|
||||
past 15 years.<br><br>Q: Do I have to own Half-Life to play this?<br>A:
|
||||
It will run without. Hell, it can even "run" without the CS content.
|
||||
But you certainly will have difficulties connecting to FreeCS servers.<br><br>Q: Why do I have to download CS 1.5 manually?<br>A: Legal reasons, cannot re-distribute them without potentially causing some trouble.<br><br>Q: Why is this not using the Half-Life engine?<br>A:
|
||||
The SDK for that engine has one of the least open-source friendly
|
||||
licenses ever written. Open-sourcing a Half-Life mod is actually
|
||||
against the EULA of that SDK. Making it a QuakeWorld mod means I own
|
||||
all the rights to it.<br><br>Q: What does FreeCS mean?<br>A: Primarily
|
||||
it stands for Free Counter-Strike, as in Free-Software... it can also
|
||||
mean "free" as in free beer because you don't have to pay anything to
|
||||
download FreeCS itself. Some people have also speculated that it's a
|
||||
political message... gotta love synonyms!<br><br>Q: Can I connect to Counter-Strike 1.5 servers with this?<br>A: No.<br><br>Q: Can I connect to (anything other than FreeCS) with this?<br>A: No.<br><br>Q: Hey, can I take redistribute this on the PlayStore and make money off of this?<br>A:
|
||||
You'd be a scumbag if you did and possibly force me to adjust my
|
||||
license. If you want to contribute towards a proper Android version,
|
||||
contact me.<br><br>Q: What motivated you to do all this?<br>A: Good
|
||||
memories, love, passion for Counter-Strike. Also as a middle finger to
|
||||
anyone who told me to "do it better" when criticising the new CS game.<br><br>Q: How can I contact you for further questions?<br>A: E-Mail! Please send it to: marco at icculus dot org<br>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div style="text-align: center; font-family: Times New Roman,Times,serif;">
|
||||
<small><span style="font-style: italic;">1995 - 2017 - by Marco 'eukara' Hladik</span></small>
|
||||
</div>
|
||||
|
||||
</body></html>
|
BIN
Source/Web/header.png
Executable file
After Width: | Height: | Size: 27 KiB |
43
Source/Web/index.html
Executable file
|
@ -0,0 +1,43 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html><head>
|
||||
|
||||
|
||||
<link rel="SHORTCUT ICON" href="site.ico">
|
||||
|
||||
|
||||
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>FreeCS - Home</title>
|
||||
|
||||
|
||||
|
||||
|
||||
<meta content="eukara" name="author"></head>
|
||||
<body style="color: white; background-color: transparent; background-image: url(back.gif);" alink="#99ffff" link="#ccccff" vlink="#ccccff">
|
||||
<table style="text-align: left; height: 149px; width: 636px; font-family: Times New Roman,Times,serif; margin-left: auto; margin-right: auto;" border="0" cellpadding="2" cellspacing="2">
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align: top; text-align: center; height: 74px; width: 128px;"><img style="width: 128px; height: 128px;" alt="" src="logo_m.png"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top; height: 74px; width: 398px;"><img src="header.png" alt="" style="width: 450px; height: 128px;"><br>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top; height: 220px; width: 128px;">
|
||||
<hr style="width: 100%; height: 2px;"><a href="index.html"><span style="font-weight: bold;"></span></a><a href="index.html">Main Page</a><br><a href="about.html">About FreeCS</a><br><a href="team.html">The Team</a><br><a href="faq.html">The FAQ</a><br><a href="screens.html">Screenshots</a><br><a href="dloads.html">Downloads</a><br>
|
||||
</td>
|
||||
<td style="vertical-align: top; height: 220px; width: 398px;">
|
||||
|
||||
<hr style="width: 100%; height: 2px;"><span style="font-weight: bold; text-decoration: underline;">Main Page</span><br><br>Hello! Welcome to the official site for FreeCS. <br>Check out those links on the left side. They're for navigation.<br>Gotta love the Web!(TM)<br>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div style="text-align: center; font-family: Times New Roman,Times,serif;">
|
||||
<small><span style="font-style: italic;">1995 - 2017 - by Marco 'eukara' Hladik</span></small>
|
||||
</div>
|
||||
|
||||
</body></html>
|
BIN
Source/Web/logo_m.png
Executable file
After Width: | Height: | Size: 18 KiB |
43
Source/Web/screens.html
Executable file
|
@ -0,0 +1,43 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html><head>
|
||||
|
||||
|
||||
<link rel="SHORTCUT ICON" href="site.ico">
|
||||
|
||||
|
||||
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>FreeCS - Screenshots</title>
|
||||
|
||||
|
||||
|
||||
|
||||
<meta content="eukara" name="author"></head>
|
||||
<body style="color: white; background-color: transparent; background-image: url(back.gif);" alink="#99ffff" link="#ccccff" vlink="#ccccff">
|
||||
<table style="text-align: left; height: 149px; width: 636px; font-family: Times New Roman,Times,serif; margin-left: auto; margin-right: auto;" border="0" cellpadding="2" cellspacing="2">
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align: top; text-align: center; height: 74px; width: 128px;"><img style="width: 128px; height: 128px;" alt="" src="logo_m.png"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top; height: 74px; width: 398px;"><img src="header.png" alt="" style="width: 450px; height: 128px;"><br>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top; height: 220px; width: 128px;">
|
||||
<hr style="width: 100%; height: 2px;"><a href="index.html"><span style="font-weight: bold;"></span></a><a href="index.html">Main Page</a><br><a href="about.html">About FreeCS</a><br><a href="team.html">The Team</a><br><a href="faq.html">The FAQ</a><br><a href="screens.html">Screenshots</a><br><a href="dloads.html">Downloads</a><br>
|
||||
</td>
|
||||
<td style="vertical-align: top; height: 220px; width: 398px;">
|
||||
|
||||
<hr style="width: 100%; height: 2px;"><span style="font-weight: bold;"></span><a href="screens/screen1.png"><img style="border: 2px solid ; width: 128px; height: 96px;" alt="Screenshot 1" title="Class Selection" src="screens/screen1_thumb.jpg"></a> <a href="screens/screen2.png"><img style="border: 2px solid ; width: 128px; height: 96px;" alt="Screenshot 2" title="cs_assault CT Spawn" src="screens/screen2_thumb.jpg"></a> <a href="screens/screen3.png"><img style="border: 2px solid ; width: 128px; height: 96px;" alt="Screenshot 3" title="Scoreboard Display" src="screens/screen3_thumb.jpg"></a><br><a href="screens/screen4.png"><img style="border: 2px solid ; width: 128px; height: 96px;" alt="Screenshot 4" title="Correct Lighting" src="screens/screen4_thumb.jpg"></a> <a href="screens/portable.jpg"><img style="border: 2px solid ; width: 128px; height: 72px;" alt="Screenshot 5" title="Running on an Android tablet, natively" src="screens/portable_thmb.jpg"></a><br>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div style="text-align: center; font-family: Times New Roman,Times,serif;">
|
||||
<small><span style="font-style: italic;">1995 - 2017 - by Marco 'eukara' Hladik</span></small>
|
||||
</div>
|
||||
|
||||
</body></html>
|
BIN
Source/Web/screens/portable.jpg
Executable file
After Width: | Height: | Size: 119 KiB |
BIN
Source/Web/screens/portable_thmb.jpg
Executable file
After Width: | Height: | Size: 5.1 KiB |
BIN
Source/Web/screens/screen1.png
Executable file
After Width: | Height: | Size: 360 KiB |
BIN
Source/Web/screens/screen1_thumb.jpg
Executable file
After Width: | Height: | Size: 4.9 KiB |
BIN
Source/Web/screens/screen2.png
Executable file
After Width: | Height: | Size: 621 KiB |
BIN
Source/Web/screens/screen2_thumb.jpg
Executable file
After Width: | Height: | Size: 6 KiB |
BIN
Source/Web/screens/screen3.png
Executable file
After Width: | Height: | Size: 569 KiB |
BIN
Source/Web/screens/screen3_thumb.jpg
Executable file
After Width: | Height: | Size: 7 KiB |
BIN
Source/Web/screens/screen4.png
Executable file
After Width: | Height: | Size: 239 KiB |
BIN
Source/Web/screens/screen4_thumb.jpg
Executable file
After Width: | Height: | Size: 2.9 KiB |
43
Source/Web/team.html
Executable file
|
@ -0,0 +1,43 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html><head>
|
||||
|
||||
|
||||
<link rel="SHORTCUT ICON" href="site.ico">
|
||||
|
||||
|
||||
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>FreeCS - The Team</title>
|
||||
|
||||
|
||||
|
||||
|
||||
<meta content="eukara" name="author"></head>
|
||||
<body style="color: white; background-color: transparent; background-image: url(back.gif);" alink="#99ffff" link="#ccccff" vlink="#ccccff">
|
||||
<table style="text-align: left; height: 149px; width: 636px; font-family: Times New Roman,Times,serif; margin-left: auto; margin-right: auto;" border="0" cellpadding="2" cellspacing="2">
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align: top; text-align: center; height: 74px; width: 128px;"><img style="width: 128px; height: 128px;" alt="" src="logo_m.png"><br>
|
||||
</td>
|
||||
<td style="vertical-align: top; height: 74px; width: 398px;"><img src="header.png" alt="" style="width: 450px; height: 128px;"><br>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top; height: 220px; width: 128px;">
|
||||
<hr style="width: 100%; height: 2px;"><a href="index.html"><span style="font-weight: bold;"></span></a><a href="index.html">Main Page</a><br><a href="about.html">About FreeCS</a><br><a href="team.html">The Team</a><br><a href="faq.html">The FAQ</a><br><a href="screens.html">Screenshots</a><br><a href="dloads.html">Downloads</a><br>
|
||||
</td>
|
||||
<td style="vertical-align: top; height: 220px; width: 398px;">
|
||||
|
||||
<hr style="width: 100%; height: 2px;"><span style="font-weight: bold; text-decoration: underline;">The Team</span><br><br>Project Founder: Marco 'eukara' Hladik<br>Programming: See Project Founder<br>Website: See Programming<br>Hosting: Ryan C. Gordon aka icculus!<br><br>By the way, if you have experience making websites... shoot me a mail. <br>As you can probably tell: I don't!<br>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div style="text-align: center; font-family: Times New Roman,Times,serif;">
|
||||
<small><span style="font-style: italic;">1995 - 2017 - by Marco 'eukara' Hladik</span></small>
|
||||
</div>
|
||||
|
||||
</body></html>
|
BIN
freecs/freecs.ico
Executable file
After Width: | Height: | Size: 34 KiB |