Суть что я бы сделал через еду и менял как будто меняю этажи но у еда своя механика а нет расходов стоит на 0 еду то есть не потребляет процент... И вот думаю можно ли напрямую через мемхак изменить "Нет расходов" на свой например игрок вошел в 1 этаж то меняем на 1 этаж текст а если вышел то пишет "Город" но не могу найди его адрес для игрока

Принятый ответ

	//globals
	integer array VariousFramesAddresses
	constant integer GOLD_TEXTFRAME_ADDRESS_INDEX=1
	constant integer LUMBER_TEXTFRAME_ADDRESS_INDEX=2
	constant integer UPKEEP_TEXTFRAME_ADDRESS_INDEX=3
	constant integer SUPPLY_TEXTFRAME_ADDRESS_INDEX=4

//memhack init
	set pGetFrameTextAddress = GameDLL + 0x61C7B0
	
function GetFrameTextAddress takes string name, integer id returns integer
	return CallFastCallWith2Args(pGetFrameTextAddress, GetStringAddress(name), id)
endfunction

function GetResourceBarsAddresses takes nothing returns nothing
	local integer a=GetFrameTextAddress("ResourceBarGoldText",0)
	if a>0 then
		set VariousFramesAddresses[GOLD_TEXTFRAME_ADDRESS_INDEX]=a
	endif
	set a=GetFrameTextAddress("ResourceBarLumberText",0)
	if a>0 then
		set VariousFramesAddresses[LUMBER_TEXTFRAME_ADDRESS_INDEX]=a
	endif
	set a=GetFrameTextAddress("ResourceBarSupplyText",0)
	if a>0 then
		set VariousFramesAddresses[SUPPLY_TEXTFRAME_ADDRESS_INDEX]=a
	endif
	set a=GetFrameTextAddress("ResourceBarUpkeepText",0)
	if a>0 then
		set VariousFramesAddresses[UPKEEP_TEXTFRAME_ADDRESS_INDEX]=a
	endif
		
endfunction

call CallThisCallWith2Args(GameDLL+0x60CA10,VariousFramesAddresses[UPKEEP_TEXTFRAME_ADDRESS_INDEX],GetStringAddress("random str "+I2S(GetRandomInt(1,2000))))
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
8
5 лет назад
0
Допустим если механику которая привязана к количеству еды перенесешь на поле Point value (тоже в РО настраивается), то можно будет тригерно менять эту фразу "Нет расходов" на другие (повышение и понижением пищи)
0
23
5 лет назад
0
pAxsIs, я убрал связанные текст нет расходов с едой хоть 100 еда не будет менять текст...
0
8
5 лет назад
Отредактирован pAxsIs
0
JMCode:
pAxsIs, я убрал связанные текст нет расходов с едой хоть 100 еда не будет менять текст...
Сделай в Игровых константах расход 0, 100, 300 (например)
Смотри картинку
Потом замени в Игровом интерфейсе поля для расхода пищи, на текст с этажами
Смотри картинку
После этого триггерно увеличивай количество потребляемой пищи игроком (на 0, 100, 300) и увидишь, как будет меняться название этажа.
Загруженные файлы
2
23
5 лет назад
2
pAxsIs, не пиши прошу... Еда не связано с процентом и не будет у еда своя механика и тем более 100 этажей самый оптимальный через мемхак
0
20
5 лет назад
0
тогда отлавливайте событие входа в регион и выводите сообщение на экран
нужна высота - сравниваем Z координаты или что там у вара на высоте
и опять сообщение на экран
для решения подобных проблем мемхак не нужен
0
23
5 лет назад
0
ssbbssc, я не говорю про текстаг а замена текст который рядом с едой он и так неиспользует ради текста
2
16
5 лет назад
2
	//globals
	integer array VariousFramesAddresses
	constant integer GOLD_TEXTFRAME_ADDRESS_INDEX=1
	constant integer LUMBER_TEXTFRAME_ADDRESS_INDEX=2
	constant integer UPKEEP_TEXTFRAME_ADDRESS_INDEX=3
	constant integer SUPPLY_TEXTFRAME_ADDRESS_INDEX=4

//memhack init
	set pGetFrameTextAddress = GameDLL + 0x61C7B0
	
function GetFrameTextAddress takes string name, integer id returns integer
	return CallFastCallWith2Args(pGetFrameTextAddress, GetStringAddress(name), id)
endfunction

function GetResourceBarsAddresses takes nothing returns nothing
	local integer a=GetFrameTextAddress("ResourceBarGoldText",0)
	if a>0 then
		set VariousFramesAddresses[GOLD_TEXTFRAME_ADDRESS_INDEX]=a
	endif
	set a=GetFrameTextAddress("ResourceBarLumberText",0)
	if a>0 then
		set VariousFramesAddresses[LUMBER_TEXTFRAME_ADDRESS_INDEX]=a
	endif
	set a=GetFrameTextAddress("ResourceBarSupplyText",0)
	if a>0 then
		set VariousFramesAddresses[SUPPLY_TEXTFRAME_ADDRESS_INDEX]=a
	endif
	set a=GetFrameTextAddress("ResourceBarUpkeepText",0)
	if a>0 then
		set VariousFramesAddresses[UPKEEP_TEXTFRAME_ADDRESS_INDEX]=a
	endif
		
endfunction

call CallThisCallWith2Args(GameDLL+0x60CA10,VariousFramesAddresses[UPKEEP_TEXTFRAME_ADDRESS_INDEX],GetStringAddress("random str "+I2S(GetRandomInt(1,2000))))
Принятый ответ
0
21
5 лет назад
0
DracoL1ch, а можно ли через мемхак высветить на экран такое же сообщение, как "Нет расходов" или "Расходы 30%"? Именно через мемхак без ДГУИ.
1
16
5 лет назад
1
а в мемхаке выложенном разве нет
SuperTextPrinter
?
0
21
5 лет назад
0
А как ею пользоваться, у меня критует при "call SuperTextPrinter( "фывйцу", 0xffffcc00, 5.0 )":
globals
    integer pPrintText1
	integer pPrintText2
	integer pPrintText3
endglobals
    
function SuperTextPrinter takes string s, integer color, real staytime returns nothing
	call CallThisCallWith4Args(pPrintText1, Memory[pGameClass2], GetStringAddress(s),cleanInt(realToIndex(staytime)),color )
endfunction

27
	set pPrintText1 = GameDLL + 0x3574B0 
	set pPrintText2 = GameDLL + 0x356A60 
	set pPrintText3 = GameDLL + 0xc2070

26
        set pPrintText1 = GameDLL + 0x2F3CF0 
        set pPrintText2 = GameDLL + 0x2F3CB0 
        set pPrintText3 = GameDLL + 0x6049B0
Разобрался, нужно было разделить на 4.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.