inRange | |
---|---|
Prototype | function inRange( pCharacter, objInRange, objType ) |
When triggered | objInRange comes into visible range of pCharacter. pCharacter's script is activated |
Notes | objType == 0 indicates objInRange is a character objType == 1 indicates objInRange is an item |
Purpose | Useful for when you want to do something when a certain thing comes into range. You could yell out guards when a murderer comes into range, for instance, if you're in a guarded region. |
Example of Usage | function inRange( pCharacter, objInRange, objType ) { if( objType == 1 ) // An item came into range { pCharacter.DoStaticEffect( 0x376A, 9, 0, ); // Make some sparkles! if( objInRange.id == 0x1416 ) // Ooh, it's a purty piece of armour { pCharacter.EmoteMessage( "*ooooooooooooo*" ); } } } |
onAISliver | |
---|---|
Prototype | function onAISliver( npcChar ) |
When triggered | Every AI loop, during their AI slice |
Notes | |
Purpose | Great customization of AI on a per NPC basis. |
Example of Usage | function onAISliver( tChar ) { tChar.DoAction( 111 ); } //The NPC tChar performs action 111 (dance-animation in 3D UO clients) //on every NPC ai check, essentially looping the animation =) |
onAttack | |
---|---|
Prototype | function onAttack( pAttacker, pDefender ) |
When triggered | When pAttacker attacks pDefender (in each "round" of combat) |
Notes | pAttacker's script is activated, and pDefender's onDefense event is fired! |
Purpose | Flesh out the attacking code. |
Example of Usage | function onAttack( pAttacker, pDefender ) |
onBuy | |
---|---|
Prototype | function onBuy( pSock, Vendor ) |
When triggered | Runs on NPC vendor before tradegump opens |
Notes | Can be used to completely block access to a vendor based on criterias of one's choosing. |
Purpose | To allow more control over who can access NPC vendors. |
Example of Usage | function onBuy( pSock, Vendor ) { // If player does not belong to the undead race, vendor wants nothing to do with him! if( pSock.currentChar.raceID != 11 ) { Vendor.TextMessage( "Sorry, I don't sell to the likes of you!" ); return false; } else return true; } |
onBuyFromVendor | |
---|---|
Prototype | function onBuyFromVendor( pSock, Vendor, iBought ) |
When triggered | Runs on item after player verifies purchase, but before purchase has gone through |
Notes | Return false will block the sale from going through, without closing the menu. Return true will make the purchase go through as normal. |
Purpose | To allow restricting the purchase of specific items |
Example of Usage | function onBuyFromVendor( pSock, Vendor, iBought ) { var pUser = pSock.currentChar; pUser.TextMessage( "I am buying an item ("+iBought.name+") from a vendor!" ); Vendor.TextMessage( "I am selling an item!" ); return true; } |
onBoughtFromVendor | |
---|---|
Prototype | function onBoughtFromVendor( pSock, Vendor, iBought ) |
When triggered | Runs on item after purchase has gone through and item has reached player's backpack. |
Notes | Used, amongst other things, for automatically turning pet-statues bought from animal-trainers into actual pets |
Purpose | To allow manipulating the item that has been bought, immediately after it reaches the player's backpack. |
Example of Usage | function onBoughtFromVendor( pSock, Vendor, iBought ) { var pUser = pSock.currentChar; pUser.TextMessage( "I bought an item ("+iBought.name+") from a vendor!" ); Vendor.TextMessage( "I just sold an item to some random dude!" ); return true; } |
onCallback | |
---|---|
Prototype | function onCallback#( socket, target ) |
When triggered | Triggered for player who selects a target initiated from a CustomTarget method |
Notes | # behind onCallback function-name is linked to the # used in the CustomTarget method that initiated the targeting cursor. |
Purpose | To handle callbacks from targeting cursors |
Example of Usage | function CommandRegistration() { RegisterCommand( "disconnect", 2, true ); } function command_DISCONNECT( socket, cmdString ) { var targMsg = GetDictionaryEntry( 196, socket.Language ); socket.CustomTarget( 0, targMsg ); } function onCallback0( socket, ourObj ) { if( !socket.GetWord( 1 ) && ourObj.isChar && ourObj.online ) { var targSock = ourObj.socket; if( targSock && targSock != socket ) { socket.SysMessage( GetDictionaryEntry( 1029, socket.Language ) ); targSock.SysMessage( GetDictionaryEntry( 1030, targSock.Language ) ); targSock.Disconnect(); } } } |
onCharDoubleClick | |
---|---|
Prototype | function onCharDoubleClick( pUser, targChar ) |
When triggered | When pUser double-clicks targChar. Replaces any code behaviour that may exist |
Notes | targChar's script is activated |
Purpose | To allow greater customization of doubleclicking on characters. |
Example of Usage | function onCharDoubleClick( pUser, targChar ) { targChar.TextMessage( "If you think you'll be allowed to see my paperdoll, think again!" ); return false; } |
onClick | |
---|---|
Prototype | function onClick( pUser, iUsed ) |
When triggered | When pUser single-clicks iUsed. Replaces any code behaviour that may exist |
Notes | iUsed's script is activated |
Purpose | To allow greater customization on clicking on items. |
Example of Usage | function onClick( pUser, iUsed ) { pUser.SysMessage("You have clicked on: "+iUsed.name ); } |
onCollide | |
---|---|
Prototype | function onCollide( targSock, pColliding, objCollidedWith ) |
When triggered | When pColliding collides with objCollidedWith (stepped on basically) |
Notes | objCollidedWith is only an item currently. targSock is -1 if pColliding is an NPC |
Purpose | Replace of collision based triggers, increase teleporter abilities |
Example of Usage | function onCollide( trgSock, srcChar, trgItem ) { srcChar.Teleport( srcChar.x + 5, srcChar.y +5, srcChar.z, 0 ); srcChar.EmoteMessage( "*Eegads, I am teleported!*" ); //srcChar.DoStaticEffect( 0x376A, 9, 0, 0 ); } |
onCombatStart | |
---|---|
Prototype | function onCombatStart( pAttacker, pDefender ) |
When triggered | When pAttacker attacks someone, pAttacker's script is triggered. |
Notes | Return false to override existing hardcoded combat completely, return true to let hardcoded combat run it's course |
Purpose | To allow overriding combat functionality |
Example of Usage | function onCombatStart( pAttacker, pDefender ) { pAttacker.TextMessage( "I'm attacking!" ); pDefender.TextMessage( "I'm being attacked!" ); return true; } |
onCombatEnd | |
---|---|
Prototype | function onCombatEnd( currChar, targChar ) |
When triggered | When either currChar or targChar dies or goes out of range, the script is fired |
Notes | return false to override what happens after combat ends, return true to allow hardcoded implementation to run |
Purpose | Allow to override what happens when combat between two characters ends |
Example of Usage | function onCombatEnd( pDefender, pAttacker ) { if( currChar.health != 0 ) currChar.TextMessage( "Whee! I survived combat!" ); if( targChar.health != 0 ) targChar.TextMessage( "Yay! I survived combat!" ); return true; } |
onCombatDamageCalc | |
---|---|
Prototype | function onCombatDamageCalc( attacker, defender, getFightSkill ) |
When triggered | Everytime combat damage calculation occurs this event is fired |
Notes | Return a damage value to override the combat calculation of the engine, or a negative value to use the engine |
Purpose | Allow to override the combat damage calculation |
Example of Usage | function onCombatDamageCalc( pAttacker, pDefender, fightSkill ) { var baseDamage = pAttacker.attack; var hitLoc = CalculateHitLoc(); if( baseDamage == -1 ) // No damage if weapon breaks return 0; var damage = ApplyDamageBonuses( 1, pAttacker, pDefender, fightSkill, hitLoc, baseDamage ); if( damage < 1 ) return 0; damage = ApplyDefenseModifiers( 1, pAttacker, pDefender, fightSkill, hitLoc, damage, true); if( damage <= 0 ) damage = RandomNumber( 0, 4 ); if( !pDefender.npc ) damage /= 2; return damage; } |
onCreateDFN | |
---|---|
Prototype | function onCreateDFN( objMade, objType ) |
When triggered | When an item or char is created. Note that for PCs, this is triggered when they first enter the world. |
Notes | objType == 0 indicates an item objType == 1 indicates a character |
Purpose | Used for customization of players at creation, or tinkering items/chars when they're made. |
Example of Usage | function onCreate( objMade, objType ) { if( objType == 1 ) objMade.SysMessage( "Welcome to Our Unique World(TM)!" ); } // When this script is setup as "global id" (0) in JSE_FILEASSOCIATIONS.SCP, // it will send the sysmessage to all NEW characters that enters the world. |
onCreateTile | |
---|---|
Prototype | function onCreateTile( objMade, objType ) |
When triggered | When a non-DFN based item is created. |
Notes | objType == 0 indicates an item objType == 1 indicates a character |
Purpose | Used for customization of non-DFN based items at creation. |
Example of Usage | function onCreate( objMade, objType ) { objMade.name = "A renamed item"; } // Only scripts using script-id 0 or ones assigned through harditems.dfn will work with this event. |
onDamage | |
---|---|
Prototype | function onDamage( damaged, attacker, damageValue ); |
When triggered | When the char "damaged" gets damaged |
Notes | The attacker can be a char or NULL |
Purpose | Custom reactions to damage. |
Example of Usage | function onDamage( damaged, attacker, damageValue ) { damaged.TextMessage( "Ouch, those "+damageValue+" points of damage hurt." ); } |
onDeath | |
---|---|
Prototype | function onDeath( pDead ); |
When triggered | When the player or NPC pDead dies |
Notes | |
Purpose | Custom death sequence. Can do things like an explosion anim and what not here, for impact's sake. |
Example of Usage | function onDeath( pDead ) { pDead.Teleport( 1000, 1000, 0 ); } |
onDeathBlow | |
---|---|
Prototype | function onDeathBlow( pKilled, pKiller ); |
When triggered | When a killing blow has been made |
Notes | |
Purpose | Custom reactions after a killing blow has been made |
Example of Usage | function onDeathBlow( pDead, pKiller ) { pDead.health = pDead.health + 10; pDead.TextMessage( "But I'm not dead!" ); return true; } |
onDecay | |
---|---|
Prototype | function onDecay( iDecaying ) |
When triggered | When iDecaying decays |
Notes | CURRENTLY BROKEN!!! |
Purpose | |
Example of Usage | function onDecay( iDecaying ) { iDecaying.StaticEffect( 0x376A, 9, 6 ); } |
onDefense | |
---|---|
Prototype | function onDefense( pAttacker, pDefender ) |
When triggered | When pAttacker attacks pDefender (in each "round" of combat) |
Notes | pDefender's script fires, pAttacker's onAttack event is also fired |
Purpose | Flesh out the attacking code. |
Example of Usage | function onDefense( pAttacker, pDefender ) |
onDelete | |
---|---|
Prototype | function onDelete( objDestroyed, objType ) |
When triggered | When an item or character is deleted |
Notes | objType == 0 indicates an item objType == 1 indicates a character |
Purpose | |
Example of Usage | function onDelete( objDestroyed, objType ) { if( objType == 0 ) ConsoleMessage( objDestroyed.name+" has been deleted from the world." ); } |
onDispel | |
---|---|
Prototype | function onDispel( objDispelled, objType ) |
When triggered | When objDispelled is dispelled. objDispelled's script is activated. |
Notes | objType == 0 indicates a character objType == 1 indicates an item |
Purpose | |
Example of Usage | function onDispel( objDispelled, objType ) { ConsoleMessage( objDispelled.name+" has been dispelled." ); } |
onDrop | |
---|---|
Prototype | function onDrop( iDropped, pDropper ) |
When triggered | When pDropper drops iDropped. |
Notes | iDropped's script is activated. |
Purpose | Allowing control over dropping items from cursor |
Example of Usage | function onDrop( iDropped, pDropper ) { var pSock = pDropper.socket; //Lets fetch the serial of the target-location var temp1 = pSock.GetByte( 10 ); var temp2 = pSock.GetByte( 11 ); var temp3 = pSock.GetByte( 12 ); var temp4 = pSock.GetByte( 13 ); //Check the value of Byte 10 to determine if the target is ground, character or container if( temp1 == 0 ) //Target is a character { var targetChar = CalcCharFromSer( temp1, temp2, temp3, temp4 ) pDropper.TextMessage( "I've dropped this item on a character named "+targetChar.name+", let's bounce it back." ); return false; } if( temp1 == 0xFF ) //Target is ground or another item { pDropper.TextMessage( "I've dropped this item on the ground or on another item." ); return; } if( temp1 <= 0x40 ) //Target is a container { var targetItem = CalcItemFromItem( temp1, temp2, temp3, temp4 ); pDropper.TextMessage( "I've dropped this item in/on a container with ID "+targetItem.id+"." ); return; } } |
onDropItemOnItem | |
---|---|
Prototype | function onDropItemOnItem( iDropped, cDropper, iDroppedOn ) |
When triggered | When iDropped is dropped by cDropper on iDroppedOn |
Notes | First iDropped's script is activated, and if it doesn't bounce, then same script is activated for iDroppedOn Return Value Table: 0 == bounce 1 == don't bounce, use code 2 == don't bounce, don't use code |
Purpose | |
Example of Usage | function onDropItemOnItem( iDropped, cDropper, iDroppedOn ) { if( iDropped.id == 0x1f14 ) //If the item being dropped is a recall rune { if( iDroppedOn.id == 0x0efa ) //If the item being dropped on is a spellbook { cDropper.TextMessage("I am dropping "+iDropped.name+" on a "+iDroppedOn.name ); } } else { cDropper.TextMessage( "Generic error message!" ); return 0; } } |
onDropItemOnNpc | |
---|---|
Prototype | function onDropItemOnNpc( pDropper, pDroppedOn, iDropped ) |
When triggered | When iDropped is dropped on pDroppedOn |
Notes | First iDropped's script is activated, and if it doesn't bounce, then same script is activated for pDroppedOn Return Value Table: 0 == bounce 1 == don't bounce, use code 2 == don't bounce, don't use code |
Purpose | |
Example of Usage | function onDropItemOnNpc( pDropper, pDroppedOn, iDropped ) { pDropper.TextMessage("Here, I offer you my this object as a gift of friendship."); pDroppedOn.TextMessage("Fudge off!"); iDropped.colour =13; return 0; } |
onEnterRegion | |
---|---|
Prototype | function onEnterRegion( pEntering, regionEntered ) |
When triggered | When pEntering enters regionEntered |
Notes | Region-scripts can be attached to regions through regions.dfn, using the script=# tag |
Purpose | To allow custom reactions when players enter regions |
Example of Usage | function onEnterRegion( pEntering, regionEntered ) { if( pEntering.raceID != 11 ) { //sound the alarm! non-undead intruder to region //spawn undead guards } } |
onEntrance | |
---|---|
Prototype | function onEntrance( iEntered, objEntering, objType ) |
When triggered | When objEntering enters the multi object iEntered |
Notes | objType == 0 indicates objEntering is a character objType == 1 indicates objEntering is an item iEntered's script is activated |
Purpose | |
Example of Usage | function onEntrance( iEntered, objEntering, objType ) { if( objType == 0 ) objEntering.SysMessage("You have entered "+iEntered.name); } |
onEquip | |
---|---|
Prototype | function onEquip( pEquipper, iEquipped ) |
When triggered | When pEquipper equips iEquipped |
Notes | iEquipped's script is activated |
Purpose | |
Example of Usage | function onEquip( pEquipper, iEquipped ) { pEquipper.StaticEffect( 0x376A, 9, 6 ); } |
onFall | |
---|---|
Prototype | function onFall( pFall, fallDistance ) |
When triggered | When pFall falls fallDistance |
Notes | pFall can be either an npc or pc, will only trigger if fallDistance is over 20, so it does not trigger whenever a character walks down steps/off small ledges/down hills, etc. |
Purpose | |
Example of Usage | function onFall( pFall, fallDistance ) { if( fallDistance > 20 ) pFall.SysMessage("Yikes! That was a long fall!"); } |
onFlagChange | |
---|---|
Prototype | function onFlagChange( pChanging, newStatus, oldStatus ); |
When triggered | When a player's status changes. IE innocent -> criminal, criminal->murderer, and so on. |
Notes | May not fire instantly when the action is made. However, won't be long after change occurs will it be visible. |
Purpose | |
Example of Usage |
onGumpInput | |
---|---|
Prototype | |
When triggered | |
Notes | |
Purpose | |
Example of Usage |
onGumpPress | |
---|---|
Prototype | function onGumpPress( pSock, pButton, gumpData ) |
When triggered | When a player presses a button in a Gump. |
Notes | pButton is the button-ids for normal gump-buttons, while gumpData handles radiobutton-ids, checkbox-ids, and text-entry-ids(and the text-entries). |
Purpose | |
Example of Usage | function onGumpPress( pSock, pButton, gumpData ) { var pUser = pSock.currentChar; switch(pButton) { case 0: // abort and do nothing break; case 1: var Text1 = gumpData.getEdit(0); pUser.SysMessage( "The first TextEntry was: "+Text1 ); var Text2 = gumpData.getEdit(1); pUser.SysMessage( "The second TextEntry was: "+Text2 ) var OtherButton = gumpData.getButton(0); switch(RadioButton) { case 0: pUser.SysMessage( "You selected RadioButton number: "+OtherButton ); pUser.DoAction( 15 ); break; case 1: pUser.SysMessage( "You selected RadioButton number: "+OtherButton ); pUser.DoAction( 11 ); break; case 2: pUser.SysMessage( "The Checkbox with ID "+OtherButton+" was checked." ); pUser.DoAction( 18 ); break; } break; } } |
onHungerChange | |
---|---|
Prototype | function onHungerChange( pChanging, newStatus ); |
When triggered | When a player's hunger level changes goes down. |
Notes | If overridden, the normal hunger messages are not displayed. |
Purpose | To allow customization of behaviour when a character's hunger level changes. Could be used for wilding of pets, or for changing AI of monsters. |
Example of Usage | function onHungerChange( pChanging, newStatus ) |
onIterate | |
---|---|
Prototype | function onIterate( object ) |
When triggered | On every object our iterator comes across. |
Notes | if return value from script is true, it continues on running the loop if return value is false, then the loop is halted |
Purpose | To allow JS to loop through all world objects. |
Example of Usage | function doStuff( socket, pUser ) { socket.SysMessage( "Killing all NPCs" ); var numKilled = IterateOver( "CHARACTER" ); socket.SysMessage( "Killed " + NumToString( numKilled ) + " NPCs " ); } function onIterate( charCheck ) { if( !charCheck ) return false; if( charCheck.npc ) charCheck.Kill(); return true; } |
onLeaveRegion | |
---|---|
Prototype | function onLeaveRegion( pLeaver, regionLeft ) |
When triggered | When pLeaver leaves regionLeft |
Notes | Region-scripts can be attached to regions through the script=# tag in regions.dfn |
Purpose | To allow reactions when characters leave regions |
Example of Usage | function onLeaveRegion( pLeaver, regionLeft ) { //if pLeaver is not allowed to leave the region //turn him into a criminal and spawn guards to go after him! } |
onLeaving | |
---|---|
Prototype | function onLeaving( iLeft, objLeaving, objType ) |
When triggered | when objLeaving leaves the multi object iLeft |
Notes | objType == 0 indicates objLeaving is a character objType == 1 indicates objLeaving is an item iLeft's script is activated |
Purpose | |
Example of Usage | function onLeaving( iLeft, objLeaving, objType ) { if( objType == 0 ) objLeaving.SysMessage("You have left "+iLeft.name); } |
onLightChange | |
---|---|
Prototype | function onLightChange( object, lightlevel ) |
When triggered | Triggers for object (char or item) when lightlevel changes |
Notes | |
Purpose | |
Example of Usage | function onLightChange( object, lightlevel ) { (pseudo-code) if( object && object is item ) { if( object.id equals unlit lamppost ) { if( lightlevel > 10 ) //high light levels = dark, low light levels = bright { object.id = lit lamppost } } else if( object.id equals lit lamppost ) { if( lightlevel < 10 ) { object.id = unlit lamppost } } } } |
onLogin | |
---|---|
Prototype | function onLogin( sockPlayer, pChar ) |
When triggered | When pChar is logged in to the world |
Notes | sockPlayer is never -1 |
Purpose | To allow customization of what happens when a player logs in. Could pop up custom gumps, or do certain things (say everyone ALWAYS starts in one spot, no matter where they logged in. Diabloesque hall logins). |
Example of Usage | function onLogin( sockPlayer, pChar ) |
onLogout | |
---|---|
Prototype | function onLogout( sockPlayer, pChar ) |
When triggered | When pChar is logging out of the world |
Notes | sockPlayer is never -1 |
Purpose | To allow customization of what happens when a player logs out. Could pop up custom gumps, or do certain things to the character. |
Example of Usage | function onLogin( sockPlayer, pChar ) |
onPacketReceive | |
---|---|
Prototype | function onPacketReceive( socket, packetNum ) |
When triggered | When receiving a network packet |
Notes | OVERLOADPACKETS needs to be enabled in UOX.INI and each specific packet must be registered in jse_fileassociations.scp |
Purpose | Similar as "packet-hooks" in other emulators - allows overriding network packet-handling without modifying the server source-code |
Example of Usage | function onPacketReceive( socket, packetNum ) { //??? } |
onPickup | |
---|---|
Prototype | function onPickup( iPickedUp, pGrabber ) |
When triggered | When pGrabber picks up iPickedUp |
Notes | iPickedUp's script is activated. |
Purpose | |
Example of Usage | function onPickup( iPickedUp, pGrabber ) { var pSock = pGrabber.socket; //Check the value of pSock.pickupSpot to determine where the item was picked up from switch( pSock.pickupSpot ) { case 0: //nowhere pGrabber.TextMessage( "I picked up this item from... NOWHERE!" ); break; case 1: //ground pGrabber.TextMessage( "I picked up this item from the ground." ); break; case 2: //ownpack pGrabber.TextMessage( "I picked up this item from my own backpack." ); break; case 3: //otherpack pGrabber.TextMessage( "I picked up this item from a container." ); break; case 4: //paperdoll pGrabber.TextMessage( "I picked up this item from my paperdoll." ); break; case 5: //bank pGrabber.TextMessage( "I picked up this item from my bank box." ); break; default: pGrabber.TextMessage( "Error. Redo from Start." ); break; } //Use return false to disallow the pickup and bounce item //return false; } |
onResurrect | |
---|---|
Prototype | function onRessurect( pAlive ); |
When triggered | When a player pAlive is being resurrected |
Notes | Only applies to PCs |
Purpose | Control over what happens when a person comes to life once more |
Example of Usage | function onResurrect( pAlive ) { var ResAmount = pAlive.GetTag( "ResAmount" ); if( ResAmount && ResAmount < 5 ) { pAlive.SysMessage( "You still have some spirit left... have a good one!" ); return true; } else { pAlive.SysMessage( "You've resurrected too many times already! Have fun in the gray world!" ); return false; } } |
onScrollCast | |
---|---|
Prototype | function onScrollCast( pUser, spellID ) |
When triggered | When a spell is cast using a magic scroll |
Notes | Return value table: -2: use NORMAL non-JS casting -1: CANCEL normal spellcasting 0->inf: Spell delay in ms |
Purpose | To allow overriding spellcasting from magic scrolls |
Example of Usage | function onScrollCast( pUser, spellID ) { if( spellID == 18 ) { pUser.TextMessage( "I'm casting a fireball from a fireball-scroll!" ); return -1; } } |
onSell | |
---|---|
Prototype | function onSell( pSock, Vendor ) |
When triggered | Runs on vendor before tradegump opens. |
Notes | |
Purpose | To allow greater control over who can sell stuff to specific vendors. |
Example of Usage | function onSell( pSock, Vendor ) { // If player does not belong to the undead race, vendor wants nothing to do with him! if( pSock.currentChar.raceID != 11 ) { Vendor.TextMessage( "RIGHT! As if I would buy from you..." ); return false; } else return true; } |
onSellToVendor | |
---|---|
Prototype | function onSellToVendor( pSock, Vendor, iSold ) |
When triggered | Runs on item after player verifies sale, but before sale actually goes through. |
Notes | Return false will block the sale from going through, without closing the menu. Return true will make the sale go through as normal. |
Purpose | To allow greater control over the selling of specific items to vendors |
Example of Usage | function onSellToVendor( pSock, Vendor, iSold ) { var pUser = pSock.currentChar; pUser.TextMessage( "I am selling an item ("+iSold.name+") to a vendor!" ); Vendor.TextMessage( "I am buying an item!" ); return true; } |
onSoldToVendor | |
---|---|
Prototype | function onSoldToVendor( pSock, Vendor, iSold ) |
When triggered | Runs on item after it has already been sold to the NPC vendor and has reached the NPC vendor's "bought"-backpack |
Notes | If the item sold to the vendor stacks with items already there, the script will run on the entire stack, not just the one item specifically sold! |
Purpose | To allow greater control over what happens after specific items have been sold to NPCs. |
Example of Usage | function onSoldToVendor( pSock, Vendor, iSold ) { var pUser = pSock.currentChar; pUser.TextMessage( "I sold an item ("+iSold.name+") to a vendor!" ); Vendor.TextMessage( "I just bought an item from some random dude!" ); return true; } |
onSkill | |
---|---|
Prototype | function onSkill( objUsing, skillUsed, objType ) |
When triggered | when objUsing uses skill skillUsed. objUsing's script is activated. |
Notes | objType == 0 indicates objUsing is a character objType == 1 indicates objUsing is an item |
Purpose | Complements the use of current skill code. Fires before any existing usage code kicks in. |
Example of Usage | function onSkill( objUsing, skillUsed, objType ) { switch( skillUsed ) { case 0: objUsing.TextMessage("Time to do some alchemy work!"); break; case 1: objUsing.TextMessage("Now using Anatomy skill!"); break; case 2: objUsing.TextMessage("Animal Lore usage Enabled!"); break; //case etc.: } } |
onSkillChange | |
---|---|
Prototype | function onSkillChange( pPlayer, skill ) |
When triggered | This is fired if onSkillLoss isn't defined for skill loss, or onSkillGain isn't defined for skill gain. |
Notes | |
Purpose | Allows you to take action when your skill level changes |
Example of Usage | function onSkillChange( pPlayer, skill ) { pPlayer.TextMessage( pPlayer, "Oh dear, my skill's changed" ); } |
onSkillCheck | |
---|---|
Prototype | function onSkillCheck( pUser, skillID, lowSkill, highSkill ) |
When triggered | |
Notes | |
Purpose | |
Example of Usage |
onSkillGain | |
---|---|
Prototype | function onSkillGain( pPlayer, skill ) |
When triggered | when pPlayer gains in skill skill |
Notes | |
Purpose | For taking actions when you gain skill. |
Example of Usage | function onSkillGain( pPlayer, skill ) { pPlayer.TextMessage("Wheee! I've gained some skill!"); } |
onSkillLoss | |
---|---|
Prototype | function onSkillLoss( pPlayer, skill ) |
When triggered | When pPlayer loses in skill skill |
Notes | |
Purpose | For doing something when you lose skill |
Example of Usage | function onSkillLoss( pPlayer, skill ) { pPlayer.TextMessage( "Oh no, I've lost skill!" ); } |
onSkillGump | |
---|---|
Prototype | function onSkillGump( pUser ) |
When triggered | When pUser tries opening the skill-gump |
Notes | |
Purpose | For overriding the client's request to open the default skillgump |
Example of Usage | function onSkillGump( pUser ) { pUser.SysMessage( "Overriding default skillgump, opening custom one instead..." ); // Insert custom skillgump here! } |
onSpellGain | |
---|---|
Prototype | function onSpellGain( spellBook, spellNum ) |
When triggered | Triggered for spellbooks when spells are added to them |
Notes | |
Purpose | To allow overriding what happens when spells are added to spellbooks? |
Example of Usage |
onSpellLoss | |
---|---|
Prototype | function onSpellLoss( spellBook, spellNum ) |
When triggered | Triggered for spellbooks when spells are removed from them |
Notes | |
Purpose | To allow overriding what happens when spells are removed from spellbooks? |
Example of Usage |
onSnooped | |
---|---|
Prototype | function onSnooped( pSnooped, pSnooping, bSuccess ); |
When triggered | When pSnooped snoops into pSnooping's pack. |
Notes | If overridden, internal behaviour not executed. IE no calling for guards, no messages sent to snooper or snooped. bSuccess is true if successfully snooped, or false if not |
Purpose | To allow for behavioural change on snooping behaviour. |
Example of Usage | function onSnooped( pSnooped, pSnooping, bSuccess ) { pSnooped.TextMessage( "Oi! You! Stop snooping!" ); } |
onSpeech | |
---|---|
Prototype | function onSpeech( strSaid, pTalking, pTalkingTo ) |
When triggered | When pTalking says strSaid to pTalkingTo. pTalkingTo's script is activated |
Notes | |
Purpose | Greatly improve the speech handling capabilities |
Example of Usage | function onSpeech( strSaid, pTalking, pTalkingTo ) { pTalkingTo.TextMessage( strSaid ); } // This is a simple mimic NPC. Everything that someone says to it is quoted back verbatim |
onSpeechInput | |
---|---|
Prototype | function onSpeechInput(pUser, pItem, pSpeech, pSpeechID) |
When triggered | When the SpeechInput method is executed |
Notes | |
Purpose | To allow action after speech-input has been requested. |
Example of Usage | function onUseChecked( pUser, iUsed) { pUser.SysMessage( "What do you want to rename this item to:" ); pUser.SpeechInput(1, iUsed); } function onSpeechInput(pUser, iUsed, pSpeech, pSpeechID) { if(pSpeech == null || pSpeech == " ") { pUser.SysMessage( "You didn't type anything!" ); return; } switch(pSpeechID) { case 1: pUser.SysMessage( "You rename the item to: "+pSpeech ); iUsed.name = pSpeech; break; } } |
onSpellCast | |
---|---|
Prototype | function onSpellCast( pUser, spellID ) |
When triggered | When any spell is cast |
Notes | Return value table: -2: use NORMAL non-JS casting -1: CANCEL normal spellcasting 0->inf: Spell delay in ms |
Purpose | To allow overriding spellcasting on a spell-per-spell basis |
Example of Usage | function onSpellCast( pUser, spellID ) { if( spellID == 18 ) { pUser.CustomTarget( 0, "What do you want to target with your fireball?" ); return -1; } } |
onSpellTarget | |
---|---|
Prototype | function onSpellTarget( myTarget, pUser, spellID ) |
When triggered | When targeting something/someone with a spell |
Notes | myTarget can be both items and characters |
Purpose | |
Example of Usage | function onSpellTarget( myTarget, pUser, spellID ) { if( spellID == 18 ) { myTarget.TextMessage( "AAAAAAaaaaaaa! I've been hit by a fireball!" ); } } |
onSpellSuccess | |
---|---|
Prototype | function onSpellSuccess( pUser, spellID ) |
When triggered | When successfully castin a spell |
Notes | |
Purpose | |
Example of Usage | function onSpellSuccess( pUser, spellID ) { if( spellID == 18 ) { pUser.TextMessage( "Yes! I managed to cast a fireball!" ); } } |
onStatChange | |
---|---|
Prototype | function onStatChange( pPlayer, stat ) |
When triggered | If onStatLoss isn't defined, and stat went down, or if onStatGain isn't defined and stat went up |
Notes | |
Purpose | |
Example of Usage | function onStatChange( pPlayer, stat ) { pPlayer.TextMessage("Whee my stats changed!"); } |
onStatGain | |
---|---|
Prototype | function onStatGain( pPlayer, stat ) |
When triggered | When pPlayer gains in stat stat |
Notes | |
Purpose | For taking action when a person gains in a stat |
Example of Usage | function onStatGain( pPlayer, stat ) { pPlayer.TextMessage("Whee I gained some stat!"); } |
onStatLoss | |
---|---|
Prototype | function onStatLoss( pPlayer, stat ) |
When triggered | When pPlayer loses in stat stat |
Notes | |
Purpose | For taking action when a person loses in a stat |
Example of Usage | function onStatLoss( pPlayer, stat ) { pPlayer.TextMessage("Awww I lost some stats."); } |
onSteal | |
---|---|
Prototype | function onSteal( thief, objStolen ) |
When triggered | When objStolen is stolen, objStolen's script is activated |
Notes | Works, but gives a console error: ERROR: Chars[-1] referenced is invalid. Crash averted! |
Purpose | Specialization of stealing. |
Example of Usage | function onSteal( thief, objStolen ) { thief.SysMessage( "You attempt to steal the "+objStolen.name ); ConsoleMessage( objStolen.name+" has been attempted stolen!" ); } |
onStolenFrom | |
---|---|
Prototype | function onStolenFrom( pThief, pVictim, iStolen ); |
When triggered | When the player pThief steals the item iStolen from the character pVictim |
Notes | |
Purpose | To allow for response when items are stolen from a player. |
Example of Usage | function onStolenFrom( pThief, pVictim, iStolen ) |
onSwing | |
---|---|
Prototype | function onSwing( iSwung, pSwinging, pSwingAt ) |
When triggered | When pSwinging swings iSwung at pSwingAt. |
Notes | iSwung's script is activated |
Purpose | |
Example of Usage | function onSwing( iSwung, pSwinging, pSwingAt ) { pSwinging.TextMessage("Have at thee, knave!"); } |
onSystemSlice | |
---|---|
Prototype | |
When triggered | |
Notes | |
Purpose | |
Example of Usage |
onTalk | |
---|---|
Prototype | function onTalk( pTalking, strSaid ) |
When triggered | When pTalking says strSaid. pTalking's script is activated |
Notes | |
Purpose | Greatly improve the speech handling capabilities |
Example of Usage | function onTalk( myChar, mySpeech ) { if( mySpeech == "'dig") myChar.DoAction(11); else return true; } // This is a simple script that will make the character talking perform the digging animation upon saying "'dig". // (Note: 'DIG won't be displayed as speech, since script intercepts the text before it is spoken out loud) // If anything else is said, the script returns true so speech can proceed as normal. |
onTempChange | |
---|---|
Prototype | function onTempChange( object, temperature ) |
When triggered | Triggers for object (char/item) when temperature changes |
Notes | |
Purpose | To allow reactions for characters/items when temperature changes |
Example of Usage |
onTimer | |
---|---|
Prototype | function onTimer( tChar, timerID ) |
When triggered | When tempeffect 40 (StartTimer) duration has elapsed for timer timerID |
Notes | |
Purpose | To be used for custom timer information for characters. |
Example of Usage | function onTimer( tChar, timerID ) |
onTransfer | |
---|---|
Prototype | function onTransfer( iTransferred, pSrc, pTrg ) |
When triggered | When pSrc transfers iTransferred to pTrg |
Notes | iTransferred's script is activated CURRENTLY BROKEN!!! |
Purpose | |
Example of Usage | function onTransfer( iTransferred, pSrc, pTrg ) { pSrc.TextMessage("Whee I'm transferring this item to you, "+pTrg.name+"!"); pTrg.TextMessage("Thank you, "+pSrc.name+"!"); } |
onUnequip | |
---|---|
Prototype | function onUnequip( pEquipper, iUnequipped ) |
When triggered | When pEquipper unequips iUnequipped |
Notes | iUnequipped's script is activated |
Purpose | |
Example of Usage | function onUnequip( pUnequipper, iUnequipped ) { pUnequipper.StaticEffect( 0x376A, 9, 6 ); } |
onUnknownTrigger | |
---|---|
Prototype | |
When triggered | |
Notes | |
Purpose | |
Example of Usage |
onUseChecked | |
---|---|
Prototype | function onUseChecked( pUser, iUsed ) |
When triggered | When pUser uses iUsed. |
Notes | if return value from script is true, it continues on executing with hard coded implementation if return value is false, then no hard code is executed |
Purpose | To allow greater customization on using items. |
Example of Usage | function onUseChecked( pUser, iUsed ) { var trgSock = pUser.socket; if(pUser.InRange( iUsed, 8 )) pUser.OpenBank(trgSock); return false; } |
onUseUnChecked | |
---|---|
Prototype | function onUseUnChecked( pUser, iUsed ) |
When triggered | When pUser uses iUsed. |
Notes | Unlike the onUseChecked event this one runs without any hardcoded checks. |
Purpose | To allow greater customization on using items. |
Example of Usage | function onUseUnChecked( pUser, iUsed ) { var trgSock = pUser.socket; if(pUser.InRange( iUsed, 8 )) pUser.OpenBank(trgSock); return false; } |
onVirtueGumpPress | |
---|---|
Prototype | function onVirtueGumpPress( mChar, tChar, buttonID ) |
When triggered | When Virtue gumps are pressed? |
Notes | |
Purpose | |
Example of Usage |
onWeatherChange | |
---|---|
Prototype | function onWeatherChange( object, weatherType ) |
When triggered | Triggers for object (char/item) when weather changes |
Notes | |
Purpose | To allow reactions for characters/items when weather changes |
Example of Usage |
OutOfRange | |
---|---|
Prototype | function OutOfRange( pChar, objVanish, objType ) |
When triggered | When objVanish goes out of range of pChar |
Notes | objType == 0 indicates objVanish is a character objType == 1 indicates objVanish is an item |
Purpose | To take actions based on when things go out of range. For instance, if you ran out of range of your attacker, you might decide to automatically try and hide. |
Example of Usage |