Rev412 травмы персонажа

Автор темы #1
Дата рег
29 Июн 2014
Сообщения
38
Симпатии
2
Проблема такая. В ревизии 412 хочу расширить количество травм персонажа. Судя по всему, можно добавить ещё три типа травм. Сделал так:
В _defines.fos:
Код:
#define DAMAGE_BEGIN							 ( __DamageBegin )
#define DAMAGE_END							   ( __DamageEnd )
#define DAMAGE_COUNT							 ( DAMAGE_END - DAMAGE_BEGIN + 1 )
#define DAMAGE_POISONED						  ( 500 ) // Hardcoded
#define DAMAGE_RADIATED						  ( 501 ) // Hardcoded
#define DAMAGE_EYE							   ( 502 )
#define DAMAGE_RIGHT_ARM						 ( 503 ) // Hardcoded
#define DAMAGE_LEFT_ARM						  ( 504 ) // Hardcoded
#define DAMAGE_RIGHT_LEG						 ( 505 ) // Hardcoded
#define DAMAGE_LEFT_LEG						  ( 506 ) // Hardcoded
#define DAMAGE_DISTRESSED						( 507 )
#define DAMAGE_BURNING						   ( 508 )
В config.fos:
Код:
	__AbsoluteOffsets = true;
	__SkillBegin	  = 200;
	__SkillEnd		= 217;
	__TimeoutBegin	= 230;
	__TimeoutEnd	  = 249;
	__KillBegin	   = 260;
	__KillEnd		 = 280;
	__PerkBegin	   = 300;
	__PerkEnd		 = 469;
	__AddictionBegin  = 470;
	__AddictionEnd	= 476;
	__KarmaBegin	  = 480;
	__KarmaEnd		= 497;
	__DamageBegin	 = 500;
	__DamageEnd	   = 508;
	__TraitBegin	  = 550;
	__TraitEnd		= 565;
	__ReputationBegin = 570;
	__ReputationEnd   = 599;
Там, где требуется изменить значение переменной:
Код:
{
if( player.Id == uint(id) )
{
if( player.Damage[ DAMAGE_EXTRA2 ] == 0 )
player.DamageBase[ DAMAGE_EXTRA2 ] = 1;
else player.DamageBase[ DAMAGE_EXTRA2 ] = 0;
}
}
Сервер на каждое изменение состояния выдаёт ошибку, будто превышено количество элементов:
Код:
[quote]FOServer::SScriptFunc::DataVal_Index : Script error: Index is greater than maximum. : unsafe_stuff : void unsafe_ChangeExtra2(Critter&inout, int, int, int, string@, int[]@) : 9848, 1 : FOServer::Process_RunServerScript : Critter<admin>, func<unsafe_stuff@unsafe_ChangeExtra2>.[/quote]
Подскажите пожалуйста, где я накосячил и как исправить?
 
Автор темы #3
Дата рег
29 Июн 2014
Сообщения
38
Симпатии
2
Эх, не изменил. Спасибо чертовски большое!
 
Автор темы #4
Дата рег
29 Июн 2014
Сообщения
38
Симпатии
2
Может, кто расскажет (например в личку) как снять ограничение на количество запущенных окон - сделать многооконку? И как изменить параметры, которые отображаются в характеристиках: класс брони, уст.к повреждениям, макс.груз и прочее, на произвольные?
 
Дата рег
22 Окт 2012
Сообщения
119
Симпатии
63
хардкод надо или запускать в изолированном окружении или править сам бинарик увы не подскажу смещение
емнип в тех ревизиях это было опять же хардкодом и обычно просто рисовали поверх
 
Дата рег
28 Ноя 2013
Сообщения
306
Симпатии
37
Leprechaun, а почему бы не взять актуальную ревизию? На ней и интерфейс расхардкожен и ограничений по кол-ву параметров таких жёстких нет. Да и многооконка там, кажись, работает.
 
Автор темы #8
Дата рег
29 Июн 2014
Сообщения
38
Симпатии
2
Felinssa, я пробовал, но не получилось. Не рисуется глобал, надо его самостоятельно делать. Не пробовал осилить, но полагаю, что не получится. Пробовал 602 и 608 (примерно) ревизию. Может и стоит, конечно. Но я начал уже на 412 ревизии, достаточно много сделал. Да и нужно, насколько знаю, много делать на актуальной для того, чтобы там был контент TLA. А этот контент главное!

Прикрутить многооконку было не очень сложно, но совершенно не изящно. Нашёл тему на fodev, где рассматривается этот вопрос. Там есть интересный код: код на GitHub. Чуть переделал этот код, теперь, чтобы запустить сколько хочешь окон, нужно:
  1. Запустить скомпилированную из этого кода програмку. Она консольная. Консоль появляется и сразу исчезает.
  2. Запускается клиент, можно запустить много копий одновременно. Всё работает.
Как изменить клиент так, чтобы всё работало без такого титанического костыля, не знаю. От того, насколько это некрасивое решение, тянет блевать, конечно. Но что поделать. Hand Made, ё.
 
Дата рег
22 Мар 2014
Сообщения
166
Симпатии
17
Могу поделиться exe.шником, я делал когда-то.(редактировал в Hex редакторе)
Чтобы можно было запускать много окон. как раз на 412 ревизию