Post by Deleted on May 1, 2017 7:54:25 GMT
So I have an odd problem.
Description:
I provide a few public services for a shard and part of my services involve being in a guild dedicated to new players. The player providing the services is fully automated and uses a vast amount of journal scanning.
Now the issue:
Sometimes these "new" (sometimes griefers) players decide to take advantage of being a guildy and attempt to kill the Bot. Combating the bot is an offense and the player will be jailed for doing so. HOWEVER, a GM is not 24/7 monitoring the Bank. Since guards cannot be called on guildmates, I've been looking into ways to beefing up the survivability of this bot. I'm considering some offensive spells to add pressure to maybe deter the behavior... I am 2/6 after all with decent resists and LMC.
Stats: *changing in process- enough stam regen on suit to drop focus, going to 120 wrestle, 120 magic resist.
I've extensively read through the UOS Documentation, written thousands of lines in UOS (current bot version sits at roughly 700 by itself.) And yet I haven't found a way to get a valid and verified serial of an attacking guildmate.
Sure I could use either getenemy/getfriend 'friend' but that doesn't guarantee I am targeting the correct player. I'd hate to explode/flamestrike combo with my 2/6 on a new player that isn't the actual offender. So I explored with creating a ring buffered list of players and constantly scanning to see if they're attacking:
However this would all work fine and dandy (*note the journal scanning to see if player the current attacking) IF injournal translated a serial to a name. So now I need a way of automated storing local players name into a list / ring buffer to check who is attacking.
tl;dr
I need a way to automate pushlisting player names that are in a vicinity of my bot, so I can loop thru them for injournal "attacking you" [player_name]
I've given it my go and can't figure out a good way. Nearly convinced there isn't an automated way with the tools provided but I figured I'd ask other professionals for their input.
An easy fix would to just remove from the guild but it would remove a large service for new players (such as requesting things via guild chat)
Thanks for any assistance or input,
Schism / d0x1p2
Ultima-Shards: Multiverse - AOS server.
Description:
I provide a few public services for a shard and part of my services involve being in a guild dedicated to new players. The player providing the services is fully automated and uses a vast amount of journal scanning.
Now the issue:
Sometimes these "new" (sometimes griefers) players decide to take advantage of being a guildy and attempt to kill the Bot. Combating the bot is an offense and the player will be jailed for doing so. HOWEVER, a GM is not 24/7 monitoring the Bank. Since guards cannot be called on guildmates, I've been looking into ways to beefing up the survivability of this bot. I'm considering some offensive spells to add pressure to maybe deter the behavior... I am 2/6 after all with decent resists and LMC.
Stats: *changing in process- enough stam regen on suit to drop focus, going to 120 wrestle, 120 magic resist.
Name | Value | Base | Cap | +/-
---------------------------------------------------------
Magery | 105.8 | 105.8 | 110 | 0
Evaluating Intelligence | 105 | 105 | 105 | 0
Focus | 100 | 100 | 100 | 0
Meditation | 100 | 100 | 100 | 0
Resisting Spells | 100 | 100 | 100 | 0
Wrestling | 100 | 100 | 100 | 0
Chivalry | 55 | 55 | 100 | 0
I've extensively read through the UOS Documentation, written thousands of lines in UOS (current bot version sits at roughly 700 by itself.) And yet I haven't found a way to get a valid and verified serial of an attacking guildmate.
Sure I could use either getenemy/getfriend 'friend' but that doesn't guarantee I am targeting the correct player. I'd hate to explode/flamestrike combo with my 2/6 on a new player that isn't the actual offender. So I explored with creating a ring buffered list of players and constantly scanning to see if they're attacking:
if not listexists 'mobiles_l'
createlist 'mobiles_l'
endif
while not dead 'self'
if getenemy 'any'
if not inlist 'mobiles_l' 'enemy'
if list 'mobiles_l' > 50
poplist 'mobiles_l' 'back'
pushlist 'mobiles_l' 'enemy' 'front'
else
pushlist 'mobiles_l' 'enemy' 'front'
endif
endif
endif
for 0 in 'mobiles_l'
setalias 'person' mobiles_l[]
headmsg mobiles_l[]
if injournal "attacking you" 'person'
clearjournal
cast 'Fireball'
waitfortarget 2500
target! mobiles_l[]
endif
endfor
endwhile
However this would all work fine and dandy (*note the journal scanning to see if player the current attacking) IF injournal translated a serial to a name. So now I need a way of automated storing local players name into a list / ring buffer to check who is attacking.
- get[enemy/friend] will not differentiate between an enemy friend and a friendly... erm friend.
- 'last' isn't assigned to who is attacking you.
- 'color' doesn't change for the player if they flag for attacking you as a guildy.
- checking for 'war' will not do anything against mages since they do not need to go war mode to attack.
- injournal doesn't use serial aliases for scanning... just names.
tl;dr
I need a way to automate pushlisting player names that are in a vicinity of my bot, so I can loop thru them for injournal "attacking you" [player_name]
I've given it my go and can't figure out a good way. Nearly convinced there isn't an automated way with the tools provided but I figured I'd ask other professionals for their input.
An easy fix would to just remove from the guild but it would remove a large service for new players (such as requesting things via guild chat)
Thanks for any assistance or input,
Schism / d0x1p2
Ultima-Shards: Multiverse - AOS server.