Hi the spherewiki should be a great help to you with item creation.
Though just to help, if you were creating a posion first it must be in a bottle or have the id of a bottle I assume thats what 0efb is ? the type I guess must be T_Potion thats something you dclick and apparently drink, unlike t_normal which kind of declares a custom script. Though you can use any type there or make your own to suit. A value of 0 should be considered because if you add these to your vendor NPCS to sell at any point, they are a bit cheap !
The resourses are fine but were is the nightshade. LOL @ the withdrawal time thats funny.
PHP Code:
[DEFNAME potionControlPanel]
color_poison_nightshade 63
PHP Code:
[ITEMDEF i_potion_nightShade]
DEFNAME=i_potion_nightShade
NAME=Nightshade Poison
ID=i_bottle_GREEN
WEIGHT=1
TYPE=t_potion_nightshade
TDATA1=i_bottle_empty
RESOURCES=i_reag_nightshade 3, i_bottle_EMPTY
SKILLMAKE=ALCHEMY 100.0
ON=@Create
COLOR=color_poison_nightshade
PHP Code:
[TYPEDEF t_potion_nightshade]
ON=@DCLICK
IF (<SRC.FINDID.i_potiondelay>)
SRC.SYSMESSAGE @00023,,1 You can't use another potion yet.
RETURN 1
ELSE
NEWITEM i_potiondelay, 1, <SRC.UID>
NEWITEM i_potionNightshadeAddiction, 1, <SRC.UID>
RETURN 0
ENDIF
PHP Code:
[ITEMDEF i_potiondelay]
ID=i_bottle_empty
TYPE=t_eq_script
WEIGHT=0
LAYER=layer_special
ON=@CREATE
ATTR=attr_invis|attr_decay
TIMER=7
ON=@EQUIP
TIMER=7
ON=@TIMER
REMOVE
RETURN 1
Then all you would have to deal with is the i_potionNightshadeAddiction memory. First we will add your variables to the control.
PHP Code:
[DEFNAME potionControlPanel]
color_potion_nightshade 63
nightshade_int_Increase 10
nightshade_dose_timeout 72
nightshade_withdrawl_time 96
nightshade_withdrawl_penalty 15
Before your write the memory that will control the effect on the player you need to consider your time format its in hours so we could use a function to convert that to seconds-ish
PHP Code:
[FUNCTION f_convertHoursSecs]
RETURN <EVAL <ARGV[0]> * 60 * 60>
now when i want to use the value from the control to compare with the server time
i write <EVAL <f_convertHoursSecs <nightshade_withdrawl_time>>>
Finally the Memory
PHP Code:
[ITEMDEF i_nightShadeEffect]
DEFNAME=nightShadeEffect
ID=i_flesh_brain
TYPE=t_eq_script
NAME=Nightshade Effect
layer=layer_special
ON=@CREATE
ATTR=attr_newbie|attr_decay|attr_move_never
TIMER=1
ON=@TIMER
IF !<CONT.TAG0.NightShadeTimer> && !<CONT.TAG0.NightShadeWithdrawlTimer>
// They wont have either on first effect so give the dose timer and the effect here
CONT.TAG.NightShadeTimer=<EVAL <f_convertHoursSecs <nightshade_dose_timeout>>>
f_doNightShadeEffectOnTarget <CONT.UID>
ELIF <CONT.TAG.NightShadeTimer> && !<CONT.TAG0.NightShadeWithdrawlTimer>
// If they have the effect active just count the timer up one
CONT.TAG.NightShadeTimer --
IF <EVAL <CONT.TAG.NightShadeTimer>> < 1
CONT.TAG.NightShadeTimer=
CONT.TAG.NightShadeWithdrawlTimer=<EVAL <f_convertHoursSecs <nightshade_withdrawl_time>>>
f_doNightShadeWithdrawl <CONT.UID>
ENDIF
ELSE
IF <CONT.TAG0.NightShadeWithdrawlTimer>
// If they are in withdrawel they wont have the effect,
// The effect should have been removed by here
// The peanlity already applied before here
// Just count the withdrawl Down.
CONT.TAG.NightShadeWithdrawlTimer --
IF <EVAL <CONT.TAG.NightShadeWithdrawlTimer>> < 1
f_removeNightShadeWithdrawl <CONT.UID>
CONT.TAG.NightShadeTimer=
REMOVE
RETURN 1
ENDIF
ENDIF
ENDIF
TIMER=1
RETURN 1
^^ thats got to have errors in it but you should see whats supposed to happen.
finally the functions
f_doNightShadeEffect
f_removeNightShadeEffect
f_doNightShadeWithdrawl
f_removeNightShadeWithdrawl
PHP Code:
[FUNCTION f_doNightShadeEffect]
REF1=<SERV.UID.<ARGV[0]>>
REF1.INT = <EVAL <REF1.INT> + nightshade_int_Increase >
[FUNCTION f_removeNightShadeEffect]
REF1=<SERV.UID.<ARGV[0]>>
REF1.INT = <EVAL <REF1.INT> - nightshade_int_Increase >
[FUNCTION f_doNightShadeWithdrawl]
REF1=<SERV.UID.<ARGV[0]>>
REF1.INT = <EVAL <REF1.INT> - nightshade_withdrawl_penalty >
REF1.DEX= <EVAL <REF1.DEX> - nightshade_withdrawl_penalty >
REF1.STR= <EVAL <REF1.STR> - nightshade_withdrawl_penalty >
[FUNCTION f_removeNightShadeWithdrawl]
REF1=<SERV.UID.<ARGV[0]>>
REF1.INT = <EVAL <REF1.INT> + nightshade_withdrawl_penalty >
REF1.DEX= <EVAL <REF1.DEX> + nightshade_withdrawl_penalty >
REF1.STR= <EVAL <REF1.STR> + nightshade_withdrawl_penalty >
^^ I havnt tested any of that so you might have to fix or rearrange it, but it should give you a good idea of how you could layout and code something like drugs