PDA

View Full Version : setweaponfiretime etc



Ni3ls
13th November 2015, 18:39
Hi all,

Thanks to all of you for helping me with the libcod problem.
Next problem is that I cant get the function of Mitch working.
This is added to _weapons.gsc

loadWeaponInfo(i, array)
{
array.id = i;
array.dmg = getweapondamage(i); // store baseline
array.meleedmg = getweaponmeleedamage(i); // in case you want to restore old value

if(i >= 64) // no viewmodels after 64th weapon
array.bugged = 1;
}

getWeaponArray(weapon)
{
if(isDefined(level.weapons[weapon]) && isDefined(level.weapons[weapon].id))
return level.weapons[weapon];
else if(isDefined(level.otherweapons[weapon]) && isDefined(level.otherweapons[weapon].id))
return level.otherweapons[weapon];
else
return undefined;
}

updateWepDamage(weapon, dmg)
{
array = getWeaponArray(weapon);
if(isDefined(array))
array.dmg = dmg;
}

updateWepMeleeDamage(weapon, dmg)
{
array = getWeaponArray(weapon);
if(isDefined(array))
array.meleedmg = dmg;
}

getWeaponId(weapon)
{
if(isDefined(level.weapons[weapon]) && isDefined(level.weapons[weapon].id))
return level.weapons[weapon].id;
else if(isDefined(level.otherweapons[weapon]) && isDefined(level.otherweapons[weapon].id))
return level.otherweapons[weapon].id;
else
return -1;
}

WeaponMaxAmmo(weapon)
{
id = getWeaponId(weapon);
if(id == -1)
return 0;

return getweaponmaxammo(id);
}

WeaponDamage(weapon)
{
id = getWeaponId(weapon);
if(id == -1)
return 0;

return getweapondamage(id);
}

WeaponMeleeDamage(weapon)
{
id = getWeaponId(weapon);
if(id == -1)
return 0;

return getweaponmeleedamage(id);
}

setWepDamage(weapon, dmg, isdefault)
{
id = getWeaponId(weapon);
if(id == -1)
return 0;

if(isDefined(isdefault) && isdefault)
updateWepDamage(weapon, dmg);

return setweapondamage(id, dmg);
}

setWepMeleeDamage(weapon, dmg, isdefault)
{
id = getWeaponId(weapon);
if(id == -1)
return 0;

if(isDefined(isdefault) && isdefault)
updateWepMeleeDamage(weapon, dmg);

return setweaponmeleedamage(id, dmg);
}

WeaponFireTime(weapon)
{
id = getWeaponId(weapon);
if(id == -1)
return 0;

return getweaponfiretime(id);
}

setWepFireTime(weapon, time)
{
id = getWeaponId(weapon);
if(id == -1)
return 0;

return setweaponfiretime(id, time);
}

and in callback

case "firetime":
if(args.size >= 3) // say !firetime time
{
firetime = Int(args[2]);
maps\mp\gametypes\_weapons::setWepFireTime(self getCurrentWeapon(), firetime);
}
else
{
firetime = maps\mp\gametypes\_weapons::WeaponFireTime(self getCurrentWeapon());
self thread tellMessage("FireTime: " + firetime);
}
return;
It returns 0 for every weapon. There is no error.
When i do !firetime 2 and then just write !firetime, it will still return 0.
Must I load a script somewhere?

voron00
13th November 2015, 19:13
I've been playing with those a while ago and if i remember correctly you have to loadWeaponInfo before using those functions
Try something like this:



loadWeaponFunctions()
{
setdefaultweapon("mp44_mp"); // changes defaultweapon_mp to mp44_mp

loadedweapons = getloadedweapons();

for(i=0;i<loadedweapons.size;i++)
{
weaponname = loadedweapons[i]; // i = weapon index
if(isDefined(level.weapons[weaponname]))
loadWeaponInfo(i, level.weapons[weaponname]);
}
}

Ni3ls
13th November 2015, 19:19
And where to load it?

voron00
13th November 2015, 19:20
And where to load it?
From somewhere...e.g weapons.gsc or yourgametype.gsc ..but it must be called after level.weapons are initialized

Ni3ls
13th November 2015, 19:49
Thanks!!!!!!