as you see in the picture Eole there for all weapons had to 0
but if you take any thing that is updated interface and is has 4 rockets and picked up on the fact that 1
the question is why, when I appear remains the same with the previous round (even if you vote for a different map UI is not updated)
though I wrote here that
Code: Select all
// ---------------------------------- //
// Constants
// ---------------------------------- //
#Const C_Item [
"Armor" => "Armor",
"Arrow" => "Arrow",
"Laser" => "Laser",
"Nucleus" => "Nucleus",
"Rocket" => "Rocket"
]
#Const C_AmmoGain [
"Rocket" => 0.5,
"Laser" => 0.6,
"Nucleus" => 0.5,
"Arrow" => 0.3
]
#Const C_AmmoMax [
"Laser" => 0,
"Nucleus" => 0,
"Arrow" => 0,
"Rocket" => 4
]
#Const C_Timers [
"Armor" => 30000,
"Rocket" => 45000,
"Nucleus" => 45000,
"Laser" => 45000,
"Arrow" => 45000
]
/* -------------------------------------- */
// Round start
/* -------------------------------------- */
foreach (Player in AllPlayers) {
declare NextArmorReduction for Player = -1;
NextArmorReduction = -1;
declare Weapons for Player = CSmMode::EWeapon[];
declare AmmoMax for Player = C_AmmoMax;
AmmoMax = C_AmmoMax;
declare UI <=> UIManager.GetUI(Player);
if (UI != Null) {
declare netwrite Text Net_Combo_Weapon for UI;
Net_Combo_Weapon = "Rocket";
}else{UIManager.UIAll.BigMessage = TextLib::Compose("wins the round!");}
Weapons = Default_Weapons;
Player.ArmorMax = C_Default_ArmorMax;
Player.Armor = C_Default_Armor;
Player.AmmoGain = C_AmmoGain["Rocket"];
SetPlayerWeapon(Player, CSmMode::EWeapon::Rocket, False);
SetPlayerAmmoMax(Player, CSmMode::EWeapon::Rocket, AmmoMax["Rocket"]);
SetPlayerAmmoMax(Player, CSmMode::EWeapon::Laser, AmmoMax["Laser"]);
SetPlayerAmmoMax(Player, CSmMode::EWeapon::Nucleus, AmmoMax["Nucleus"]);
SetPlayerAmmoMax(Player, CSmMode::EWeapon::Arrow, AmmoMax["Arrow"]);
SetPlayerReloadAllWeapons(Player, True);
declare Integer RoundHits for Player;
RoundHits = 0;
if (Player.Score != Null) Player.Score.RoundPoints = 1;
}
UpdateLayerInfo();
// ---------------------------------- //
// Initialize items
DestroyAllItems();
foreach (ItemAnchor in ItemAnchors) {
declare ItemSpawned for ItemAnchor = False;
declare ItemNextSpawn for ItemAnchor = Now;
ItemSpawned = False;
ItemNextSpawn = Now + C_Item_Delay;
}
/* ------------------------------------- */
// Attach layers
// Initialize UI
UIManager.UIAll.SendNotice("", CUIConfig::ENoticeLevel::MatchInfo, Null, CUIConfig::EAvatarVariant::Default, CUIConfig::EUISound::StartRound, 0);
UIManager.UIAll.UISequence = CUIConfig::EUISequence::Playing;
LayerAttached = Layers::Attach("Info", NullId);
LayerUpdated = Layers::Update("Info", UpdateLayerInfo());
StartTime = Now;
EndTime = -1;
UIManager.UIAll.CountdownEndTime = -1;
***
***OnNewPlayer***
***
UI.SpectatorForceCameraType = 1;
declare UI <=> UIManager.GetUI(Player);
if (UI != Null) {
declare AmmoMax for Player = C_AmmoMax;
declare netwrite Integer Net_Combo_AmmoUpdate for UI;
declare netwrite Integer[Text] Net_Combo_AmmoMax for UI;
Net_Combo_AmmoUpdate = Now;
Net_Combo_AmmoMax = AmmoMax;
}
***
***OnNewSpectator***
***
declare UI <=> UIManager.GetUI(Spectator);
if (UI != Null) {
UI.SpectatorForceCameraType = -1;
UI.SpectatorForcedClan = -1;
}
***
/* -------------------------------------- */
// Play loop
/* -------------------------------------- */
***PlayLoop***
***
/* ------------------------------------- */
SpawnItems();
// Spawn players
foreach(Player in Players) {
if (G_PlayerSpawnQueue.count > 0 && LastSpawnTime + (S_SpawnInterval * 1000) < Now) {
UpdateBlockSpawnQueue();
SpawnPlayers();
LastSpawnTime = Now;
UIManager.UIAll.BigMessageSound = CUIConfig::EUISound::StartRound;
UIManager.UIAll.BigMessage = _("Spawning players...");
LastMessageTime = -1;
UIManager.UIAll.CountdownEndTime = LastSpawnTime + (S_SpawnInterval * 1000);
LayerUpdated = Layers::Update("SpawnQueue", UpdateLayerSpawnQueue());
Player.ArmorMax = C_Default_ArmorMax;
declare AmmoMax for Player = C_AmmoMax;
SetPlayerAmmo(Player, CSmMode::EWeapon::Rocket, AmmoMax["Rocket"]/2);
SetPlayerAmmo(Player, CSmMode::EWeapon::Laser, AmmoMax["Laser"]/2);
SetPlayerAmmo(Player, CSmMode::EWeapon::Nucleus, AmmoMax["Nucleus"]/2);
SetPlayerAmmo(Player, CSmMode::EWeapon::Arrow, AmmoMax["Arrow"]/2);
}
// UI
if (LastUIUpdateTime + C_UITickPeriod < Now) {
LastUIUpdateTime = Now;
LayerUpdated = Layers::Update("Info", UpdateLayerInfo());
}
/* ------------------------------------- */
// Map End
/* ------------------------------------- */
LayerDetached = Layers::DetachAll(NullId);
LayerDetached = Layers::Detach("Info", NullId);
/* ------------------------------------- */
// Server End
/* ------------------------------------- */
// Layers destruction
LayerDestroyed = Layers::Destroy("Info");
/* ------------------------------------- */
// Functions
/* ------------------------------------- */
Text UpdateLayerInfo() {
return """
<frame posn="-68 -76" id="Frame_WeaponInfo">
<!-- Next data update
<quad posn="0 0" sizen="6 6" halign="right" valign="center" image="{{{C_ImgBaseDir}}}Laser.dds" id="Quad_IconLaser" />
<quad posn="12 0" sizen="6 6" halign="right" valign="center" image="{{{C_ImgBaseDir}}}Nucleus.dds" id="Quad_IconNucleus" />
<quad posn="24 0" sizen="6 6" halign="right" valign="center" image="{{{C_ImgBaseDir}}}Arrow.dds" id="Quad_IconArrow" />
<quad posn="36 0" sizen="6 6" halign="right" valign="center" image="{{{C_ImgBaseDir}}}Rocket.dds" id="Quad_IconRocket" />
-->
<quad posn="0 0" sizen="6 6" halign="right" valign="center" image="{{{C_ImgBaseDir}}}LaserWhite.dds" id="Quad_IconLaser" />
<quad posn="12 0" sizen="6 6" halign="right" valign="center" image="{{{C_ImgBaseDir}}}NucleusWhite.dds" id="Quad_IconNucleus" />
<quad posn="24 0" sizen="6 6" halign="right" valign="center" image="{{{C_ImgBaseDir}}}ArrowWhite.dds" id="Quad_IconArrow" />
<quad posn="36 0" sizen="6 6" halign="right" valign="center" image="{{{C_ImgBaseDir}}}RocketWhite.dds" id="Quad_IconRocket" />
<frame posn="0 0.3">
<label posn="0 0" sizen="6 6" halign="left" valign="center" textemboss="1" text="0" id="Label_AmmoLaser" />
<label posn="12 0" sizen="6 6" halign="left" valign="center" textemboss="1" text="0" id="Label_AmmoNucleus" />
<label posn="24 0" sizen="6 6" halign="left" valign="center" textemboss="1" text="0" id="Label_AmmoArrow" />
<label posn="36 0" sizen="6 6" halign="left" valign="center" textemboss="1" text="0" id="Label_AmmoRocket" />
</frame>
</frame>
<script><!--
#Include "TextLib" as TL
main() {
declare Frame_WeaponInfo <=> (Page.GetFirstChild("Frame_WeaponInfo") as CMlFrame);
declare Label_AmmoLaser <=> (Page.GetFirstChild("Label_AmmoLaser") as CMlLabel);
declare Label_AmmoNucleus <=> (Page.GetFirstChild("Label_AmmoNucleus") as CMlLabel);
declare Label_AmmoArrow <=> (Page.GetFirstChild("Label_AmmoArrow") as CMlLabel);
declare Label_AmmoRocket <=> (Page.GetFirstChild("Label_AmmoRocket") as CMlLabel);
declare Quad_IconLaser <=> (Page.GetFirstChild("Quad_IconLaser") as CMlQuad);
declare Quad_IconNucleus <=> (Page.GetFirstChild("Quad_IconNucleus") as CMlQuad);
declare Quad_IconArrow <=> (Page.GetFirstChild("Quad_IconArrow") as CMlQuad);
declare Quad_IconRocket <=> (Page.GetFirstChild("Quad_IconRocket") as CMlQuad);
declare netread Integer Net_Combo_AmmoUpdate for UI;
declare netread Integer[Text] Net_Combo_AmmoMax for UI;
declare netread Text Net_Combo_Weapon for UI;
declare PrevIsSpectatorMode = False;
declare PrevAmmoUpdate = 0;
declare PrevWeapon = "";
while (True) {
sleep(100);
if (!PageIsVisible) continue;
if (InputPlayer == Null) continue;
if (PrevIsSpectatorMode != IsSpectatorMode) {
PrevIsSpectatorMode = IsSpectatorMode;
if (IsSpectatorMode) Frame_WeaponInfo.Hide();
else Frame_WeaponInfo.Show();
}
if (PrevAmmoUpdate != Net_Combo_AmmoUpdate) {
PrevAmmoUpdate = Net_Combo_AmmoUpdate;
foreach (Weapon => AmmoMax in Net_Combo_AmmoMax) {
declare WeaponText = "$aaa"^AmmoMax;
declare WeaponIcon = "{{{C_ImgBaseDir}}}"^Weapon^".dds";
if (AmmoMax > 0) {
WeaponText = "$fff"^"AmmoMax";
WeaponIcon = "{{{C_ImgBaseDir}}}"^Weapon^"White.dds";
}
switch (Weapon) {
case "Laser" : {
Label_AmmoLaser.SetText(WeaponText);
// Next data update
//if (Http.IsValidUrl(WeaponIcon)) Quad_IconLaser.ChangeImageUrl(WeaponIcon);
}
case "Nucleus" : {
Label_AmmoNucleus.SetText(WeaponText);
// Next data update
//if (Http.IsValidUrl(WeaponIcon)) Quad_IconNucleus.ChangeImageUrl(WeaponIcon);
}
case "Arrow" : {
Label_AmmoArrow.SetText(WeaponText);
// Next data update
//if (Http.IsValidUrl(WeaponIcon)) Quad_IconArrow.ChangeImageUrl(WeaponIcon);
}
case "Rocket" : {
Label_AmmoRocket.SetText(WeaponText);
// Next data update
//if (Http.IsValidUrl(WeaponIcon)) Quad_IconRocket.ChangeImageUrl(WeaponIcon);
}
}
}
}
if (PrevWeapon != Net_Combo_Weapon) {
switch (PrevWeapon) {
case "Laser" : Quad_IconLaser.Scale = 1.;
case "Nucleus" : Quad_IconNucleus.Scale = 1.;
case "Arrow" : Quad_IconArrow.Scale = 1.;
case "Rocket" : Quad_IconRocket.Scale = 1.;
}
switch (Net_Combo_Weapon) {
case "Laser" : Quad_IconLaser.Scale = 1.3;
case "Nucleus" : Quad_IconNucleus.Scale = 1.3;
case "Arrow" : Quad_IconArrow.Scale = 1.3;
case "Rocket" : Quad_IconRocket.Scale = 1.3;
}
PrevWeapon = Net_Combo_Weapon;
}
}
}
--></script>""";
}
