//-- \subsection{fireWeaponAtLoc(x, y, weapon_name)}
//-- Fires a weapon at the given coordinates (3.2.4+ only).
static QScriptValue js_fireWeaponAtLoc(QScriptContext *context, QScriptEngine *)
{
int xLocation = context->argument(0).toInt32();
int yLocation = context->argument(1).toInt32();
QScriptValue weaponValue = context->argument(2);
int weapon = getCompFromName(COMP_WEAPON, weaponValue.toString());
SCRIPT_ASSERT(context, weapon > 0, "No such weapon: %s", weaponValue.toString().toUtf8().constData());
Vector3i target;
target.x = xLocation;
target.y = yLocation;
target.z = map_Height(xLocation, yLocation);
WEAPON sWeapon;
sWeapon.nStat = weapon;
// send the projectile using the selectedPlayer so that it can always be seen
proj_SendProjectile(&sWeapon, nullptr, selectedPlayer, target, nullptr, true, 0);
return QScriptValue();
}
Works fine on the first fire. Unfortunately after that a small, immobile projectile texture shows up where it is about to hit and then it fires with a delay. That issue only happens in campaign.
Last edited by Berserk Cyborg on 21 Sep 2017, 19:20, edited 1 time in total.
Berserk Cyborg wrote:fireWeaponAtLoc(40, 40, "LasSat"). Otherwise that would be passing in a, likely undefined, variable.
Thanks i forgot the quotes on the weapon
it did work but nothing happened to my command center though
here's the coordinates For Sk-rush ""The First one not the second""
x:20 y:73
I played as player 3 but then nothing happened to my command center
WZ2120&Nukemod Duo
http://forums.wz2100.net/viewtopic.php?f=49&t=13527
donate the project!
http://donations.wz2100.net/
It uses world coordinates, not tile coordinates (use the ones inside the brackets [] in debug mode). What you were firing at is effectively the NW corner of the map. fireWeaponAtLoc(2200, 2200, "LasSat") would destroy part of player 0's base on the Rush map.