markdwags / razor Goto Github PK
View Code? Open in Web Editor NEWRazor is a free tool designed to help with simple tasks while playing Ultima Online.
Home Page: https://www.razorce.com
License: GNU General Public License v3.0
Razor is a free tool designed to help with simple tasks while playing Ultima Online.
Home Page: https://www.razorce.com
License: GNU General Public License v3.0
Would like to be able to decide how my targeting will work if I have an aggressive spell or a beneficial spell in my targeting macro.
For example, if I cast Greater Heal and use my last target macro, in that macro it would check to see if the spell is Beneficial and if so, target the last friend, otherwise, target the last enemy. Basically allowing us to build our own smart targeting system based on our own rules.
It also allows for better solutions to canceling spells and using the queue system.
Crashes and throws infinite ammount of error windows
Steps to reproduce:
Crash.log: https://pastebin.com/aMepTAZu
Notes:
Windows 10
Razor version 1.6.4.11
Tested on both OSI client version 7.0.85.15 and ClassicUO version 0.1.3.439
Error window says Packet Filter Exception
This crash seems to happen when there are lots of mobiles doing lots of actions when logging in, like in Ophidians vs Terathans battling each other.
client position not passed to Razor since version 1.6.x.x (working fine in 1.5.0.17), therefore Razor doesn't know when it is near a door
Using ClassicUO on UO:R
Trying to use LastObject Hotkey set from Razor (v1.6.2.23) and it opens inventory. When I unset the key and use ClassicUO's hotkey, lastobject works as intended.
Line 299 in 3135125
Index Out Of Range Exception is thrown if the buffs collection is empty and hasn't appended any ", " to trim.
Caused by edge-case scenario when switching the mobile of an active client state.
Please make one list of targets and various buttons to add them as absolute target, double-click target, lift target, etc. This would make easier to script things like restocking or interacting with mounts and other items that require different types of interactions (targeting, dbl clicking, etc) without having to add them to more than one list
If you have this(Remove weapon before casting) toggled and you go to use a Ninjitsu ability (Death Strike specifically) it will remove the weapon by using this ability...
Not sure why you might have this toggled on a ninja character but it should function like Chivalry where it wont remove abilities when you cast chiv spells.
Thanks.
When using CUO, filtering dragons doesn't change the graphic.
Organizer
When setup for your backpack and have the target container open, it will not move any item from the container to your backpack. It will work if you have a separate container in your backpack to sort into.
Restock
When restocking from a target container to your backpack it will only take items if there is more than one stack. Which stack it takes seems to be random, if there is only one stack it will not restock. This appears to be happening with all containers.
Scavenger
Is not picking up items from the ground when enabled, even when right on top of them. I know with the old razor you could set the pick-up range and delay which I didn't see in this one. So I'm assuming it's within 2 tiles similar to the auto-open corpses feature.
Note: It's possible that I'm performing these incorrectly as I'm basing the functionality on the older version of Razor which could have been changed or settings moved that I didn't notice. If that is the case feel free to direct me in the right direction so I can properly test the functionality and get back to you.
Fresh install from Your's PowerShell script.
Problem:
had to add to ClassicUO.exe.config " " to load Razor becouse of using newest .NET 4.
Every each open application ClassicUO is checking for updates and then downloads it, then it overrides ClassicUO.exe.config with newest config, deleting any entries there.
Could You set some variable that this didn't occur (update)?
I have another issue with how the targetting works. You have multiple options for targetting. Im using Target next friendly & Target next non-friendly. But it doesn't really matter which one you use. THe issue is that Smart Target doesn't work in a useful way (correct me if I'm wrong). If you use Target Next Friendly, it will set the target to both Beneficial and Harmful. If you enable "Next/Previous does not set smart target", it obviously will not, but then you can't use the Next target to actually target things since nothing will ever be set. There are options to "Set Beneficial Target" and "Set Harmful Target", but those require you to manually click on bars - again, making it significantly worse/making the whole Next Target pointless. So How Should it work? Next Friendly should only set the Beneficial Target & Next Non-Friendly should only set the harmful target. Then smart target would probably be useful.
This only happens when using chivalry from a book, rather than a hotkey. The people on their Discord said this is a Razor issue.
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: index
at System.Linq.Enumerable.ElementAt[TSource](IEnumerable1 source, Int32 index) at Assistant.PacketHandlers.ExtendedClientCommand(Packet p, PacketHandlerEventArgs args) at Assistant.PacketHandler.ProcessFilters(List
1 list, Packet p)
Version "stable".
Installed from script.
Playing on custom UO server.
Symptom: Immediate after death cannot move in any direction. Se only text "I'm dead and I cannot do that"
Restart of game is workaround for now (relogin, without closing application).
Change "Auto Open Corpses" to open corpses as you walk up to them. When playing any kind of ranged character (Tamer, Summoner, Archer, etc) the feature cannot be used after death when you walk up to the corpse. You have to be within 1-2 tiles for the feature to work.
Add next/prev monsters for all the different notoriety types similar to what you have done with humanoids.
I propose to change the name of the extension to
.razors, .script or .rs
There already exist razor files (to avoid confusing)
Is there any intelligence for Visual Studio code to create the script?
on ClassicUO dev 0.0.1.223
Outlands Shard
Razor ver v1.6.0.6
Screenshots do not work with ClassicUO client. This is mostly not needed with modern screenshot tools outside of the assistant but the screenshot on death is especially useful for all sorts of things.
With the latest dev build you cannot invoke Virtues (for example, Honor) via Macro. The alternative is to write a macro that opens your paperdoll, opens the Virtues gump, and then selects the right Virtue, but this doesn't seem to work.
The Classic Client natively has a macro option called 'InvokeVirtue' which allows you to select Valor, Sacrifice, and Honor.
items will not be organised (razor says "Organize Agent did not find any items to move) if they are inside a container which is contained any levels below and inside the hot bag (organiser receiver). Or put in a different way, if the bag with the items is contained in any level below the hotbag (receiver), organiser won't find the items.
To reproduce, have a scavenger agent set to send easter eggs to a bag inside the backpack (together with everything else that gets scavenged/looted). When trying to organise the easter eggs to first level of backpack, organiser finds 0 items.
It will work if the receiver hot bag is not contained within the hot bag hierarchy.
In the new Scripting language, please add the variable 'hidden' that detects if the person is currently hidden. Will help for some backstab and skill gain scripts.
When using a gnarled staff and you toggle the secondary ability ML Era and older it should try to use Force of Nature special Ability.
Currently it tries to use Para Blow.. this was also how it was on ClassicUO but it was recently fixed now it needs to be fixed in razor.
Thank you :)
Currently the razor scripting cannot distinguish when items have the same graphics ID but a different hue, for instance, leather is seen as the same as dull hide when using agents.
Allow commands that are related to targeting by graphics ID, to distinguish hues.
Allow agents to distinguish items that have the same graphics ID, to distinguish hues.
When using Target keys in Razor the default setting is to drop a spell if you have a cursor up. For example, using Target Nearest Non-Friendly Humanoid, it will drop the cursor and target the intended target with the spell. Several people have requested the ability to just get that target, but drop the spell with the last target key when they want to instead.
Using ClassicUO
Might be Outlands specific.
I made a macro, and the line GumpResponse (Button 6) will disconnect the client with the message Connection lost: SocketError, if the line is executed while any sort of gump is open.
The image below describes it. The button is the one the arrow points to. It doesn't have to be that specific gump open, any will crash it. It doesn't need the other lines in the macro, only the marked line is enough.
When you cast a spell with "Override Spell Hues" enabled, they aren't overridden.
I had an issue loading Razor from ClassicUO on my Linux machine:
OS: Arch Linux x86_64
Kernel: 5.2.5-arch1-1-ARCH
I have updated my setting.json in ClassicUO directory to point at the path that my Razor installation is in, and when I ran it showed me the Razor logo unlike the default Razor.dll from the ClassicUO release file, but fails to actually load the main window.
The ClassicUO version that I'm using is Alpha - 0.0.1.11
and I tried both Razor v1.6.0.57
and Razor-dev-preview
versions, and getting the same error.
ClassicUO continues to function though.
There is my current setting.json:
{
"username": "",
"password": "",
"ip": "play.uooutlands.com",
"port": 2593,
"ultimaonlinedirectory": "/media/backup/static/ultima-online/outlands/Outlands Ultima Online",
"clientversion": "7.0.15.1",
"login_fps": 60,
"debug": false,
"profiler": false,
"saveaccount": true,
"autologin": false,
"reconnect": false,
"reconnect_time": 0,
"login_music": true,
"login_music_volume": 70,
"shard_type": 2,
"fixed_time_step": true,
"plugins": [
"/media/static/ultima-online/razor/Razor.exe"
]
}
And this is the output from the console:
10:14:01 PM | Info | Loading skillgrp.mul...
10:14:01 PM | Trace | Files loaded in: 467 ms!
10:14:01 PM | Trace | Network calibration...
10:14:01 PM | Trace | Setup packet for Ultima live
10:14:01 PM | Trace | Done!
10:14:01 PM | Trace | Loading plugins...
10:14:01 PM | Trace | Loading plugin: /media/backup/static/ultima-online/razor/Razor.exe
10:14:01 PM | Trace | assembly: 0
Plugin threw an error during Initialization.
Exception has been thrown by the target of an invocation.
at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00051] in <7768781867c04892b60eb12ebb814c26>:0
at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <7768781867c04892b60eb12ebb814c26>:0
at ClassicUO.Network.Plugin.Load () [0x002d5] in <e90e2f5b26e844fcb5a90cdcbf156f96>:0 Cannot call Invoke or BeginInvoke on a control until the window handle is created
at System.Windows.Forms.Control.FindControlToInvokeOn () [0x0001f] in <bc2a1fda48804a5f83c07ab7961072f0>:0
at System.Windows.Forms.Control.Invoke (System.Delegate method, System.Object[] args) [0x00000] in <bc2a1fda48804a5f83c07ab7961072f0>:0
at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control.Invoke(System.Delegate,object[])
at System.Windows.Forms.Control.Invoke (System.Delegate method) [0x0001d] in <bc2a1fda48804a5f83c07ab7961072f0>:0
at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control.Invoke(System.Delegate)
at Assistant.SplashScreen.End () [0x00013] in <45285239565a4fc08fb7157de226ff84>:0
at Assistant.Engine.Install (CUO_API.PluginHeader* plugin) [0x00136] in <45285239565a4fc08fb7157de226ff84>:0
at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0003b] in <7768781867c04892b60eb12ebb814c26>:0
10:14:01 PM | Warning | Invalid plugin: /media/static/ultima-online/razor/Razor.exe
10:14:01 PM | Trace | Done!
10:14:01 PM | Warning | This OS does not support the UOAssist API
10:14:01 PM | Trace | Cleaning routine running...
Any idea how I can fix it?
OSI client 5.0.9.1 (Patch31) - Razor v1.6.3.42 (doesn't seem to occur with ClassicUO)
If the item was on the ground:
If the item was on a PD or in a container when dragged: a re-log is required to make it reappear
Not sure but this looks like the same/similar bug to one in Razor 1.0.14 (https://web.archive.org/web/20131217044352/http://www.runuo.com/community/threads/razor-1-0-14-update-october-2013.535052/)
https://gfycat.com/ThirdPinkArcticwolf
Cannot record context menus in new version of razor.
Roxya said it was possible to record in old razor and then transfer macro to new one and it works.
That is all the info I have.
// Look for a saw
if findtype 'saw'
say 'found'
endif
Object must be of type Double
This is on the Standard OSI client.
Windows 10 Pro connecting to UO Renaissance.
I receive an Unhandled exception box with:
System.Net.Sockets.SocketException (0x80004005): The attempted operation is not supported for the type of object referenced
at System.Net.IPAddress.get_Address()
at Assistant.ClientCommunication.SetConnectionInfo(IPAddress addr, Int32 port)
at Assistant.Engine.Main(String[] Args)
When Razor loads the client, but the client then loads normally - but I can't create my account - it hangs on 'verifying account'.
Currently it does not appear that the scripting option has a feature to clear the journal, so when checking sys messages, the script will continuously see an already-present sys message and loop over and over.
Looking for a feature to clear the journal before checking for a sys message.
I expected "Smart always on top" to toggle "always on top" on and off whether I had my client focused or not.
That's not what's happening. Instead it works for the first time I focus another window, but if I focus back my client and focus another window again it stays always on top until I unchecked the option.
Reproduction:
Is it possible to have an IF conditional that is in addition of the current two, which are L hand empty and R hand empty?
For example, this If conditional would check to see if there was anything in either hand, then return false if so, otherwise true if both hands are empty.
Using ClassicUO.
When you attack with pets, and also when a mob dies with pets in your control, it appears that Razor performs an all-names or something similar on the pets as well as the target. You get a spam of text above the pets heads.
If you disable show incoming creatures/corpses, you will not get the spam of the pets name, but the spam of other messages such as [Last Target] will remain. A workaround is to use the CUO show incoming, and disable it in Razor as well as use filter repeating overhead messages. It works perfectly fine that way, but there are some situation where you don't want to filter overhead messages, and it's also not readily apparent that people will discover this workaround if they encounter it themselves. So all in all, would be better with a fix if it is possible.
Here is how it looks with show incoming enabled in Razor:
https://imgur.com/AIKdElw
Here is how it looks with show incoming disabled in Razor:
https://imgur.com/u7lGcYw
Enabling the speech override hue doesn't change the speech hue in CUO
using ClassicUO, Windows 7
If cuo+razor are running when I tell windows 7 to shutdown razor prevents windows from shutting down even if I tell it to force shut down. Similar to say if you have an unsaved document windows will prevent shutdown however in that case if you tell it to force shutdown it will close the unsaved document. Razor is somehow keeping windows 7 from shutting down even if told to force close.
Please include if you are using the standard OSI client or using ClassicUO.
CUO Only
Remember, Great Bug Reports tend to have:
When you are standing on a single tile, and move to face a door, the door doesn't open with Automatically Open Doors enabled. In the standard OSI client it does.
Turning should open the door even if you don't move. Moving into the door correctly opens it.
The door doesn't open, but if you debug the code, you do see the OpenDoorMacro packet sent.
When using a gnarled staff and you toggle the secondary ability ML Era and older it should try to use Force of Nature special Ability.
Currently it tries to use Para Blow.. this was also how it was on ClassicUO but it was recently fixed now it needs to be fixed in razor.
Thank you :)
Using ClassicUO
When reading macro file from disk, the "if [counter]" statement throws exception. If line deleted and re-added, it will work. Problem does not occur with non-counter objects (i.e. "if Hits > 0" works. "if HealPotion > 0" fails)
If saving macro and then hitting reload macro -without any changes-, it will fail again. Remove line and re-add and it works.
Seems like the "if counter" lines are not read properly from disk, but they are fine if created in memory.
I'm using ClassicUO.
In order to use smart target, you need to be able to efficiently set both Beneficial and Harmful targets. There are currently 70 different hotkeys that can be set for various targetting, but none of them do what is actually needed.
If you use Next Friendly Humanoid Target, it will set the target to both Beneficial and Harmful. If you use Next Non-friendly Humanoid Target, it will set the target to both Beneficial and Harmful.
I expect Next Friendly Humanoid Target (or any of the other options which imply you are cycling between friendly targets) to only set Beneficial. I expect Next Non-Friendly Humanoid target (or the other options which imply a non-friendly target), to only set Harmful.
This is the correct way to make Smart Target functional. You want complete control of who is assigned your Beneficial and who is assigned your Harmful flag.
A few more comments:
Thank you.
Hello,
I'm using ClassicUo with Razor 1.6.4.32.
The issue I'm having is that everytime I restart client, my default profile reset the scriptvariables xml field.
I checked and when I close the client I have the xml with scriptvariables section like this
<scriptvariables>
<scriptvariable type="0" flags="0" serial="0x4028374B" x="44" y="65" z="44" gfx="3967" name="test" />
</scriptvariables>
and after opening the client and switch profiles it goes back to
<scriptvariables/>
edit: I thought it was when I close account, but it actually happens when I switch profiles.
Requesting script language support to Lock skill, raise skill and lower skill.
Is your feature request related to a problem? Please describe.
Not all characters use maximum skills and as razor is used to macro things like skill gains the ability to lock skills or lower/raise skills can solve the problem of over skilling or under skilling.
Describe the solution you'd like
setskill 'skill name' 'up/down/locked'
Currently the "Mini-Heal/Cure Self" works as expected, but the "Heal/Cure Self" tries to be "smart" and cast either mini or g heal. I suggest that the "Heal/Cure Self" hotkey be for G heal and not use the "smart" formula.
If you want to keep the "smart" heal, name it as such, and add a G Heal/Cure Self hotkey as well.
Is there any plan to add a timer functionality? I want to be able to develop non blocking macros that check timers before doing action and not rely on fixed pauses/sleep.
When using the in-razor "Take ScreenShot Now" or using capture screen-shot on death/my death, these produce the file in the directory but does not follow through the process of copying the captured screen and saving it to the file itself. This has only recently started happening.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.