-
Автор темы
- #1
копался в ассемблере сервера игры и нашел такую функцию
и в этой функции я увидел вывод хп игроков "100f"
и так как инфа о состоянии здоровья передаётся только админам(проверка сервера на auth level), можно попробывать передавать серверу auth level 2, или же попробывать найти другой способ, если тут будут такие люди, они поймут как это реализорвать
C#:
public override void Save(global::BaseNetworkable.SaveInfo info)
{
base.Save(info);
bool flag = this.net != null && this.net.connection == info.forConnection;
bool flag2;
if (!info.forDisk && info.forConnection.player != null)
{
global::BasePlayer basePlayer = info.forConnection.player as global::BasePlayer;
if (basePlayer != null)
{
flag2 = basePlayer.IsAdmin;
goto IL_5E;
}
}
flag2 = false;
IL_5E:
bool flag3 = flag2;
info.msg.basePlayer = Pool.Get<ProtoBuf.BasePlayer>();
info.msg.basePlayer.userid = this.userID;
info.msg.basePlayer.name = this.displayName;
info.msg.basePlayer.playerFlags = (int)this.playerFlags;
info.msg.basePlayer.currentTeam = this.currentTeam;
info.msg.basePlayer.heldEntity = this.svActiveItemID;
info.msg.basePlayer.reputation = this.reputation;
if (!info.forDisk && this.currentGesture != null && this.currentGesture.animationType == global::GestureConfig.AnimationType.Loop)
{
info.msg.basePlayer.loopingGesture = this.currentGesture.gestureId;
}
if (this.IsConnected && (this.IsAdmin || this.IsDeveloper))
{
info.msg.basePlayer.skinCol = this.net.connection.info.GetFloat("global.skincol", -1f);
info.msg.basePlayer.skinTex = this.net.connection.info.GetFloat("global.skintex", -1f);
info.msg.basePlayer.skinMesh = this.net.connection.info.GetFloat("global.skinmesh", -1f);
}
else
{
info.msg.basePlayer.skinCol = -1f;
info.msg.basePlayer.skinTex = -1f;
info.msg.basePlayer.skinMesh = -1f;
}
info.msg.basePlayer.underwear = this.GetUnderwearSkin();
if (info.forDisk || flag)
{
info.msg.basePlayer.metabolism = this.metabolism.Save();
info.msg.basePlayer.modifiers = null;
if (this.modifiers != null)
{
info.msg.basePlayer.modifiers = this.modifiers.Save();
}
}
if (!info.forDisk && !flag)
{
info.msg.basePlayer.playerFlags &= -5;
info.msg.basePlayer.playerFlags &= -129;
if (info.msg.baseCombat != null && !flag3)
{
info.msg.baseCombat.health = 100f;
}
}
info.msg.basePlayer.inventory = this.inventory.Save(info.forDisk || flag);
this.modelState.sleeping = this.IsSleeping();
this.modelState.relaxed = this.IsRelaxed();
this.modelState.crawling = this.IsCrawling();
this.modelState.loading = this.IsLoadingAfterTransfer();
info.msg.basePlayer.modelState = this.modelState.Copy();
if (info.forDisk)
{
global::BaseEntity baseEntity = this.mounted.Get(base.isServer);
if (baseEntity.IsValid())
{
if (baseEntity.enableSaving)
{
info.msg.basePlayer.mounted = this.mounted.uid;
}
else
{
global::BaseVehicle mountedVehicle = this.GetMountedVehicle();
if (mountedVehicle.IsValid() && mountedVehicle.enableSaving)
{
info.msg.basePlayer.mounted = mountedVehicle.net.ID;
}
}
}
info.msg.basePlayer.respawnId = this.respawnId;
}
else
{
info.msg.basePlayer.mounted = this.mounted.uid;
}
if (flag)
{
info.msg.basePlayer.persistantData = this.PersistantPlayerInfo.Copy();
if (!info.forDisk && this.State.missions != null)
{
info.msg.basePlayer.missions = this.State.missions.Copy();
}
info.msg.basePlayer.bagCount = global::SleepingBag.GetSleepingBagCount(this.userID);
info.msg.basePlayer.shelterCount = global::LegacyShelter.GetShelterCount(this.userID);
}
if (info.forDisk)
{
info.msg.basePlayer.loadingTimeout = this.timeUntilLoadingExpires;
info.msg.basePlayer.currentLife = this.lifeStory;
info.msg.basePlayer.previousLife = this.previousLifeStory;
}
if (!info.forDisk)
{
info.msg.basePlayer.clanId = this.clanId;
}
if (info.forDisk)
{
info.msg.basePlayer.itemCrafter = this.inventory.crafting.Save();
}
if (info.forDisk)
{
this.SavePlayerState();
}
}
и в этой функции я увидел вывод хп игроков "100f"
C#:
if (!info.forDisk && !flag)
{
info.msg.basePlayer.playerFlags &= -5;
info.msg.basePlayer.playerFlags &= -129;
if (info.msg.baseCombat != null && !flag3)
{
info.msg.baseCombat.health = 100f;
}
}
и так как инфа о состоянии здоровья передаётся только админам(проверка сервера на auth level), можно попробывать передавать серверу auth level 2, или же попробывать найти другой способ, если тут будут такие люди, они поймут как это реализорвать