Ultima Online en Español
Bienvenido a Ultima Online en Español. Por favor, regístrate o entra con tu cuenta.

Saludos.

El equipo del Foro.

Unirse al foro, es rápido y fácil

Ultima Online en Español
Bienvenido a Ultima Online en Español. Por favor, regístrate o entra con tu cuenta.

Saludos.

El equipo del Foro.
Ultima Online en Español
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.
Últimos temas
» Inception busca scripter.
Mi sistema de heal EmptyJue 31 Dic 2015 - 2:20 por Lethal

» Equipo para Servidor
Mi sistema de heal EmptyMar 3 Nov 2015 - 13:39 por Kork

» Busco un buen scripter para proyecto server pvp
Mi sistema de heal EmptyDom 19 Jul 2015 - 3:57 por rastrero

» Ultima Azteca
Mi sistema de heal EmptyLun 29 Jun 2015 - 3:31 por chronoMx

» AYUDA SCRIPT
Mi sistema de heal EmptyMar 3 Mar 2015 - 3:35 por rastrero

» NuevaUO (BUSCA COLABORADORES)
Mi sistema de heal EmptyLun 6 Oct 2014 - 10:46 por pushim

» Ultima Alianza
Mi sistema de heal EmptySáb 26 Jul 2014 - 14:32 por Jecht

» Versiones de Cliente
Mi sistema de heal EmptyMar 22 Jul 2014 - 2:52 por Lethal

» Insane World
Mi sistema de heal EmptySáb 19 Jul 2014 - 18:00 por Lethal

Staff
Admin Oupman [Fundador]
Lethal [Administrador] Inferno Networks
Rastrero [Administrador]
Mr.H (Moderador)
Servidores

Mi sistema de heal

5 participantes

Ir abajo

Mi sistema de heal Empty Mi sistema de heal

Mensaje por Daedelus Jue 9 Sep 2010 - 6:20

Hace un tiempo cree este sistema de heal (cuando sabia scriptear en 55i xD, imaginense xD).

Lo que nunca hise fue adaptarlo a la dex, como puedo hacer para que cuente cada punto de dex osea que no sea lo mismo tener 1 que 2, 100 que 101, etc. Osea podría hacerlo llenandolo de ifs, pero no es la idea Razz

Aca va el script.

Código:
//DON'T DELETE THIS HEADER
//CREATED BY OWNER DAEDELUS FOR SACRED LAND'S 55I
//ADAPTED FOR OWNER DAEDELUS FOR 56B

[ITEMDEF 0e21]
DEFNAME=i_bandage
TYPE=t_normal
RESOURCES=i_cloth
WEIGHT=0,2

DUPELIST=0ee9

CATEGORY=Items by Professions
SUBSECTION=Healer
DESCRIPTION=Vendas

ON=@Dclick
TARGET A quien quieres curar?
RETURN 1

ON=@Targon_char
IF (<SRC.FINDID.i_mem_healing.UID>)
SRC.SYSMESSAGE Aun no puedes curar nuevamente!
RETURN 1
ENDIF

IF (<SRC.TARG.DISTANCE> > 3)
SRC.MESSAGE *Tratas de curar a <SRC.TARG.NAME>*
SRC.MESSAGE Esta demasiado lejos!
RETURN 1
ENDIF

IF (<SRC.TARG.FLAGS>&statf_dead) && !(<SRC.TARG.BRAIN>) && !(<SRC.TARG.ID>==c_ghost_man) && !(<SRC.TARG.ID>==c_ghost_woman)
SRC.MESSAGE *Solo puedes revivir humanos*
RETURN 1
ENDIF

IF (<SRC.HITS> < 41) && ((<SRC.TARG.ID>==c_ghost_woman) || (<SRC.TARG.ID>==c_ghost_man))
SRC.MESSAGE *Fallas al resucitar*
SRC.MESSAGE No tienes suficiente vida como para resucitar.
SRC.TARG.MESSAGE <SRC.NAME> falla al resucitarte.
RETURN 1
ENDIF

IF (<SRC.TARG.FLAGS>&statf_dead) && !(<SRC.RESTEST 25 i_bandage>) && (<SRC.HEALING> <85.0)
SRC.MESSAGE *Fallas al resucitar*
SRC.MESSAGE No tienes vendas, no tienes suficiente healing o simplemente has fallado!
SRC.TARG.MESSAGE <SRC.NAME> falla al resucitarte.
RETURN 1
ENDIF

// Codigo para resucitar empieza aca...
IF (<SRC.TARG.FLAGS>&statf_dead)

IF ((<SRC.HEALING> < 950) && (<SRC.HEALING> >= 900))
SRC.TAG0.HEALINGRESULT = <QVAL (!<EVAL RAND(4)>)?1:0>
ELIF ((<SRC.HEALING> < 1000) && (<SRC.HEALING> >= 950))
SRC.TAG0.HEALINGRESULT = <QVAL (!<EVAL RAND(2)>)?1:0>
ELIF (<SRC.HEALING> == 1000)
SRC.TAG0.HEALINGRESULT = <QVAL (!<EVAL RAND(1)>)?1:0>
ENDIF

IF !<CHANCESDECURAR>
SRC.MESSAGE Resucitas a <SRC.TARG.NAME>!
SRC.TARG.MESSAGE <SRC.NAME> te ha resucitado!
// Lo resucito
SRC.TARG.RESURRECT
SRC.TARG.CONSUME 1 i_deathshroud
// Elimino 25 vendas y agrego 25 con sangre
SRC.CONSUME 25 i_bandage
SRC.NEWITEM i_bandage_bloody
SRC.ACT.AMOUNT 25
SRC.ACT.BOUNCE
ELSE
// Fallo al resucitar
SRC.MESSAGE Fallas al resucitar a <SRC.TARG.NAME>!
SRC.TARG.MESSAGE <SRC.NAME> falla al resucitarte!
// Elimino 25 vendas
SRC.CONSUME 25 i_bandage
ENDIF

SRC.HITS = <SRC.HITS> +- 40

// Skill gain
IF ((<SRC.HEALING> < 1000) && (!<EVAL RAND(40)>))
SRC.HEALING = <SRC.HEALING> + <EVAL {1 20 2 1}>
ENDIF
// Chequeo: el skill no debe superar los 100 puntos
IF (<SRC.HEALING> > 1000)
SRC.HEALING = 1000
ENDIF

RETURN 1

// Codigo para resucitar termina aca...
ENDIF

IF (<SRC.TARG.HITS> >= <SRC.TARG.STR>)
SRC.SYSMESSAGE No <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?esta:estas> lastimado!
RETURN 1
ENDIF

IF !<CHANCESDECURAR>
SRC.TAG.HEALINGRESULT 1
ELSE
SRC.TAG.HEALINGRESULT 0
ENDIF

IF (<SRC.HEALING> <= 330)
SRC.TAG.HEALINGSWITCH 0
ELIF ((<SRC.HEALING> <= 660) && (<SRC.HEALING> > 330))
SRC.TAG.HEALINGSWITCH 1
ELIF ((<SRC.HEALING> <= 990) && (<SRC.HEALING> > 660))
SRC.TAG.HEALINGSWITCH 2
ELIF (<SRC.HEALING> == 1000) && (<SRC.HEALING> > 990))
SRC.TAG.HEALINGSWITCH 3
ENDIF

SRC.MESSAGE *Tratas de <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?curar a <SRC.TARG.NAME>:curarte>*

IF (<SRC.TAG.HEALINGRESULT>)
DOSWITCH <SRC.TAG.HEALINGSWITCH>
// Menos de 33 de heal
BEGIN
SRC.MESSAGE <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?Lo:Te> curas pobremente.
SRC.TARG.MESSAGE <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?<SRC.NAME> Me cura pobremente.>
SRC.TARG.HITS = <SRC.TARG.HITS> + ((<SRC.HEALING>/2)/20)
SRC.TARG.UPDATE
END
// Entre 33 y 66 de heal //From Here
BEGIN
SRC.MESSAGE <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?Lo:Te> curas muy bien.
SRC.TARG.MESSAGE <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?<SRC.NAME> Me cura bien.>
SRC.TARG.HITS = <SRC.TARG.HITS> + ((<SRC.HEALING>/2)/20)
SRC.TARG.UPDATE
END
// Entre 66 y 99 de heal
BEGIN
SRC.MESSAGE <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?Lo:Te> curas perfectamente.
SRC.TARG.MESSAGE <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?<SRC.NAME> Me cura muy bien.>
SRC.TARG.HITS = <SRC.TARG.HITS> + ((<SRC.HEALING>/2)/20)
SRC.TARG.UPDATE
END
// Entre 99 y 100 de heal
BEGIN
SRC.MESSAGE <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?Lo:Te> curas como un experto.
SRC.TARG.MESSAGE <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?<SRC.NAME> Me cura como un experto.>
SRC.TARG.HITS = <SRC.TARG.HITS> + ((<SRC.HEALING>/2)/15)
SRC.TARG.UPDATE
END
// Fin
ENDDO //Until Here
// Elimino una venda y agrego una con sangre
SRC.CONSUME 1 i_bandage
SRC.NEWITEM i_bandage_bloody
SRC.ACT.BOUNCE
// Agrego item de memoria
SRC.NEWITEM i_mem_healing
SRC.ACT.EQUIP
// Fallo...
ELSE
// Elimino una venda
SRC.MESSAGE Oh no! Has fallado!!!
SRC.CONSUME 1 i_bandage
ENDIF

IF (<SRC.TARG.HITS> > <SRC.TARG.STR>)
SRC.TARG.HITS = <SRC.TARG.STR>
ENDIF

// Skill gain
IF ((<SRC.HEALING> < 330) && (!<EVAL RAND(10)>))
SRC.HEALING = <SRC.HEALING> + <EVAL {1 20 2 1}>
ELIF ((<SRC.HEALING> < 660) && (!<EVAL RAND(40)>))
SRC.HEALING = <SRC.HEALING> + <EVAL {1 20 2 1}>
ELIF ((<SRC.HEALING> < 1000) && (!<EVAL RAND(60)>))
SRC.HEALING = <SRC.HEALING> + <EVAL {1 20 2 1}>
ENDIF
// Chequeo: el skill no debe superar los 100 puntos
IF (<SRC.HEALING> > 1000)
SRC.HEALING = 1000
ENDIF

// Fin
RETURN 1

[ITEMDEF i_mem_healing]
ID=i_memory
TYPE=t_eq_script
NAME=Healing

ON=@Equip
TIMER=3
SRC.ANIM=19

ON=@Timer
REMOVE
RETURN 1

[ITEMDEF 0ee9]
//clean bandages
DUPEITEM=0e21

[FUNCTION CHANCESDECURAR]
VAR.SKILL_REQ 100
VAR.SKILL_CURR <SRC.HEALING>
VAR.SKILL_DIF <EVAL <VAR.SKILL_REQ> + -<VAR.SKILL_CURR>>
VAR.SKILL_BELL <EVAL RANDBELL(<VAR.SKILL_DIF>, 20.0)>
IF (<VAR.SKILL_DIF> < 0)
VAR.SKILL_BELL <EVAL 1000 +- <VAR.SKILL_BELL>>
ENDIF
IF (<EVAL RAND(100)> > <EVAL <VAR.SKILL_BELL> / 20>)
RETURN 1
ENDIF

[EoF]

Atte. Daedelus BloodAxe
Daedelus
Daedelus
Moderador

Mensajes : 117
Puntos : 5168
Reputación : 3
Fecha de inscripción : 06/09/2010

Volver arriba Ir abajo

Mi sistema de heal Empty Re: Mi sistema de heal

Mensaje por ZEUS Jue 9 Sep 2010 - 8:52

Si lo que querés hacer es que dependa de tu DEX el tiempo en que va a demorar que te puedas aplicar la venda, lamentablemente para sphere la unidad mas chica de tiempo son los segundos, por lo tanto teniendo 101 o 102 o 103 o 104 de dex, la menor diferencia entre cada punto es de 1 segundo. Por tal motivo lo que hacemos todos es que haya diferencia cada 10 puntos de dex. Por ejemplo de esta manera:

Código:
[ITEMDEF i_mem_healing]
ID=i_memory
TYPE=t_eq_script
NAME=Healing

ON=@Equip
IF ((<src.dex> >= 0) && (<SRC.dex> <= 9))
TIMER=30
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 10) && (<SRC.dex> <= 19))
TIMER=18
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 20) && (<SRC.dex> <= 29))
TIMER=14
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 30) && (<SRC.dex> <= 39))
TIMER=11
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 40) && (<SRC.dex> <= 59))
TIMER=8
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 60) && (<SRC.dex> < 70))
TIMER=7
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 70) && (<SRC.dex> < 80))
TIMER=6
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 80) && (<SRC.dex> < 90))
TIMER=6
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 90) && (<SRC.dex> < 100))
TIMER=5
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 100) && (<SRC.dex> < 110))
TIMER=4
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 110) && (<SRC.dex> < 130))
TIMER=3
SRC.ANIM=19
ELSE
IF (<SRC.dex> >= 130)
TIMER=2
SRC.ANIM=19
ENDIF

ON=@Timer
REMOVE
RETURN 1

Saludos!

ZEUS
Novato
Novato

Mensajes : 6
Puntos : 5005
Reputación : 0
Fecha de inscripción : 06/09/2010

Volver arriba Ir abajo

Mi sistema de heal Empty Re: Mi sistema de heal

Mensaje por curlor Jue 9 Sep 2010 - 12:32

Si se me permite un consejo, me parece que usar VARs para este tipo no es necesario, puesto que los VARs son a nivel del servidor, por ejemplo el jugador Juan recibe un var.xx=2 y el jugador pepe puede poner .show var.xx y le saldrá 2, porque el var se almacena a nivel global, es mejor usar locals que además se destruirán al terminar la función.
Otra cosa es lo de hacer diferentes ifs, seria mucho mas eficiente encontrar una formula matemática que os de el tiempo que necesitáis, el script quedara menos pesado, sera mas rápido y no hará tantos cheks evitando carga innecesaria.

curlor
Admin

Mensajes : 38
Puntos : 5036
Reputación : 1
Fecha de inscripción : 03/09/2010

Volver arriba Ir abajo

Mi sistema de heal Empty Re: Mi sistema de heal

Mensaje por Lethal Jue 9 Sep 2010 - 14:39

Habria que agregarle un chequeo para el acto criminal ( curar tanto a pks como criminales ).

Con algo así;
Código:


if <src.targ.karma> < -100
    if (<obj.flags>&statf_criminal)
        src.criminal = 1
    endif
endif


PD: Ahora que lo miro, no recuerdo si sphere cheque el numero negativo, si me lo pueden confirmar mejor.

PD2: El coblema del [code] que elimina code, es al editar.
Lethal
Lethal
Admin

Mensajes : 623
Puntos : 5721
Reputación : 36
Fecha de inscripción : 03/09/2010
Edad : 39
Localización : Argentina

http://www.i-networks.com.ar

Volver arriba Ir abajo

Mi sistema de heal Empty Re: Mi sistema de heal

Mensaje por Daedelus Jue 9 Sep 2010 - 14:46

curlor escribió:Si se me permite un consejo, me parece que usar VARs para este tipo no es necesario, puesto que los VARs son a nivel del servidor, por ejemplo el jugador Juan recibe un var.xx=2 y el jugador pepe puede poner .show var.xx y le saldrá 2, porque el var se almacena a nivel global, es mejor usar locals que además se destruirán al terminar la función.
Otra cosa es lo de hacer diferentes ifs, seria mucho mas eficiente encontrar una formula matemática que os de el tiempo que necesitáis, el script quedara menos pesado, sera mas rápido y no hará tantos cheks evitando carga innecesaria.

Entonces vos decis que me conviene cambiar todos los vars por locals?.

Atte. Daedelus BloodAxe
Daedelus
Daedelus
Moderador

Mensajes : 117
Puntos : 5168
Reputación : 3
Fecha de inscripción : 06/09/2010

Volver arriba Ir abajo

Mi sistema de heal Empty Re: Mi sistema de heal

Mensaje por curlor Jue 9 Sep 2010 - 16:42

No he revisado el script completo pero pienso que si, si usas los var solo para hacer calculos dentro de una funcion, lo mejor es cambiarlo por locals, asi tambien evitas dejar memorias sueltas, es como usar tags, aveses su uso es momentaneo y se borran para no dejar tags sueltos. Con los vars pasa igual, si su uso es momentaneo mejor usamos locals, o lo borramos al terminar.

curlor
Admin

Mensajes : 38
Puntos : 5036
Reputación : 1
Fecha de inscripción : 03/09/2010

Volver arriba Ir abajo

Mi sistema de heal Empty Re: Mi sistema de heal

Mensaje por Daedelus Jue 9 Sep 2010 - 18:43

Entonces esto me quedaría asi no?

Código:
//DON'T DELETE THIS HEADER
//CREATED BY OWNER DAEDELUS FOR SACRED LAND'S 55I
//ADAPTED FOR OWNER DAEDELUS, CURLOR, V8 & ZEUS FOR 56B

[ITEMDEF 0e21]
DEFNAME=i_bandage
TYPE=t_normal
RESOURCES=i_cloth
WEIGHT=0,2

DUPELIST=0ee9

CATEGORY=Items by Professions
SUBSECTION=Healer
DESCRIPTION=Vendas

ON=@Dclick
TARGET A quien quieres curar?
RETURN 1

ON=@Targon_char
IF (<SRC.FINDID.i_mem_healing.UID>)
SRC.SYSMESSAGE Aun no puedes curar nuevamente!
RETURN 1
ENDIF

IF (<SRC.TARG.DISTANCE> > 3)
SRC.MESSAGE *Tratas de curar a <SRC.TARG.NAME>*
SRC.MESSAGE Esta demasiado lejos!
RETURN 1
ENDIF

IF (<SRC.TARG.FLAGS>&statf_dead) && !(<SRC.TARG.BRAIN>) && !(<SRC.TARG.ID>==c_ghost_man) && !(<SRC.TARG.ID>==c_ghost_woman)
SRC.MESSAGE *Solo puedes revivir humanos*
RETURN 1
ENDIF

IF (<SRC.HITS> < 41) && ((<SRC.TARG.ID>==c_ghost_woman) || (<SRC.TARG.ID>==c_ghost_man))
SRC.MESSAGE *Fallas al resucitar*
SRC.MESSAGE No tienes suficiente vida como para resucitar.
SRC.TARG.MESSAGE <SRC.NAME> falla al resucitarte.
RETURN 1
ENDIF

IF (<SRC.TARG.FLAGS>&statf_dead) && !(<SRC.RESTEST 25 i_bandage>) && (<SRC.HEALING> <85.0)
SRC.MESSAGE *Fallas al resucitar*
SRC.MESSAGE No tienes vendas, no tienes suficiente healing o simplemente has fallado!
SRC.TARG.MESSAGE <SRC.NAME> falla al resucitarte.
RETURN 1
ENDIF

// Codigo para resucitar empieza aca...
IF (<SRC.TARG.FLAGS>&statf_dead)

IF ((<SRC.HEALING> < 950) && (<SRC.HEALING> >= 900))
SRC.TAG0.HEALINGRESULT = <QVAL (!<EVAL RAND(4)>)?1:0>
ELIF ((<SRC.HEALING> < 1000) && (<SRC.HEALING> >= 950))
SRC.TAG0.HEALINGRESULT = <QVAL (!<EVAL RAND(2)>)?1:0>
ELIF (<SRC.HEALING> == 1000)
SRC.TAG0.HEALINGRESULT = <QVAL (!<EVAL RAND(1)>)?1:0>
ENDIF

IF !<CHANCESDECURAR>
SRC.MESSAGE Resucitas a <SRC.TARG.NAME>!
SRC.TARG.MESSAGE <SRC.NAME> te ha resucitado!
// Lo resucito
SRC.TARG.RESURRECT
SRC.TARG.CONSUME 1 i_deathshroud
// Elimino 25 vendas y agrego 25 con sangre
SRC.CONSUME 25 i_bandage
SRC.NEWITEM i_bandage_bloody
SRC.ACT.AMOUNT 25
SRC.ACT.BOUNCE
ELSE
// Fallo al resucitar
SRC.MESSAGE Fallas al resucitar a <SRC.TARG.NAME>!
SRC.TARG.MESSAGE <SRC.NAME> falla al resucitarte!
// Elimino 25 vendas
SRC.CONSUME 25 i_bandage
ENDIF

SRC.HITS = <SRC.HITS> +- 40

// Skill gain
IF ((<SRC.HEALING> < 1000) && (!<EVAL RAND(40)>))
SRC.HEALING = <SRC.HEALING> + <EVAL {1 20 2 1}>
ENDIF
// Chequeo: el skill no debe superar los 100 puntos
IF (<SRC.HEALING> > 1000)
SRC.HEALING = 1000
ENDIF

RETURN 1

// Codigo para resucitar termina aca...
ENDIF

IF (<SRC.TARG.HITS> >= <SRC.TARG.STR>)
SRC.SYSMESSAGE No <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?esta:estas> lastimado!
RETURN 1
ENDIF

IF !<CHANCESDECURAR>
SRC.TAG.HEALINGRESULT 1
ELSE
SRC.TAG.HEALINGRESULT 0
ENDIF

IF (<SRC.HEALING> <= 330)
SRC.TAG.HEALINGSWITCH 0
ELIF ((<SRC.HEALING> <= 660) && (<SRC.HEALING> > 330))
SRC.TAG.HEALINGSWITCH 1
ELIF ((<SRC.HEALING> <= 990) && (<SRC.HEALING> > 660))
SRC.TAG.HEALINGSWITCH 2
ELIF (<SRC.HEALING> == 1000) && (<SRC.HEALING> > 990))
SRC.TAG.HEALINGSWITCH 3
ENDIF

SRC.MESSAGE *Tratas de <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?curar a <SRC.TARG.NAME>:curarte>*

IF (<SRC.TAG.HEALINGRESULT>)
DOSWITCH <SRC.TAG.HEALINGSWITCH>
// Menos de 33 de heal
BEGIN
SRC.MESSAGE <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?Lo:Te> curas pobremente.
SRC.TARG.MESSAGE <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?<SRC.NAME> Me cura pobremente.>
SRC.TARG.HITS = <SRC.TARG.HITS> + ((<SRC.HEALING>/2)/20)
SRC.TARG.UPDATE
END
// Entre 33 y 66 de heal //From Here
BEGIN
SRC.MESSAGE <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?Lo:Te> curas muy bien.
SRC.TARG.MESSAGE <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?<SRC.NAME> Me cura bien.>
SRC.TARG.HITS = <SRC.TARG.HITS> + ((<SRC.HEALING>/2)/20)
SRC.TARG.UPDATE
END
// Entre 66 y 99 de heal
BEGIN
SRC.MESSAGE <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?Lo:Te> curas perfectamente.
SRC.TARG.MESSAGE <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?<SRC.NAME> Me cura muy bien.>
SRC.TARG.HITS = <SRC.TARG.HITS> + ((<SRC.HEALING>/2)/20)
SRC.TARG.UPDATE
END
// Entre 99 y 100 de heal
BEGIN
SRC.MESSAGE <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?Lo:Te> curas como un experto.
SRC.TARG.MESSAGE <QVAL (<SRC.TARG.SERIAL> != <SRC.SERIAL>)?<SRC.NAME> Me cura como un experto.>
SRC.TARG.HITS = <SRC.TARG.HITS> + ((<SRC.HEALING>/2)/15)
SRC.TARG.UPDATE
END
// Fin
ENDDO //Until Here
// Elimino una venda y agrego una con sangre
SRC.CONSUME 1 i_bandage
SRC.NEWITEM i_bandage_bloody
SRC.ACT.BOUNCE
// Agrego item de memoria
SRC.NEWITEM i_mem_healing
SRC.ACT.EQUIP
// Fallo...
ELSE
// Elimino una venda
SRC.MESSAGE Oh no! Has fallado!!!
SRC.CONSUME 1 i_bandage
ENDIF

IF (<SRC.TARG.HITS> > <SRC.TARG.STR>)
SRC.TARG.HITS = <SRC.TARG.STR>
ENDIF

// Skill gain
IF ((<SRC.HEALING> < 330) && (!<EVAL RAND(10)>))
SRC.HEALING = <SRC.HEALING> + <EVAL {1 20 2 1}>
ELIF ((<SRC.HEALING> < 660) && (!<EVAL RAND(40)>))
SRC.HEALING = <SRC.HEALING> + <EVAL {1 20 2 1}>
ELIF ((<SRC.HEALING> < 1000) && (!<EVAL RAND(60)>))
SRC.HEALING = <SRC.HEALING> + <EVAL {1 20 2 1}>
ENDIF
// Chequeo: el skill no debe superar los 100 puntos
IF (<SRC.HEALING> > 1000)
SRC.HEALING = 1000
ENDIF

// Fin
RETURN 1

[ITEMDEF i_mem_healing]
ID=i_memory
TYPE=t_eq_script
NAME=Healing

ON=@Equip
IF ((<src.dex> >= 0) && (<SRC.dex> <= 9))
TIMER=30
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 10) && (<SRC.dex> <= 19))
TIMER=18
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 20) && (<SRC.dex> <= 29))
TIMER=14
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 30) && (<SRC.dex> <= 39))
TIMER=11
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 40) && (<SRC.dex> <= 59))
TIMER=8
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 60) && (<SRC.dex> < 70))
TIMER=7
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 70) && (<SRC.dex> < 80))
TIMER=6
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 80) && (<SRC.dex> < 90))
TIMER=6
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 90) && (<SRC.dex> < 100))
TIMER=5
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 100) && (<SRC.dex> < 110))
TIMER=4
SRC.ANIM=19
ELSE
IF ((<src.dex> >= 110) && (<SRC.dex> < 130))
TIMER=3
SRC.ANIM=19
ELSE
IF (<SRC.dex> >= 130)
TIMER=2
SRC.ANIM=19
ENDIF

[ITEMDEF 0ee9]
//clean bandages
DUPEITEM=0e21

[FUNCTION CHANCESDECURAR]
IF <SRC.TARG.KARMA> < -100
IF(<OBJ.FLAGSs>&STATF_CRIMINAL)
SRC.CRIMINAL = 1
ENDIF
ENDIF
LOCAL.SKILL_REQ 100
LOCAL.SKILL_CURR <SRC.HEALING>
LOCAL.SKILL_DIF <EVAL <LOCAL.SKILL_REQ> + -<LOCAL.SKILL_CURR>>
LOCAL.SKILL_BELL <EVAL RANDBELL(<LOCAL.SKILL_DIF>, 20.0)>
IF (<LOCAL.SKILL_DIF> < 0)
LOCAL.SKILL_BELL <EVAL 1000 +- <LOCAL.SKILL_BELL>>
ENDIF
IF (<EVAL RAND(100)> > <EVAL <LOCAL.SKILL_BELL> / 20>)
RETURN 1
ENDIF

[EoF]

Atte. Daedelus BloodAxe
Daedelus
Daedelus
Moderador

Mensajes : 117
Puntos : 5168
Reputación : 3
Fecha de inscripción : 06/09/2010

Volver arriba Ir abajo

Mi sistema de heal Empty Re: Mi sistema de heal

Mensaje por Admin OuPMaN Jue 9 Sep 2010 - 19:13

Si no lo he visto mal sólo te falta agregar lo que dice V8 de los criminales. En cuanto a lo de si sphere acepta números negativos. Si los acepta, como ejemplo claro el karma se configura en algunos npcs con números negativos.
Admin OuPMaN
Admin OuPMaN
Admin

Mensajes : 214
Puntos : 5517
Reputación : 18
Fecha de inscripción : 03/04/2010
Edad : 27
Localización : Linares (España)
Empleo /Ocio : Estudiante, Pianista, Compositor y Diseñador de Webs

https://ayudasphereserver.forosactivos.net

Volver arriba Ir abajo

Mi sistema de heal Empty Re: Mi sistema de heal

Mensaje por Daedelus Vie 10 Sep 2010 - 2:08

Lo he agregado aca en la funcion CHANCESDECURAR. Para que siempre chequee si es crimi o no. Razz, tambien le voy a agregar que chequee si tiene kills.

Código:
[FUNCTION CHANCESDECURAR]
IF <SRC.TARG.KARMA> < -100
IF <SRC.TARG.KILLS> < 0
IF(<OBJ.FLAGSs>&STATF_CRIMINAL)
SRC.CRIMINAL = 1
ENDIF
ENDIF
ENDIF
LOCAL.SKILL_REQ 100
LOCAL.SKILL_CURR <SRC.HEALING>
LOCAL.SKILL_DIF <EVAL <LOCAL.SKILL_REQ> + -<LOCAL.SKILL_CURR>>
LOCAL.SKILL_BELL <EVAL RANDBELL(<LOCAL.SKILL_DIF>, 20.0)>
IF (<LOCAL.SKILL_DIF> < 0)
LOCAL.SKILL_BELL <EVAL 1000 +- <LOCAL.SKILL_BELL>>
ENDIF
IF (<EVAL RAND(100)> > <EVAL <LOCAL.SKILL_BELL> / 20>)
RETURN 1
ENDIF

[EoF]

Atte. Daedelus BloodAxe
Daedelus
Daedelus
Moderador

Mensajes : 117
Puntos : 5168
Reputación : 3
Fecha de inscripción : 06/09/2010

Volver arriba Ir abajo

Mi sistema de heal Empty Re: Mi sistema de heal

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.