Jump to content

Tailcoat

Members
  • Posts

    118
  • Joined

  • Last visited

Posts posted by Tailcoat

  1. On 1/29/2024 at 10:41 AM, Arionell said:

    I am aware that you've stopped developing this but I wanted to clarify that the CityBinder.exe is the only item that gets downloaded when you click the Download button in SourceForge, nothing else gets downloaded.
     

     

    Thanks! I just learned how to manually fix that. I chose version 0.1.1 as the default download since it was the last stable version. However, the unfinished newer version's files are still available on the Files page to help with the development of the newer bind manager app "BindControl". 

  2. On 11/17/2023 at 5:59 PM, rwright said:

    I just downloaded this software. When i launch it, i get a message to post this in the citybinder thread 
    cannot open citybinder.lua: No such file or directory

    did not get an install prompt

     

    Does your directory look like the image below?
    There is no install prompt and I'm not sure if the original v0.76 app even had one. Installation is just unzipping the files to your desired folder and double-clicking on CityBinder.exe.

    Also, there's a similar app also based on CityBinder v.0.76 called "BindControl". Since I don't have time to keep up with my version of CB, I gave my notes to that author. I don't know if it has the same functionality since I haven't played CoH in over a year, but here's a link to the thread about it in case you find it useful: 



     image.thumb.png.4eff9b60c1e704304865100733cca412.png

  3. On 11/12/2023 at 1:20 PM, Area Man said:

    I wanted to THANK YOU for this update.  I used Citybinder on Live until shutdown and then on Homecoming, and was using my old version.  I have a 17-button MMO Mouse and a G13 gamepad, so I bind a bunch of powers to the buttons on the mouse and gamepad, and have a bunch of other binds I use with EVERY CHARACTER.  I have now been using this update for about 6 months, since I found out it existed.

    So, I very much appreciate the update.  I had been setting up a series of Ultimate Binds for every new powerset, but this saves me some work.  I just wanted to post this since I recently started telling a few folks about how great it is to use Citybinder for my binds.

     

    Thank you! I wish I could've gotten more done on updating this, but I started working full-time and couldn't keep up. The LUA language wasn't handling all the stuff that I wanted it to do, and as a hobbyist, I couldn't be as efficient and knowledgeable as a trained programmer. 

    If it helps, another user has taken up the mantle and made a similar app with Python called "BindControl". I don't know what the status of it is (I've been away from COH for a while), but it works on other systems besides Win10 and I sent over my various notes and ideas for the project to continue. Here is a link to the thread for that: 

     

    • Like 1
  4. Ooh, it'd be nice if the Naga tray had 12 power spaces instead of just 10. I don't know if 12 thumb-side buttons is standard for MMO mice, but I could imagine that adding more spaces could break things in the code. 

    If it's possible to open multiple Naga trays, that could help. When I've got a character fully stocked with powers, the 3 default trays end up full of buttons, so I need to see a lot more than just 10 spaces at a time. 

  5. I don't know if this has been looked at since I haven't played in a while, but I'd love an option to arrange the power tray in a 3x4 configuration.
    I wanted to jump into the game again, but since I started using one of those MMO mice with the 12 side buttons, I can't go back to clicking on the power tray buttons or hunting-and-pecking number keys.

     

    I tried arranging the trays in the same way as those buttons so I could learn to use my MMO mouse with it, but I couldn't replicate that 3x4 grid, so I thought I'd suggest it as an option here.

  6. 6 hours ago, emersonrp said:

    I also keep mulling how possible it might be to take the text representation of a bind and split/parse it into a Complex Bind.  Then, assuming I put together a scheme to import/export custom binds, it would be possible to convert a raw bind string into an import/export-able chunk for easier sharing and editing.  This might be overly optimistic but I may look into trying it.

     

    If it helps, here are the basics of what CB did using a complex bind I set up that makes the character do a different dance every time the user presses "Y".

    The Complex Bind button pulls up a table (I'd recommend adding a pale background color to every other row to make it clearer to the user that each row is associated with the keybind at the start of it). I entered "Y" for the bind and added a different dance emote command to each space in that row. I chose 8 that I felt segued decently into each other (In CB, you can add up to 599 commands to a row, which I think is overkill!). Pressing the ">>" button lets the user view any other user-defined Complex Binds that may've been imported into the profile (in this case, there are 4 Complex Binds loaded and the dance cycle is the first). You can have one "page" with multiple Complex Binds on it too by using more than one row.
    Here's a screencap of how the dance bind cycle looks in CB:
    image.thumb.png.f27eb43959f26acb5fe0ccbe16a4b2d6.png 

     

    When the user hits the Generate Bindfiles button, CB makes TXT files for the game to read which include the "bindloadfilesilent" command after the dance command. CB generates numerical number names for them in a subfolder called "cbinds". I'm thinking that the first number in the file name is taken from the "page" number of the Complex Bind, then the second number comes from the "Cycle" column. This is in the folder for the default profile I set up for CB, which contains multiple Complex Binds. Here's a screen of how those look in file explorer, plus the opened TXT files:
    image.thumb.png.9b14f4b1f847abf618d0e7e234907548.png


    CB uses its own file extension ".cbm" for imported/exported binds. The extension ".cbp" is for profiles. The .cbm files can be opened in Notepad. Here's what the exported dance cycle Complex Bind looks like: 
    image.thumb.png.88b6f226c34fa29c2fa4d8fbd0232f60.png

     

    I wasn't aware of all the workings of how CB generated binds, but skimming through some files, I think a lot of that stuff is in the file "cbutility.lua" if you want to check it out.

    EDIT:
    If you do check out the CB files I worked on, just be aware that there will be differences between the files contained in the last stable version of CB4H and the unfinished v0.2 version.

    "cbutilityUI.lua" contains code related to import/export buttons, which must link back to cbutility.lua.

    The Complex Bind module file, "complexbinds.lua" could be especially useful for ideas. Here's the code for that:
     

    local module = {}
    
    local function addCBind(cbinds,n,profile) -- this returns an IUP vbox/hbox to be inserted into the CBind Dialog box
    	local cbind = cbinds[n]
    	local bindtext = iup.label{title = ""; SIZE = "100X"}
    	local function matrix_value(_,l,c)
    		if l == 0 then -- return the titles of columns
    			if c == 0 then return "" elseif c == 1 then return "Bindkey" else return "Cycle "..(c - 1) end
    		elseif c > 0 then -- return the values of the bindkeys
    			if cbind[l] == nil then return "" end
    			if c == 1 then return cbind[l].bindkey or nil else return cbind[l][c-1] or nil end
    		end
    	end
    	local function matrix_value_edit(_,l,c,newval)
    		cbind[l] = cbind[l] or {} 
    		if newval == "" then newval = nil end
    		if c == 1 then cbind[l].bindkey = newval else cbind[l][c-1] = newval end profile.modified = true 
    		return iup.DEFAULT
    	end
    	local function matrix_entercell(_,l,c)
    		if cbind[l] == nil then bindtext.title = "" else
    			if c == 1 then
    				bindtext.title = cbind[l].bindkey or ""
    			else
    				bindtext.title = cbind[l][c-1] or ""
    			end
    		end
    		return iup.DEFAULT
    	end
    	local altBGcolor = 50, 50, 50
    	local matrix = iup.matrix{numcol="600";numlin="50";numcol_visible="5";numlin_visible="10";
    		height0=8;value_cb = matrix_value; value_edit_cb = matrix_value_edit; enteritem_cb = matrix_entercell}
    	for i = 2,600 do matrix["alignment"..i] = "ALEFT" end
    	
    	local delbtn = cbButton("Delete This Bind",function()
    		if iup.Alarm("Confirm Deletion","Are you sure you want to delete this bind?","Yes","No") == 1 then
    			table.remove(cbinds,n)
    			cbinds.curbind = cbinds.curbind - 1
    			if cbinds.curbind == 0 then cbinds.curbind = 1 end
    			cbinds.dlg:hide()
    			--cbinds.dlg:destroy()
    			cbinds.dlg = nil
    			module.createDialog(cbinds,profile)
    			cbShowDialog(cbinds.dlg,nil,nil,profile,cbinds.dlg_close_cb)
    			profile.modified = true 
    		end end,125)
    	local exportbtn = cbButton("Export...",function() cbExportModuleSettings(profile,n,cbinds,"ComplexBind") end,125)
    	return iup.frame{iup.vbox{bindtext,matrix,iup.fill{rastersize="x10"},iup.hbox{delbtn,exportbtn,margin="0x0"},iup.fill{rastersize="x10"},alignment="ACENTER"},cx = 0, cy = 65 * (n-1)}
    end
    
    local function newCBind() -- this returns the default empty Simple Bind table to be inserted into SBinds
    	local t = {}
    	return t
    end
    
    function module.createDialog(cbinds,profile)
    	local box = {}
    	for i = 1,table.getn(cbinds) do
    		table.insert(box,addCBind(cbinds,i,profile))
    	end
    	cbinds.curbind = cbinds.curbind or 1
    	local newbindbtn = cbButton("New Complex Bind",
    		function()
    			table.insert(cbinds,newCBind())
    			cbinds.curbind = table.getn(cbinds)
    			cbinds.dlg:hide()
    			--cbinds.dlg:destroy()
    			cbinds.dlg = nil
    			module.createDialog(cbinds,profile)
    			cbShowDialog(cbinds.dlg,nil,nil,profile,cbinds.dlg_close_cb)
    			profile.modified = true 
    		end,125)
    	local importbtn = cbButton("Import Complex Bind",function()
    		local newcbind = newCBind() -- we will be filling this new BBind up.
    		table.insert(cbinds,newcbind)
    		local newcbind_n = table.getn(cbinds)
    		if cbImportModuleSettings(profile,newcbind_n,cbinds,"ComplexBind") then
    			cbinds.curbind = table.getn(cbinds)
    			cbinds.dlg:hide()
    			cbinds.dlg = nil
    			-- Resolve Key COnflicts.
    			cbResolveKeyConflicts(profile,true)
    			module.createDialog(cbinds,profile)
    			cbShowDialog(cbinds.dlg,nil,nil,profile,cbinds.dlg_close_cb)
    			profile.modified = true
    		else
    			-- user cancelled, remove the new table from bbinds.
    			table.remove(cbinds)
    		end
    	end,125)
    	local sbEnablePrev = "NO"
    	local sbEnableNext = "NO"
    	local okbtn = cbOKbutton()
    	if cbinds.curbind > 1 then sbEnablePrev = "YES" end
    	cbinds.prevbind = cbButton("<<",function(self)
    			cbinds.curbind = cbinds.curbind - 1
    			cbinds.zbox.value = box[cbinds.curbind]
    			cbinds.poslabel.title = cbinds.curbind.."/"..table.getn(cbinds)
    			local sbEnablePrev = "NO"
    			if cbinds.curbind > 1 then sbEnablePrev = "YES" end
    			cbinds.prevbind.active=sbEnablePrev
    			local sbEnableNext = "NO"
    			if cbinds.curbind < table.getn(cbinds) then sbEnableNext = "YES" end
    			cbinds.nextbind.active=sbEnableNext
    		end,25,nil,{active=sbEnablePrev})
    	if cbinds.curbind < table.getn(cbinds) then sbEnableNext = "YES" end
    	cbinds.nextbind = cbButton(">>",function(self)
    			cbinds.curbind = cbinds.curbind + 1
    			cbinds.zbox.value = box[cbinds.curbind]
    			cbinds.poslabel.title = cbinds.curbind.."/"..table.getn(cbinds)
    			local sbEnablePrev = "NO"
    			if cbinds.curbind > 1 then sbEnablePrev = "YES" end
    			cbinds.prevbind.active=sbEnablePrev
    			local sbEnableNext = "NO"
    			if cbinds.curbind < table.getn(cbinds) then sbEnableNext = "YES" end
    			cbinds.nextbind.active=sbEnableNext
    		end,25,nil,{active=sbEnableNext})
    	cbinds.poslabel = iup.label{title = cbinds.curbind.."/"..table.getn(cbinds);rastersize="50x";alignment="ACENTER"}
    	box.value = box[cbinds.curbind]
    	cbinds.zbox = iup.zbox(box)
    	cbinds.dlg = iup.dialog{iup.vbox{cbinds.zbox,iup.fill{rastersize="10x"},iup.hbox{cbinds.prevbind;newbindbtn;importbtn;cbinds.poslabel;cbinds.nextbind;alignment="ACENTER",margin="0x0"};iup.fill{rastersize="10x"};okbtn;alignment="ACENTER"};title = "General : Complex Binds",maxbox="NO",resize="YES",icon = appicon,parentdialog=cbdlg,mdichild="YES",margin=dlgMargins}
    	okbtn.action = function() cbinds.dlg:hide() end
    	cbinds.dlg_close_cb = function(self) cbinds.dlg = nil end
    end
    
    function module.bindsettings(profile)
    	local cbinds = profile.cbinds
    	if cbinds == nil then
    		cbinds = {}
    		profile.cbinds = cbinds
    	end
    	if cbinds.dlg then
    		cbinds.dlg:show()
    	else
    		module.createDialog(cbinds,profile)
    		cbShowDialog(cbinds.dlg,nil,nil,profile,cbinds.dlg_close_cb)
    	end
    end
    
    local function maxKeys(cbind)
    	local maxK = 0
    	for n = 1,600 do
    		if cbind[n] then
    			if cbind[n].bindkey and not (cbind[n].bindkey == "") then
    				maxK = n
    			end
    		end
    	end
    	return maxK
    end
    
    local function maxCycles(cbind,maxK)
    	local maxC = 0
    	for m = 1,maxK do
    		for n = 2,600 do
    			if cbind[m][n] and not (cbind[m][n] == "") then
    				if n > maxC then maxC = n end
    			end
    		end
    	end
    	return maxC+1
    end
    
    local function writeBind(file,cbinds,key,cycle,bindset,maxC,profile)
    	local nextCycle = cycle+1
    	if nextCycle > maxC then nextCycle = 1 end
    	local k = cbinds[bindset][key].bindkey
    	local cmd = ''
    	if cbinds[bindset][key][cycle] and not (cbinds[bindset][key][cycle] == "") then
    		cmd = cbinds[bindset][key][cycle].."$$"
    	end
    	cmd = cmd.."bindloadfilesilent "..profile.base.."\\cbinds\\"..bindset.."-"..nextCycle..'.txt'
    	cbWriteBind(file,k,cmd)
    end
    
    function module.makebind(profile)
    	local resetfile = profile.resetfile
    	local cbinds = profile.cbinds
    	local cbindfile
    	local maxK
    	local maxC
    	cbMakeDirectory(profile.base.."\\cbinds")
    	for k = 1, table.getn(cbinds) do -- for each complex bind set
    		maxK = maxKeys(cbinds[k])
    		maxC = maxCycles(cbinds[k],maxK)
    		--print("maxK = "..maxK..", maxC = "..maxC)
    		for j = 1, maxC do -- for each cycle in this bindset, counting the first one twice
    			--create a new bindfile if cycle is 2+
    			if j > 1 then
    				cbindfile = cbOpen(profile.base.."\\cbinds\\"..k.."-"..(j-1)..".txt","w")
    				--print("created "..profile.base.."\\cbinds\\"..k.."-"..(j-1)..".txt")
    			end
    			for i = 1,maxK do -- for each key in the bindset
    				if j == 1 then
    					writeBind(resetfile,cbinds,i,j,k,maxC-1,profile)
    				else
    					writeBind(cbindfile,cbinds,i,j-1,k,maxC-1,profile)
    				end
    			end
    			if j > 1 then
    				cbindfile:close()
    				--print("closed "..profile.base.."\\cbinds\\"..k.."-"..(j-1)..".txt")
    			end
    		end
    	end
    end
    
    function module.findconflicts(profile)
    	local resetfile = profile.resetfile
    	local cbinds = profile.cbinds
    	for k = 1, table.getn(cbinds) do -- for each complex bind set
    		local maxK = maxKeys(cbinds[k])
    		for i = 1,maxK do -- for each key in the bindset
    			cbCheckConflict(cbinds[k][i],"bindkey","Complex Bind "..k)
    		end
    	end
    end
    
    function module.bindisused(profile)
    	if profile.cbinds == nil then return nil end
    	return table.getn(profile.cbinds) > 0
    end
    
    cbAddModule(module,"Complex Binds","General")

     

  7. 2 hours ago, emersonrp said:

    CityBinder, was planning to include a collection of interesting configuration snippets


    When updating CityBinder, I considered a couple of ways of making it easier for players to add and share modules.

    As mentioned, I did include a bunch of snippets, although those files only work with CityBinder, but could provide useful material to adapt for BindControl. They're in the "Sample_Binds" folder included in my SourceForge uploads, which only work with CityBinder's modules for Simple (in the "Custom Binds" section), Complex (binds requiring multiple txt files), and Ultra binds. I never figured out Ultra binds and it wasn't documented much, so that file is just what was included in the original CityBinder just in case anyone else could figure it out. I think Ultra binds were meant to help people make more complex modules w/o needing to know coding? It's an interesting idea. Below, I've included some screenshots of the kinds of binds I included. Several are movement related, so would best be incorporated into a movement module if that hasn't been done already. I can explain what they are if anything interesting jumps out.

    The other thing I started to make modules shareable (but wasn't able to finish in the last stable version of CB. However, it should work in the unfinished v0.2 files I uploaded to SourceForge.) was instead of hard-coding the modules into the script that loads them up, I had it check its current directory for a subfolder called "modules" and load up the .lua files in there. Within that folder was another called "inactive" so files can easily be taken out of rotation without deleting them (it was useful for bug testing).
    In those LUA files, I added some more variables to help categorize the modules into a tree and also generate credit info in a popup if the user clicks the button for that. Including the last update as a variable could also help authors (should they change how their code works) find and update things used in previous versions of the app (or it may make more sense to focus on versions of the module itself instead). I pasted an image of the text next to the popup to illustrate my attempt at improving user-friendliness to encourage people to make and share their own modules.

     

    I even worked on trying to de-hard-code the interface colors and turn them into variables in an attempt to create a dark mode option (and down the road, potentially programming in customization options for interface colors), but I just couldn't get Lua to do what I wanted consistently!

    image.thumb.png.79a4cdb7fa8d6a1184526c2fe796579f.png

    image.thumb.png.19cf213f8e22e7ed16629a7332c0de39.pngimage.thumb.png.37adccfe4eb2e7470b02dc7d0beecd23.png

    • Thumbs Up 2
  8. 8 hours ago, oddrobin said:

    CityBinder for Homecoming told me to post this in the CityBinder thread:

    Message: cannot open citybinder.lua: No such file or directory

     

    The citybinder.lua file should be in the same directory as the .exe file. 

    If it still gives you trouble, I've since passed on my work to a more-experienced developer. I don't know how far the app has progressed, but the thread about the "BindControl" app is here: 

     

    • Like 1
  9. 7 hours ago, emersonrp said:

     

    So, like, create a subfolder in Documents for the profile (and currently-hypothetical other profile-related files), or do you mean specify a full arbitrary path for saving the profile, anywhere in the filesystem?  Currently the profiles are saved to %userprofile%\Documents\bindcontrol\ProfileName.bcp (or the analogous location on Mac and Linux), and the keybinds are saved to the location specified in preferences.

     

    I meant allow the user to specify a full path for the profiles anywhere. Personally, I never save anything to the default C:\Documents folder and I keep gaming stuff in a separate folder. I've been keeping my binds and profiles in character-specific subfolders like this:
    image.thumb.png.eb0a1040e0dc3a0ccf33690b934c8b3c.png

    The idea about subfolders I had was separate from that but similar to your first idea. If I made a new profile for my character Erasyerhead (or a general profile called Warshade Binds) and entered that as the profile's name then hit "Save As", if the app didn't detect a pre-existing folder called "Erasyerhead" in my chosen directory, it could ask to create one, then save the binds or profiles inside.

     

  10. On 2/8/2023 at 12:05 AM, emersonrp said:

    What you're wanting is to be able to bind double-click to cast "teleport to max distance," right?

     

    I don't know if this helps anything, but I made pop-up menus for a handful of my characters to help manage their teleport (and related things like jaunt, translocate, and mystic flight) and targeted AOE powers. Then I bound that menu to the E key. Here's the content of one of the files:
     

        //
        Menu Erasyerhead
            {
            Title "Teleport"
            Divider
                Option "&A Combat TP to Target" <&powexec_location target Combat Teleport&>
                Option "&S Retreat" <&powexec_location back:60 Combat Teleport$$face&> // Since I plan on using this in combat, 
                // I want the bonus that Combat Teleport gives. This is for when you port right to an enemy, execute a melee attack like Sands of Mu, then want to jump back to use ranged attacks. "Face" is necessary to keep toon facing same direction. 
                // Without it, character will turn 180 degrees, which would be disorienting, unless you plan on running away.
                Option "&D TP Target to Self" <&tell $target, I'm teleporting you to my location...$$powexec_location forward:10 Teleport Target&>
                Option "&F TP to Target" <&powexec_location target Teleport&>
                Option "&R TP Ring" <&powexecname Teleport&>
            Divider
                Option "&W Up And Away!" <&powexec_location up:max Teleport&>
                Option "&E BUG OUT!" <&powexec_location back:max Teleport&> // When you want to turn and run in opposite direction. Turn 180 degrees and teleport far away.
            }


    I found it useful to make the character-specific pop menu key and "BUG OUT!" key the same since if I'm panicking and need to get away ASAP, I can't always remember which menu key to press. This way, I don't have to since I just have to hit "E" twice to try escaping certain death.

    I couldn't get the turn-around command to work with (IIRC... been a while) teleport-adjacent powers like Jaunt.

    I also made a bunch of .cbm simple bind files for CityBinder containing various commands like that. If you don't want to grab them from a .zip file, you can find the loose files here: https://sourceforge.net/projects/citybinder-for-homecoming/files/unfinished_CB4H_v0.2/Sample_Binds/Simple/

    I didn't really use CityBinder's SoD module since it was clunky and confusing, so I can't say how useful or not it'd still be since the travel power update, but maybe the module could have separate tabs for each type of movement (especially if you'd like to offer different uses like in the menu above).

    I wonder if having Kheldian settings as its own module would make more sense than how CityBinder did it as a section that only appears in SoD if you select one of those Archetypes.

  11. @emersonrp
    Ok, I've uploaded my unfinished CityBinder for Homecoming v0.2 files here: https://sourceforge.net/projects/citybinder-for-homecoming/files/unfinished_CB4H_v0.2/

    I added a bunch of notes in the Documentation folder on changes I made since 0.76, some issues to resolve, and ideas I wanted to implement. 

     

    My LUA files contain various notes explaining things I did, keeping in mind helping potential programmers (or my future self) looking at them. I suffixed them with "-TC". Some of the original author notes are in there too (they're unlabeled).

    A couple of files in my project folders relate to an unsuccessful attempt to build a 32-bit version of it in order to reach a wider audience, but that stuff got waaaay too technical for me. The version my .exe file works for is Win10, 64-bit.

    If you find any of the info in my SourceForge project's help files useful for explaining features, feel free to recycle it! I'd hoped in the future to perhaps create a how-to video on using it. The tooltips are kind of weird and don't always pop up over sections that would intuitively make sense.

     

    Let me know if you have any questions!

  12. Would you want my notes on new things I was working on for CityBinder? I could upload the unfinished 4K version if you want to recycle that. I've been haunted by my inability to at least finish that version and I've wanted to pass it on to someone more knowledgeable in programming (my field is art, so I focused a lot on making the UI visually clean and intuitive. I also made the icons).

    I haven't been able to work on it in about a year because I started working full-time and often had difficulty getting Lua to do what I want. I think Python is a much better choice for today since it's well-documented, but I don't know Python and forgot most of Lua (I only learned it because I really liked CityBinder 😅 and programming is interesting. I wouldn't mind learning some Python to tinker with modules, but I can't handle making a full-on complicated app such as CityBinder like a dedicated programmer could. I could never figure out how to generate .exe files for systems other than my own Win10 64-bit)

    In the unreleased version of CB4HC, I figured out a way to make the app populate a tree of modules based on what's in a folder rather than hardcoding what's available. I figured that would allow the user to easily swap in and out what they wanted (if they aren't sure, they can put those module files into a different folder). The app can also grab some info from a module file and make an info window from it. I wanted to make it easier for people to make and add their own modules. Modules can also be enabled or disabled from the module tree since I wanted to be able to keep the app from generating unnecessary text in the files it spits out.

    I was also able to add some QOL fixes like some shortcuts, links to useful sites, clear binds options, and I updated the pop-up keyboard to take keyboard input.

    I was hoping since the beginning of CB4HC to be able to create a feature where the user could select from a grid of icons in order to generate the code to paste into the game to generate image macros w/o having to go to a site and find the image name, but that proved difficult with Lua. I managed to make a little test file with a couple of icons. I wanted to be able to have it organizable by hue, symbols, stuff like that.

    My favorite module is Inspiration Popper, which I'd started reworking with more options (ex. dual inspirations, team inspirations, and a thing where you can use a key to swap whether you consume the big ones or little ones first). I think "Last Resort" is pretty cool since it allows you to enable consumption of a dual inspiration if you run out of the regular inspiration and push its key bind. I used that a lot while playing.

    EDIT: I also added an option to let a player add their Global Name to the beginning of a chat. There's a camera settings module too-- sure, the options are in the game, but if a player wants to keep all their options in one profile and use it as a default for other characters, it's convenient to have it all in one place.

    My files also have some new powers, emotes, and commands since 0.76. They were a PITA to copy and organize, so if you need that info, it might save you some time to grab it from them. It wouldn't have anything new from the past year though.

    @emersonrp Please let me know if you need anything to help make the app!

    image.thumb.png.b253d41546f8011f523f6b0e06bac229.pngimage.thumb.png.4fa75ae355bde93649827c29b8f3bf11.png256px_color_antialiased.png.39752c2dd49fc2691f31d09031667037.png

    image.thumb.png.13f4f330d493734c75f96d297864f04c.pngimage.thumb.png.fb71c6e739074ed8f7cf5f9e4fff1c2e.pngimage.png

  13. That is true. I hadn't touched the Speed on Demand module. I'm wondering if there's anyone that I could pass on this project to. Ever since I got full-time work, I haven't had the energy to do anything with this and I feel bad about that since I had a nicer interface thing going and a lot of ideas, but it's not cohesive enough for me to be able to upload that version in its current state. 

  14. That's a good question. I haven't touched the app in several months since I got a job that takes up more of my time, and I've been taking time off CoH to play a different game lately, but I keep thinking about wanting to at least finish that 4K revamp.

    I want to say that it's not possible (unless anything has changed in the past few months), but if the issue is using the same commands over and over, you can use CB to save a profile of the default commands you like to use, set it to be the default profile when you make a new one, then if you need to make any character-specific changes, you can do that and save it as a separate profile. Multiple characters can use the same binds text file. Binds can also be made that will load up other bind files too.

  15. Some updates for the future 0.2 update: 

     

    * The virtual keyboard will now highlight selected keys
    * It will now accept typing input in addition to the original input of clicking on the buttons
        * For duplicate keys (like numpad, shift, alt, ctrl), IUP can't differentiate numpad keys from normal ones and isn't recognizing left vs. right modifier keys, so if you want to assign those keys by typing, an extra key press will give a third option. Ex. Press "1" once for "1", again for "NUMPAD1", and again for neither.
    * A "Clear Binds" button makes unassigning binds faster and easier
    * A new logo! Each dialog window displays it as well.

     

    * To create an ICO file holding multiple sizes, I used Visual Studio 2022: 
        * I chose a UWP template, added an icon to the ".rc" folder, cleaned out the default images (right click>Delete Image Type), and added the icon sizes and bit-depths I needed (Add Image Type)
        * Apparently, 32-bit images can't be edited in VS's icon editor, so I used 24-bit for the biggest, most polished icon (256px), and since the rest were much smaller, I had no need for more than 8-bit (256 colors). The VS icon editor seemed unable to handle partial transparency, so the anti-aliased edges would show up with 100% opacity, creating some speckles around the edge. I edited all my icon images to use aliased edges. 
        * You can paste the icon image into each "Image Type" in the .ico file, but VS screwed up the colors of 8-bit ones that had custom 256-color palettes (I used Photoshop to reduce the colors), so I used a Photoshop extension to save each icon as it's own .ico file (it can't save multiple sizes in one) and then load them into VS. From VS, I saved the icon's color palette (from the icon editor) and loaded it in my multi-size icon in the appropriate Image Type. Then pasting the icon image might work, but sometimes didn't and I wasn't sure how I fixed it.
        * Once I saved the icon, renamed it to citybinder.ico, put it in the "src" folder and recompiled the app, I had to update Windows' "icon cache" to make the change show up.

     

    Screenshot 2022-04-10 210530.jpg

    256px_color_antialiased.png

  16. I just noticed that Tuatha have hooves not available as costume parts. Since they don't seem to move much differently from other bipeds, I wonder if it would be relatively straight-forward to add them as costume parts for monstrous legs. 

     

    The higher-tier one's antlers would be cool too, and I'm sure people would find use if their deer tails were available as a costume part. 

    • Thumbs Up 2
  17. Still working on the version 0.2 overhaul (I'm a hobbyist, so it's slow going having to learn and experiment a lot. I'm currently adding more functionality to Inspiration Popper so you can set binds for team insps), but in the meantime, I did upload a version 0.1.1 here (https://sourceforge.net/projects/citybinder-for-homecoming/files/CB4H_v0.1.1/ ) that has a few features not in 0.1 like...

    • a module to set basic camera commands
      • these can be changed directly in the game's settings, but if you already have a bunch of binds and want to keep them in the same text file to avoid potentially accidentally overwriting key binds (CB will check bind keys for conflicts) or whatever, now you can set the settings here
    • some camera commands with more options in the Power Binder (accessed via Simple Binds module)
    • option to add your Global handle to the beginning of chats started by shortcuts defined in the "Typing" module
    • All 3 quit commands are now available via Power Binder under "quit"

     

    If anyone out there has an interest in helping develop this app and is familiar with Lua and the IUP library, I'd love to collaborate. 

    • Like 1
  18. 3 hours ago, Shenanigunner said:

     

    Hey, it's not easy being green. I got genned for it.!

     

    Let me guess, your character was charged with the crime of purple-shorts-wearing while green? 😏

     

    I do wish there was more flexibility in skin color choice though. It can be difficult matching monstrous legs to thighs without an obvious seam (especially hooves).

    I also wish that Spectrum worked on more things, like monstrous legs, tails and non-human ears. 

  19. 1 hour ago, Marshal_General said:

    Thanks. How backwards compatible is it> Do I need to redo my binds/profiles for each character?

     

    You'll probably have to rechoose your AT (since adding Sentinel changed the order) and powers (so many additions there and when I tested loading a default profile with a misspelled power name, that power was left off the list). However, if you export the options for the modules you've used, those rely on fewer variables (you can open them or Lua files in Notepad if you ever want to check them out), so maybe you could start with a clean profile (if you delete the default.lua file and open the app, it will copy stddefault.lua to create a new default.lua with standard options) and then load up the .cbm files you have for each module, and if you want, you can hit the button to save this new version to default.lua.

     

    I've been keeping this in mind for v0.2 and adding code that checks for old variables to update.

  20. On 12/22/2021 at 6:49 AM, Marshal_General said:

    I don't know if this is addressed or not, but I am using the old pre shut down version of CB and have to go in and find/replace bindloadfile with bindloadfilesilent so my chat doesn't get spammed every time I move.

     

    You bet I changed that! Did a mass search and replace. Also added missing powers and ATs (the recently added Stone powers and innertube emotes need to be added in 0.2). You can see other changes I made in CB4H 0.1 here: https://sourceforge.net/p/citybinder-for-homecoming/wiki/Change Log/#top and below that are some upcoming changes, which I need to update. I went quiet for a few months because I was struggling to learn and figure out a bunch of new stuff.

    Is Speed on Demand the really spammy module? I thought I saw a crazy amount of files I think were related to normal WASD movement and I wondered why, but it was a while ago when I checked. 

     

  21. 3 hours ago, brasilgringo said:

    also if you know how to make the macro icon the actual power icon, that would be awesome.  Thx.

     

    You could use the image macro command if you're talking about using the same image, but would have to know the power icon's file name. The wiki should have that info. The disadvantage is that you won't get that cooldown timer like the actual power icon. If you need to see the timer, maybe you could put the actual icon in a spare power tray off to the side so you can glance at it to check the timer, and put the macro version in your normal power tray.

    • Like 1
×
×
  • Create New...