SphereCommunity

Full Version: Negotiate Features - AssistUO/Razor
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6
Hello guys!
Good news for you all...
A month ago I asked the community if someone could help me to make work the Negotiate Features with Server of AssistUO/Razor on our beloved sphere.

One guy named Feeh, my old friend helped me.
I want to give him 50% of the credits for the code because without his help with the sendpacket I wouldn't finish it.
Others 50% would go to me Tongue hahahaha
Can't forget Diego and Diogo from making the AssistUO, thats a VERY GOOD player assistant and release the MAPUO Protocol code, that will work with the code I will share.

Okay, let me explain how it works.
Do you remember the light, sound, music, season, weather filters on Razor?
Right, they are present on AssistUO too.
But with the right code, we can block them, so you will have your players always playing as you want to.

MapUO Protocol - Created by Diego (MapUO code) and modified by me to work the Negotiate Features.
PHP Code:
// MAPUO PROTOCOL SUPPORT
// AUTHOR: DIEGO@RUNUO.COM
// LAST UPDATE: 11/04/2013
// LAST UPDATE: 10/09/2013 - EXTREME
//
// INSTRUCTIONS:
//
// OPEN SPHERE.INI AND INSERT THE FOLLOWING LINE:
// PACKET240=F_HANDLER_EXTENDEDPROTOCOL
//
// RESTART OR RESYNC THE SERVER IF NECESSARY.
// YOU CAN ADJUST THE FOLLOWING DEFS AS YOU WISH

[DEFNAME MAPUO_SETTINGS]
MAPUO_PARTY_ENABLED            1
MAPUO_GUILD_ENABLED            1
MAPUO_GUILD_HITPOINTS          1
MAPUO_GUILD_DISABLETAG         MAPUO_INVISIBLE
NEGOTIATE_FEATURES_ENABLED    1

[DEFNAME FEATURES]    // 1 = BLOCK | 0 = ALLOW
FEATURE.1        1,FilterWeather        //= 1 << 0,        // Weather filter
FEATURE.2        1,FilterLight        //= 1 << 1,        // Light filter
FEATURE.3        1,SmartTarget        //= 1 << 2,        // Smart targeting option
FEATURE.4        1,RangedTarget        //= 1 << 3,        // Range check for targeting option
FEATURE.5        0,AutoOpenDoors        //= 1 << 4,        // Automatically open doors
FEATURE.6        0,DequipOnCast        //= 1 << 5,        // Clear hands before casting
FEATURE.7        0,AutoPotionEquip    //= 1 << 6,        // Dequip and equip hands for potions
FEATURE.8        0,PoisonedChecks    //= 1 << 7,        // Poisoned checks for macros and block heal if poisoned option
FEATURE.9        0,LoopedMacros        //= 1 << 8,        // Looped macros
FEATURE.10        0,UseOnceAgent        //= 1 << 9,        // Use once agent and command
FEATURE.11        0,RestockAgent        //= 1 << 10,    // Restock agent
FEATURE.12        0,SellAgent            //= 1 << 11,    // Vendor sell agent
FEATURE.13        0,BuyAgent            //= 1 << 12,    // Vendor buy agent
FEATURE.14        0,PotionHotkeys        //= 1 << 13,    // Potions hotkeys
FEATURE.15        0,RandomTargets        //= 1 << 14,    // Random targeting hotkeys and commands
FEATURE.16        0,ClosestTargets    //= 1 << 15,    // Closest targeting hotkeys and commands
FEATURE.17        0,OverheadHealth    //= 1 << 16,    // Display health percentage over head
FEATURE.18        1,AutolootAgent        //= 1 << 17,    // Autoloot agent
FEATURE.19        1,BoneCutterAgent    //= 1 << 18,    // Bone cutter agent
FEATURE.20        1,AdvancedMacros    //= 1 << 19,    // Advanced macros engine
FEATURE.21        0,AutoRemount        //= 1 << 20,    // Automatically remound after dismount
FEATURE.22        1,AutoBandage        //= 1 << 21,    // Automatically apply bandages
FEATURE.23        1,BuffChecks        //= 1 << 22,    // Buff bar checks for macros
FEATURE.24        1,FilterSeason        //= 1 << 23,    // Season filter

[DIALOG D_NEGOTIATE_FEATURES]
0,0
NOMOVE
NOCLOSE
GUMPPICTILED 0 0 806 606 2624
CHECKERTRANS 0 0 806 606

[FUNCTION F_FEATURES]
LOCAL.FEATURES 0
SERV
.LOG SETTING THE FEATURES TO NEGOTIATE
FOR I 1 24
 
IF <GETARGVX 1,<DEF.FEATURE.<dLOCAL.I>>> == 1
  LOCAL
.FEATURES |= <HVAL 2@(<dLOCAL.I>-1)>
  
SERV.LOG - <GETARGVX 2,<DEF.FEATURE.<dLOCAL.I>>>
 ENDIF
ENDFOR
SERV.LOG NEGOTIATE FEATURES SET <STRTOUPPER <LOCAL.FEATURES>>
VAR.
FEATURES <LOCAL.FEATURES>
RETURN 
1

[FUNCTION F_NEGOTIATE_FEATURES]
SDIALOG D_NEGOTIATE_FEATURES
TAG
.NEGOTIATEFEATURES 1
FLAGS 
|= STATF_FREEZE
SENDPACKET 0F0 00 0C 0FE D00 D
<VAR.FEATURES>
SYSMESSAGE @063,,1 To play hereyou must use AssistUO or Razor and have 'Negotiate Features with Server' enabled. If it's disabled, you have 8 seconds to enable it or will be disconnected in 10 seconds.
TIMERF 8,SENDPACKET 0F0 00 0C 0FE D00 D<VAR.FEATURES>
TIMERF 10,F_NEGOTIATE_FEATURES_2
RETURN 1

[FUNCTION F_NEGOTIATE_FEATURES_2]
IF <dTAG.NEGOTIATEFEATURES>
 FLAGS &= ~STATF_FREEZE
 SYSMESSAGE @026,,1 You must activate '
Negotiate Features with Server' in your assistant to play.
 IF <ISONLINE>
  SENDPACKET 082 04
 ENDIF
ENDIF
RETURN 1

[FUNCTION F_NEGOTIATE_FEATURES_3]
TAG.NEGOTIATEFEATURES
FLAGS &= ~STATF_FREEZE
TRYSRC <UID> DIALOGCLOSE D_NEGOTIATE_FEATURES
SYSMESSAGE @044,,1 You negotiated the features with server and you'
re ready to play.
UPDATEX
RETURN 1

[FUNCTION F_HANDLER_EXTENDEDPROTOCOL]
IF (<
dLOCAL.NUM> <= 8)
 
REF1 <LOCAL.CHAR>
 IF (<
dARGN1> != 240)
  RETURN 
1
 
ELSEIF (<dLOCAL.3> == 255) && (<REF1.dTAG.NEGOTIATEFEATURES>)
  
REF1.F_NEGOTIATE_FEATURES_3
 
ELSEIF (<dLOCAL.3> == 0) && (<dDEF.MAPUO_PARTY_ENABLED> == 1)
  
REF1.F_MAPUO_HANDLE_PARTY
 
ELSEIF (<dLOCAL.3> == 1) && (<dDEF.MAPUO_GUILD_ENABLED> == 1)
  
REF1.F_MAPUO_HANDLE_GUILD <dLOCAL.4>
 ENDIF
 RETURN 
1
ENDIF

[FUNCTION 
F_MAPUO_HANDLE_PARTY]
IF !<
ISINPARTY>
 RETURN
ENDIF
LOCAL.DATA = <HVAL 01>
LOCAL.COUNT 0
FOR X 0 <EVAL <PARTY.MEMBERS> - 1>
 
REF1 = <PARTY.MEMBER.<DLOCAL.X>>
 IF (<
REF1>) && (<REF1> != <UID>) && (<DISTANCE <REF1>> >= 18)
  
LOCAL.COUNT ++
  
LOCAL.DATA = <LOCAL.DATAD<HVAL <REF1.UID>> W<HVAL <REF1.P.X>> W<HVAL <REF1.P.Y>> <HVAL <REF1.MAP>>
 ENDIF
ENDFOR
IF <
DLOCAL.COUNT> > 0
 LOCAL
.DATA = <LOCAL.DATAD<HVAL 00>
 
LOCAL.LENGTH = <EVAL + (<LOCAL.COUNT> * 9) + 4>
 
SENDPACKET 0F0 W<HVAL <LOCAL.LENGTH>> <LOCAL.DATA>
ENDIF

[FUNCTION 
F_MAPUO_HANDLE_GUILD]
IF !<
GUILD>
 
SENDPACKET 0F0 W<HVAL 9> <HVAL 2> <HVAL 0D<HVAL 00>
 RETURN
ENDIF
LOCAL.DATA = <HVAL 02> <HVAL <ARGN1>>
LOCAL.COUNT 0
FOR X 0 <EVAL <GUILD.MEMBER.COUNT> - 1>
 
REF1 = <GUILD.MEMBER.<DLOCAL.X>.UID>
 IF (<
REF1>) && (<REF1> != <UID>) && (<REF1.ISONLINE>) && (<DREF1.TAG0.<DEF.MAPUO_GUILD_DISABLETAG>> == 0)
  IF (<
DARGN1> == 0) || ((<DARGN1> == 1) && (<DISTANCE <REF1>> >= 18))
   
LOCAL.COUNT ++
   
LOCAL.DATA = <LOCAL.DATAD<HVAL <REF1.UID>> 
   IF (<
DARGN1> == 1)
    
LOCAL.DATA = <LOCAL.DATAW<HVAL <REF1.P.X>> W<HVAL <REF1.P.Y>> <HVAL <REF1.MAP>> <HVAL <REF1.F_MAPUO_HITSPERCENT>>
   ENDIF
  ENDIF
 ENDIF
ENDFOR
LOCAL.DATA = <LOCAL.DATAD<HVAL 00>
IF (<
DARGN1> == 0)
 
LOCAL.LENGTH = <EVAL + (<LOCAL.COUNT> * 4) + 4>
ELSE
 
LOCAL.LENGTH = <EVAL + (<LOCAL.COUNT> * 10) + 4>
ENDIF
SENDPACKET 0F0 W<HVAL <LOCAL.LENGTH>> <LOCAL.DATA>

[FUNCTION 
F_MAPUO_HITSPERCENT]
IF (<
dDEF.MAPUO_GUILD_HITPOINTS>) && (<MAXHITS> > 0)
 RETURN <
FEVAL <FLOATVAL (<HITS> / <MAXHITS>) * 100>>
ELSE
 RETURN 
0
ENDIF

[
EOF


PHP Code:
[FUNCTION F_ONSERVER_START]
F_FEATURES 

On Sphere_skills.scp
PHP Code:
ON=@LOGIN
IF <dDEF.NEGOTIATE_FEATURES_ENABLED> == 1
 F_NEGOTIATE_FEATURES
ENDIF 

If you don't have this function, copy it.
PHP Code:
[PLEVEL 7]
GETARGVX

[FUNCTION GETARGVX]
IF <
ARGV[0]> == -1
 
RETURN <EVAL <ARGV>-1>
ELSE
 RETURN <
ARGV[<ARGV[0]>]>
ENDIF

[
EOF

Quick Guide
- Add the "PACKET240=F_HANDLER_EXTENDEDPROTOCOL" on Sphere.ini;
- Add the "F_FEATURES" function on Sphere_serv_triggers.scp;
- Add the "F_NEGOTIATE_FEATURES" on @Login in Sphere_skills.scp;
- Set what you want to block/allow on DEFNAMES and save; (Note: the features will be calculated on F_FEATURES, so it will be calculated on F_ONSERVER_START or you can use .F_FEATURES)
- To login, use AUO or Razor with the 'Negotiate features with server' enabled;
- Give me millions of +rep;
- Enjoy.

Edit: added defname to enable/disable the negotiate features.
Just one word: EPIC
Nice job
This is really good. well done sir.
I asume this is about them (AssistUO) but if you tick Light filter and then log in you get the light filter even if you blocked it, but in this moment you can't tick it out.

And dunno if I'm doing anything wrong (instructions about installing it are very simple) but I can't do more than few steps upon login, I must move using teleports!
(09-18-2013 05:35 PM)XuN Wrote: [ -> ]I asume this is about them (AssistUO) but if you tick Light filter and then log in you get the light filter even if you blocked it, but in this moment you can't tick it out.

And dunno if I'm doing anything wrong (instructions about installing it are very simple) but I can't do more than few steps upon login, I must move using teleports!
Oh, just forgot the UPDATEX on the player.
Code updated.
Thanks XuN.
Well.. no one else has posted anything so I guess it's just me but....

Code:
05:39:(negotiate.scp,55)SETTING THE FEATURES TO NEGOTIATE
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,1,FilterWeather>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,0,FilterLight>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,1,SmartTarget>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,1,RangedTarget>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,0,AutoOpenDoors>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,0,DequipOnCast>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,0,AutoPotionEquip>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,0,PoisonedChecks>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,0,LoopedMacros>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,0,UseOnceAgent>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,0,RestockAgent>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,0,SellAgent>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,0,BuyAgent>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,0,PotionHotkeys>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,0,RandomTargets>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,0,ClosestTargets>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,0,OverheadHealth>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,1,AutolootAgent>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,1,BoneCutterAgent>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,1,AdvancedMacros>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,0,AutoRemount>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,1,AutoBandage>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,1,BuffChecks>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:ERROR:(negotiate.scp,57)Can't resolve <GETARGVX 1,1,FilterSeason>
05:39:ERROR:(negotiate.scp,57)Undefined symbol ''
05:39:(negotiate.scp,62)NEGOTIATE FEATURES SET 00

Took 7 steps ingame after it allowed me in and then it froze up...

Your UPDATEX does not solve the walking issue...
Just tried it.
(09-18-2013 08:42 PM)Mordaunt Wrote: [ -> ]Well.. no one else has posted anything so I guess it's just me but....

Took 7 steps ingame after it allowed me in and then it froze up...

Your UPDATEX does not solve the walking issue...
Just tried it.
Updated the first post with GETARGVX function, so you can get it there.
Whats the walking issue?
Sphere build: Sep 15 2013 (00:05:19), internal build #1626

UO Client: 7.0.32.11

Razor: 1.0.13

Errors fixed now.
However same issue as Xun.... take 7 to 11 steps and then unable to move anymore
Can talk, cast e.t.c..
Teleporting to a new location frees the player up for another 7 to 11 steps then same issue
Yes, the problem is only that, we can everything except moving. I also had the getargvx error, but I changed with my function and forgot about it Tongue
Pages: 1 2 3 4 5 6
Reference URL's