You need to use quotes, cause an event name is a string
There is no evdrawgameplayer in events. There was, but was deprecated.
EVENTS_NAMES = (
'eviteminfo', 'evitemdeleted', 'evspeech', 'evdrawgameplayer',
'evmoverejection', 'evdrawcontainer', 'evadditemtocontainer',
'evaddmultipleitemsincont', 'evrejectmoveitem', 'evupdatechar',
'evdrawobject', 'evmenu', 'evmapmessage', 'evallowrefuseattack',
'evclilocspeech', 'evclilocspeechaffix', 'evunicodespeech',
'evbuffdebuffsystem', 'evclientsendresync', 'evcharanimation',
'evicqdisconnect', 'evicqconnect', 'evicqincomingtext', 'evicqerror',
'evincominggump', 'evtimer1', 'evtimer2', 'evwindowsmessage', 'evsound',
'evdeath', 'evquestarrow', 'evpartyinvite', 'evmappin', 'evgumptextentry',
'evgraphicaleffect', 'evircincomingtext', 'evmessengerevent',
'evsetglobalvar', 'evupdateobjstats'
)
# evDrawGamePlayer: deprecated, used no longer (use evDrawObject).
# evDrawObject : [ID : Cardinal] mobiles only
HUMANS = 0x0190, 0x0191
def emergency(serial):
if serial == Self() and GetType(serial) in HUMANS:
return
SetEventProc('evDrawGamePlayer', None) # turn off the handler
recall_home()
SetEventProc('evDrawObject', emergency) # set the handler before leaving a safe zone
Edit: change or to and.