136 lines
3.8 KiB
Plaintext
136 lines
3.8 KiB
Plaintext
// :CATEGORY:Weapon
|
|
// :NAME:HammerThrower
|
|
// :AUTHOR:Anonymous
|
|
// :CREATED:2013-09-06
|
|
// :EDITED:2013-09-18 15:38:54
|
|
// :ID:372
|
|
// :NUM:516
|
|
// :REV:1
|
|
// :WORLD:Second Life
|
|
// :DESCRIPTION:
|
|
// the HUD
|
|
// :CODE:
|
|
|
|
///Putting it together:
|
|
//put the Giant Hammer script in a hammer shaped object, maybe adjust params depending on hammer size, centre of rotation etc.
|
|
//put the Hammer in the Bullet object (any prim will do, but I use a tiny invisible one!) and add the Bullet script
|
|
//put the Bullet (now containing the Hammer) in the HUD object
|
|
|
|
// When you wear the HUD it will tell you what to do.
|
|
|
|
|
|
// Project: Hammer thrower
|
|
// Script: Hammer launcher
|
|
// Get avatar name, or target all.
|
|
// Rez objects giving them target avatar name
|
|
// add channel command
|
|
|
|
//Simple OpenSource Licence (I am trusting you to be nice)
|
|
//1. PLEASE SEND ME UPDATES TO THE CODE
|
|
//2. You can do what you want with this code and object including selling it in other objects and so on.
|
|
//You can sell it in closed source objects if you must, but please try to send any updates or
|
|
//improvements back to me for possible inclusion in the main trunk of development.
|
|
//3. You must always leave these instructions in any object created; notecard written; posting to
|
|
//any electronic medium such as Forum, Email &c. of the source code & generally be nice (as
|
|
//already requested!)
|
|
//4. You must not claim that anyone apart from sparti Carroll wrote the original version of this software.
|
|
//5. You can add and edit things below =THE LINE= but please try to keep it all making sense.
|
|
//Thank you for your co-operation
|
|
//sparti Carroll
|
|
|
|
|
|
key k_owner;
|
|
|
|
integer channel_bullet = 540123;
|
|
integer channel_hammer = 477591;
|
|
integer channel_owner = 324;
|
|
|
|
integer channel_count = 1;
|
|
|
|
string lookingfor;
|
|
|
|
integer HUDcenter2 = 31;
|
|
integer HUDtopright = 32;
|
|
integer HUDtop = 33;
|
|
integer HUDtopleft = 34;
|
|
integer HUDcenter = 35;
|
|
integer HUDbottomleft = 36;
|
|
integer HUDbottom = 37;
|
|
integer HUDbottomright = 38;
|
|
|
|
integer HUD_default = HUDtopleft;
|
|
|
|
|
|
set_hudpos(integer whereami) {
|
|
vector my_size = llGetScale();
|
|
vector v_atpos;
|
|
if (whereami == HUDbottomleft) v_atpos = <0,-my_size.y/2,my_size.z/2>;
|
|
else if (whereami == HUDtopleft) v_atpos = <0,-my_size.y/2,-my_size.z/2>;
|
|
else if (whereami == HUDbottom || whereami == HUDbottomright) v_atpos = <0,0,my_size.z/2>;
|
|
else if (whereami == HUDtop || whereami == HUDtopright) v_atpos = <0,0,-my_size.z/2>;
|
|
else if (whereami == HUDcenter || whereami == HUDcenter2) v_atpos = <0,0,0>;
|
|
llSetPos(v_atpos);
|
|
}
|
|
|
|
reset() {
|
|
k_owner = llGetOwner();
|
|
llOwnerSay("Activated on channel " + (string)channel_owner);
|
|
integer whereami = llGetAttached();
|
|
if (whereami == 0) {
|
|
llOwnerSay("Please wear on the HUD");
|
|
} else {
|
|
set_hudpos(whereami);
|
|
}
|
|
llListen(channel_owner,"",k_owner,"");
|
|
}
|
|
|
|
attack(string avname) {
|
|
llRezObject("Bullet",llGetPos() + <0,0,5>,<0,0,0>,<0,0,0,0>,channel_count);
|
|
llSleep(.5); // needs time to rez an object and establish a listener
|
|
llSay(channel_bullet + channel_count,"attack^" + avname);
|
|
channel_count++;
|
|
llOwnerSay("Now hammering " + avname);
|
|
}
|
|
|
|
|
|
default
|
|
{
|
|
on_rez(integer start_param) {
|
|
reset();
|
|
}
|
|
|
|
state_entry() {
|
|
reset();
|
|
}
|
|
|
|
listen(integer channel,string name,key id,string message) {
|
|
if (id == k_owner) {
|
|
lookingfor = llToLower(message);
|
|
llSensor("",NULL_KEY,AGENT,100,PI);
|
|
}
|
|
}
|
|
|
|
sensor(integer num_detected) {
|
|
integer k;
|
|
//nteger foundpos;
|
|
for (k=0;k < num_detected; k++)
|
|
{
|
|
string name = llKey2Name(llDetectedKey(k)) ;
|
|
if (name == lookingfor)
|
|
{
|
|
attack(name);
|
|
}
|
|
}
|
|
}
|
|
|
|
no_sensor() {
|
|
llOwnerSay("No matching AV names");
|
|
}
|
|
|
|
attach(key id) {
|
|
integer whereami = llGetAttached();
|
|
set_hudpos(whereami);
|
|
}
|
|
}
|
|
|