Archives des forums MMO/MMORPG > Ultima Online > UO - Les Cristaux Perdus > [SCRIPT-COMPLET]Petit menu de maison rudimentaire, fonctionne pour statiques.
[SCRIPT-COMPLET]Petit menu de maison rudimentaire, fonctionne pour statiques.
Par AdrienCoeurFeu le 4/1/2003 à 2:16:28 (#2940071)
ID=i_memory
TYPE=t_eq_script
on=@create
tag.vente=50000
[ITEMDEF i_mem_maison_proprio]
ID=i_memory
TYPE=t_eq_script
[ITEMDEF i_maison_clef]
ID=i_key_iron
NAME=Clef de maison
VALUE=0
ON=@Create
Attr=attr_newbie
[ITEMDEF i_maison_pancarte]
ID=0e80
TYPE=t_container_locked
NAME=Menu de maison
on=@create
DISPID=i_sign_brass
attr=08010
ON=@DCLICK
IF !()
SRC.NEWITEM i_mem_maison_porte
SRC.ACT.CONT
ENDIF
IF !()
SRC.NEWITEM i_mem_maison_proprio
SRC.ACT.CONT
ENDIF
IF !(<eval >)
TARGET Quelle sera la porte d'entree de la maison ?
return 1
endif
IF !(<eval >)
DIALOG d_maison_pancarte_vente
return 1
endif
IF ( = )
DIALOG d_maison_pancarte_proprio
return 1
endif
src.sysmessage Vous n'etes pas proprietaire de la maison.
return 1
on=@targon_item
IF ((!(<eval >)) && (= t_door))
findid.i_mem_maison_porte.tag.porte=1
findid.i_mem_maison_porte.link
src.targ.name=A Vendre (<eval > pieces d'or)
return 1
endif
[DIALOG D_maison_pancarte_vente]
0,0
page 0
resizepic 113 26 2600 220 140
page 1
button 140 105 1209 1210 1 0 1
text 160 50 1102 0
text 160 70 1102 1
text 160 100 1102 2
[DIALOG d_maison_pancarte_vente TEXT]
Prix de vente:
<eval > pieces d'or
Acheter la maison
[DIALOG D_maison_pancarte_vente BUTTON]
ONBUTTON=0
SRC.SYSMESSAGE Vous quittez le menu.
ONBUTTON=1
IF (<eval > < 5)
src.sysmessage Vous devez posseder au moins 5 points de RP pour acheter une maison!
return 1
endif
IF ()
src.sysmessage Vous etes deja proprietaire d'une maison!
return 1
endif
IF (<src.restest <eval > i_gold>)
src.consume <eval > i_gold
findid.i_mem_maison_proprio.tag.proprio=1
findid.i_mem_maison_proprio.link
findid.i_mem_maison_porte.link.name=Maison de
findid.i_mem_maison_porte.link.more1=
name= de
src.newitem i_maison_clef
src.act.bounce
src.act.link
src.act.more1=
src.newitem i_mem_maison_proprio
src.act.cont
src.act.link
src.sysmessage Cette maison est maintenant a vous!
return 1
else
src.sysmessage Vous n'avez pas l'argent sur vous!
return 1
endif
[DIALOG D_maison_pancarte_proprio]
0,0
page 0
resizepic 113 26 2600 320 240
page 1
button 140 95 1209 1210 1 0 1
button 140 115 1209 1210 1 0 2
button 140 135 1209 1210 1 0 3
button 140 155 1209 1210 1 0 4
button 140 175 1209 1210 1 0 5
button 140 195 1209 1210 1 0 6
button 140 215 1209 1210 1 0 7
text 160 50 1102 0
text 160 90 1102 1
text 160 110 1102 2
text 160 130 1102 3
text 160 150 1102 4
text 160 170 1102 5
text 160 190 1102 6
text 160 210 1102 7
[DIALOG d_maison_pancarte_proprio TEXT]
Demeure de
Faire une clef de la maison
Acces a la banque
Securiser un container
Tourner un objet
Fixer au sol un objet
Defixer un objet
Transferer la maison
[DIALOG D_maison_pancarte_proprio BUTTON]
ONBUTTON=0
SRC.SYSMESSAGE Vous quittez le menu.
ONBUTTON=1
src.newitem i_maison_clef
src.act.bounce
src.act.link
src.act.more1=
return 1
ONBUTTON=2
src.bankself
return 1
ONBUTTON=3
src.newitem i_target_maison_secure
src.act.p=
src.ACT.DCLICK
Return 1
ONBUTTON=4
src.newitem i_target_maison_flip
src.act.p=
src.ACT.DCLICK
Return 1
ONBUTTON=5
src.newitem i_target_maison_fix
src.act.p=
src.ACT.DCLICK
Return 1
ONBUTTON=6
src.newitem i_target_maison_defix
src.act.p=
src.ACT.DCLICK
Return 1
ONBUTTON=7
src.newitem i_target_maison_transfert
src.act.p=
src.ACT.DCLICK
Return 1
[itemdef i_target_maison_flip]
type=t_eq_script
layer=30
id=i_memory
on=@create
timer 5
on=@timer
remove
return 1
ON=@Dclick
TARGET Quel objet desirez-vous tourner ?
LINK=
ATTR=090
SRC.RESEND
return 1
ON=@TARGON_item
IF ( = )
IF ( = (|attr_static))
src.targ.flip
src.targ.say Objet tourne!
return 1
else
src.sysmessage Cet objet n'est pas fixe au sol!
return 1
endif
else
src.sysmessage Cet objet ne vous appartient pas!
return 1
endif
[itemdef i_target_maison_secure]
type=t_eq_script
layer=30
id=i_memory
on=@create
timer 5
on=@timer
remove
return 1
ON=@Dclick
TARGET Quel container desirez vous securiser ?
LINK=
ATTR=090
SRC.RESEND
return 1
ON=@TARGON_item
IF ( = )
IF ((= t_container) || (=t_container_locked))
IF ( = (|attr_static))
src.targ.type=t_container_locked
src.targ.name= [securise]
src.targ.more1=
src.targ.say Coffre securise!
return 1
else
src.sysmessage Ce coffre n'est pas fixe!
return 1
endif
else
src.sysmessage Ce n'est pas un container!
return 1
endif
else
src.sysmessage Cet objet ne vous appartient pas!
return 1
endif
[itemdef i_target_maison_fix]
type=t_eq_script
layer=30
id=i_memory
on=@create
timer 5
on=@timer
remove
return 1
ON=@Dclick
TARGET Quel objet desirez vous fixer ?
LINK=
ATTR=090
SRC.RESEND
return 1
ON=@TARGON_item
IF ( = (|attr_static))
src.sysmessage Cet objet est deja fixe au sol!
return 1
endif
IF ( = )
src.sysmessage Vous ne pouvez pas fixer un objet dans votre sac!
return 1
endif
src.targ.link
src.targ.attr=08010
src.targ.timer=-1
src.targ.say Objet fixe!
return 1
[itemdef i_target_maison_defix]
type=t_eq_script
layer=30
id=i_memory
on=@create
timer 5
on=@timer
remove
return 1
ON=@Dclick
TARGET Quel objet desirez vous defixer ?
LINK=
ATTR=090
SRC.RESEND
return 1
ON=@TARGON_item
IF ( = )
IF ( = (|attr_static))
src.targ.attr=0
src.targ.timer=1800
src.targ.say Objet defixe!
return 1
else
src.sysmessage Cet objet n'est pas fixe au sol!
return 1
endif
else
src.sysmessage Cet objet ne vous appartient pas!
return 1
endif
[itemdef i_target_maison_transfert]
type=t_eq_script
layer=30
id=i_memory
on=@create
timer 5
on=@timer
remove
return 1
ON=@Dclick
TARGET Qui sera le nouveau proprietaire?
LINK=
ATTR=090
SRC.RESEND
return 1
ON=@TARGON_char
IF (<eval > < 5)
src.targ.sysmessage Vous devez posseder au moins 5 points de RP pour acheter une maison!
return 1
endif
IF ()
src.targ.sysmessage Vous etes deja proprietaire d'une maison!
return 1
endif
src.findid.i_mem_maison_proprio.link.findid.i_mem_maison_proprio.tag.proprio=1
src.findid.i_mem_maison_proprio.link.findid.i_mem_maison_proprio.link
src.findid.i_mem_maison_proprio.link.findid.i_mem_maison_porte.link.name=Maison de
src.findid.i_mem_maison_proprio.link.findid.i_mem_maison_porte.link.more1=
src.findid.i_mem_maison_proprio.link.name= Menu de maison de
src.targ.newitem i_mem_maison_proprio
src.targ.act.cont
src.targ.act.link
src.consume i_mem_maison_proprio
src.targ.sysmessage Cette maison est maintenant a vous!
src.sysmessage La maison est transferee!
return 1
Par AdrienCoeurFeu le 4/1/2003 à 2:22:56 (#2940096)
.add i_maison_pancarte
Vous la placez (contre un mur par exemple)
Vous faites un .set findid.i_mem_maison_porte.tag.vente=X (où X représente la valeur de vente de la maison, en DECIMAL !)
Vous double cliquez dessus
Vouis choissez la porte (imperativement une porte ouverte)
Normalement, c'est fini, la porte prend comme nom "A vendre (X pièces d'or)" et lorsque vous cliquez sur la pancarte il y a le menu d'achat.
Attention néanmoins:
-Ce menu maison permet de fixer les objets n'importe ou dans le carré d'action
-Ce menu maison ne permet pas 1) de voler les objets aux autres 2) de fixer un objet qui n'appartient pas à la maison (grace à un ingénieux système de links)
Néanmoins, ce menu maison permet de fixer des objets qui ne sont pas fixés, par exemple si un joueur laisse tomber son livre de sorts, il peut très bien etre fixé !
-Ce menu maison permet un accès banque
-Ce menu maison permet de tourner des objets, sécuriser des coffres (attention au cumul de tag [securise] lorsqu'on sécurise plusieurs fois !
-Il est impossible de fixer un obejt dans son sac
Donc les abus de bugs se situent uniquement au niveau des objets à terre, voir des objets présents dans les sacs d'autres joueurs (en faisant snooping).
Enjoy !
Par rituel le 4/1/2003 à 14:00:38 (#2942491)
Pour ma part je me suis promis de ne pas diffuser les scripts que j'ai réalisé pour UO-Apocalypse vous me verrez donc diffuser très peu de scripts, en revanche je serais la pour répondre aux questions sans problèmes.
Par rituel le 4/1/2003 à 16:06:50 (#2943492)
Le mieux serait de pas verifier si il est authorisé à locker avec l'uid de la memory mais avec l'uid du proprietaire ce qui elargirait le champ de lock car les objets a locker qui ont un link 04fffffff ou ont un link egal a l'uid de la personne pourraient être lockés apres tu colles qq part dans un more de l'objet selon que l'objet avait un link 04fffffff ou égal a celui du proprio pour qu'au delockage tu remettre le link au propre ...
je sais je susi ambigü si tu a pas compris je te le scriptes.
Par AdrienCoeurFeu le 4/1/2003 à 16:20:05 (#2943572)
Ca peut détruire les links d'une porte, clef ou coffre. pour le test d'uid, je fais soit un link 04fff ou soit un linkuid = srcuid et le tour est joué (pas envie de scripter ca ici lol) et je stock l'ancien link dans un more. Ensuite dans le delock, je remet le more a la place du link.
Je suis aussi scripteur donc on se comprend :D
JOL Archives 1.0.1
@ JOL / JeuxOnLine