Files
Hippolyzer/addon_examples/payday.py
2021-12-09 05:30:12 +00:00

48 lines
1.7 KiB
Python

"""
Do the money dance whenever someone in the sim pays you directly
"""
from hippolyzer.lib.base.datatypes import UUID
from hippolyzer.lib.base.message.message import Block, Message
from hippolyzer.lib.base.templates import MoneyTransactionType, ChatType
from hippolyzer.lib.proxy.addon_utils import send_chat, BaseAddon
from hippolyzer.lib.proxy.region import ProxiedRegion
from hippolyzer.lib.proxy.sessions import Session
class PaydayAddon(BaseAddon):
def handle_lludp_message(self, session: Session, region: ProxiedRegion, message: Message):
if message.name != "MoneyBalanceReply":
return
transaction_block = message["TransactionInfo"][0]
# Check for direct user -> user transfer
if transaction_block["TransactionType"] != MoneyTransactionType.GIFT:
return
# Check transfer was to us, not from us
if transaction_block["DestID"] != session.agent_id:
return
sender = transaction_block["SourceID"]
if sender == session.agent_id:
return
# Check if they're likely to be in the sim
sender_obj = region.objects.lookup_avatar(sender)
if not sender_obj:
return
amount = transaction_block['Amount']
send_chat(
f"Thanks for the L${amount} secondlife:///app/agent/{sender}/completename !",
chat_type=ChatType.SHOUT,
)
# Do the traditional money dance.
session.main_region.circuit.send(Message(
"AgentAnimation",
Block("AgentData", AgentID=session.agent_id, SessionID=session.id),
Block("AnimationList", AnimID=UUID("928cae18-e31d-76fd-9cc9-2f55160ff818"), StartAnim=True),
))
addons = [PaydayAddon()]