Das Skript würde ohne Probleme funktionieren, wenn es nur ein Item davon gibt.
Um das für mehrere Kompatibel zu machen muss man einfach nur die waffe-Variable weglassen (imho unnötig) und aus dem == nach dem GetItemCount ein >= machen (bzw. == 1 einfach weglassen <-- wirkt wie != 0).

Sähe dann so aus:
Code:
scn derNameDesScripts

short Count
short Equipped

Begin Gamemode
	if ( Player.GetItemCount deinewaffe1 ) && ( Player.GetLevel >= 2 )
		Message "Waffe gelevelt"
		Message "Waffe gelevelt"
;Message davor und doppelt, um den MessageSpam von RemoveItem & AddItem ( & EquipItem) zu unterdrücken
		set Equipped to Player.GetEquipped deinewaffe1
		set Count to Player.GetItemCount deinewaffe1
		Player.RemoveItem deinewaffe1 Count
		Player.AddItem deinewaffe2 Count
		if ( Equipped )
			Player.EquipItem deinewaffe2
		endif
	elseif ( Player.GetItemCount deinewaffe2 ) && ( Player.GetLevel >= 4 )
		Message "Waffe gelevelt"
		Message "Waffe gelevelt"
;Message davor und doppelt, um den MessageSpam von RemoveItem & AddItem zu unterdrücken
		set Equipped to Player.GetEquipped deinewaffe2
		set Count to Player.GetItemCount deinewaffe2
		Player.RemoveItem deinewaffe2 Count
		Player.AddItem deinewaffe4 Count
		if ( Equipped )
			Player.EquipItem deinewaffe4
		endif
	elseif ( Player.GetItemCount deinewaffe4 ) && ( Player.GetLevel >= 6 )
		Message "Waffe gelevelt"
		Message "Waffe gelevelt"
;Message davor und doppelt, um den MessageSpam von RemoveItem & AddItem zu unterdrücken
		set Equipped to Player.GetEquipped deinewaffe4
		set Count to Player.GetItemCount deinewaffe4
		Player.RemoveItem deinewaffe4 Count
		Player.AddItem deinewaffe6 Count
		if ( Equipped )
			Player.EquipItem deinewaffe6
		endif
	elseif ( Player.GetItemCount deinewaffe6 ) && ( Player.GetLevel >= 9 )
		Message "Waffe gelevelt"
		Message "Waffe gelevelt"
;Message davor und doppelt, um den MessageSpam von RemoveItem & AddItem zu unterdrücken
		set Equipped to Player.GetEquipped deinewaffe6
		set Count to Player.GetItemCount deinewaffe6
		Player.RemoveItem deinewaffe6 Count
		Player.AddItem deinewaffe9 Count
		if ( Equipped )
			Player.EquipItem deinewaffe9
		endif
	elseif ( Player.GetItemCount deinewaffe9 ) && ( Player.GetLevel >= 12 )
		Message "Waffe gelevelt"
		Message "Waffe gelevelt"
;Message davor und doppelt, um den MessageSpam von RemoveItem & AddItem zu unterdrücken
		set Equipped to Player.GetEquipped deinewaffe9
		set Count to Player.GetItemCount deinewaffe9
		Player.RemoveItem deinewaffe9 Count
		Player.AddItem deinewaffe12 Count
		if ( Equipped )
			Player.EquipItem deinewaffe12
		endif
	elseif ( Player.GetItemCount deinewaffe12 ) && ( Player.GetLevel >= 16 )
		Message "Waffe gelevelt"
		Message "Waffe gelevelt"
;Message davor und doppelt, um den MessageSpam von RemoveItem & AddItem zu unterdrücken
		set Equipped to Player.GetEquipped deinewaffe12
		set Count to Player.GetItemCount deinewaffe12
		Player.RemoveItem deinewaffe12 Count
		Player.AddItem deinewaffe16 Count
		if ( Equipped )
			Player.EquipItem deinewaffe16
		endif
	elseif ( Player.GetItemCount deinewaffe16 ) && ( Player.GetLevel >= 20 )
		Message "Waffe gelevelt"
		Message "Waffe gelevelt"
;Message davor und doppelt, um den MessageSpam von RemoveItem & AddItem zu unterdrücken
		set Equipped to Player.GetEquipped deinewaffe16
		set Count to Player.GetItemCount deinewaffe16
		Player.RemoveItem deinewaffe16 Count
		Player.AddItem deinewaffe20 Count
		if ( Equipped )
			Player.EquipItem deinewaffe20
		endif
;StopQuest nicht mehr, da ja evtl. noch andere Exemplare im Umlauf sind
;		StopQuest questName ;da kommt der name von dem Quest hin auf den du des Script gelegt hast
	endif
End

PS:
Ich habe noch eingefügt, dass die Waffe wieder neu ausgerüstet wird, sofern es die alte war.