| Author |
Topic: trigger primary weapon hide |
| lin3000 |
General Member Since: Jan 5, 2008 Posts: 19 Last: Dec 4, 2009 [view latest posts] |
|
|
|
|
| Sevenz |
 |
General Member Since: Apr 24, 2006 Posts: 2390 Last: May 10, 2013 [view latest posts] |
|
|
|
|
| DemonSeed |
General Member Since: Apr 30, 2009 Posts: 1362 Last: Feb 19, 2018 [view latest posts] |
|
|
 |
|
|
| COD4GRC |
General Member Since: Aug 12, 2007 Posts: 44 Last: Jan 30, 2010 [view latest posts] |
|
|
|
Category: CoD2 Scripting Posted: Wednesday, Oct. 14, 2009 05:50 pm |
 |
It would probably look like this
Code:
main(){
thread weaponSwitcher();
}
weaponSwitcher(){
trigger = getent("weapon_switch_trigger", "targetname");
while(1){
// Wait till the trigger get triggered
trigger waittill("trigger");
// Take all weapons
level.player takeallweapons();
while(1){
wait 1.0;
if(!(level.player istouching(trigger))){
break;
}
}
level.player giveWeapon("m1garand");
level.player switchToWeapon("m1garand");
}
}
You'll have to test it yourself and replace the giveWeapon("m1garand") for a genius use of the level.player getCurrentWeapon(): function.
But this method is pretty expensive (as in takes some cpu), so I actually recommend a trigger for taking the weapon and a trigger for returning the weapon around the first trigger.
Understand? :P
|
 |
|
|
| Pedro699 |
General Member Since: Jun 19, 2006 Posts: 781 Last: Dec 18, 2010 [view latest posts] |
|
|
|
Category: CoD2 Scripting Posted: Wednesday, Oct. 14, 2009 07:45 pm |
 |
DemonSeed writes...Quote: Or disableWeapon()?
This is the way I'd go.
You specify that you don't want players to be able to use their primary weapons - are you implying that people can still use grenades and their secondary weapon? If so you'll need to go for a similar approach to COD4GRC (which is currently for single player).
If not you can use disableWeapon() - something a bit like this
Code: checkTrig()
{
trigger = getent("weapontrigger","targetname");
while(1)
{
trigger waittill("trigger",player);
if(!isDefined(player.handlingTrigger))
{
player thread handleTrig(trigger);
}
}
}
handleTrig(trigger)
{
self endon("disconnect");
self.handlingTrigger = true;
while(isalive(self) && self istouching(trigger))
{
self disableWeapon();
wait 0.1;
}
self.handlingTrigger = undefined;
self enableWeapon();
} |
 |
|
|
| lin3000 |
General Member Since: Jan 5, 2008 Posts: 19 Last: Dec 4, 2009 [view latest posts] |
|
|
|
|
| Sevenz |
 |
General Member Since: Apr 24, 2006 Posts: 2390 Last: May 10, 2013 [view latest posts] |
|
|
|
|
| lin3000 |
General Member Since: Jan 5, 2008 Posts: 19 Last: Dec 4, 2009 [view latest posts] |
|
|
|
Category: CoD2 Scripting Posted: Friday, Oct. 16, 2009 10:51 am |
 |
Pedro699 writes...Quote: DemonSeed writes...Quote: Or disableWeapon()?
This is the way I'd go.
You specify that you don't want players to be able to use their primary weapons - are you implying that people can still use grenades and their secondary weapon? If so you'll need to go for a similar approach to COD4GRC (which is currently for single player).
If not you can use disableWeapon() - something a bit like this
Code: checkTrig()
{
trigger = getent("weapontrigger","targetname");
while(1)
{
trigger waittill("trigger",player);
if(!isDefined(player.handlingTrigger))
{
player thread handleTrig(trigger);
}
}
}
handleTrig(trigger)
{
self endon("disconnect");
self.handlingTrigger = true;
while(isalive(self) && self istouching(trigger))
{
self disableWeapon();
wait 0.1;
}
self.handlingTrigger = undefined;
self enableWeapon();
}
Thanks for your script but it will disable all your weapons.
I only want to disable the primary weapon.
Can you change the script so players can only use secondary weapon and nades? |
 |
|
|
| DemonSeed |
General Member Since: Apr 30, 2009 Posts: 1362 Last: Feb 19, 2018 [view latest posts] |
|
|
 |
|
Category: CoD2 Scripting Posted: Friday, Oct. 16, 2009 01:16 pm |
 |
Unfortunately, the disableWeapon() function cannt discriminate between primary or secondary. The only thing you could do is get them to drop their primary weapon:
Code: checkTrig()
{
trigger = getent( "weapontrigger","targetname" );
for( ;; )
{
trigger waittill( "trigger", player );
if( isPlayer( player ) )
{
while( isalive( player ) && player istouching( trigger ) )
{
current = self getCurrentWeapon();
weapon1 = self getweaponslotweapon( "primary" );
if( current == weapon1 )
self dropItem( current );
wait 1;
}
}
}
}
They will not be able to pick up their primary weapon while in the trigger radius. |
 |
|
|
| Pedro699 |
General Member Since: Jun 19, 2006 Posts: 781 Last: Dec 18, 2010 [view latest posts] |
|
|
|
Category: CoD2 Scripting Posted: Friday, Oct. 16, 2009 05:14 pm |
 |
Your code it not completely reliable Demon as it relies on the primary weapon being in the primary slot (and for that matter the player only having one primary weapon).
CoD:WaW has functions for finding out if a weapon is a primary - I don't know if CoD2 has similar functions - but you can write your own functions do this
Combinations of take / give weapon would be the best method but are more involved as they require weapon data to be stored. This is what I came up with. I tested it briefly and seems to work fine.
Code: checkTrig()
{
trigger = getent("weapontrigger","targetname");
while(1)
{
trigger waittill("trigger",player);
if(!isDefined(player.handlingTrigger))
{
player thread handleTrig(trigger);
}
}
}
handleTrig(trigger)
{
self endon("disconnect");
self.handlingTrigger = true;
self takePrimariesandStore();
while(isalive(self) && self istouching(trigger))
{
self takePrimariesandStore();
wait 0.2;
}
self giveBackPrimaries();
self.handlingTrigger = undefined;
}
takePrimariesandStore()
{
if(!isDefined(self.weaponList))
self.weaponList = [];
weapons = self getWeaponList();
tempW = [];
secondary = undefined;
for(i=0; i < weapons.size; i++)
{
iprintln(weapons[i]);
if(isPrimary(weapons[i]))
{
tempW[tempW.size] = weapons[i];
self takeweapon(weapons[i]);
}
else
secondary = weapons[i];
}
if(isDefined(secondary))
self switchtoweapon(secondary);
if(tempW.size > 0)
self.weaponList = tempW;
}
giveBackPrimaries()
{
if(self.weaponList.size == 0)
return;
weaponlist = self getWeaponList();
for(i=0; (i + weaponList.size) < 2; i++)
{
self giveWeapon(self.weaponList[i]);
}
self.weaponList = [];
}
getWeaponList()
{
weaponList = [];
weap = self getweaponslotweapon("primary");
if(weap != "none") weaponList[weaponList.size] = weap;
weap = self getweaponslotweapon("primaryb");
if(weap != "none") weaponList[weaponList.size] = weap;
return weaponList;
}
isPrimary(weapon)
{
switch(weapon)
{
case "colt_mp":
case "luger_mp":
case "tt30_mp":
case "webley_mp":
case "none":
return false;
default:
return true;
}
}
edited on Oct. 16, 2009 01:14 pm by Pedro699 |
 |
|
|
|
|
mp_TempleCall of Duty: Mods: Multiplayer (624.12Kb)
|