Files
Hippolyzer/addon_examples/payday.py

48 lines
1.7 KiB
Python
Raw Normal View History

2021-04-30 17:30:24 +00:00
"""
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
2021-06-14 13:33:17 +00:00
from hippolyzer.lib.base.templates import MoneyTransactionType, ChatType
2021-04-30 17:30:24 +00:00
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):
2021-04-30 17:30:24 +00:00
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
2021-06-14 13:33:17 +00:00
sender_obj = region.objects.lookup_avatar(sender)
if not sender_obj:
2021-04-30 17:30:24 +00:00
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.
2021-12-09 05:30:12 +00:00
session.main_region.circuit.send(Message(
2021-04-30 17:30:24 +00:00
"AgentAnimation",
Block("AgentData", AgentID=session.agent_id, SessionID=session.id),
Block("AnimationList", AnimID=UUID("928cae18-e31d-76fd-9cc9-2f55160ff818"), StartAnim=True),
))
addons = [PaydayAddon()]