Untitled

 avatar
unknown
lua
a year ago
8.9 kB
7
Indexable
function dedbawiy(sender, tItem, iName, iUID, iType)
	local listBox, index, name, uid, itemType
	if sender then
		listBox = sender.Control[0].Control[2]
		if listBox == nil then return end

		index = listBox.ItemIndex
		if index == -1 then return end

		name = tItem[listBox.ItemIndex].name
		uid = tItem[listBox.ItemIndex].id
		itemType = tItem[listBox.ItemIndex].type
	else
		name = iName
		uid = iUID
		itemType = iType
	end

	local addr = getAddressSafe("ipizednt")
	if addr == nil then return end

	local itemAddr = getAddressSafe(addr+0x101)
	if itemAddr == nil then return end

	local mrOwner = getAddressList().getMemoryRecordByID(24079)
	if mrOwner ~= nil then
		local mrCount = mrOwner.count-2
		if mrCount == 32 then messageDialog("The maximum number of items has been reached!\n\nPlease remove some items.",0) return end

		local mrItem, mrSubItem, mrSubItem2, mrPreset, pos, enums, enumsIndexed
		mrItem, pos = findRecord(mrOwner, name)

		local itemAddress = getAddressSafe(itemAddr+(0x12*mrCount))

		if not mrItem then
			mrItem = createRecord(mrOwner, name, vtGrouped, itemAddr+(0x12*mrCount), nil)
			mrItem.Color = Color.Child3
			mrItem.options = "[moHideChildren,moDeactivateChildrenAsWell]"
			mrItem.DontSave = true

			-- Is Active ?
			mrSubItem = createRecord(mrItem, "Is Active ?", vtByte, "+0", nil)
			mrSubItem.Color = 0x000FFFF
			mrSubItem.DropDownReadOnly = true
			mrSubItem.DropDownDescriptionOnly = true
			mrSubItem.DisplayAsDropDownListItem = true
			mrSubItem.DropDownList.Text = typeOptionStringMaps["binaryOptionType"]
			mrSubItem.Value = 1

			-- Item Type
			enums = {
				[9]  = TrID[229390],
				[24] = TrID[294181],
				[1]  = TrID[294180],
			}
			enumsIndexed = enumsToStringList(enums, true)
			mrSubItem = createRecord(mrItem, "Item Type", vtByte, "+0x1", nil)
			mrSubItem.Color = 0x000FFFF
			mrSubItem.DropDownReadOnly = true
			mrSubItem.DropDownDescriptionOnly = true
			mrSubItem.DisplayAsDropDownListItem = true
			mrSubItem.DropDownList.Text = enumsIndexed
			mrSubItem.Value = itemType

			-- Unique ID
			mrSubItem = createRecord(mrItem, "Unique ID", vtDword, "+0x2", nil)
			mrSubItem.Color = 0x000FFFF
			mrSubItem.Value = uid

			if dependencies({9, 24}, itemType) then
				mrSubItem = createRecord(mrItem, TrID[900002], vtGrouped, nil, nil )
				mrSubItem.Color = Color.SeparatorSmall
				
				-- Player Position's Filter
				enums = {
					[0] = "All Roles",
					[1] = "Defending Roles (GK/DC)",
					[2] = "Midfield Roles (DM/M/AM C)",
					[3] = "Flank Roles (D/WB/M/AM RL)",
					[4] = "Attacking Roles (ST)",
				}
				enumsIndexed = enumsToStringList(enums, true)
				mrSubItem = createRecord(mrItem, "Player Position Filter", vtByte, "+0x6", nil)
				mrSubItem.Color = Color.ReadMe
				mrSubItem.DropDownReadOnly = true
				mrSubItem.DropDownDescriptionOnly = true
				mrSubItem.DisplayAsDropDownListItem = true
				mrSubItem.DropDownList.Text = enumsIndexed
				mrSubItem.Value = 0

				-- Player Position's Familiarity Filter
				enums = {
					[18] = "Natural",
					[15] = "Accomplished",
					[12] = "Competent",
				}
				enumsIndexed = enumsToStringList(enums, true)
				mrSubItem = createRecord(mrItem, "Player Position's Familiarity Filter", vtByte, "+0x7", nil)
				mrSubItem.Color = Color.ReadMe
				mrSubItem.DropDownReadOnly = true
				mrSubItem.DropDownDescriptionOnly = true
				mrSubItem.DisplayAsDropDownListItem = true
				mrSubItem.DropDownList.Text = enumsIndexed
				mrSubItem.Value = 18
			end

			mrSubItem = createRecord(mrItem, TrID[900002], vtGrouped, nil, nil )
			mrSubItem.Color = Color.SeparatorSmall

			-- Fitness & Morale Modifier
			mrSubItem = createRecord(mrItem, "Fitness & Morale Modifier >", vtGrouped, "+0x8", nil)
			mrSubItem.Color = Color.Child4
			mrSubItem.options = "[moHideChildren,moDeactivateChildrenAsWell]"

			mrPreset = createRecord(mrSubItem, 'Presets >', vtGrouped, nil, nil )
			mrPreset.Options = "[moHideChildren,moDeactivateChildrenAsWell]"
			mrPreset.Color = 0x0080FF

			-- Mentality Destroyed
			mrSubItem2 = createRecord(mrPreset, "Mentality Destroyed", vtGrouped, nil, nil)
			mrSubItem2.Color = Color.Text
			mrSubItem2.OnActivate = function(record, before, currentstate)
				writeByte(itemAddress+0x9, 5)
				writeSmallInteger(itemAddress+0xA, 5000)
				writeSmallInteger(itemAddress+0xC, 5000)
				writeSmallInteger(itemAddress+0xE, 1000)
				return false
			end

			-- Healthy Fit (default)
			mrSubItem2 = createRecord(mrPreset, "Healthy Fit (default)", vtGrouped, nil, nil)
			mrSubItem2.Color = Color.Text
			mrSubItem2.OnActivate = function(record, before, currentstate)
				writeByte(itemAddress+0x9, 20)
				writeSmallInteger(itemAddress+0xA, 10000)
				writeSmallInteger(itemAddress+0xC, 10000)
				writeSmallInteger(itemAddress+0xE, 0)
				return false
			end

			-- A Doping Player
			mrSubItem2 = createRecord(mrPreset, "A Doping Player", vtGrouped, nil, nil)
			mrSubItem2.Color = Color.Text
			mrSubItem2.OnActivate = function(record, before, currentstate)
				writeByte(itemAddress+0x9, 25)
				writeSmallInteger(itemAddress+0xA, 15000)
				writeSmallInteger(itemAddress+0xC, 15000)
				writeSmallInteger(itemAddress+0xE, 0)
				return false
			end

			-- Superman (Don't Use On GK/DC)
			mrSubItem2 = createRecord(mrPreset, "Superman (Don't Use On GK/DC)", vtGrouped, nil, nil)
			mrSubItem2.Color = Color.Text
			mrSubItem2.OnActivate = function(record, before, currentstate)
				writeByte(itemAddress+0x9, 127)
				writeSmallInteger(itemAddress+0xA, 32500)
				writeSmallInteger(itemAddress+0xC, 32500)
				writeSmallInteger(itemAddress+0xE, -127)
				return false
			end

			mrSubItem2 = createRecord(mrSubItem, TrID[900002], vtGrouped, nil, nil )
			mrSubItem2.Color = Color.SeparatorSmall

			-- Fitness & Morale Modifier Switcher
			mrSubItem2 = createRecord(mrSubItem, "Use Fitness & Morale Modifier", vtByte, "+0", nil)
			mrSubItem2.Color = 0x000FFFF
			mrSubItem2.DropDownReadOnly = true
			mrSubItem2.DropDownDescriptionOnly = true
			mrSubItem2.DisplayAsDropDownListItem = true
			mrSubItem2.DropDownList.Text = typeOptionStringMaps["binaryOptionType"]

			-- Morale
			mrSubItem2 = createRecord(mrSubItem, "Morale", vtByte, "+0x1", nil)
			mrSubItem2.Color = Color.Text

			-- Overall Physical Conditio
			mrSubItem2 = createRecord(mrSubItem, "Overall Physical Condition", vtWord, "+0x2", nil)
			mrSubItem2.Color = Color.Text

			-- Match Sharpness
			mrSubItem2 = createRecord(mrSubItem, "Match Sharpness", vtWord, "+0x4", nil)
			mrSubItem2.Color = Color.Text

			-- Fatigue
			mrSubItem2 = createRecord(mrSubItem, "Fatigue", vtWord, "+0x6", nil)
			mrSubItem2.Color = Color.Text
			mrSubItem2.ShowAsSigned = true

			-- Attributes Modifier
			mrSubItem = createRecord(mrItem, "Attributes Modifier >", vtGrouped, "+0x10", nil)
			mrSubItem.Color = Color.Child4
			mrSubItem.options = "[moHideChildren,moDeactivateChildrenAsWell]"

			-- Attributes Modifier Switcher
			mrSubItem2 = createRecord(mrSubItem, "Use Attributes Modifier", vtByte, "+0", nil)
			mrSubItem2.Color = 0x000FFFF
			mrSubItem2.DropDownReadOnly = true
			mrSubItem2.DropDownDescriptionOnly = true
			mrSubItem2.DisplayAsDropDownListItem = true
			mrSubItem2.DropDownList.Text = typeOptionStringMaps["binaryOptionType"]

			-- All Attributes Value
			mrSubItem2 = createRecord(mrSubItem, "Set the Player's All Attributes value to", vtCustom, "+0x1", nil, "FM Attribute")
			mrSubItem2.Color = Color.Text

			writeQword(addr+(0x8*mrCount), itemAddress)
			writeByte(addr+0x100, mrCount+1)

			ipizednt[name] = {
				indx = mrCount,
				mrec = mrItem,
				addr = mrItem.getCurrentAddress(),
				data = readBytes(mrItem.getCurrentAddress(), 0x12, true),
			}

			mrItem.OnDestroy = function()
				table.removekey(ipizednt, name)

				local itemCount = readByte(addr+0x100)
				if itemCount then 
					if itemCount <= mrOwner.count-2 then
						local data = readBytes(mrItem.getCurrentAddress()+0x12, (32 - mrCount+1)*0x12, true)
						writeBytes(mrItem.getCurrentAddress(), data)

						for k, v in pairs(ipizednt) do
							if mrCount <= v.indx then
								ipizednt[k].indx = v.indx - 1
								ipizednt[k].addr = itemAddr + (0x12 * ipizednt[k].indx)
								ipizednt[k].data = readBytes(ipizednt[k].addr, 0x12, true)
								ipizednt[k].mrec.Address = ipizednt[k].addr
							end
						end
					end
					itemCount = itemCount - 1
					writeByte(addr+0x100, itemCount)
					writeQword(addr+(itemCount*0x8), 0)
				end
			end

		else
			ipizednt[name].indx = pos-2
			ipizednt[name].addr = itemAddr+((pos-2)*0x12)
			ipizednt[name].data = readBytes(ipizednt[name].addr, 0x12, true)
			ipizednt[name].mrec.Address = ipizednt[name].addr
		end
	end
end
Editor is loading...
Leave a Comment