How to use pick up items in your title packs

Discuss everything related to custom data creation.

Moderator: NADEO

User avatar
TGYoshi
Posts: 795
Joined: 15 Mar 2011, 16:59

Re: How to use pick up items in your title packs

Post 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. :1010
=3
User avatar
alividerci
Posts: 363
Joined: 11 Feb 2012, 07:03

Re: How to use pick up items in your title packs

Post 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
User avatar
Eole
Nadeo
Nadeo
Posts: 1265
Joined: 26 Apr 2011, 21:08

Re: How to use pick up items in your title packs

Post by Eole »

alividerci wrote:everything works except for this bug http://img515.imageshack.us/img515/5555/53107805.png
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>""";
}
Contribute to the ManiaPlanet documentation on GitHub
A question about ManiaScript? Ask it here!
User avatar
alividerci
Posts: 363
Joined: 11 Feb 2012, 07:03

Re: How to use pick up items in your title packs

Post by alividerci »

Eole wrote:
alividerci wrote:everything works except for this bug http://img515.imageshack.us/img515/5555/53107805.png
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)))
User avatar
alividerci
Posts: 363
Joined: 11 Feb 2012, 07:03

Re: How to use pick up items in your title packs

Post 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>""";
}
:|
User avatar
alividerci
Posts: 363
Joined: 11 Feb 2012, 07:03

Re: How to use pick up items in your title packs

Post 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
User avatar
Gugli
Nadeo
Nadeo
Posts: 536
Joined: 14 Jun 2010, 17:35
Location: Mon PC est à Paris, mais mon coeur rode dans les forêts de Lozère

Re: How to use pick up items in your title packs

Post 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
--
(>~_~)> ═╦═ ╔╦╗ <(~_~<)
User avatar
alividerci
Posts: 363
Joined: 11 Feb 2012, 07:03

Re: How to use pick up items in your title packs

Post 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 :roll:
The_Big_Boo
Posts: 1026
Joined: 15 Jun 2010, 15:46

Re: How to use pick up items in your title packs

Post by The_Big_Boo »

alividerci wrote:thx but it is not my problem :roll:
Actually this is not your topic in particular and some were waiting for the info Gugli has just given.
OS: Win 7 Pro x64
RAM: 2x4GB Corsair @ 1600MHz
CPU: Intel i5 760 @ 3.6GHz
Mobo: Asus P7P55D-E
GPU: NVidia GTX 760 2GB
HDD: WD Black 1TB
Sound: VIA VT1828S (onboard)
Peripherals: Razer DeathAdder - Razer DeathStalker - Logitech F310
User avatar
alividerci
Posts: 363
Joined: 11 Feb 2012, 07:03

Re: How to use pick up items in your title packs

Post by alividerci »

The_Big_Boo wrote:
alividerci wrote:thx but it is not my problem :roll:
Actually this is not your topic in particular and some were waiting for the info Gugli has just given.
i am sorry :roll:
Post Reply

Return to “Title Pack & Custom Data Creation”

Who is online

Users browsing this forum: No registered users and 0 guests