-
Posts
99 -
Joined
-
Last visited
Content Type
Profiles
News Articles
Tutorials
Forums
Downloads
Posts posted by CansecoDev
-
-
Hello, im creating a new weapon for a mod, but I'm frustrated with one problem I have. I pretend to create a weapon similar to one, and the idea is to switch weapons pressing the key like the explosives. ¿The problem? I don't understand some things of the source code.
This is the code I edited for create the new weapon:
[Go to the end for the conclussion]
codemp/cgame/cg_event.c
old new ... ... @@ -169,6 +169,7 @@ static void CG_Obituary( entityState_t *ent ) { 169 169 case MOD_BOWCASTER: 170 170 case MOD_REPEATER: 171 171 case MOD_REPEATER_ALT: 172 + case MOD_BURST_REPEATER: 172 173 case MOD_FLECHETTE: 173 174 if ( gender == GENDER_FEMALE ) 174 175 message = "SUICIDE_SHOT_FEMALE"; ... ... @@ -360,6 +361,9 @@ clientkilled: 360 361 case MOD_REPEATER_ALT_SPLASH: 361 362 message = "KILLED_REPEATERALT"; 362 363 break; 364 + case MOD_BURST_REPEATER: 365 + message = "KILLED_BURST_REPEATER"; 366 + break; 363 367 case MOD_DEMP2: 364 368 case MOD_DEMP2_ALT: 365 369 message = "KILLED_DEMP2"; ... ... @@ -1092,6 +1096,7 @@ void CG_G2MarkEvent(entityState_t *es) 1092 1096 case WP_DISRUPTOR: 1093 1097 case WP_BOWCASTER: 1094 1098 case WP_REPEATER: 1099 + case WP_BURST_REPEATER: 1095 1100 case WP_TURRET: 1096 1101 if ( !size ) 1097 1102 {
codemp/cgame/cg_local.h
old new ... ... @@ -1415,6 +1415,11 @@ typedef struct 1415 1415 fxHandle_t repeaterWallImpactEffect; 1416 1416 fxHandle_t repeaterFleshImpactEffect; 1417 1417 fxHandle_t repeaterAltWallImpactEffect; 1418 + 1419 + // BURST REPEATER 1420 + fxHandle_t burstrepeaterProjectileEffect; 1421 + fxHandle_t burstrepeaterWallImpactEffect; 1422 + fxHandle_t burstrepeaterFleshImpactEffect; 1418 1423 1419 1424 // DEMP2 1420 1425 fxHandle_t demp2ProjectileEffect;
codemp/cgame/cg_weaponinit.c
old new ... ... @@ -367,6 +367,36 @@ void CG_RegisterWeapon( int weaponNum) { 367 367 //cgs.effects.repeaterAltWallImpactEffect = trap_FX_RegisterEffect( "repeater/alt_wall_impact" ); 368 368 cgs.effects.repeaterAltWallImpactEffect = trap_FX_RegisterEffect( "repeater/concussion" ); 369 369 break; 370 + 371 + case WP_BURST_REPEATER: 372 + weaponInfo->selectSound = trap_S_RegisterSound("sound/weapons/burst_repeater/select.wav"); 373 + 374 + weaponInfo->flashSound[0] = trap_S_RegisterSound( "sound/weapons/burst_repeater/fire.wav"); 375 + weaponInfo->firingSound = NULL_SOUND; 376 + weaponInfo->chargeSound = NULL_SOUND; 377 + weaponInfo->muzzleEffect = trap_FX_RegisterEffect( "burst_repeater/muzzle_flash" ); 378 + weaponInfo->missileModel = NULL_HANDLE; 379 + weaponInfo->missileSound = NULL_SOUND; 380 + weaponInfo->missileDlight = 0; 381 +// weaponInfo->missileDlightColor = {0,0,0}; 382 + weaponInfo->missileHitSound = NULL_SOUND; 383 + weaponInfo->missileTrailFunc = FX_BurstRepeaterProjectileThink; 384 + 385 + weaponInfo->altFlashSound[0] = trap_S_RegisterSound( "sound/weapons/burst_repeater/alt_fire.wav"); 386 + weaponInfo->altFiringSound = NULL_SOUND; 387 + weaponInfo->altChargeSound = NULL_SOUND; 388 + weaponInfo->altMuzzleEffect = trap_FX_RegisterEffect( "burst_repeater/muzzle_flash" ); 389 + weaponInfo->altMissileModel = NULL_HANDLE; 390 + weaponInfo->altMissileSound = NULL_SOUND; 391 + weaponInfo->altMissileDlight = 0; 392 +// weaponInfo->altMissileDlightColor= {0,0,0}; 393 + weaponInfo->altMissileHitSound = NULL_SOUND; 394 + weaponInfo->altMissileTrailFunc = FX_BurstRepeaterAltProjectileThink; 395 + 396 + cgs.effects.burstrepeaterProjectileEffect = trap_FX_RegisterEffect( "burst_repeater/projectile" ); 397 + cgs.effects.burstrepeaterWallImpactEffect = trap_FX_RegisterEffect( "burst_repeater/wall_impact" ); 398 + cgs.effects.burstrepeaterFleshImpactEffect = trap_FX_RegisterEffect( "burst_repeater/flesh_impact" ); 399 + break; 370 400 371 401 case WP_DEMP2: 372 402 weaponInfo->selectSound = trap_S_RegisterSound("sound/weapons/demp2/select.wav");
codemp/cgame/fx_local.h
old new ... ... @@ -46,6 +46,12 @@ void FX_RepeaterAltHitWall( vec3_t origin, vec3_t normal ); 46 46 void FX_RepeaterHitPlayer( vec3_t origin, vec3_t normal, qboolean humanoid ); 47 47 void FX_RepeaterAltHitPlayer( vec3_t origin, vec3_t normal, qboolean humanoid ); 48 48 49 +// Burst Repeater 50 +void FX_BurstRepeaterProjectileThink( centity_t *cent, const struct weaponInfo_s *weapon ); 51 +void FX_BurstRepeaterAltProjectileThink( centity_t *cent, const struct weaponInfo_s *weapon ); 52 +void FX_BurstRepeaterHitWall( vec3_t origin, vec3_t normal ); 53 +void FX_BurstRepeaterHitPlayer( vec3_t origin, vec3_t normal, qboolean humanoid ); 54 + 49 55 // DEMP2 50 56 void FX_DEMP2_ProjectileThink( centity_t *cent, const struct weaponInfo_s *weapon ); 51 57 void FX_DEMP2_HitWall( vec3_t origin, vec3_t normal );
codemp/game/bg_misc.c
old new ... ... @@ -240,6 +240,7 @@ int WeaponReadyAnim[WP_NUM_WEAPONS] = 240 240 TORSO_WEAPONREADY3,//TORSO_WEAPONREADY4,//WP_DISRUPTOR, 241 241 TORSO_WEAPONREADY3,//TORSO_WEAPONREADY5,//WP_BOWCASTER, 242 242 TORSO_WEAPONREADY3,//TORSO_WEAPONREADY6,//WP_REPEATER, 243 + TORSO_WEAPONREADY3,//TORSO_WEAPONREADY6,//WP_BURST_REPEATER, 243 244 TORSO_WEAPONREADY3,//TORSO_WEAPONREADY7,//WP_DEMP2, 244 245 TORSO_WEAPONREADY3,//TORSO_WEAPONREADY8,//WP_FLECHETTE, 245 246 TORSO_WEAPONREADY3,//TORSO_WEAPONREADY9,//WP_ROCKET_LAUNCHER, ... ... @@ -266,6 +267,7 @@ int WeaponReadyLegsAnim[WP_NUM_WEAPONS] = 266 267 BOTH_STAND1,//TORSO_WEAPONREADY4,//WP_DISRUPTOR, 267 268 BOTH_STAND1,//TORSO_WEAPONREADY5,//WP_BOWCASTER, 268 269 BOTH_STAND1,//TORSO_WEAPONREADY6,//WP_REPEATER, 270 + BOTH_STAND1,//TORSO_WEAPONREADY6,//WP_BURST_REPEATER, 269 271 BOTH_STAND1,//TORSO_WEAPONREADY7,//WP_DEMP2, 270 272 BOTH_STAND1,//TORSO_WEAPONREADY8,//WP_FLECHETTE, 271 273 BOTH_STAND1,//TORSO_WEAPONREADY9,//WP_ROCKET_LAUNCHER, ... ... @@ -292,6 +294,7 @@ int WeaponAttackAnim[WP_NUM_WEAPONS] = 292 294 BOTH_ATTACK3,//BOTH_ATTACK4,//WP_DISRUPTOR, 293 295 BOTH_ATTACK3,//BOTH_ATTACK5,//WP_BOWCASTER, 294 296 BOTH_ATTACK3,//BOTH_ATTACK6,//WP_REPEATER, 297 + BOTH_ATTACK3,//BOTH_ATTACK6,//WP_BURST_REPEATER, 295 298 BOTH_ATTACK3,//BOTH_ATTACK7,//WP_DEMP2, 296 299 BOTH_ATTACK3,//BOTH_ATTACK8,//WP_FLECHETTE, 297 300 BOTH_ATTACK3,//BOTH_ATTACK9,//WP_ROCKET_LAUNCHER, ... ... @@ -1235,6 +1238,24 @@ Don't place this 1235 1238 /* sounds */ "", 1236 1239 "@MENUS_THIS_DESTRUCTIVE_PROJECTILE" // description 1237 1240 }, 1241 + 1242 + /*QUAKED weapon_burst_repeater (.3 .3 1) (-16 -16 -16) (16 16 16) suspended 1243 +*/ 1244 + { 1245 + "weapon_burst_repeater", 1246 + "sound/weapons/w_pkup.wav", 1247 + { "models/weapons2/burst_repeater/burst_repeater_w.glm", 1248 + 0, 0, 0}, 1249 +/* view */ "models/weapons2/burst_repeater/burst_repeater.md3", 1250 +/* icon */ "gfx/hud/w_icon_burst_repeater", 1251 +/* pickup */// "Imperial Burst Repeater", 1252 + 100, 1253 + IT_WEAPON, 1254 + WP_BURST_REPEATER, 1255 +/* precache */ "", 1256 +/* sounds */ "", 1257 + "@MENUS_THIS_BURSTED_GUN" // description 1258 + }, 1238 1259 1239 1260 /*QUAKED weapon_demp2 (.3 .3 1) (-16 -16 -16) (16 16 16) suspended 1240 1261 NOTENOTE This weapon is not yet complete. Don't place it. ... ... @@ -1495,7 +1516,7 @@ Ammo for Tenloss Disruptor, Wookie Bowcaster, and the Destructive Electro Magnet 1495 1516 }, 1496 1517 1497 1518 /*QUAKED ammo_metallic_bolts (.3 .3 1) (-16 -16 -16) (16 16 16) suspended 1498 -Ammo for Imperial Heavy Repeater and the Golan Arms Flechette 1519 +Ammo for Imperial Heavy Repeater, Burst Repeater and the Golan Arms Flechette 1499 1520 */ 1500 1521 { 1501 1522 "ammo_metallic_bolts",
codemp/game/bg_saga.c
old new ... ... @@ -83,6 +83,7 @@ stringID_table_t WPTable[] = 83 83 ENUM2STRING(WP_DISRUPTOR), 84 84 ENUM2STRING(WP_BOWCASTER), 85 85 ENUM2STRING(WP_REPEATER), 86 + ENUM2STRING(WP_BURST_REPEATER), 86 87 ENUM2STRING(WP_DEMP2), 87 88 ENUM2STRING(WP_FLECHETTE), 88 89 ENUM2STRING(WP_ROCKET_LAUNCHER),
codemp/game/bg_weapons.c
old new ... ... @@ -183,6 +183,23 @@ weaponData_t weaponData[WP_NUM_WEAPONS] = 183 183 0, // int maxCharge; // stop subtracting once charged for this many ms 184 184 0 // int altMaxCharge; // above for secondary 185 185 }, 186 + { // WP_BURST_REPEATER 187 +// "Imperial Burst Repeater",// char classname[32]; // Spawning name 188 + AMMO_METAL_BOLTS, // int ammoIndex; // Index to proper ammo slot 189 + 5, // int ammoLow; // Count when ammo is low 190 + 1, // int energyPerShot; // Amount of energy used per shot 191 + 100, // int fireTime; // Amount of time between firings 192 + 8192, // int range; // Range of weapon 193 + 3, // int altEnergyPerShot; // Amount of energy used for alt-fire 194 + 300, // int altFireTime; // Amount of time between alt-firings 195 + 8192, // int altRange; // Range of alt-fire 196 + 0, // int chargeSubTime; // ms interval for subtracting ammo during charge 197 + 0, // int altChargeSubTime; // above for secondary 198 + 0, // int chargeSub; // amount to subtract during charge on each interval 199 + 0, //int altChargeSub; // above for secondary 200 + 0, // int maxCharge; // stop subtracting once charged for this many ms 201 + 0 // int altMaxCharge; // above for secondary 202 + }, 186 203 { // WP_DEMP2 187 204 // "DEMP2", // char classname[32]; // Spawning name 188 205 AMMO_POWERCELL, // int ammoIndex; // Index to proper ammo slot
codemp/game/bg_weapons.h
old new ... ... @@ -15,6 +15,7 @@ typedef enum { 15 15 WP_DISRUPTOR, 16 16 WP_BOWCASTER, 17 17 WP_REPEATER, 18 + WP_BURST_REPEATER, 18 19 WP_DEMP2, 19 20 WP_FLECHETTE, 20 21 WP_ROCKET_LAUNCHER,
codemp/game/g_weapon.c
old new ... ... @@ -61,6 +61,14 @@ static vec3_t muzzle; 61 61 #define REPEATER_ALT_SPLASH_RAD_SIEGE 80 62 62 #define REPEATER_ALT_VELOCITY 1100 63 63 64 +// Light Repeater // Burst Repeater 65 +//---------- 66 +#define BURST_REPEATER_SPREAD 0.8f // This is more accurately than the heavy version 67 +#define BURST_REPEATER_DAMAGE 14 68 +#define BURST_REPEATER_VELOCITY 1600 69 + 70 +#define BURST_REPEATER_ALT_SHOTS 3 71 + 64 72 // DEMP2 65 73 //---------- 66 74 #define DEMP2_DAMAGE 35 ... ... @@ -1184,6 +1192,117 @@ static void WP_FireRepeater( gentity_t *ent, qboolean altFire ) 1184 1192 } 1185 1193 1186 1194 + +/* +====================================================================== + +BURST REPEATER + +====================================================================== +*/ + +//--------------------------------------------------------- +static void WP_BurstRepeaterMainFire( gentity_t *ent, vec3_t dir ) +//--------------------------------------------------------- +{ + int damage = BURST_REPEATER_DAMAGE; + + gentity_t *missile = CreateMissile( muzzle, dir, BURST_REPEATER_VELOCITY, 10000, ent, qfalse ); + + missile->classname = "burst_proj"; + missile->s.weapon = WP_BURST_REPEATER; + + missile->damage = damage; + missile->dflags = DAMAGE_DEATH_KNOCKBACK; + missile->methodOfDeath = MOD_BURST_REPEATER; + missile->clipmask = MASK_SHOT | CONTENTS_LIGHTSABER; + + // we don't want it to bounce forever + missile->bounceCount = 8; +} + +//--------------------------------------------------------- +static void WP_BurstRepeaterAltFire( gentity_t *ent ) +//--------------------------------------------------------- 1227 +{ 1228 + vec3_t fwd, angs; 1229 + gentity_t *missile; 1230 + int i; 1231 + 1232 + for (i = 0; i < BURST_REPEATER_ALT_SHOTS; i++ ) 1233 + { 1234 + vectoangles( forward, angs ); 1235 + 1236 + /*if (i != 0) 1237 + { //do nothing on the first shot, it will hit the crosshairs 1238 + angs[PITCH] += crandom() * BURST_REPEATER_SPREAD; 1239 + angs[YAW] += crandom() * BURST_REPEATER_SPREAD; 1240 + }*/ 1241 + 1242 + if (i == 1) 1243 + { 1244 + angs[PITCH] += 2; 1245 + angs[YAW] += 1; 1246 + } 1247 + 1248 + if (i == 2) 1249 + { 1250 + angs[PITCH] += 2; 1251 + angs[YAW] += -1; 1252 + } 1253 + 1254 + if (i == 3) 1255 + { 1256 + angs[PITCH] += -1; 1257 + angs[YAW] += 0; 1258 + } 1259 + 1260 + AngleVectors( angs, fwd, NULL, NULL ); 1261 + 1262 + missile = CreateMissile( muzzle, fwd, BURST_REPEATER_VELOCITY, 10000, ent, qfalse); 1263 + 1264 + missile->classname = "tri_proj"; 1265 + missile->s.weapon = WP_BURST_REPEATER; 1266 + 1267 + VectorSet( missile->r.maxs, FLECHETTE_SIZE, FLECHETTE_SIZE, FLECHETTE_SIZE ); 1268 + VectorScale( missile->r.maxs, -1, missile->r.mins ); 1269 + 1270 + missile->damage = BURST_REPEATER_DAMAGE; 1271 + missile->dflags = DAMAGE_DEATH_KNOCKBACK; 1272 + missile->methodOfDeath = MOD_BURST_REPEATER; 1273 + missile->clipmask = MASK_SHOT | CONTENTS_LIGHTSABER; 1274 + 1275 + // we don't want it to bounce forever 1276 + missile->bounceCount = 8; 1277 + } 1278 +} 1279 + 1280 +//--------------------------------------------------------- 1281 +static void WP_BurstFireRepeater( gentity_t *ent, qboolean altFire ) 1282 +//--------------------------------------------------------- 1283 +{ 1284 + vec3_t dir, angs; 1285 + 1286 + vectoangles( forward, angs ); 1287 + 1288 + if ( altFire ) 1289 + { 1290 + WP_BurstRepeaterAltFire( ent ); 1291 + } 1292 + else 1293 + { 1294 + // add some slop to the alt-fire direction 1295 + angs[PITCH] += crandom() * BURST_REPEATER_SPREAD; 1296 + angs[YAW] += crandom() * BURST_REPEATER_SPREAD; 1297 + 1298 + AngleVectors( angs, dir, NULL, NULL ); 1299 + 1300 + WP_BurstRepeaterMainFire( ent, dir ); 1301 + } 1302 +} 1303 + 1304 + 1305 + 1187 1306 /* 1188 1307 ====================================================================== 1189 1308 ... ... @@ -4585,6 +4704,10 @@ void FireWeapon( gentity_t *ent, qboolean altFire ) { 4585 4704 case WP_REPEATER: 4586 4705 WP_FireRepeater( ent, altFire ); 4587 4706 break; 4707 + 4708 + case WP_BURST_REPEATER: 4709 + WP_BurstFireRepeater( ent, altFire ); 4710 + break; 4588 4711 4589 4712 case WP_DEMP2: 4590 4713 WP_FireDEMP2( ent, altFire );
codemp/qcommon/q_shared.h
old new ... ... @@ -2130,7 +2130,7 @@ typedef enum { 2130 2130 #define MAX_STATS 16 2131 2131 #define MAX_PERSISTANT 16 2132 2132 #define MAX_POWERUPS 16 2133 -#define MAX_WEAPONS 19 2133 +#define MAX_WEAPONS 32 // original 19 2134 2134 2135 2135 #define MAX_PS_EVENTS 2 2136 2136
codemp/cgame/fx_burstrepeater.c
old new ... ... @@ -0,0 +1,61 @@ 1 +// Burst Repeater 2 + 3 +#include "cg_local.h" 4 + 5 +/* 6 +------------------------- 7 +FX_BurstRepeaterProjectileThink 8 +------------------------- 9 +*/ 10 + 11 +void FX_BurstRepeaterProjectileThink( centity_t *cent, const struct weaponInfo_s *weapon ) 12 +{ 13 + vec3_t forward; 14 + 15 + if ( VectorNormalize2( cent->currentState.pos.trDelta, forward ) == 0.0f ) 16 + { 17 + forward[2] = 1.0f; 18 + } 19 + 20 + trap_FX_PlayEffectID( cgs.effects.burstrepeaterProjectileEffect, cent->lerpOrigin, forward, -1, -1 ); 21 +} 22 + 23 +/* 24 +------------------------- 25 +FX_BurstRepeaterAltProjectileThink 26 +------------------------- 27 +*/ 28 +void FX_BurstRepeaterAltProjectileThink( centity_t *cent, const struct weaponInfo_s *weapon ) 29 +{ 30 + vec3_t forward; 31 + 32 + if ( VectorNormalize2( cent->currentState.pos.trDelta, forward ) == 0.0f ) 33 + { 34 + forward[2] = 1.0f; 35 + } 36 + 37 + trap_FX_PlayEffectID( cgs.effects.burstrepeaterProjectileEffect, cent->lerpOrigin, forward, -1, -1 ); 38 +} 39 + 40 +/* 41 +------------------------ 42 +FX_BurstRepeaterHitWall 43 +------------------------ 44 +*/ 45 + 46 +void FX_BurstRepeaterHitWall( vec3_t origin, vec3_t normal ) 47 +{ 48 + trap_FX_PlayEffectID( cgs.effects.burstrepeaterWallImpactEffect, origin, normal, -1, -1 ); 49 +} 50 + 51 +/* 52 +------------------------ 53 +FX_BurstRepeaterHitPlayer 54 +------------------------ 55 +*/ 56 + 57 +void FX_BurstRepeaterHitPlayer( vec3_t origin, vec3_t normal, qboolean humanoid ) 58 +{ 59 + trap_FX_PlayEffectID( cgs.effects.burstrepeaterFleshImpactEffect, origin, normal, -1, -1 ); 60 +} 61 +
codemp/cgame/cg_weapons.c This is the file i need to edit i think.
old new ... ... @@ -1562,6 +1562,25 @@ void CG_Weapon_f( void ) { 1562 1562 return; 1563 1563 } 1564 1564 1565 + // Fix for the new weapons 1566 + if (num == WP_REPEATER) 1567 + {/* 1568 + if (current_weapon == WP_BURST_REPEATER) 1569 + { 1570 + select(WP_REPEATER); 1571 + } 1572 + else 1573 + { 1574 + select(WP_BURST_REPEATER); 1575 + } 1576 + */ //// I don't know how to do this 1577 + } 1578 + 1579 + if (num >= WP_BURST_REPEATER) 1580 + { 1581 + num += 1; // Add one per new weapon 1582 + } 1583 + 1565 1584 if (num >= WP_THERMAL && num <= WP_DET_PACK) 1566 1585 { 1567 1586 int weap, i = 0; ... ... @@ -1884,6 +1903,10 @@ void CG_FireWeapon( centity_t *cent, qboolean altFire ) { 1884 1903 { 1885 1904 CGCam_Shake(flrand(2, 3), 350); 1886 1905 } 1906 + else if (ent->weapon == WP_BURST_REPEATER) 1907 + { 1908 + CGCam_Shake(flrand(2, 3), 350); 1909 + } 1887 1910 else if (ent->weapon == WP_FLECHETTE) 1888 1911 { 1889 1912 if (altFire) ... ... @@ -2034,6 +2057,10 @@ void CG_MissileHitWall(int weapon, int clientNum, vec3_t origin, vec3_t dir, imp 2034 2057 FX_RepeaterHitWall( origin, dir ); 2035 2058 } 2036 2059 break; 2060 + 2061 + case WP_BURST_REPEATER: 2062 + FX_BurstRepeaterHitWall( origin, dir ); 2063 + break; 2037 2064 2038 2065 case WP_DEMP2: 2039 2066 if (altFire) ... ... @@ -2154,6 +2181,10 @@ void CG_MissileHitPlayer(int weapon, vec3_t origin, vec3_t dir, int entityNum, q 2154 2181 FX_RepeaterHitPlayer( origin, dir, humanoid ); 2155 2182 } 2156 2183 break; 2184 + 2185 + case WP_BURST_REPEATER: 2186 + FX_BurstRepeaterHitPlayer( origin, dir, humanoid ); 2187 + break; 2157 2188 2158 2189 case WP_DEMP2: 2159 2190 // Do a full body effect here for some more feedback
codemp/game/bg_public.h
old new ... ... @@ -1058,6 +1058,7 @@ typedef enum { 1058 1058 MOD_REPEATER, 1059 1059 MOD_REPEATER_ALT, 1060 1060 MOD_REPEATER_ALT_SPLASH, 1061 + MOD_BURST_REPEATER, 1061 1062 MOD_DEMP2, 1062 1063 MOD_DEMP2_ALT, 1063 1064 MOD_FLECHETTE,
codemp/game/g_combat.c
old new ... ... @@ -767,6 +767,7 @@ char *modNames[MOD_MAX] = { 767 767 "MOD_REPEATER", 768 768 "MOD_REPEATER_ALT", 769 769 "MOD_REPEATER_ALT_SPLASH", 770 + "MOD_BURST_REPEATER", 770 771 "MOD_DEMP2", 771 772 "MOD_DEMP2_ALT", 772 773 "MOD_FLECHETTE",
codemp/game/g_combat.c
old new ... ... @@ -767,6 +767,7 @@ char *modNames[MOD_MAX] = { 767 767 "MOD_REPEATER", 768 768 "MOD_REPEATER_ALT", 769 769 "MOD_REPEATER_ALT_SPLASH", 770 + "MOD_BURST_REPEATER", 770 771 "MOD_DEMP2", 771 772 "MOD_DEMP2_ALT", 772 773 "MOD_FLECHETTE",
codemp/game/g_log.c
old new ... ... @@ -46,6 +46,7 @@ int weaponFromMOD[MOD_MAX] = 46 46 WP_REPEATER, //MOD_REPEATER, 47 47 WP_REPEATER, //MOD_REPEATER_ALT, 48 48 WP_REPEATER, //MOD_REPEATER_ALT_SPLASH, 49 + WP_BURST_REPEATER, //MOD_BURST_REPEATER, 49 50 WP_DEMP2, //MOD_DEMP2, 50 51 WP_DEMP2, //MOD_DEMP2_ALT, 51 52 WP_FLECHETTE, //MOD_FLECHETTE,
code/game/g_itemLoad.cpp
old new ... ... @@ -121,6 +121,8 @@ static void IT_Name(const char **holdBuf) 121 121 itemNum = ITM_BOWCASTER_PICKUP; 122 122 else if (!Q_stricmp(tokenStr,"ITM_REPEATER_PICKUP")) 123 123 itemNum = ITM_REPEATER_PICKUP; 124 + else if (!Q_stricmp(tokenStr,"ITM_BURST_REPEATER_PICKUP")) 125 + itemNum = ITM_BURST_REPEATER_PICKUP; 124 126 else if (!Q_stricmp(tokenStr,"ITM_DEMP2_PICKUP")) 125 127 itemNum = ITM_DEMP2_PICKUP; 126 128 else if (!Q_stricmp(tokenStr,"ITM_FLECHETTE_PICKUP"))
code/game/g_items.h
old new ... ... @@ -32,6 +32,7 @@ ITM_BLASTER_PICKUP, 32 32 ITM_DISRUPTOR_PICKUP, 33 33 ITM_BOWCASTER_PICKUP, 34 34 ITM_REPEATER_PICKUP, 35 +ITM_BURST_REPEATER_PICKUP, 35 36 ITM_DEMP2_PICKUP, 36 37 ITM_FLECHETTE_PICKUP, 37 38 ITM_CONCUSSION_RIFLE_PICKUP,
100%100%Ok, back to the red one file: "codemp/cgame/cg_weapons.c"
At "CG_Weapon_f" i added this:
// Fix for the new weapons if (num == WP_REPEATER) {/* if (current_weapon == WP_BURST_REPEATER) { select(WP_REPEATER); } else { select(WP_BURST_REPEATER); } */ //// I don't know how to do this } if (num >= WP_BURST_REPEATER) { num += 1; // Add one per new weapon }
I think, the code I need must be something like this:
IF (press 6 key)
IF (current weapon IS burst repeater)
THEN --> change to repeater
ELSE --> change to burst repeater
ENDIF
ENDIF
But I don't have any idea to how to do this.
-
It's probably cheaper to buy your own virtual private server (vps) and set up a JKA server on that. I wouldn't be surprised if much of the costs associated with the usual JKA server hosting are usually to do with the hosting company managing the server itself (I.e. setting up the JKA server, adding mods, etc).
The downside of buying a vps is that then you have do to all the things the hosting company would have done, plus the general security and housekeeping of the server itself.
i will rent one of these litle birds: http://www.ovh.es/servidores_dedicados/kemsirve.xml
-
Hello Acrobat, here is the latest build of GTKR.: http://gtkradiant.s3.amazonaws.com/GtkRadiant-1.6.4-20130802.zip
I like this 2 new things:
- There is a new button in the toolbar that lets you create detail brushes
by default
- There is a new preference that creates all brushes with the caulk texture
by default (default on)Maybe works on W8, I don't know.
-
Items and pickups are the same thing? Also, weapons also constitute pickups (it's covered in the tut I believe)
Hmm i didn't read yet sorry, did not know.
-
Well, at least we have it. But we have to be careful, they may not want the code in the wrong hands...
Lord Vader: Where are those files you downloaded on the internet, WHAT HAVE YOU DONE WITH SOURCE CODE?
Us: We have no idea what your talking about...
Lord Vader: Several pieces of source code were put onto the internet by Raven spies, I want to know what happened to the source code they sent you.
Us: We don't know what your talking about, we are a group of modders who-
Lord Vader: You are not on a modding mission, YOU ARE PART OF THE REBEL ALLIANCE AND A TRAITER! TAKE DOWN THE SOURCE CODE!
And so, the source code was taken down.
I laugh a lot.
-
And how to create a new pickup
-
Another idea, how to create a new item
-
-
Maybe in a month I can host one in europe. 100mb/s
-
No, OpenJK is unaffected. The best course of action would be to continue with what were doing, and not press the matter further =]
I'm now relaxed
-
Im comfused, thats mean the openJK proyect is illegal?
-
I loved this mod in JK2.
-
Ok i solved the problem with the segmentation fault... woah, this need a tutorial, I must make a tutorial for this, and sorry for invade this thread.
-
Are you starting the game with no jka install alongside it and with
+set com_jk2 1
in the startup parameters.There is no Multiplayer JK2 support.
Already have a dedicated JK2 server support on linux?
Im using "./openjkded.i386 +set fs_gamemode [gamemode] +set com_jk2 1 +exec server" but not work...
For other way, im trying to start a server on linux, with the original and JediDo's modified versions of jk2Ded but receive the "Segmentation Fault" error. Any help?
-
Ok lets go, I am a young coder (only 4 years coding), I have a idea for a hard proyect for Jedi Academy ("hard" for me obviously) and have some questions for an old coder.
2- How to create a force power, not the animation or the fx, only the BASE for create a new force power, add this to the force list and manage their effects.
example: adding the "Destruccion" from Dark Forces II. And the compativility to enable/disable with the forcepowersdisable cvar.
1- How to create an entire new weapon, same idea to the force.
example: the concussion rifle from DFII.
EDIT: I see the tutorial, actually reading.
3- How to create a cvar, to modify something by serverside, really i dont know how.
example: a cvar to modify the damage of rockets by server (and an compatibility client side plugin for a correct sincronizacion).
6- When I learn the 3rd question, how to enable/disable the camera movement with a serverside cvar for specific saber attacks. This must be compatible with a clientside plugin.
example: enable the spin on back stab like a Jedi Outcast 1.03 BS with a serverside cvar, and the clients with the clientside plugin, can spin when BS.
4- How to create a serverside plugin detector, thats offers you to autodownload the clientside plugin if you dont have the latest version (¿maybe with a sha256 checksum?), block in spectator mode when you dont have the latest version with serverside cvar on boolean "true".
5- If you solve that basics, you gain my restpet forever (when I always learn the basics of something, I learn self-taught the rest). And remember, its for a big proyect, maybe I mention you when release.
Thanks for you time eezstreet.
PD: I am a messy coder
[FIXED!] +openJK +JA +MP Creating a new weapon.
in Coding and Scripts
Posted
I fixed this using this code, THANKS @@Scooper, really.