Bueno, nuevamente yo, bueno vengo a postear algunos scripts que a lo mejro a alguien le osn utiles :

.LIST, un sistema de Chat, que muestra los que estan conectados y podes escribirle ( seria una paloma mensajera)

// Edited by 77 Dragons of Time Classic - Free Ultima Online Server! 2000-2009 ( i made it look prettier =) )

[DEFNAME admin_strings]
admin_plevel_3 "Seer"
admin_plevel_4 "Game Master"
admin_plevel_5 "Developer"
admin_plevel_6 "Administrator"
admin_plevel_7 "Owner"

[DEFNAME msg_toggles]
gm_one_way 1 //Can players use reply to GM messages? 1 = no 0 = yes
msg_self 1 //players can message themselves? handy for reminders 1= yes 0 = no
list_staff 0 //Do staff show to players on the list? 1=yes 0=no

[plevel 1]
list
reply
private

[FUNCTION list]
ctag.list_numplayers=0
ctag.list_page=1
serv.allclients list_getplayers
ctag.list_numpages=<eval (((<ctag0.list_numplayers>-1) / 10) + 1)> // 10 players per page
dialog d_spherelist

[FUNCTION list_getplayers]
// List players in CTAGs on the caller
IF !(<def.list_staff>)
if ((<account.plevel> > <src.account.plevel>) || ((<tag0.private>) && !(<sRC.isgm>)
return
else
src.ctag0.list_numplayers += 1
try src.ctag.list_p<eval (<src.ctag0.list_numplayers>)>=<uid>
endif
ELSE
if ((<tag0.private>) && !(<sRC.isgm>)
return
else
src.ctag0.list_numplayers += 1
try src.ctag.list_p<eval (<src.ctag0.list_numplayers>)>=<uid>
endif
ENDIF

[FUNCTION list_getplayers_list]
// Function I used to list page system
for x 1 50
try ctag.list_p<eval <local.x>>=01
end
ctag.list_numplayers=50

[DIALOG d_spherelist]
100,100
src.dialogclose d_spherelist
// Let's not break some (perhaps) scripts using OBJ
local.oldobj=<obj>
page 0 // Basic layout
GUMPPIC 10 10 1226 //GUMPPIC 10 10 027 // Background
dtext 75 15 0 <serv.servname>
dtext 32 37 1152 Listed Clients: <eval <ctag0.list_numplayers>> / <serv.clients>
page 1 // Player data
//dtext 32 55 1152 Msg
//dtext 75 55 1152 Character Name
list_renderdialog
obj=<local.oldobj>
if (<ctag0.list_page> > 1)
// Back button
button 28 274 4014 4015 1 0 1
endif
if (<ctag0.list_page> < <ctag0.list_numpages>)
// Forward button
button 184 274 4005 4006 1 0 2
endif
dtext 75 270 1152 Page <eval <ctag0.list_page>> / <eval <ctag0.list_numpages>>

[FUNCTION list_renderdialog]
local.y=55
for x <eval ((<ctag0.list_page> - 1) * 10) + 1> <eval (<ctag0.list_page> * 10)>
if (<local.x> > <ctag0.list_numplayers>)
return
endif
obj=<ctag0.list_p<eval <local.x>>>
local.hue=0480
IF (<OBJ.UID>==<SRC.UID>)
IF (<def.msg_self>)
button 30 <local.y> 4011 4029 1 0 <eval (1000 + <local.x>)>
dtext 75 <local.y> 0779 <QVAL <OBJ.FINDID.i_rune_incognito.UID> ? <OBJ.FINDID.i_rune_incognito.NAME> : <obj.name>>
ELSE
dtext 75 <local.y> 0779 <QVAL <OBJ.FINDID.i_rune_incognito.UID> ? <OBJ.FINDID.i_rune_incognito.NAME> : <obj.name>>
ENDIF
ELSE
IF (<OBJ.ACCOUNT.PLEVEL> > <SRC.ACCOUNT.PLEVEL>)
dtext 75 <local.y> <local.hue> <QVAL <OBJ.FINDID.i_rune_incognito.UID> ? <OBJ.FINDID.i_rune_incognito.NAME> : <obj.name>>
ELSE
button 30 <local.y> 4011 4029 1 0 <eval (1000 + <local.x>)>
dtext 75 <local.y> <local.hue> <QVAL <OBJ.FINDID.i_rune_incognito.UID> ? <OBJ.FINDID.i_rune_incognito.NAME> : <obj.name>>
ENDIF
ENDIF
local.y += 20
end

[DIALOG d_spherelist BUTTON]
on=1 // Back button
ctag.list_page -= 1
if (<ctag0.list_page> < 1)
// Bad! And shouldnt happen
sysmessage Error: list_page value went too low, please report (<ctag0.list_page> / <ctag0.list_numpages>)
ctag.list_page=1
endif
dialog d_spherelist
on=2 // Forward button
ctag.list_page += 1
if (<ctag0.list_page> > <ctag0.list_numpages>)
// Bad! Should also not happen
sysmessage Error: list_page value went too high, please report (<ctag0.list_page> / <ctag0.list_numpages>)
ctag.list_page=<ctag0.list_numpages>
endif
dialog d_spherelist
on=1001,65535 // Player buttons
try uid.<ctag0.list_p<eval <argn> - 1000>>.dialog d_playermsg, 2




[DIALOG d_playermsg]
100,100
SRC.CTAG0.RECEIVER=<UID>
//NOCLOSE
PAGE 0
GUMPPIC 10 10 1226
DTEXT 36 40 0835 Querido <name>:
dtextentry 36 58 175 200 0 0
BUTTON 35 230 4005 4006 1 0 1
DTEXT 70 230 0 Enviar

[DIALOG d_playermsg button]
ON=0
src.ctag0.receiver=
RETURN 1


on=1
obj=<src.ctag0.receiver>
IF (<SRC.TAG0.PRIVATE>)
SRC.TAG.PRIVATE=
SRC.SYSMESSAGE Modo "Private" Desactivado
ENDIF
IF (<isempty <ARGTXT[0]>>)
SYSMESSAGE You didn't enter any text use cancel or right click to cancel sending a message.
dialog d_playermsg
return 1
ENDIF
FOR <SERV.CLIENTS>
IF !(STRCMPI("<OBJ.name>","<name>"))
IF !(<SRC.ISGM>)
IF !(<ISEMPTY <OBJ.CTAG.MESSAGE3>>)
SRC.SYSMESSAGE This person's message queue is currently full
SRC.SYSMESSAGE Please try again later
RETURN 1
ENDIF
IF !(<ISEMPTY <OBJ.CTAG.MESSAGE>>)
IF (<ISEMPTY <OBJ.CTAG.MESSAGE2>>)
OBJ.ctag0.message2 <argtxt[0]>
OBJ.ctag0.reply2 = <src.uid>
SRC.SYSMESSAGE Message queued (2nd)
OBJ.SYSMESSAGE You have 2 messages in your queue

ELSE
OBJ.ctag0.message3 <argtxt[0]>
OBJ.ctag0.reply3 = <src.uid>
SRC.SYSMESSAGE Message queued (3rd)
OBJ.SYSMESSAGE You have 3 messages in your queue
OBJ.SYSMESSAGE You will not receive anymore messages until you clear you queue

ENDIF
ELSE
OBJ.ctag0.message <argtxt[0]>
OBJ.ctag0.reply = <src.uid>
TRYSRC <OBJ> dialog d_pm_notify
SRC.SYSMESSAGE Mensaje enviado!

ENDIF
ELSE
OBJ.ctag0.prefix <def.admin_plevel_<src.account.plevel>>
OBJ.ctag0.gmreply <src.uid>
OBJ.CTAG0.gmmessage <argtxt[0]>
TRYSRC <OBJ> src.dialog d_gmpm_notify
SRC.SYSMESSAGE Mensaje enviado!

ENDIF
RETURN 1
ENDIF
ENDFOR
src.ctag.receiver=

[FUNCTION private]
IF (<tag0.Private>)
tag.private=
SYSMESSAGE Privacidad Activada
else
tag.private=1
SYSMESSAGE Privacidad Desactivada
SYSMESSAGE No puedes enviar ni recibir mensajes en modo Privado.
endif

[DIALOG d_pm_notify]
50,50
//NOCLOSE
PAGE 0
DTEXT 12 0 034 Mensaje Nuevo:
button 20 20 01e 01e 1 0 1
DTEXT 18 41 0835 Abrir


[DIALOG d_pm_notify BUTTON]
ON=1
SRC.DIALOG d_pm

[DIALOG d_pm]
100,100
//NOCLOSE
PAGE 0
GUMPPIC 10 10 1226
DTEXT 36 40 0835 De <uid.<ctag.reply>.name>:
dhtmlgump 36 58 175 200 0 0 <src.ctag0.message>
//button 210 15 4017 4018 1 0 0
BUTTON 35 230 4005 4006 1 0 1
DTEXT 70 230 0 Responder



[DIALOG d_pm BUTTON]
ON=0
f_msg_queue

ON=1
SRC.CTAG.TO=<src.ctag.reply>
SRC.DIALOG d_reply




[DIALOG d_gmpm_notify]
150,50
//NOCLOSE
PAGE 0
DTEXT 12 0 034 NUEVO MENSAJE:
button 20 20 01e 01e 1 0 1
DTEXT 1 21 0835 DEL STAFF
DTEXT 18 41 0835 Abrir

[DIALOG d_gmpm_notify BUTTON]
ON=1
SRC.DIALOG d_gmpm

[DIALOG d_gmpm]
100,100
//NOCLOSE
PAGE 0
GUMPPIC 10 10 1226
DTEXT 36 40 0835 De <uid.<ctag.gmreply>.name>:
if !<def.gm_one_way>
BUTTON 35 230 4005 4006 1 0 1
DTEXT 70 230 0 Responder
ENDIF
dhtmlgump 36 58 175 200 0 0 <src.ctag.gmmessage>
//button 210 15 4017 4018 1 0 0



[DIALOG d_gmpm BUTTON]
ON=0
SRC.CTAG.GMMESSAGE=

ON=1
SRC.CTAG.TO=<SRC.CTAG.GMREPLY>
SRC.DIALOG d_reply



[DIALOG d_reply]
100,100
//NOCLOSE
PAGE 0
GUMPPIC 10 10 1226
DTEXT 36 40 0835 Querido <uid.<ctag.to>.name>:
dtextentry 36 58 175 200 0 0
BUTTON 35 230 4005 4006 1 0 1
DTEXT 70 230 0 Enviar



[DIALOG d_reply BUTTON]
ON=0
SRC.CTAG.TO=
SRC.CTAG0.MESSAGE=
src.ctag.gmmessage=
src.ctag.gmreply=
SRC.f_msg_queue

on=1
IF (<isempty <ARGTXT[0]>>)
SYSMESSAGE No ingresaste ningun texto, haz click en cancelar o clik con el boton derecho.
dialog d_reply
return 1
ENDIF
OBJ=<src.ctag0.to>
IF !(<OBJ.isonline>) || (<OBJ.tag0.private>)
SYSMESSAGE Esta persona no esta mas online, o esta en modo privado
SRC.CTAG.REPLY=
ELSE
IF (<ISGM>)
OBJ.ctag0.gmmessage <argtxt[0]>
OBJ.ctag0.gmreply = <src.uid>
SRC.SYSMESSAGE Message sent!
TRYSRC <OBJ> dialog d_gmpm_notify
SRC.CTAG.TO=
src.ctag.receiver=
src.f_msg_queue

RETURN 1
ELSE
IF !(<ISEMPTY <OBJ.CTAG.MESSAGE3>>)
SRC.SYSMESSAGE Esta persona tiene la casilla de mensajes al maximo.
SRC.SYSMESSAGE Por favor intenta despues.
SRC.CTAG.TO=
IF !(<OBJ.ISGM>)
src.f_msg_queue
ENDIF
RETURN 1
ENDIF
IF !(<ISEMPTY <OBJ.CTAG.MESSAGE>>)
IF (<ISEMPTY <OBJ.CTAG.MESSAGE2>>)
OBJ.ctag0.message2 <argtxt[0]>
OBJ.ctag0.reply2 = <src.uid>
SRC.SYSMESSAGE Mensaje en casilla (2nd)
OBJ.SYSMESSAGE Tienes dos mensajes en tu casilla.
SRC.CTAG.TO=
IF !(<OBJ.ISGM>)
src.f_msg_queue
ENDIF
RETURN 1
ELSE
OBJ.ctag0.message3 <argtxt[0]>
OBJ.ctag0.reply3 = <src.uid>
SRC.SYSMESSAGE Mensaje en casilla (3rd)
OBJ.SYSMESSAGE Tienes tres mensajes en tu casilla.
OBJ.SYSMESSAGE No puedes recibir mas mensajes hasta que no vacies tu casilla.
SRC.CTAG.TO=
IF !(<OBJ.ISGM>)
src.f_msg_queue
ENDIF
RETURN 1
ENDIF
ELSE
OBJ.ctag0.reply = <src.uid>
OBJ.ctag0.message <argtxt[0]>
SRC.SYSMESSAGE Message sent!
TRYSRC <OBJ> dialog d_pm_notify
SRC.CTAG.TO=
IF !(<OBJ.ISGM>)
src.f_msg_queue
ENDIF
RETURN 1


ENDIF
ENDIF
src.ctag.receiver=
src.ctag.gmmessage=
src.ctag.gmreply=

[FUNCTION f_msg_queue]
IF (<ISEMPTY <SRC.CTAG.MESSAGE2>>)
SRC.CTAG.SENDER=
SRC.CTAG.REPLY=
SRC.CTAG.MESSAGE=
ELSE
SRC.CTAG.SENDER=<SRC.CTAG.SENDER2>
SRC.CTAG.REPLY=<SRC.CTAG.REPLY2>
SRC.CTAG.MESSAGE=<SRC.CTAG.MESSAGE2>
SRC.CTAG.SENDER2=
SRC.CTAG.REPLY2=
SRC.CTAG.MESSAGE2=
SRC.DIALOG d_pm_notify
ENDIF
IF !(<ISEMPTY <SRC.CTAG.MESSAGE3>>)
SRC.CTAG.SENDER2=<SRC.CTAG.SENDER3>
SRC.CTAG.REPLY2=<SRC.CTAG.REPLY3>
SRC.CTAG.MESSAGE2=<SRC.CTAG.MESSAGE3>
SRC.CTAG.SENDER3=
SRC.CTAG.REPLY3=
SRC.CTAG.MESSAGE3=
ELSE
SRC.CTAG.SENDER2=
SRC.CTAG.REPLY2=
SRC.CTAG.MESSAGE2=
ENDIF

[EOF]


.Stuck, en un limite de 60 segundos te envia a las coordenadas uqe elijas (?).

[PLEVEL 0]

stuck
trabado
trabada

[FUNCTION Stuck]

IF (<SRC.FLAGS> & statf_dead)

SRC.SYSMESSAGE Seras llevado a la Sala de los Menesteres en 60 segundos.

SRC.NEWITEM=i_dead_stuck


SRC.ACT.P=<SRC.P>

SRC.ACT.LINK=<SRC.UID>

RETURN 1

ENDIF

IF (<SRC.HITS> != <SRC.STR>)

SRC.SYSMESSAGE Debes estar completamente curado.

RETURN 1

ENDIF

IF (0<SRC.TAG.STUCK>==1)

SRC.SYSMESSAGE Debes esperar para volver a usarlo.

RETURN 1

ELSE


VAR.EVENTS=<SRC.EVENTS>

VAR.STUCKACT=<SRC.ACT>

SRC.NEWITEM=i_timer_stuck

SRC.ACT.EQUIP

VAR.SRCUID=<SRC.UID>

SRC.ACT=<VAR.STUCKACT>

VAR.STUCKACT=

RETURN 1

ENDIF


[ITEMDEF i_timer_stuck]
ID=i_memory
NAME=Stuck
WEIGHT=0
TYPE=t_eq_script

ON=@Create

ATTR=attr_invis|attr_decay

ON=@Equip

SRC.TAG.STUCK=1

SRC.EVENTS +e_stuck

TIMER=1

MORE=60



RETURN 0



ON=@Timer

IF (<CONT>)

IF (<MORE>)

CONT.SAY <EVAL <MORE>>

MORE=<MORE> +- 1

TIMER=1

RETURN 1

ELSE

CONT.GO xxxx,xxxx// Coordinates.

CONT.EVENTS -e_stuck

CONT.TAG.STUCK=

CONT.FINDID.i_timer_stuck.REMOVE



RETURN 1

ENDIF

ENDIF


[EVENTS e_stuck]

ON=@GetHit



VAR.ITEMACT=<ACT>

NEWITEM=i_remove_event

ACT.EQUIP

ACT=<VAR.ITEMACT>

VAR.ITEMACT=

RETURN 0


[ITEMDEF i_remove_event]

ID=i_memory

NAME=DO NOT REMOVE!
Un Npc, que al morir, sale su "espiritu".
[CHARDEF cenobite]
DEFNAME=c_cenobite_npc
ID=C_MAN
CAN=MT_WALK|MT_RUN|MT_EQUIP|
NAME=Cenobite
SOUND=snd_HUMAN_M_DIE_01
DAM=20,35
ARMOR=60
CATEGORY=AA otros
SUBSECTION=Cenobite
DESCRIPTION=Cenobite
//DESIRES=i_gold,e_notoriety
AVERSIONS=t_TRAP,t_eerie_stuff
//ALIGNMENT=EVIL
TSPEECH=spk_human_prime
TSPEECH=jobMageEvil
TSPEECH=spk_needs
TSPEECH=spk_rehello
TSPEECH=spk_human_default

ON=@Create
COLOR=00
STR=300
DEX=80
INT=50
PARRYING=100.0
SWORDSMANSHIP=150.0
TACTICS=100.0
NPC=brain_monster
FAME=500
KARMA=-9999

ON=@NPCRestock
ITEM=i_bone_arms
Color=00835
ITEM=i_bone_chest
Color=00835
ITEM=i_bone_gloves
Color=00835
ITEM=i_bone_helmet
Color=00835
ITEM=i_bone_leggings
Color=00835
ITEM=i_sword_viking
Color=00835
ITEM=i_shield_wood
Color=00835
ITEM=i_gold,{1500 2000}
Item=random_ar_inv, {0 1}


on=@Death
SRC.EFFECT=3,i_FIRE_COLUMN,6,15,1
NEWNPC c_cenobite_esp

/////////////////////////////////////////////////E.de cenobite///////////////////////////////

[CHARDEF 98885 ]
DEFNAME=c_cenobite_esp
Name=Espiritu de Cenobite
ICON=i_pet_skeleton
CAN=MT_WALK|MT_RUN
RESOURCES=i_bones
FOODTYPE=15 t_food, t_fruit
DESIRES=i_gold
AVERSIONS=t_TRAP,r_civilization
//SHELTER=r_cave
BLOODCOLOR=0
CATEGORY=AA OTROS
SUBSECTION=Cenobite
DESCRIPTION=Espiritu

ON=@Create
Body=c_skeleton
Color 020
Name=Espiritu de Cenobite
NPC=BRAIN_MONSTER
STR=400
DEX=100
INT=400
//ALIGNMENT=EVIL
MAGICRESISTANCE=100.0
TACTICS={70.0 70.0}
WRESTLING={300.0 300.0}
MAGERY={99.9 99.9}
FAME={800 1800}
KARMA={-5000 -5000}
ITEMNEWBIE=i_spellbook
ADDSPELL=s_flamestrike

ON=@NPCRestock
ITEM=i_gold,{1500 2000}
Container=i_bag
Item=random_ar_inv, {0 1}


Nuevamente agradezco a ustedes y la ayuda que me brindaron, estoy con mi equipo en los ultimos preparativos para el lanzamiento de mi proyecto, gracias a ustedes.