Page 4 of 17
Re: How to use pick up items in your title packs
Posted: 24 Apr 2013, 11:51
by TGYoshi
Eole wrote:TGYoshi wrote:Is there yet a way to import items (and character models etc.) yourself?
No, not yet.
TGYoshi wrote:EDIT: What does a the skin name in ItemList_AddWithSkin refer to? I get "skin not found" but I don't know how to use it too. Slight explaination would be appriciated.
Code: Select all
Ident ItemList_AddWithSkin(Text ModelName, Text SkinName)
This function is not yet fully functional. Its goal is to allow the use of skins on items or bots. ModelName will be the path to the model used by the item/bot and SkinName the path to the skin (override the default one).
Aww, too bad. Hope it is here soon tho, it's an amazing feature.

Re: How to use pick up items in your title packs
Posted: 24 Apr 2013, 12:10
by alividerci
by the way my problem may be related to this?
Code: Select all
***StartMap***
***
//bla bla bla code
***
what I wrote is required or is to see what and where
Re: How to use pick up items in your title packs
Posted: 24 Apr 2013, 14:00
by Eole
The code I published uses some data that we haven't distributed yet. You can replace the UpdateLayerInfo() function by this one:
Code: Select all
// ---------------------------------- //
/// Update the players lists on the side of the screen
Text UpdateLayerInfo() {
declare LoginsTeam = [1 => "", 2 => ""];
for (Clan, 1, 2) {
if (!G_ClansPlayers.existskey(Clan)) continue;
foreach (PlayerId in G_ClansPlayers[Clan]) {
if (!Players.existskey(PlayerId)) continue;
if (LoginsTeam[Clan] == "") LoginsTeam[Clan] ^= Players[PlayerId].Login;
else LoginsTeam[Clan] ^= ","^Players[PlayerId].Login;
}
}
return """
<frame>
<quad posn="-160 72" sizen="41 4" halign="left" bgcolor="0007" />
<quad posn="-159 77 1" sizen="10 10" halign="left" style="Emblems" substyle="#1" />
<label id="team1name" posn="-149 72 1" sizen="40 4" halign="left" textprefix="$s" text="Blue" />
</frame>
<frame>
<quad posn="160 72" sizen="41 4" halign="right" bgcolor="0007" />
<quad posn="159 77 1" sizen="10 10" halign="right" style="Emblems" substyle="#2" />
<label id="team2name" posn="149 72 1" sizen="40 4" halign="right" textprefix="$s" text="Red" />
</frame>
<playerlist posn="-160 67" halign="left" substyle="Medium" lines="{{{S_Script_NbPlayersPerTeam}}}" columns="1" team="1" status="Playing" logins="{{{LoginsTeam[1]}}}" />
<playerlist posn=" 160 67" halign="right" substyle="Medium" lines="{{{S_Script_NbPlayersPerTeam}}}" columns="1" team="2" status="Playing" logins="{{{LoginsTeam[2]}}}"/>
<frame posn="0 71 5" id="Frame_ScoreInfo">
<label posn="-25 0.5 6" sizen="15 5" textsize="4" halign="right" valign="center" textemboss="1" text="0" id="Label_ComboClan1" />
<quad posn="-22 0 6" sizen="5 5" halign="center" valign="center" style="Icons64x64_1" substyle="GenericButton" />
<quad posn=" 22 0 6" sizen="5 5" halign="center" valign="center" style="Icons64x64_1" substyle="GenericButton" />
<label posn="25 0.5 6" sizen="15 5" textsize="4" halign="left" valign="center" textemboss="1" text="0" id="Label_ComboClan2" />
</frame>
<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_Team1Name <=> (Page.GetFirstChild("team1name") as CMlLabel);
declare Label_Team2Name <=> (Page.GetFirstChild("team2name") as CMlLabel);
declare Label_ComboClan1 <=> (Page.GetFirstChild("Label_ComboClan1") as CMlLabel);
declare Label_ComboClan2 <=> (Page.GetFirstChild("Label_ComboClan2") as CMlLabel);
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_ComboClan1 for Teams[0];
declare netread Integer Net_Combo_ComboClan2 for Teams[0];
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 PrevTeam1Name = "";
declare PrevTeam2Name = "";
declare PrevComboClan1 = 0;
declare PrevComboClan2 = 0;
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 (PrevTeam1Name != Teams[0].ColorizedName) {
PrevTeam1Name = Teams[0].ColorizedName;
Label_Team1Name.SetText(Teams[0].ColorizedName);
}
if (PrevTeam2Name != Teams[1].ColorizedName) {
PrevTeam2Name = Teams[1].ColorizedName;
Label_Team2Name.SetText(Teams[1].ColorizedName);
}
if (PrevComboClan1 != Net_Combo_ComboClan1) {
PrevComboClan1 = Net_Combo_ComboClan1;
Label_ComboClan1.SetText(TL::ToText(PrevComboClan1/1000));
}
if (PrevComboClan2 != Net_Combo_ComboClan2) {
PrevComboClan2 = Net_Combo_ComboClan2;
Label_ComboClan2.SetText(TL::ToText(PrevComboClan2/1000));
}
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>""";
}
Re: How to use pick up items in your title packs
Posted: 24 Apr 2013, 14:21
by alividerci
Eole wrote:
The code I published uses some data that we haven't distributed yet. You can replace the UpdateLayerInfo() function by this one:
Code: Select all
// ---------------------------------- //
/// Update the players lists on the side of the screen
Text UpdateLayerInfo() {
declare LoginsTeam = [1 => "", 2 => ""];
for (Clan, 1, 2) {
if (!G_ClansPlayers.existskey(Clan)) continue;
foreach (PlayerId in G_ClansPlayers[Clan]) {
if (!Players.existskey(PlayerId)) continue;
if (LoginsTeam[Clan] == "") LoginsTeam[Clan] ^= Players[PlayerId].Login;
else LoginsTeam[Clan] ^= ","^Players[PlayerId].Login;
}
}
return """
<frame>
<quad posn="-160 72" sizen="41 4" halign="left" bgcolor="0007" />
<quad posn="-159 77 1" sizen="10 10" halign="left" style="Emblems" substyle="#1" />
<label id="team1name" posn="-149 72 1" sizen="40 4" halign="left" textprefix="$s" text="Blue" />
</frame>
<frame>
<quad posn="160 72" sizen="41 4" halign="right" bgcolor="0007" />
<quad posn="159 77 1" sizen="10 10" halign="right" style="Emblems" substyle="#2" />
<label id="team2name" posn="149 72 1" sizen="40 4" halign="right" textprefix="$s" text="Red" />
</frame>
<playerlist posn="-160 67" halign="left" substyle="Medium" lines="{{{S_Script_NbPlayersPerTeam}}}" columns="1" team="1" status="Playing" logins="{{{LoginsTeam[1]}}}" />
<playerlist posn=" 160 67" halign="right" substyle="Medium" lines="{{{S_Script_NbPlayersPerTeam}}}" columns="1" team="2" status="Playing" logins="{{{LoginsTeam[2]}}}"/>
<frame posn="0 71 5" id="Frame_ScoreInfo">
<label posn="-25 0.5 6" sizen="15 5" textsize="4" halign="right" valign="center" textemboss="1" text="0" id="Label_ComboClan1" />
<quad posn="-22 0 6" sizen="5 5" halign="center" valign="center" style="Icons64x64_1" substyle="GenericButton" />
<quad posn=" 22 0 6" sizen="5 5" halign="center" valign="center" style="Icons64x64_1" substyle="GenericButton" />
<label posn="25 0.5 6" sizen="15 5" textsize="4" halign="left" valign="center" textemboss="1" text="0" id="Label_ComboClan2" />
</frame>
<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_Team1Name <=> (Page.GetFirstChild("team1name") as CMlLabel);
declare Label_Team2Name <=> (Page.GetFirstChild("team2name") as CMlLabel);
declare Label_ComboClan1 <=> (Page.GetFirstChild("Label_ComboClan1") as CMlLabel);
declare Label_ComboClan2 <=> (Page.GetFirstChild("Label_ComboClan2") as CMlLabel);
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_ComboClan1 for Teams[0];
declare netread Integer Net_Combo_ComboClan2 for Teams[0];
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 PrevTeam1Name = "";
declare PrevTeam2Name = "";
declare PrevComboClan1 = 0;
declare PrevComboClan2 = 0;
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 (PrevTeam1Name != Teams[0].ColorizedName) {
PrevTeam1Name = Teams[0].ColorizedName;
Label_Team1Name.SetText(Teams[0].ColorizedName);
}
if (PrevTeam2Name != Teams[1].ColorizedName) {
PrevTeam2Name = Teams[1].ColorizedName;
Label_Team2Name.SetText(Teams[1].ColorizedName);
}
if (PrevComboClan1 != Net_Combo_ComboClan1) {
PrevComboClan1 = Net_Combo_ComboClan1;
Label_ComboClan1.SetText(TL::ToText(PrevComboClan1/1000));
}
if (PrevComboClan2 != Net_Combo_ComboClan2) {
PrevComboClan2 = Net_Combo_ComboClan2;
Label_ComboClan2.SetText(TL::ToText(PrevComboClan2/1000));
}
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>""";
}
// Next data update?
is it joke?
by the way I have in the script should not be a team)))
Re: How to use pick up items in your title packs
Posted: 24 Apr 2013, 14:57
by alividerci
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>""";
}

Re: How to use pick up items in your title packs
Posted: 25 Apr 2013, 11:16
by alividerci
but i know this code update your numbers of weapons
Code: Select all
declare UI <=> UIManager.GetUI(Player);
if (UI != Null) {
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;
}
but it is not worked
Re: How to use pick up items in your title packs
Posted: 25 Apr 2013, 11:32
by Gugli
There may be minor changes, but overall the new API will probably looks like :
Code: Select all
CSmRulesMode :
{
CSmItem ItemCreate(Ident _ModelId);
Void ItemDestroy(CSmItem _Item);
Void ItemDestroyAll();
CSmItem[] Items;
}
CSmItem:
{
Void Item.SetPlayer(CSmPlayer _Player);
Void Item.SetAnchor(CSmItemAnchor _Anchor);
Void Item.SetPosition(Vec3 _Pos);
Void Item.SetPositionAndVelocity(Vec3 _Pos, Vec3 _Vel);
Void Item.SetUnspawned(Vec3 _Pos, Vec3 _Vel);
// Only one of these 4 Booleans can be true at once
Boolean IsOnPlayer;
Boolean IsOnAnchor;
Boolean IsInWorld;
Boolean IsUnspawned;
/////////
// Current pos and vel, may have changed since latest call to
// SetPositionAndVelocity due to items physics (gravity)
const Vec3 Position;
const Vec3 Velocity;
// Throw options
// When an item is throwable, it means that a carrying player can not
// fire his/her weapon, but next click will throw the Item instead.
Real ThrowSpeed; // if > 0, then the item is Throwable.
}
When using SetPosition or SetPositionAndVel, the item will use physical properties like gravity and bounce if they have been defined. So there's a difference between using Item.SetAnchor(Anchor) or Item.SetPosition(Anchor.Pos). The first will remain in place, the second may drop to the floor or bounce.
Any feedback is very welcome !
EDIT : some small fixes
Re: How to use pick up items in your title packs
Posted: 25 Apr 2013, 11:37
by alividerci
Gugli wrote:There may be minor changes, but overall the new API will probably looks like :
Code: Select all
CSmRulesMode :
{
CSmItem ItemCreate(Ident _ModelId);
Void ItemDestroy(CSmItem _Item);
Void ItemDestroyAll();
CSmItem[] Items;
}
CSmItem:
{
Void Item.SetPlayer(CSmPlayer _Player);
Void Item.SetAnchor(CSmItemAnchor _Anchor);
Void Item.SetPosition(Vec3 _Pos);
Void Item.SetPositionAndVelocity(Vec3 _Pos, Vec3 _Vel);
Void Item.SetUnspawned(Vec3 _Pos, Vec3 _Vel);
// Only one of these 4 Booleans can be true at once
Boolean IsOnPlayer;
Boolean IsOnAnchor;
Boolean IsInWorld;
Boolean IsUnspawned;
/////////
// Current pos and vel, may have changed since latest call to
// SetPositionAndVelocity due to items physics (gravity)
Vec3 Position;
Vec3 Velocity;
Real Yaw;
// Throw options
// When an item is throwable, it means that a carrying player can not
// fire his/her weapon, but next click will throw the Item instead.
Real ThrowSpeed; // if > 0, then the item is Throwable.
}
When using SetPosition or SetPositionAndVel, the item will use physical properties like gravity and bounce if they have been defined. So there's a difference between using Item.SetAnchor(Anchor) or Item.SetPosition(Anchor.Pos). The first will remain in place, the second may drop to the floor or bounce.
Any feedback is very welcome !
thx but it is not my problem

Re: How to use pick up items in your title packs
Posted: 25 Apr 2013, 11:55
by The_Big_Boo
alividerci wrote:thx but it is not my problem

Actually this is not your topic in particular and some were waiting for the info Gugli has just given.
Re: How to use pick up items in your title packs
Posted: 25 Apr 2013, 12:21
by alividerci
The_Big_Boo wrote:alividerci wrote:thx but it is not my problem

Actually this is not your topic in particular and some were waiting for the info Gugli has just given.
i am sorry
